GPU支持AWS语义分割



我在笔记本中使用AWS提供的语义分割算法训练了一个模型。将大小为512x512的图像馈送到这个在相同大小的图像上训练的网络大约需要10秒。输入1024x512大小的图像所需的时间大约是原来的两倍。

这感觉是一段荒谬的时间,所以我更深入地研究,使用gluoncv和mxnet将模型加载到EC2实例中,AWS语义分割就是建立在这些实例的基础上的。

在这里,我发现了一个ctx的标志,声明我是想使用CPU还是GPU。我在AWS上找不到这个标志,所以我的假设是,这必须在后台处理,这取决于我选择运行的实例。

然而,当将我在笔记本上训练的模型加载到为GPU设置的EC2实例中时,我会出现以下错误:"RuntimeError:未在上下文gpu(0(上初始化参数"fcn0_resnetv1s_conv0_weight"。它仅在[cpu(0(]上初始化">

我将其解释为仅在CPU上运行的网络,进而解释了为什么通过网络馈送512x512图像需要10秒。

我是不是遗漏了什么?如何使用GPU运行AWS提供的语义分割算法?

谨致问候,C

根据其文档SageMaker Semantic Segmentation支持CPU和GPU进行推理。

SageMaker内置算法容器无法部署在笔记本电脑中,只能通过Hosting Endpoints或Batch Transform进行部署。因此,如果你想部署到GPU,你需要在model.deploy()调用或端点创建SDK调用(如果不使用Python SDK(中指定一台启用GPU的机器

一些算法具有相当透明的内部结构(如语义分割算法(,这可能使您能够离线阅读它们,例如在笔记本或自定义环境中。

在这种情况下,为了自己运行GPU推理,您需要在GPU上下文中同时拥有模型和输入。要将模型移动到GPU,可以使用net.collect_params().reset_ctx(mxnet.gpu())

最新更新