繁体   English   中英

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

[英]How do I start an AWS Sagemaker training job with GPU access in my docker container?

我有一些使用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”?

借助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”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM