这篇博客的起因是在docker容器中引入GPU资源时,查阅了网上许多教程,教程之间概念模糊不清,相互矛盾,过时的教程和新的教程混杂在一起。主要原因是nvidia为docker容器的支持发生了好几代变更,api发生了不少变化。下面来总结一下各代支持发展历程。
省流版总结
凡是使用了命令nvidia docker
或者在docker中引入了--runtime=nvidia
参数的都是过时教程,最新方法只需要下载nvidia-container-toolkits
,在docker中引入--gpus
参数即可。
nvidia docker
nvidia docker是NVIDIA第一代支持docker容器内使用GPU资源的项目。运行时用nvidia-docker
命令。
根据nvidia docker在github上的描述,已经不再使用了。
The nvidia-docker wrapper script that was included in this repository is no longer included in the package and a configuration specific to the target container engine (e.g. Docker, Containerd, Cri-o, or Podman) is suggested instead.
nvidia docker2
nvidia docker2是NVIDIA第二代支持docker容器内使用GPU资源的项目。运行时用nvidia-docker
命令,且需要指定参数--runtime=nvidia
.
根据github wiki的描述,一代和二代之间有如下兼容性。
Backward compatibility To help transitioning code from 1.0 to 2.0, a bash script is provided in /usr/bin/nvidia-docker for backward compatibility. It will automatically inject the --runtime=nvidia argument and convert NV_GPU to NVIDIA_VISIBLE_DEVICES.
也就是说,在二代中,既可以使用nvidia docker
命令,这会自动引入参数--runtime=nvidia
也可以使用docker
命令,手动指定参数--runtime=nvidia
如帖子总结:
docker run --runtime=nvidia is only available since nvidia-docker v2.
Both commands are equivalent with nvidia-docker v2, the former is a script provided for backward compatibility with nvidia-docker v1.文章来源:https://www.toymoban.com/news/detail-778845.html
nvidia-container-toolkits
根据github这是最新的支持方案,如帖子描述,nvidia docker2 被Nvidia container toolkits取代,无需指定--runtime
参数,只需要传递--gpus
参数文章来源地址https://www.toymoban.com/news/detail-778845.html
到了这里,关于nvidia docker, nvidia docker2, nvidia container toolkits三者的区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!