如何在Docker容器中通过GPU访问来启动AWS Sagemaker培训工作?

时间:2019-03-06 10:05:53

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

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

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

docker run --runtime=nvidia cnn-userpattern train

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

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

  

ImportError:libcuda.so.1:无法打开共享对象文件:没有这样的文件或目录

现在,我知道该错误代码的含义。这意味着Docker主机的运行时环境未设置为“ nvidia”。 AWS文档说,用于运行docker映像的命令始终为

docker run image train

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

1 个答案:

答案 0 :(得分:0)

在AWS支持服务的某些帮助下,我们得以找到了问题。 正如我所说的tensorflow / tensorflow:latest-gpu-py3(可在https://github.com/aws/sagemaker-tensorflow-container上使用)那样,我用来在其上运行代码的docker映像是

“最新”标签目前是指1.12.0版。问题不是我自己的,而是此版本的docker映像。

如果我的docker映像基于tensorflow / tensorflow:1.10.1-gpu-py3,它将按需运行并完全使用GPU。

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