近期,我不得不将深度学习项目部署到 Docker 环境中,而在这个过程中避免不了涉足 NVIDIA Docker 的坑。尽管确认其为非常实用的工具,但容器里却一片干净,什么都没有,需要一些时间去进行配置。在这篇博客中,我将详细记录在 Docker Hub 上 nvidia/cuda 镜像中,不同版本的 CUDA 镜像文件的区别。
这个版本从 CUDA 9.0 开始,包含了最基本的 CUDA 应用程序的预构建部署(libcudart)。如果用户希望自行安装所需的 CUDA 包,可以选择使用这个版本的镜像。然而,如果希望更加便捷,建议不要选择这个镜像版本,因为它可能会引入很多不必要的麻烦。
通过添加 CUDA 工具包中的所有共享库,该版本扩展了基本镜像。如果使用了多个 CUDA 库的预构建应用程序,可以选择使用此镜像。然而,如果想要使用 CUDA 中的头文件编译自己的工程,可能会遇到找不到文件的错误。
通过添加编译器工具链、测试工具、头文件和静态库,该版本扩展了运行时的镜像。如果想要将 CUDA 应用程序从源代码编译,建议选择这个镜像版本。
如果希望将 Docker 镜像用作开发环境,强烈建议选择 devel 版本的镜像。
在选择 CUDA 镜像版本时,可以根据项目需求和开发环境的要求进行合理选择。以下是一些示例用法:
运行一个隔离到第一个 GPU 的交互式 CUDA 会话:
docker run -ti --rm --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=0 nvidia/cuda
查询 CUDA 7.5 编译器版本:
docker run --rm --runtime=nvidia nvidia/cuda:7.5-devel nvcc --version
在使用 runtime 版本的包时需要注意,它并没有 CUDA 的编译工具 nvcc。因此,在选择镜像版本时,务必根据具体需求仔细权衡,以确保 Docker 环境能够满足项目的开发和部署要求。
通过这篇博客,希望能够帮助大家更好地理解和选择适用于自己深度学习项目的 NVIDIA Docker CUDA 镜像版本。在配置 Docker 环境时,合理选择镜像版本是保障项目顺利进行的关键一步。