use*_*302 15 docker nvidia-docker
我有一个 GPU 应用程序,可以在图像构建阶段进行单元测试。使用 Docker 19.03,可以指定 nvidia 运行时,docker run --gpus all
但我还需要访问 GPU,docker build
因为我进行单元测试。我怎样才能实现这个目标?
对于使用 nvidia-docker2 的旧版本 docker,无法在构建阶段指定运行时,但您可以将默认运行时设置为 nvidia,并且 docker 构建可以正常工作。我可以在不再需要 nvidia-docker 的 Docker 19.03 中执行此操作吗?如果是这样,怎么办?
Ant*_*hev 27
您需要按照文档中的说明使用nvidia-container-runtime:“这也是在 docker 构建期间访问 GPU 的唯一方法”。
Ubuntu 的步骤:
安装 nvidia-container-runtime:
sudo apt-get install nvidia-container-runtime
使用内容编辑/创建 /etc/docker/daemon.json:
{
"runtimes": {
"nvidia": {
"path": "/usr/bin/nvidia-container-runtime",
"runtimeArgs": []
}
},
"default-runtime": "nvidia"
}
Run Code Online (Sandbox Code Playgroud)
重启 docker 守护进程:
sudo systemctl restart docker
构建您的图像(现在 GPU 在构建过程中可用):
docker build -t my_image_name:latest .
Sam*_*yer 12
重要通知
(除了现有答案之外)
目前(2023 年 3 月),如果您安装了 docker compose,仅配置默认运行时可能仍然不够。
除了配置默认运行时之外,您还必须禁用默认的 docker 构建工具包,方法是:
DOCKER_BUILDKIT=0 docker build <blah>
Run Code Online (Sandbox Code Playgroud)
即使您不使用 docker compose,这也适用,但它当然也适用于 docker compose。
也可以看看:
我发现的一个“解决方案”是首先运行一个安装了主机 nvidia 驱动程序的基本映像
docker run -it --rm --gpus ubuntu
Run Code Online (Sandbox Code Playgroud)
然后在容器中手动构建我的应用程序并提交生成的图像。这并不理想,最好在构建阶段访问 nvidia-smi。
归档时间: |
|
查看次数: |
7447 次 |
最近记录: |