【问题标题】:How do I start an AWS Sagemaker training job with GPU access in my docker container?如何在我的 Docker 容器中开始使用 GPU 访问的 AWS Sagemaker 训练作业?
【发布时间】:2019-07-27 22:59:57
【问题描述】:

我有一些使用 tensorflow 训练神经网络的 python 代码。

我创建了一个基于 tensorflow/tensorflow:latest-gpu-py3 镜像的 docker 镜像,该镜像运行我的 python 脚本。 当我启动一个 EC2 p2.xlarge 实例时,我可以使用命令运行我的 docker 容器

docker run --runtime=nvidia cnn-userpattern train

包含我的代码的容器运行时没有错误,并使用主机 GPU。

问题是,当我尝试使用实例 ml.p2.xlarge(我也尝试使用 ml.p3.2xlarge)在 AWS Sagemaker 训练作业中运行相同的容器时,算法失败并出现错误代码:

ImportError: libcuda.so.1: cannot open shared object file: No such file or directory

现在我知道错误代码是什么意思了。这意味着docker主机的运行环境没有设置为“nvidia”。 AWS 文档说用于运行 docker 映像的命令总是

docker run image train

如果在 docker/deamon.json 中将默认运行时设置为“nvidia”,这将起作用。有什么方法可以编辑主机 deamon.json 或在 Dockerfile 中告诉 docker 使用“--runtime=nvidia”?

【问题讨论】:

    标签: amazon-web-services docker tensorflow gpu amazon-sagemaker


    【解决方案1】:

    借助 AWS 支持服务,我们能够找到问题所在。 正如我所说,我用来运行代码的 docker 映像是 tensorflow/tensorflow:latest-gpu-py3(可在 https://github.com/aws/sagemaker-tensorflow-container 上获得)

    “最新”标签此时指的是版本 1.12.0。问题不是我自己的,而是这个版本的 docker 镜像。

    如果我的 docker 镜像基于 tensorflow/tensorflow:1.10.1-gpu-py3,它会正常运行并完全使用 GPU。

    显然,AWS sagemaker 的所有 GPU 实例上的 docker/deamon.json 中的默认运行时设置为“nvidia”。

    【讨论】:

      猜你喜欢
      • 2021-02-08
      • 2018-10-04
      • 2020-07-17
      • 2021-02-14
      • 2020-05-25
      • 1970-01-01
      • 1970-01-01
      • 2021-10-14
      • 2019-05-24
      相关资源
      最近更新 更多