如何在 Docker 容器中启动具有 GPU 访问权限的 AWS Sagemaker 训练作业?

2023-12-27

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

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

docker run --runtime=nvidia cnn-userpattern train

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

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

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

现在我知道该错误代码的含义了。说明docker主机的运行环境没有设置为“nvidia”。 AWS文档说用于运行docker镜像的命令始终是

docker run image train

如果 docker/daemon.json 中的默认运行时设置为“nvidia”,则该方法可以工作。有没有办法编辑主机 daemon.json 或告诉 Dockerfile 中的 docker 使用“--runtime=nvidia”?


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

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

如果我将 docker 镜像基于tensorflow/tensorflow:1.10.1-gpu-py3,它会按预期运行并完全使用 GPU。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Docker 容器中启动具有 GPU 访问权限的 AWS Sagemaker 训练作业? 的相关文章

随机推荐