【问题标题】:GPU support for AWS Semantic Segmentation对 AWS 语义分割的 GPU 支持
【发布时间】:2021-01-01 22:11:22
【问题描述】:

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

这感觉像是一个荒谬的时间,所以我挖得更深,使用 gluoncv 和 mxnet 将模型加载到 EC2 实例中,AWS 语义分割是基于该实例的。

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

但是,当将我在笔记本上训练的模型加载到为 GPU 设置的 EC2 实例中时,我收到以下错误: “RuntimeError:参数'fcn0_resnetv1s_conv0_weight'未在上下文gpu(0)上初始化。它仅在[cpu(0)]上初始化。”

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

我在这里遗漏了什么吗? 如何让 AWS 提供的语义分割算法使用 GPU 运行?

问候, C

【问题讨论】:

    标签: amazon-web-services amazon-sagemaker mxnet semantic-segmentation


    【解决方案1】:

    According to its documentationSageMaker 语义分割支持 CPU 和 GPU 进行推理。

    SageMaker 内置算法容器不能部署在笔记本中,它们只能通过托管端点或批量转换进行部署。因此,如果您想部署到 GPU,您需要在 model.deploy() 调用或端点创建 SDK 调用(如果不使用 Python SDK)中指定启用 GPU 的机器

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-23
      • 1970-01-01
      • 2019-10-04
      • 1970-01-01
      • 1970-01-01
      • 2019-11-26
      • 2021-02-19
      • 2020-05-03
      相关资源
      最近更新 更多