刚拿到一台全新的Linux工作站时,我总有种既兴奋又忐忑的感觉。兴奋的是可以搭建一个干净的环境,忐忑的是每次安装CUDA都像在拆盲盒——你永远不知道会遇到什么奇怪的依赖问题。不过别担心,跟着我的步骤走,能避开90%的坑。
首先得确保系统是最新的。打开终端,运行这两个命令就像每天早上刷牙一样基础但重要:
bash复制sudo apt update
sudo apt upgrade -y
接下来安装编译工具链,这是后续所有安装的基础。有次我偷懒跳过了这步,结果CUDA安装直接报错,浪费了两小时查资料。现在我都老老实实先装好这些:
bash复制sudo apt install -y gcc g++ make cmake build-essential
图形开发包也不能少,特别是打算跑可视化应用的话。这个列表是我多次安装总结出来的必备项:
bash复制sudo apt install -y libglu1-mesa libxi-dev libxmu-dev libglu1-mesa-dev freeglut3-dev
提示:如果系统提示某些包不存在,可以先尝试更新软件源列表。不同Linux发行版的包管理命令可能略有差异。
CUDA安装最让人头疼的就是版本匹配。我见过太多人因为版本不对应而debug到怀疑人生。首先确认你的NVIDIA驱动支持CUDA 12.1:
bash复制nvidia-smi
如果没安装驱动,可以先通过官方推荐方式安装。不过我更习惯直接用CUDA安装包自带的驱动,这样版本肯定匹配。下载官方runfile安装包:
bash复制wget https://developer.download.nvidia.com/compute/cuda/12.1.0/local_installers/cuda_12.1.0_530.30.02_linux.run
运行安装时有个小技巧——加上--override参数能避免一些签名验证问题:
bash复制sudo sh cuda_12.1.0_530.30.02_linux.run --override
安装界面里记得勾选Driver、CUDA Toolkit和CUDA Samples。有次我手快漏选了Driver,结果重启后直接进不了图形界面,只能重装系统。
安装完成后,需要告诉系统CUDA的位置。先确认安装目录:
bash复制ls -l /usr/local | grep cuda
然后把这些加到~/.bashrc的末尾(如果是zsh用户就改~/.zshrc):
bash复制export PATH=/usr/local/cuda-12.1/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-12.1/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
使配置立即生效:
bash复制source ~/.bashrc
验证安装是否成功:
bash复制nvcc -V
这个命令应该输出CUDA 12.1的版本信息。如果报错,八成是PATH没设对。
cuDNN就像是CUDA的"涡轮增压器",能让深度学习训练速度提升不少。但它的安装过程有点特别——需要手动复制文件。
首先去NVIDIA官网下载对应CUDA 12.1的cuDNN包(需要注册账号)。下载后解压:
bash复制tar -xvf cudnn-linux-x86_64-8.9.6.50_cuda12-archive.tar.xz
然后复制头文件和库文件到CUDA目录:
bash复制sudo cp cudnn-linux-x86_64-8.9.6.50_cuda12-archive/include/cudnn.h /usr/local/cuda-12.1/include
sudo cp cudnn-linux-x86_64-8.9.6.50_cuda12-archive/lib/libcudnn* /usr/local/cuda-12.1/lib64
最后设置文件权限:
bash复制sudo chmod a+r /usr/local/cuda-12.1/include/cudnn.h /usr/local/cuda-12.1/lib64/libcudnn*
注意:cuDNN版本必须严格匹配CUDA版本。我有次用了不对应的版本,导致PyTorch运行时出现各种奇怪的段错误。
官方推荐的conda或pip安装命令有时候会抽风,特别是网络环境不稳定时。这时候手动安装反而更可靠。先去PyTorch官网找到对应CUDA 12.1的whl文件:
code复制https://download.pytorch.org/whl/torch_stable.html
下载对应你Python版本和CUDA版本的torch和torchvision。比如Python 3.8的用户应该找:
code复制torch-2.1.0+cu121-cp38-cp38-linux_x86_64.whl
torchvision-0.16.0+cu121-cp38-cp38-linux_x86_64.whl
先卸载可能存在的旧版本(避免冲突):
bash复制pip uninstall torch torchvision torchaudio
然后安装下载好的whl文件:
bash复制pip install torch-2.1.0+cu121-cp38-cp38-linux_x86_64.whl
pip install torchvision-0.16.0+cu121-cp38-cp38-linux_x86_64.whl
如果提示缺少依赖,可以先安装这些常见依赖:
bash复制pip install numpy ninja pyyaml typing-extensions
最后也是最激动人心的时刻——验证GPU是否可用。打开Python解释器:
python复制import torch
print(torch.cuda.is_available())
print(torch.__version__)
print(torch.version.cuda)
如果看到True、2.1.0和12.1的输出,恭喜你!可以开始愉快地训练模型了。如果返回False,别慌,按这个顺序检查:
我在一台新服务器上遇到过torch.cuda.is_available()返回False的情况,最后发现是因为BIOS里没开启Above 4G Decoding选项。这种硬件层面的问题最难排查,建议作为最后的手段检查。