Last updated on March 19, 2024 pm
更新:不用编译了,直接装最新版就行,cuda 是可以兼容低版本驱动的,cuda-compat 似乎可以不装。之前运行检测失败是因为 HPC 上的环境变量没有指定驱动的 bin 和 lib 的路径。
先说结论,没有 root 权限的 HPC,千万不要想着用最新版本的 pytorch。自己编译也不行,因为已经不支持 cuda11.7 以下的版本了,而没有 root 权限,既改不了驱动,也装不了 cuda-compat,不要折腾了。
更换 conda
1 2 3 4 5 6 7
|
source ~/.bashrc conda clean --all conda install -y nano
|
更换编译器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| #!/bin/bash
source ~/.bashrc
conda create -y -n gcc -c conda-forge gcc=9.5.0 source activate gcc conda install -c conda-forge gxx=9.5.0 gcc -v g++ -v
|
1 2 3 4 5
| source ~/.bashrc conda run -n gcc whereis gcc
conda run -n gcc whereis g++
|
检测驱动版本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| #!/bin/bash
source ~/.bashrc lspci | grep VGA
cat /proc/driver/nvidia/version
|
安装 pytorch
方式一 conda
新版本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| #!/bin/bash
source ~/.bashrc source activate gcc conda create -y -n gpu pytorch-cuda=11.8 -c pytorch -c nvidia conda install -y -n gpu pytorch -c pytorch -c nvidia conda install -y -n gpu torchvision torchaudio -c pytorch -c nvidia
|
旧版本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| #!/bin/bash
source ~/.bashrc source activate gcc conda create -y -n gpu python=3.9 pytorch=1.10.2=py3.9_cuda11.1_cudnn8.0.5_0 torchvision=*=py39_cu111 torchaudio=*=py39_cu111 cudatoolkit=11.1 -c pytorch
|
方式二 编译安装
折腾了几天,发现 cuda11.2 不支持高于 10.0 的 gcc,而低版本的 gcc 在 ninja 上会报错,以后再折腾吧。
获取源码
1 2 3 4
| source ~/.bashrc
git clone --depth=1 --recursive https://github.com/pytorch/pytorch
|
对于子模块,可以先不要在git clone
的时候加上--recursive
,等主体部分下载完之后,该文件夹中有个隐藏文件称为:.gitmodules
,把子项目中的url
地址同样加上.cnpmjs.org
后缀,然后利用git submodule sync
更新子项目对应的url,最后再git submodule update --init --recursive
,即可正常网速clone完所有子项目
如果集群无法访问 GitHub,可以先获取源码后,tar -zcPf /root/tmp/pytorch.tar.gz pytorch
打包,上传到集群,tar -zxf pytorch.tar.gz
解包。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| #!/bin/bash
source ~/.bashrc cd ~ tar -zxf pytorch.tar.gz
|
进行编译
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
| #!/bin/bash
source ~/.bashrc conda create -y -n gpu python=3.10 -c conda-forge source activate gpu conda install mkl mkl-include -c conda-forge conda install cmake -c conda-forge conda install ninja=1.11.1 -c conda-forge cd ~/pytorch/ pip install -r requirements.txt export CMAKE_PREFIX_PATH=${CONDA_PREFIX:-"$(dirname $(which conda))/../"} export USE_CUDA=1 export USE_CUDNN=1 CUDNN_HOME=~/cuda/cudnn-linux-x86_64-8.9.4.25_cuda11-archive export CUDNN_LIB_DIR=$CUDNN_HOME/lib export CUDNN_INCLUDE_DIR=$CUDNN_HOME/include export CUDNN_LIBRARY=$CUDNN_HOME/lib/libcudnn.so export CUDNN_LIBRARY_PATH=$CUDNN_LIBRARY export CUDA_HOME=/opt/app/cuda/11.2 export CMAKE_CUDA_COMPILER=$CUDA_HOME/bin/nvcc export CMAKE_CUDA_ARCHITECTURES="60;70;75;80" export TORCH_CUDA_ARCH_LIST="6.0;7.0;7.5;8.0" GCC_HOME=~/miniconda3/envs/gcc export CUDAHOSTCXX=$GCC_HOME/bin/g++ export CC=$GCC_HOME/bin/gcc export CXX=$GCC_HOME/bin/g++ export PATH=$CUDA_HOME/bin:$PATH export LD_LIBRARY_PATH=$CUDA_HOME/lib64:$CUDA_HOME/extras/CUPTI/lib64:$CUDNN_LIB_DIR:$LD_LIBRARY_PATH rm -rf build python setup.py develop -allow-unsupported-compiler
|
检测 pytorch
1 2 3 4
| source ~/.bashrc conda run -n gpu whereis python
nano test.py && chmod +x test.py
|
1 2 3 4 5 6 7 8 9 10 11 12
|
import torch print(torch.cuda.is_available()) print(torch.cuda.device_count()) print(torch.version.cuda)
a = torch.Tensor(5,3) a = a.cuda() print(a)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| #!/bin/bash
source ~/.bashrc source activate gpu cd ~ GCC_HOME=~/miniconda3/envs/gcc export CC=$GCC_HOME/bin/gcc export CXX=$GCC_HOME/bin/g++ DRIVER_HOME=/opt/app/nvidia/460.91.03 export PATH=$DRIVER_HOME/bin:$PATH export LD_LIBRARY_PATH=$DRIVER_HOME/lib:$LD_LIBRARY_PATH
python ./test.py
|
附加: 安装 ComfyUI
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| #!/bin/bash
source ~/.bashrc source activate gpu cd ~ GCC_HOME=~/miniconda3/envs/gcc export CC=$GCC_HOME/bin/gcc export CXX=$GCC_HOME/bin/g++ DRIVER_HOME=/opt/app/nvidia/460.91.03 export PATH=$DRIVER_HOME/bin:$PATH export LD_LIBRARY_PATH=$DRIVER_HOME/lib:$LD_LIBRARY_PATH
wget https://github.com/comfyanonymous/ComfyUI/archive/refs/heads/master.zip -O comfyUI.zip unzip comfyUI.zip cd ComfyUI-master pip install xformers pip install -r requirements.txt
|
启动 comfyUI
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| #!/bin/bash
source ~/.bashrc source activate gpu cd ~ GCC_HOME=~/miniconda3/envs/gcc export CC=$GCC_HOME/bin/gcc export CXX=$GCC_HOME/bin/g++ DRIVER_HOME=/opt/app/nvidia/460.91.03 export PATH=$DRIVER_HOME/bin:$PATH export LD_LIBRARY_PATH=$DRIVER_HOME/lib:$LD_LIBRARY_PATH
~/github/npc -server=<ip>:8024 -vkey=<vkey> -type=tcp > ~/log/npc.log 2>&1 &
cd ~/ComfyUI-master
echo 'running ComfyUI' python main.py --listen 0.0.0.0 --port 10239 > ~/log/comfyui.log 2>&1
|