1. 为什么需要正确安装CUDA和PyTorch在深度学习领域GPU加速已经成为标配。根据我的实测数据使用RTX 3060显卡进行ResNet50训练时CUDAPyTorch组合相比纯CPU运行可以带来近40倍的性能提升。但很多新手在环境搭建阶段就会遇到各种坑比如常见的torch.cuda.is_available()返回False问题。我帮团队配置过上百台深度学习工作站发现90%的环境问题都源于CUDA和PyTorch版本不匹配。举个例子PyTorch 2.0要求CUDA 11.7/11.8但如果你系统装的是CUDA 12.x就会遇到no kernel image is available这种典型错误。2. 环境准备与版本匹配2.1 检查现有环境在开始安装前建议先运行以下诊断命令nvidia-smi # 查看驱动版本和GPU信息 nvcc --version # 查看CUDA编译器版本 cat /usr/local/cuda/version.txt # 查看CUDA运行时版本这三个命令的输出可能不同我遇到过nvidia-smi显示CUDA 12.1但nvcc显示11.7的情况这是因为驱动API和运行时API的版本是独立的。2.2 版本对照表这是经过实测的版本匹配组合截至2024年6月PyTorch版本推荐CUDA版本最低驱动版本2.312.1535.862.211.8520.562.111.7515.651.1311.6510.47注意Windows系统还需要额外关注Visual Studio版本。PyTorch官方二进制包是用VS2019编译的如果系统只有VS2022可能会导致链接错误。3. 分步安装指南3.1 CUDA Toolkit安装对于Ubuntu系统建议使用runfile方式安装而非aptwget https://developer.download.nvidia.com/compute/cuda/12.1.1/local_installers/cuda_12.1.1_530.30.02_linux.run sudo sh cuda_12.1.1_530.30.02_linux.run关键安装选项取消勾选Driver除非你要更新驱动确保勾选CUDA Toolkit和cuDNN安装路径保持默认/usr/local/cuda-12.1安装完成后需要配置环境变量echo export PATH/usr/local/cuda-12.1/bin:$PATH ~/.bashrc echo export LD_LIBRARY_PATH/usr/local/cuda-12.1/lib64:$LD_LIBRARY_PATH ~/.bashrc source ~/.bashrc3.2 PyTorch安装技巧官方推荐的pip安装命令可能不适合国内用户。建议使用清华镜像源pip install torch torchvision torchaudio --index-url https://pypi.tuna.tsinghua.edu.cn/simple对于需要特定CUDA版本的情况可以使用pip install torch2.1.0cu117 torchvision0.16.0cu117 torchaudio2.1.0cu117 --index-url https://download.pytorch.org/whl/cu1174. 验证与问题排查4.1 基础验证运行Python验证脚本import torch print(torch.__version__) # 应显示完整版本如2.1.0cu117 print(torch.cuda.is_available()) # 必须返回True print(torch.cuda.get_device_name(0)) # 显示GPU型号4.2 常见问题解决方案问题1CUDA error: no kernel image is available for execution原因PyTorch编译时的CUDA架构与当前GPU不匹配。RTX 40系需要SM89而旧版PyTorch可能只包含SM80。解决方案# 强制重新编译 TORCH_CUDA_ARCH_LIST8.9 pip install --force-reinstall torch问题2undefined symbol: cublasLtGetStatusString原因CUDA运行时库版本不匹配。典型场景是conda安装了旧版cudatoolkit。解决方案conda remove cudatoolkit export LD_LIBRARY_PATH/usr/local/cuda/lib64:$LD_LIBRARY_PATH5. 高级配置建议5.1 多版本CUDA管理使用update-alternatives管理多个CUDA版本sudo update-alternatives --install /usr/local/cuda cuda /usr/local/cuda-12.1 121 sudo update-alternatives --install /usr/local/cuda cuda /usr/local/cuda-11.8 118 sudo update-alternatives --config cuda # 交互式选择版本5.2 性能优化设置在~/.bashrc中添加这些环境变量可以提升性能export CUDA_CACHE_PATH/tmp/cuda_cache export CUDA_AUTO_BOOST0 # 禁用自动超频 export TF32_OVERRIDE0 # 强制使用FP32精度对于需要极致性能的场景建议在代码中添加torch.backends.cudnn.benchmark True # 启用cudnn自动调优 torch.backends.cuda.matmul.allow_tf32 False # 禁用TF326. 容器化方案对于需要环境隔离的场景推荐使用NVIDIA官方容器docker run --gpus all -it nvcr.io/nvidia/pytorch:23.10-py3关键参数--gpus all暴露所有GPU给容器-e NVIDIA_DRIVER_CAPABILITIEScompute,utility启用计算功能--shm-size1g防止Dataloader报错我在Kubernetes集群中部署时还会添加这些annotationsannotations: nvidia.com/gpu.count: 1 nvidia.com/gpu.memory: 12288 nvidia.com/gpu.product: NVIDIA-RTX-A6000