如果 GPU 不存在,如何让 docker run --gpus all 优雅地回退到 CPU?

tho*_*hor 6 gpu docker

我需要在两台机器上运行 docker 镜像:一台有 GPU,另一台没有 GPU。为了使用 GPU,我目前将选项传递--gpus all如下(否则,容器内的代码docker run不会检测到 GPU ):pytorch

docker run -dt -P --name "ch4-dev" --label "..." -v ".../debugpy:/debugpy:ro,z" --entrypoint "python3" --gpus all "ch4:latest"
Run Code Online (Sandbox Code Playgroud)

上面的docker run命令是由 VS Code python 扩展组装的。它在带有GPU的机器上正确运行,并torch.cuda.is_available()返回True。

但是,在没有 GPU 的机器上,同一项目会生成以下错误:

docker:来自守护程序的错误响应:无法选择具有功能的设备驱动程序“”:[[gpu]]。终端进程无法启动(退出代码:125)。

问题:

有没有比--gpu=all检测/使用 GPU(如果存在)更灵活的选项,否则就回退到正常使用 CPU 而不会出现错误?

小智 0

直接使用nvidia-docker命令而不是docker.