本文最后更新于:3 个月前
一、文档目的
由于实验需要pytorch2.0和cuda<=11.8的实验环境,若使用pytorch NGC,最早支持pytorch2.0的容器版本是23.03-py3,但其中的CUDA_VERSION为12.1(查看需注册NVIDIA账号)。经查阅CUDA Driver与CUDA Version的对应关系,在现有NSL服务器驱动版本470.74的条件下,支持的最新cuda版本为11.8。考虑到pytorch官网对pytorch2.0版本只提供了cuda11.7和cuda11.8的安装链接,于是本文选择cuda11.8+cudnn8.9.0(参照https://developer.nvidia.com/rdp/cudnn-archive )
二、文件准备
在 NSL1的 /home/share/from_zero
目录下准备好了cuda11.8和cdunn8.9.0的安装文件。这里附上下载链接,可以使用wget直接下载,也可以下载到本地,再使用xftp上传到服务器。
cuda:https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run
cudnn:https://developer.nvidia.com/downloads/compute/cudnn/secure/8.9.0/local_installers/11.8/cudnn-linux-x86_64-8.9.0.131_cuda11-archive.tar.xz/
三、构建步骤
本文选择在NSL1服务器上进行操作,如选择别的server,请确保已有ubuntu:20.04镜像。
- 选择ubuntu:20.04镜像,run一个容器,如:
1
| docker run -it --gpus all --name myenv -w /workspace ubuntu:20.04 bash
|
- 将/home/share/from_zero中的两个安装包拷贝到当前容器中
1 2 3
| apt install openssh-client -y scp username@192.168.1.151:/home/share/from_zero .
|
- 按照顺序执行以下命令
1 2 3 4 5 6 7 8 9 10
| cd from_zero chmod +x cuda_11.8.0_520.61.05_linux.run
apt install libxml2 -y
./cuda_11.8.0_520.61.05_linux.run
Failed to verify gcc version. See log at /var/log/cuda-installer.log for details.
|
- 安装gcc,再次安装cuda
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| 查看/var/log/cuda-installer.log cat /var/log/cuda-installer.log [INFO]: Driver not installed. [INFO]: Checking compiler version... [INFO]: gcc location: [ERROR]: Missing gcc. gcc is required to continue.
apt install gcc -y
./cuda_11.8.0_520.61.05_linux.run
|
选择install进行安装。
- 添加环境变量
1 2 3 4 5 6 7 8 9 10 11
| vim ~/.bashrc
export PATH=$PATH:/usr/local/cuda/bin export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
source ~/.bashrc
nvcc -V
|
- 安装cudnn(其实就是解压,复制部分文件到cuda的相关目录下)
1 2 3 4 5 6 7 8 9 10 11
|
cp from_zero/cudnn-linux-x86_64-8.9.0.131_cuda11-archive/include/cudnn.h /usr/local/cuda/include/ cp /workspace/from_zero/cudnn-linux-x86_64-8.9.0.131_cuda11-archive/lib/libcudnn* /usr/local/cuda/lib64 chmod a+r /usr/local/cuda/include/cudnn.h chmod a+r /usr/local/cuda/lib64/libcudnn* cp /workspace/from_zero/cudnn-linux-x86_64-8.9.0.131_cuda11-archive/include/cudnn_version.h /usr/local/cuda/include
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
|
- 安装对应版本的pytorch2.0
1 2 3 4 5 6 7 8 9
| apt install python3 apt install python3-pip
ln -s /usr/bin/python3 /usr/bin/python apt-get install python3-pip -y
pip install torch==2.0.0+cu118 torchvision==0.15.1+cu118 torchaudio==2.0.1 --index-url https://download.pytorch.org/whl/cu118
|
至此,所有的步骤完成,笔者在myenv容器中clone一个nanoGPT仓库,可以正常运行flashattention的实验。
四、说明
当需要一个容器时,首先考虑NVIDIA NGC。当NGC无法满足要求时,按照本guide,理论上来说可以自行选择cuda版本,选择的时候需要注意以下几个条件:
- cuda版本适配cuda driver版本:https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html#id4
- cuda版本适配cudnn版本:https://developer.nvidia.com/rdp/cudnn-archive
- pytorch(tensorflow)版本适配cuda版本