非ROOT用户配置远程CUDA服务器的深度学习环境,下面以Pytorch为例。

CUDA驱动

查看服务器已经安装的CUDA版本:

1
nvcc -V

我这里显示11.4版本,但这并不重要。接下来查看驱动版本,这关系着我们在conda虚拟环境所能够安装的最新CUDA版本。

1
2
3
4
nvidia-smi

### Output
### Driver Version: 535.129.03   CUDA Version: 12.2

提示:

这里的 CUDA Version 显示12.2,其实是服务器安装的CUDA驱动支持安装的最新的CUDA版本,也就是说我们接下来可以安装的CUDA版本最高为12.2,本机已经安装的CUDA版本为11.4。

因为我们是非ROOT用户,使用不能改变已安装驱动版本,但是可以通过Conda虚拟环境安装新的CUDA版本。

Conda

非root用户配置python相关环境时,我极其推荐使用conda包管理器来实现依赖管理(其实使用R语言的用户也推荐使用)。

我这里安装的是miniconda版本(最小化版本),也可以安装anaconda(完整版)。

博客里以前也写过相关内容

1
2
3
# 我安装环境时选择的是3.10版本python
conda create -n torch python=3.10
conda activate torch

Pytorch

可以在 Pytorch History Release 查询Pytorch历史发布版本,结合自己的需求(例如Colossal-AI需要PyTorch >= 1.11 并且 PyTorch <= 2.1)。最终我选择的就是pytorch==2.1.0 并且 CUDA==11.8 。

1
2
3
4
5
6
7
8
9
# CUDA 11.8
# 小于驱动最高支持版本 12.2 但是大于已安装CUDA版本 11.4
# 尽量不要跳大版本安装
# 比如我本机安装的是11.4 那我就选择cuda=11.8安装 安装12.1似乎有点问题?
conda install pytorch==2.1.0 torchvision==0.16.0 torchaudio==2.1.0 pytorch-cuda=11.8 -c pytorch -c nvidia

#### 使用pip镜像源
#### 链接最后的cu121按需更改
pip3 install torch torchvision torchaudio --index-url https://mirror.sjtu.edu.cn/pytorch-wheels/cu121

题外话:

至于为什么pytorch针对有些cuda版本不会重新发布,在这个issue中pytorch的一位开发者解释到pytorch-cuda113能够在cuda114版本使用,简单来说就是没有必要重新发布,114版本直接使用113的就可以了。

pytorch-cuda

检查CUDA可用性

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 方法一:
python -c "import torch; print(torch.cuda.is_available())"

# 方法二:
(torch) [username/pwd]$ python
Python 3.10.13 (main, Sep 11 2023, 13:44:35) [GCC 11.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> torch.cuda.is_available()
True
>>> exit()

CUDA

Nvidia-Cuda 查找已安装的Pytorch对应的CUDA版本,我这里是11.8。

1
2
3
4
5
6
7
8
9
# 在nvidia官方channel下载包不会显示进度条 下载速度慢
# 国内推荐使用镜像站 编辑 .condarc 文件 或者执行下面的 conda config --set 命令
# nvidia: https://mirrors.sustech.edu.cn/anaconda-extra/cloud
conda config --set custom_channels.nvidia https://mirrors.sustech.edu.cn/anaconda-extra/cloud

# 官方命令:conda install nvidia/label/cuda-11.8.0::cuda
# 上述命令经过测试 可能会导致cuda版本错误匹配 感谢评论区老哥

conda install cuda -c nvidia/label/cuda-11.8.0

此时输入 nvcc -V 命令可以发现已安装版本已经是11.8了。

nvcc -V

使用conda安装的cuda

1
2
# 可以避免一些程序找不到conda安装的CUDA(11.8) 而去使用系统自带的CUDA(11.4)
export CUDA_HOME=$CONDA_PREFIX

额外

zsh

参考Unix终端安装配置Oh My Zsh教程中非root用户编译安装部分。

如果在编译过程中遇到报错,可以尝试升级gcc等编译组件再尝试安装。

点击查看进一步安装Oh My Zsh教程。

gcc clang g++ clang++

1
2
# 服务器自带gcc版本太低 甚至不支持g++ 使用conda安装后直接生效
conda install -c conda-forge cxx-compiler cmake clang

xformers

1
2
3
4
5
6
7
# 官方仓库建议命令
conda install xformers -c xformers

# 确认安装之前一定要仔细核对包变更记录
# 存在替换已安装pytorch版本的可能 此时一定不要安装
# 尝试加上 -c nvidia -c pytorch 应该就没问题了
conda install xformers -c xformers -c nvidia -c pytorch

transformers & datasets & accelerate

1
2
# 使用conda安装可能不会是最新版本 pip最好
pip install transformers datasets accelerate -U

查看显卡计算能力

1
nvidia-smi --query-gpu=compute_cap --format=csv

参考

Nvidia-Cuda

Pytorch History Release

Pytorch Github Issue

无Root配置科研环境:zsh插件、conda/python环境等