引言
最近用到guithub上deepinsight/insightface相关模型和工具,其中一系列基于NVIDIA显卡的计算加速操作需要一系列依赖库,包括:nvidia.dali
、mxnet
、CUDA toolkit
、cudnn
、nccl
。
此文记录相关环境的搭建过程。
安装顺序为CUDA Toolkit -> cudnn -> nccl -> mxnet -> nvidia.dali
安装
CUDA Toolkit
与pytorch自带的简略版以及通过conda安装的版本不同,本文中的CUDA Toolkit
是NIVIDA官方推出的基于显卡驱动在GPU上进行数据计算的完整C编译工具包,具体安装攻略请参考本作者另外一篇攻略《无root安装CUDA》。
CUDA toolkit也简称CUDA
cudnn
cudnn是基于CUDA用显卡加速计算的工具包。
- 进入NVIDIA Developer cuDNN官网,点击download cuDNN,注册账号并登录。
- 点击同意相关协议后,选择需要的cuDNN版本(可以点击Archived cuDNN Releases挑选历史版本)一定要对齐CUDA版本!,我用 CUDA_11.2 所以我选择 8.8.1, for CUDA 11.x。并选择 Linux x86本地安装。
- 下载下来是个压缩包,可以本地解压再上传服务器 ,也可以上传服务器后再解压,我选择前者。解压后文件夹里有两个字文件夹 \lib 和 \include。
- 之后上传至服务器,将\include下的cudnn.h 复制到 CUDA的include路径下,以及将\lib 下所有以libcudnn开头的文件复制到 CUDA的lib64路径下,最后修改文件权限。
# 复制文件
cp cudnn/include/cudnn.h cuda_11.2/include/
cp cudnn/lib/libcudnn* cuda_11.2/lib64/
# 修改权限
chmod a+r cuda_11.2/include/cudnn.h
chmod a+r cuda_11.2/lib64/libcudnn*
- 安装完成
NCCL
nccl是用于分布式训练中进行rank间通信和DDP节点初始化的工具。
- 进入NVIDIA Developer NCCL官网,点击download NCCL,注册账号并登录。
- 点击同意相关协议后,选择需要的NCCL版本(for CUDA 11.0实际上也支持11.x)一定要对齐CUDA版本!,我用 CUDA_11.2 所以我选择 2.17.1, for CUDA 11.0。并选择 本地安装(x86) 中的O/S agnostic local installer。
- 下载下来是个压缩包,可以本地解压再上传服务器 ,也可以上传服务器后再解压,我选择前者。解压后文件夹里有两个字文件夹 \lib 和 \include。
- 之后上传至服务器,将\include下的nccl.h 复制到 CUDA的include路径下,以及将\lib 下所有以libnccl开头的文件复制到 CUDA的lib64路径下,最后修改文件权限。
# 复制文件
cp nccl/include/nccl.h cuda_11.2/include/
cp nccl/lib/libnccl* cuda_11.2/lib64/
# 修改权限
chmod a+r cuda_11.2/include/nccl.h
chmod a+r cuda_11.2/lib64/libnccl*
- 安装完成
mxnet
mxnet是一个比较老的深度学习框架,在读数据上更快。
- 首先进入mxnet 官网。点击Get Started后,选择所需要的平台版本,并用pip安装。
- 注意仔细阅读网页下面的功能表,一定要对齐CUDA版本或者MKL版本。
- 然后在服务器上用pip安装就完成啦。
nvidia.dali
dali包通过构建数据读入以及增强的计算图,将读数据部分或全部从CPU迁移到GPU上以获得加速的工具包。
- 进入NVIDIA Developer DALI官网,点击NVIDIA DALI Archives 进入历史版本界面。
- 选择一个需要的版本,点击DALI User Guide,进入介绍界面。
- 在左侧导航栏中选择 Installation,选择与CUDA版本相匹配的pip命令行安装(同样,for CUDA 11.0的也支持CUDA 11.x,但要注意页面上方的Prerequisites中依赖项的版本匹配)。
- 安装完成!
最后
仅以作者安装经历作为记录,别的平台没试过。