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

标签 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: 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”?

最佳答案

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

关于amazon-web-services - 如何在Docker容器中通过GPU访问来启动AWS Sagemaker培训工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55020390/

相关文章:

amazon-web-services - 使用 AWS ACM 证书配置 Gloo 虚拟服务 SSL

java - SBT 编译期间未找到模块

node.js - AWS ioredis 与 Node js

postgresql - 如何将容器 ip 作为 ENV 传递给 docker-compose 文件中的其他容器

python - 为什么使用 Tensorflow-Hub KerasLayer 会出现 'Connecting to invalid output of source node' 错误?

java - AWS Cognito - 使用 SignInUI 登录后获取用户数据

php - 限制对Docker容器内容的访问

linux - 将主机端口转发到 docker 容器

python-3.x - 在 tensorflow 数据集上应用 map 执行速度非常慢

python - 在 TensorFlow 中对数组进行排序