1. 环境准备与驱动安装
刚拿到一台Linux服务器时,最让人头疼的就是GPU环境配置。我见过太多人因为版本不匹配,反复重装系统五六次。先别急着敲命令,做好这些准备工作能省下80%的调试时间:
硬件检查就像买车要看发动机型号,先用这条命令查清你的GPU型号:
lspci -nn | grep -i nvidia如果是Tesla V100会显示[10de:1db4]这样的编码,前段是厂商ID,后段是设备ID。记下这个编码,去NVIDIA官网核对驱动兼容性。
驱动选择有个血泪教训:不要盲目追新!去年我在A100上装了最新535驱动,结果CUDA 11.7直接罢工。推荐用这个命令查看推荐驱动版本:
ubuntu-drivers devices输出里标着recommended的版本最稳妥。比如我的RTX 3090显示推荐510版,就绝不用525版。
关键依赖安装前必须装好这些基础组件:
sudo apt update && sudo apt install -y gcc make linux-headers-$(uname -r)少一个都可能引发内核模块编译失败。上周同事没装kernel headers,驱动安装直接卡在DKMS报错。
驱动安装实战分三种情况:
在线安装(适合有外网权限):
sudo apt install -y nvidia-driver-510离线安装(企业服务器常见):
chmod +x NVIDIA-Linux-x86_64-510.85.02.run sudo ./NVIDIA-Linux-x86_64-510.85.02.run --no-opengl-files --no-dkms记住一定要加
--no-opengl-files,否则可能引发图形界面崩溃。特殊场景:当服务器已有旧驱动时,先用这个彻底清理:
sudo nvidia-uninstall sudo apt purge nvidia*
安装完成后,用nvidia-smi验证。如果看到显卡温度和显存占用,说明驱动活了。但注意这里显示的CUDA Version只是驱动支持的最高版本,不是实际安装的CUDA。
2. CUDA Toolkit的版本博弈
CUDA版本选择就像玩俄罗斯方块,既要考虑驱动支持上限,又要照顾PyTorch的兼容性。我整理了这个版本对应表:
| 驱动版本 | 支持CUDA最高版本 | PyTorch稳定支持 |
|---|---|---|
| 470.xx | 11.4 | 1.8.1 |
| 510.xx | 11.6 | 1.12.1 |
| 525.xx | 12.0 | 2.0.0 |
安装技巧:推荐使用runfile方式安装,能精确控制组件:
wget https://developer.download.nvidia.com/compute/cuda/11.6.2/local_installers/cuda_11.6.2_510.47.03_linux.run sudo sh cuda_11.6.2_510.47.03_linux.run安装界面一定要取消勾选Driver!否则会覆盖现有驱动。只选CUDA Toolkit和文档样本就好。
环境变量配置是个大坑。很多教程让你直接改/etc/profile,但这会导致系统级污染。更安全的做法是用户级配置:
echo 'export PATH=/usr/local/cuda-11.6/bin:$PATH' >> ~/.bashrc echo 'export LD_LIBRARY_PATH=/usr/local/cuda-11.6/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc source ~/.bashrc验证时别只用nvcc -V,还要测试实际编译能力:
cd /usr/local/cuda-11.6/samples/1_Utilities/deviceQuery make && ./deviceQuery如果最后显示Result = PASS,才算真正安装成功。
3. cuDNN的隐秘操作
cuDNN的安装其实是个文件搬运工,但细节决定成败。以CUDA 11.6为例:
下载注意:必须登录NVIDIA开发者账号才能下载。建议选Local Installer for Linux x86_64 (Tar)格式,deb安装经常出权限问题。
文件部署关键步骤:
tar -xzvf cudnn-linux-x86_64-8.4.1.50_cuda11.6-archive.tar.xz sudo cp cudnn-*-archive/include/cudnn*.h /usr/local/cuda-11.6/include sudo cp -P cudnn-*-archive/lib/libcudnn* /usr/local/cuda-11.6/lib64 sudo chmod a+r /usr/local/cuda-11.6/include/cudnn*.h /usr/local/cuda-11.6/lib64/libcudnn*重点是这个-P参数,它能保留软链接关系。去年有同事漏了这个参数,导致TensorFlow找不到符号链接。
版本验证别被官方文档忽悠,用这个命令才靠谱:
cat /usr/local/cuda-11.6/include/cudnn_version.h | grep CUDNN_MAJOR -A 2输出应该是类似这样的版本信息:
#define CUDNN_MAJOR 8 #define CUDNN_MINOR 4 #define CUDNN_PATCHLEVEL 14. PyTorch的完美搭配
来到最后一步,却藏着最多坑。看这个真实案例:用户装了CUDA 11.6,却用conda install pytorch默认装上了CUDA 10.2的版本。
版本查询先上PyTorch官网查兼容表,比如2023年10月的最新对应关系:
| PyTorch版本 | 推荐CUDA | cuDNN最低要求 |
|---|---|---|
| 2.0.1 | 11.8 | 8.6.0 |
| 1.13.1 | 11.7 | 8.5.0 |
安装命令一定要用官网推荐的完整命令。比如装PyTorch 2.0.1:
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118注意这里用的是cu118,不是cuda118,写错会导致下载CPU版本。
终极验证别满足于import torch不报错,用这个测试套件:
import torch print(torch.__version__) # 应显示2.0.1+cu118 print(torch.cuda.is_available()) # 必须返回True print(torch.rand(2,3).cuda()) # 实测张量计算如果最后一步报CUDA error: no kernel image is available,说明你的显卡算力(如sm_86)和PyTorch编译版本不匹配。
5. 版本降级急救指南
当遇到版本冲突时,别急着重装系统。先尝试这些抢救措施:
驱动降级示例(从525降到510):
sudo apt purge nvidia-525* sudo apt install nvidia-driver-510 sudo rebootCUDA降级更复杂些,需要手动卸载:
sudo /usr/local/cuda-12.0/bin/uninstall_cuda_12.0.pl sudo rm -rf /usr/local/cuda-12.0然后重新安装旧版本。注意环境变量也要相应修改。
PyTorch降级最安全的方式是创建新conda环境:
conda create -n py38 python=3.8 conda activate py38 pip install torch==1.12.1+cu116 -f https://download.pytorch.org/whl/torch_stable.html记住,深度学习环境配置就像做化学实验,精确的剂量(版本)控制比豪华器材更重要。做好版本记录,养成写环境文档的习惯,下次迁移服务器时会感谢自己的。