云服务器安装CUDA和PyTorch搭建深度学习环境步骤

在选购并启动GPU云服务器后,如何正确配置CUDA与PyTorch是决定模型训练效率的关键一步。许多用户在完成实例创建后,面临驱动不兼容、环境变量错误、版本冲突等常见问题,导致GPU无法被PyTorch识别。以下为基于主流Linux发行版(如Ubuntu 20.04/22.04、CentOS 7/8)的标准化操作流程,适用于阿里云、腾讯云、华为云等主流厂商提供的NVIDIA GPU实例。

第一步:确认GPU型号与驱动支持

在安装任何软件前,必须明确当前实例所搭载的GPU类型及其对应的NVIDIA驱动版本。

  • 执行命令 lspci | grep -i nvidia 查看GPU型号,例如输出可能为“Tesla T4”或“A10”
  • 根据型号访问 NVIDIA官方驱动下载页 查询推荐驱动版本
  • 使用 nvidia-smi 命令验证是否已有预装驱动;若未安装或版本过低需手动更新

第二步:禁用Nouveau开源驱动(仅Linux)

Nouveau是Linux内核自带的开源NVIDIA驱动,会与官方闭源驱动冲突,必须提前禁用。

  1. 检查是否启用:lsmod | grep nouveau,若有输出则需禁用
  2. 创建黑名单文件:sudo vim /etc/modprobe.d/blacklist-nouveau.conf
  3. 写入以下内容:
    blacklist nouveau
    options nouveau modeset=0
  4. 重新生成initramfs镜像:
    • Ubuntu/Debian: sudo update-initramfs -u
    • CentOS/RHEL: sudo dracut --force
  5. 重启系统:sudo reboot,再次运行 lsmod | grep nouveau 确认无输出

第三步:安装NVIDIA驱动

建议通过.run文件方式安装以获得最大控制权。

  • 从NVIDIA官网下载对应版本的.run驱动文件,例如 NVIDIA-Linux-x86_64-535.129.03.run
  • 赋予执行权限:chmod +x NVIDIA-Linux-x86_64.run
  • 关闭图形界面(如有)并切换至TTY模式,执行安装:
    sudo ./NVIDIA-Linux-x86_64.run
  • 安装过程中选择“否”跳过DKMS注册(除非需要热插拔支持),其余选项默认即可
  • 安装完成后运行 nvidia-smi,应显示GPU信息及驱动版本

第四步:安装CUDA Toolkit

CUDA版本需与后续PyTorch版本严格匹配,否则将导致无法调用GPU。

  1. 前往 CUDA Toolkit Archive 选择目标版本
  2. 推荐选择长期支持版本如CUDA 11.8或CUDA 12.2,避免使用最新测试版
  3. 选择runfile安装方式,复制wget链接并下载:
    wget https://developer.download.nvidia.com/compute/cuda/12.2.0/local_installers/cuda_12.2.0_535.86.10_linux.run
  4. 执行安装脚本:sudo sh cuda_12.2.0_535.86.10_linux.run
  5. 取消勾选“Driver”选项(因已单独安装),仅安装CUDA Toolkit和Samples
  6. 设置安装路径为默认的 /usr/local/cuda-12.2

第五步:配置环境变量

确保系统能正确找到CUDA相关二进制和库文件。

  • 编辑用户级配置文件:vim ~/.bashrc
  • 在末尾添加:
    export PATH=/usr/local/cuda-12.2/bin:$PATH
    export LD_LIBRARY_PATH=/usr/local/cuda-12.2/lib64:$LD_LIBRARY_PATH
    export CUDA_HOME=/usr/local/cuda-12.2
  • 立即生效:source ~/.bashrc
  • 验证安装:nvcc -V 应输出CUDA编译器版本信息

第六步:安装cuDNN(可选但强烈推荐)

cuDNN是深度神经网络专用加速库,几乎所有主流框架都依赖它。

  • 登录NVIDIA Developer账户,进入 cuDNN下载页
  • 选择与CUDA版本匹配的cuDNN版本(如CUDA 12.x对应cuDNN 8.9.x)
  • 下载tgz包并解压:tar -xzvf cudnn-linux-x86_64-8.9.7.29_cuda12-archive.tar.xz
  • 复制文件到CUDA目录:
    sudo cp cudnn--archive/include/cudnn.h /usr/local/cuda/include/
    sudo cp cudnn--archive/lib/libcudnn /usr/local/cuda/lib64/
    sudo chmod a+r /usr/local/cuda/include/cudnn.h
    sudo chmod a+r /usr/local/cuda/lib64/libcudnn

第七步:部署Python环境与PyTorch

使用Anaconda管理虚拟环境可有效隔离依赖冲突。

  1. 安装Miniconda或Anaconda,然后创建新环境:
    conda create -n dl-env python=3.10
  2. 激活环境:conda activate dl-env
  3. 添加国内镜像源以提升下载速度:
    conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
    conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
    conda config --set show_channel_urls yes
  4. 安装PyTorch时务必指定与CUDA版本匹配的构建版本:
    • 对于CUDA 11.8:conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia
    • 对于CUDA 12.1:conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia
  5. 安装完成后进入Python交互环境验证:
    >>> import torch
    >>> print(torch.cuda.is_available())
    True
    >>> print(torch.version.cuda)

    输出应为True及对应CUDA版本号

第八步:常见问题排查指南

即使严格按照步骤操作,仍可能出现异常情况。

  • PyTorch无法识别GPU:检查CUDA与PyTorch构建版本是否一致,可通过 pip show torch 查看其依赖的CUDA版本
  • nvidia-smi报错“No devices found”:确认BIOS中已启用PCI-E设备,且云服务商控制台已正确挂载GPU
  • 内存溢出导致训练中断:调整batch size,启用梯度累积,或使用混合精度训练 torch.cuda.amp
  • SSH连接中断导致进程终止:使用 tmuxnohup 启动长时间任务

第九步:性能调优建议

正确的配置不仅能成功运行,还能显著提升训练吞吐量。

  • 启用CUDA上下文持久化:export PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:512
  • 使用 torch.backends.cudnn.benchmark = True 加速卷积运算
  • 对大模型启用 FSDPDeepSpeed 进行分布式训练
  • 定期监控GPU利用率:nvidia-smi dmon -s u -d 1