千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > 如何搭建基于容器的深度学习环境

如何搭建基于容器的深度学习环境

来源:千锋教育
发布人:xqq
时间: 2023-12-06 14:50:50 1701845450

历史上,人工智能的概念几经沉浮。如今,凭借低成本的存储、高性能的算力和改进的训练方法,旧的概念再次焕发出新的生机。以TensorFlow和PyTorch为代表的一众深度学习框架的出现,更是将这个领域的门槛降到天下何人不炼丹的程度。

然而,深度学习靠框架,框架还要挑CUDA。

技术的飞速发展和训练框架的野蛮迭代背后,是一地不兼容的版本号,和绕口令一般的困境。

不同的PyTorch版本依赖不同的CUDA版本

不同的TensorFlow版本依赖不同的cuDNN版本

不同的cuDNN版本也依赖不同的CUDA版本

不同的CUDA版本依赖不同的NVIDIAGPU驱动版本

最后不同操作系统的不同版本只支持个别版本的GPU驱动

所以新手最常遇到的场景是,为了运行一份最后更新于三年前的、散发着古早味的、据说很厉害的代码,降级并重装整个操作系统,并且常常因为误信了网上流传的同样古早的二手知识而以失败告终。

基于云的GPU环境一般都会提供预装的镜像,但毕竟选择有限,不能覆盖所有的场景。数据科学家们大多不是工程师,纠缠这些底层细节既不擅长也无意义。工程化的缺失一直是深度学习领域面临的重大问题,年轻的炼丹师们流汗又流泪。

本文将介绍如何基于容器技术快速供给和切换不同的cuDNN/CUDA运行时,轻松搭建不同版本的深度学习环境。

GPU容器化的核心是NVIDIA Container Toolkit:

不同的容器共享GPU硬件和驱动,上层的cuDNN/CUDA组件已经预先打包在镜像里,CUDA与底层的驱动和操作系统实现解耦,不同版本的运行时可以在同一台主机上共存,宿主机上只需要安装最新版本的NVIDIA GPU驱动即可。

尽管很宽泛,但是NVIDIAContainer Toolkit对操作系统的发行版和版本号还是有基本的要求:

上表中常用的操作系统,Debian过于保守,Ubuntu太过激进,装机量较大的CentOS又前途不明,所以我们选择完全兼容CentOS又有Oracle官方长期支持保障的Oracle Linux作为环境安装的基石,这里使用最新的8.4版本。

首先安装GPU驱动,NVIDIA提供了三种安装方式:本地全量rpm包、网络rpm仓库和二进制可执行文件。毫无疑问应该选择本地全量rpm包,因为旧的依赖包不久就会被从网络上移除,而GPU硬件的使用寿命明显远远长于这些软件,所以不建议选择网络仓库,以免将来无法重新安装;不选择二进制可执行文件是因为安装后难以干净地移除,升级时可能会遇到冲突。

在https://developer.nvidia.com/cuda-downloads下载全量rpm包:

安装内核头文件,注意OracleLinux默认使用的是UEK内核,如果使用主线内核请做相应调整(安装kernel-devel):

【代码】

安装驱动模块和必要的依赖:

【代码】

第二步,安装并启动Docker服务:

【代码】

最后,安装NVIDIA Container Toolkit并且重启Docker服务:

【代码】

NVIDIA在https://gitlab.com/nvidia/container-images/cuda/blob/master/doc/supported-tags.md提供了从CUDA 9.2到CUDA 11..4.1的多种官方镜像,创建不同版本的cuDNN/CUDA运行时只需要简单拉取对应的镜像即可。

比如安装PyTorch 1.9.0所需的CUDA 10.2:

【代码】

【输出】

不要被右上角的CUDA版本号吓到,它只是表明当前宿主机的GPU驱动所能支持CUDA的最高版本,容器中真正的CUDA版本可以通过nvcc命令来验证:

【代码】

【输出】

祝炼丹成功。

tags: IT培训
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT