一看就会系列之配置Anaconda虚拟环境、配置GPU、CUDA、CUDNN、服务器运行深度学习代码!

深度学习GPU环境配置完整指南

1. 使用Anaconda创建虚拟环境并安装PyTorch/TensorFlow (Windows/Linux)

Windows下:

  • 创建虚拟环境:打开Anaconda Prompt或终端,执行
    conda create -n dl_gpu_env python=3.8
    conda activate dl_gpu_env
    
    (示例中创建名为dl_gpu_env的环境,Python版本可根据需要调整) (在conda虚拟环境下安装PyTorch-gpu版本_conda安装torch-CSDN博客)。
  • 安装PyTorch(含CUDA):先更新显卡驱动(如GeForce Experience),然后在已激活的虚拟环境中执行:
    conda install pytorch torchvision torchaudio cudatoolkit=11.7 -c pytorch
    
    上述命令会自动安装与CUDA 11.7兼容的PyTorch GPU版 (在conda虚拟环境下安装PyTorch-gpu版本_conda安装torch-CSDN博客)(版本号可根据PyTorch官网选择)。安装完成后,可用 pip list 查看Torch等包已带有CUDA后缀,表示为GPU版本。
  • 安装TensorFlow(含GPU):一般使用 pip 安装新版TensorFlow即可(TF2.x以后GPU支持已集成):
    pip install --upgrade pip
    pip install tensorflow
    
    如果是旧版(TF 1.x),可使用 pip install tensorflow-gpu。安装完成后,使用import tensorflow as tf; print(tf.__version__)验证版本。
  • 测试GPU可用性:在Python中执行示例代码:
    import torch
    print(torch.cuda.is_available())            # True表示PyTorch可用GPU ([在conda虚拟环境下安装PyTorch-gpu版本_conda安装torch-CSDN博客](https://blog.csdn.net/m0_63669388/article/details/133612273#:~:text=%3E%20%E5%88%B0%E6%9C%80%E5%90%8E%EF%BC%8C%E5%9C%A8python%E4%B8%AD%E4%BD%BF%E7%94%A8%20%60torch.cuda.is_available%28%29%60%E8%BF%94%E5%9B%9E%E5%80%BC%E6%98%AFTrue%E7%9A%84%E6%97%B6%E5%80%99%E8%AF%81%E6%98%8E%E5%AE%89%E8%A3%85pytorch))
    print("GPU型号:", torch.cuda.get_device_name(0))
    
    import tensorflow as tf
    print("Num GPUs Available: ", len(tf.config.list_physical_devices('GPU')))  # 应输出 >=1 ([使用 GPU  |  TensorFlow Core](https://www.tensorflow.org/guide/gpu?hl=zh-cn#:~:text=import%20tensorflow%20as%20tf%20print%28,len%28tf.config.list_physical_devices%28%27GPU))
    
    如输出True或GPU数量≥1,说明GPU环境配置正常 (在conda虚拟环境下安装PyTorch-gpu版本_conda安装torch-CSDN博客) (使用 GPU | TensorFlow Core)。

Linux下(以Ubuntu为例):

  • 安装NVIDIA驱动:首先安装NVIDIA GPU驱动。对于Ubuntu,可执行:
    sudo apt update
    sudo ubuntu-drivers devices            # 查看推荐驱动
    sudo ubuntu-drivers autoinstall       # 自动安装推荐驱动
    sudo reboot
    
    或直接从NVIDIA官网下载并安装对应型号驱动。安装后可执行 nvidia-smi 命令查看GPU信息 (win10的tensorflow+cuda10.1+cudnn下载和安装_win10下cuda101 cudnn下载-CSDN博客)。
  • 安装CUDA Toolkit:访问NVIDIA CUDA Toolkit下载,下载与驱动兼容的版本(参考版本对应表 (GPU 支持 | TensorFlow))。例如在Ubuntu上:
    # 添加NVIDIA软件源并安装CUDA(以CUDA 11.7为例)
    wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin
    sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
    sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/7fa2af80.pub
    sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/ /"
    sudo apt-get update
    sudo apt-get -y install cuda-11-7    # 安装CUDA 11.7及驱动
    sudo reboot
    
    安装完成后,执行 nvcc --version 查看CUDA版本;执行 nvidia-smi 查看驱动和GPU状态 (win10的tensorflow+cuda10.1+cudnn下载和安装_win10下cuda101 cudnn下载-CSDN博客)。
  • 安装cuDNN:登录NVIDIA cuDNN下载页,下载与CUDA版本对应的cuDNN(需注册)。下载后解压,将其中的bin/ include/ lib文件复制到CUDA安装目录下对应文件夹(例如/usr/local/cuda/) (win10的tensorflow+cuda10.1+cudnn下载和安装_win10下cuda101 cudnn下载-CSDN博客)。例如:
    tar -xzvf cudnn-linux-x86_64-11.7-v8.4.2.77.tgz
    sudo cp cuda/include/* /usr/local/cuda/include/
    sudo cp cuda/lib64/* /usr/local/cuda/lib64/
    
    这样CUDA和cuDNN就安装完成,可以运行ldconfig刷新库缓存。
  • 创建虚拟环境并安装库:与Windows类似,安装好CUDA/cuDNN后,使用Anaconda创建环境并安装:
    conda create -n dl_gpu_env python=3.8
    conda activate dl_gpu_env
    conda install pytorch torchvision torchaudio cudatoolkit=11.7 -c pytorch   # PyTorch GPU版
    pip install tensorflow  # TensorFlow GPU版(TF2.x 内置支持)
    
    注意:cudatoolkit版本应与系统实际CUDA匹配,或直接与PyTorch绑定的CUDA版本。安装后同样通过Python代码检查GPU是否被识别。
  • 检查兼容性:务必检查NVIDIA驱动、CUDA、cuDNN版本是否相互兼容。例如TensorFlow 2.5+ 推荐使用CUDA 11.2和cuDNN 8.1 (GPU 支持 | TensorFlow);驱动需不低于450.80.02 (GPU 支持 | TensorFlow)。驱动、CUDA、cuDNN版本不匹配常导致安装失败或无法调用GPU,应参考官方兼容说明选择版本 (GPU 支持 | TensorFlow)。

2. 本地GPU硬件安装与配置(NVIDIA显卡、CUDA、cuDNN)

  • 安装/更新NVIDIA显卡驱动:在开始安装CUDA之前,请先安装或更新显卡驱动。
    • Windows:从NVIDIA官网下载对应的驱动安装包,双击运行安装,完成后重启系统。驱动安装完成后,运行nvidia-smi可查看到显卡型号、驱动版本和GPU使用情况 (GPU之nvidia-smi命令详解-CSDN博客) (win10的tensorflow+cuda10.1+cudnn下载和安装_win10下cuda101 cudnn下载-CSDN博客)。
    • Linux:参考发行版文档安装,如Ubuntu可使用sudo ubuntu-drivers autoinstall安装推荐驱动;或从NVIDIA下载.run安装包手动安装。安装完成后,执行nvidia-smi确认驱动就绪。
  • 安装CUDA Toolkit:下载与驱动匹配的CUDA版本。CUDA Toolkit包括CUDA编译器(nvcc)、库文件和开发环境。
    • Windows:从NVIDIA CUDA Toolkit下载对应版本的安装程序,默认安装路径通常是C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\vXX.X。安装后需将CUDA的bin目录(例如...CUDA\vXX.X\bin)加入系统环境变量Path
    • Linux:参考上文Ubuntu步骤,用官方包管理或.run文件安装。安装路径一般在/usr/local/cuda-XX.X/。安装后可创建软链接/usr/local/cuda -> /usr/local/cuda-XX.X,并将cuda/bin加入$PATHcuda/lib64加入$LD_LIBRARY_PATH
  • 安装cuDNN:在CUDA安装完成后,再安装cuDNN以获得深度学习库支持。
    • 下载匹配CUDA版本的cuDNN(例如cuDNN 8.x 对应CUDA 11.x)。
    • 解压后将include/下的头文件复制到CUDA的include目录,将lib64/下的库文件复制到CUDA的lib64目录 (win10的tensorflow+cuda10.1+cudnn下载和安装_win10下cuda101 cudnn下载-CSDN博客)。举例:
      sudo cp cudnn/include/cudnn*.h /usr/local/cuda/include/
      sudo cp cudnn/lib64/libcudnn* /usr/local/cuda/lib64/
      
    • 执行sudo ldconfig更新库缓存。
  • 兼容性检查:安装完成后,使用以下方法检查各组件是否正确安装:
    • 运行 nvcc --version 查看CUDA编译器版本(例如“Cuda compilation tools, release X.X”) (win10的tensorflow+cuda10.1+cudnn下载和安装_win10下cuda101 cudnn下载-CSDN博客)。
    • 运行 nvidia-smi 查看GPU列表、驱动版本及CUDA版本(显示在Driver Version/CUDA Version列) (win10的tensorflow+cuda10.1+cudnn下载和安装_win10下cuda101 cudnn下载-CSDN博客)。
    • 在Python中运行上述PyTorch/TensorFlow代码检查GPU可用性 (在conda虚拟环境下安装PyTorch-gpu版本_conda安装torch-CSDN博客) (使用 GPU | TensorFlow Core)。如果出现问题,请确认驱动版本满足CUDA要求(如CUDA 11.2需驱动≥450.80.02 (GPU 支持 | TensorFlow)),并且cuDNN版本与CUDA匹配。

3. 常用命令:检查GPU是否正确识别

  • 命令行检查
    • nvidia-smi:查看所有NVIDIA GPU的状态(型号、驱动、显存、利用率等) (win10的tensorflow+cuda10.1+cudnn下载和安装_win10下cuda101 cudnn下载-CSDN博客)。该命令随驱动安装,安装成功后终端输入即可。
    • nvcc --version:检查CUDA编译器版本 (win10的tensorflow+cuda10.1+cudnn下载和安装_win10下cuda101 cudnn下载-CSDN博客)。
  • PyTorch代码检查
    import torch
    print("CUDA available:", torch.cuda.is_available())   # True表示GPU可用 ([在conda虚拟环境下安装PyTorch-gpu版本_conda安装torch-CSDN博客](https://blog.csdn.net/m0_63669388/article/details/133612273#:~:text=%3E%20%E5%88%B0%E6%9C%80%E5%90%8E%EF%BC%8C%E5%9C%A8python%E4%B8%AD%E4%BD%BF%E7%94%A8%20%60torch.cuda.is_available%28%29%60%E8%BF%94%E5%9B%9E%E5%80%BC%E6%98%AFTrue%E7%9A%84%E6%97%B6%E5%80%99%E8%AF%81%E6%98%8E%E5%AE%89%E8%A3%85pytorch))
    print("GPU数量:", torch.cuda.device_count())
    if torch.cuda.is_available():
        print("当前GPU型号:", torch.cuda.get_device_name(0))
    
    如果torch.cuda.is_available()返回True,则说明PyTorch已识别GPU (在conda虚拟环境下安装PyTorch-gpu版本_conda安装torch-CSDN博客)。
  • TensorFlow代码检查
    import tensorflow as tf
    gpus = tf.config.list_physical_devices('GPU')
    print("可见GPU列表:", gpus)
    print("GPU数量:", len(gpus))
    
    当输出列表非空,GPU可见时,说明TensorFlow已使用到GPU (使用 GPU | TensorFlow Core)。

4. GPU云服务器租用与连接

  • 选择GPU服务器:常见云平台(阿里云、AWS、Google Cloud、Paperspace、LambdaLabs 等)均提供GPU实例。以阿里云为例:登录阿里云控制台,进入“弹性计算(ECS) > 实例”创建页面,选择“GPU实例”,再选中合适的实例规格(如“gn6i-c8g1.2xlarge”配备一块Tesla V100 GPU)。购买时注意区域、付费模式(按量/包年包月)等。 (创建GPU实例时自动安装或加载Tesla驱动_GPU云服务器(EGS)-阿里云帮助中心) (创建GPU实例时自动安装或加载Tesla驱动_GPU云服务器(EGS)-阿里云帮助中心)
  • 镜像与驱动:选择镜像时,可使用预装GPU驱动的镜像。例如阿里云提供“预装GPU驱动”的镜像,或选中“安装GPU驱动”选项,让系统自动安装NVIDIA驱动 (创建GPU实例时自动安装或加载Tesla驱动_GPU云服务器(EGS)-阿里云帮助中心)。AWS可使用深度学习AMI(已内置NVIDIA驱动、CUDA、常见框架)。
  • 安全组与SSH连接:为实例配置允许22/TCP入站规则。获取SSH密钥对(或用户名密码)。实例启动后,通过SSH连接(例如Linux/Mac或Windows的WSL下):
    ssh -i /path/to/key.pem username@实例公网IP
    
    连接成功后,即进入服务器终端。通常GPU云服务器为Linux系统(常见用户如Ubuntu:用户名ubuntu,AWS Deep Learning AMI用户名ec2-user等)。
  • 环境准备:远程登录后,可按照第2节方法安装或验证NVIDIA驱动、CUDA、cuDNN。对于云平台,许多GPU实例已预装驱动和CUDA,若缺少可参考官方文档手动安装或使用云市场镜像。
  • 托管平台:部分平台(Paperspace、LambdaLabs)通过Web页面或API创建机器后也提供SSH访问,基本流程类似:登录平台、选GPU机型、创建并获取连接信息、SSH即可。

5. 服务器上配置深度学习环境并运行训练

  • 安装Anaconda/Miniconda:进入云服务器后,建议安装Anaconda或Miniconda:
    # 以Miniconda为例
    wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
    bash Miniconda3-latest-Linux-x86_64.sh
    source ~/.bashrc
    
  • 创建虚拟环境:与本地类似,创建专用环境安装深度学习框架:
    conda create -n remote_dl python=3.8
    conda activate remote_dl
    conda install pytorch torchvision cudatoolkit=11.7 -c pytorch
    pip install tensorflow
    
  • 运行训练任务:将训练代码和数据传到服务器,可使用git clonewgetscp上传。进入对应目录后,用Python运行训练脚本。例如在PyTorch中:
    python train_mnist_pytorch.py
    
    程序中需确保将模型和数据发送到GPU设备(见示例)。
  • 调试与监控:使用nvidia-smi实时监控GPU占用情况。也可借助 htopwatch -n 5 nvidia-smi 等命令。建议使用screentmux保持会话,避免SSH断开导致训练中断。

6. 示例:使用GPU运行MNIST分类任务

  • PyTorch示例:下面示例加载MNIST数据,定义简单卷积网络,并在GPU上训练:

    import torch
    import torch.nn as nn
    import torch.nn.functional as F
    import torch.optim as optim
    from torchvision import datasets, transforms
    
    device = torch.device("cuda" if torch.cuda.is_available() else "cpu")  # 自动选择GPU ([3.2.1 ConvNet Mnist - PyTorch Tutorial](https://pytorch-tutorial.readthedocs.io/en/latest/tutorial/chapter03_intermediate/3_2_1_cnn_convnet_mnist/#:~:text=DEVICE%20%3D%20torch.device%28,%E8%AE%A9torch%E5%88%A4%E6%96%AD%E6%98%AF%E5%90%A6%E4%BD%BF%E7%94%A8GPU%EF%BC%8C%E5%BB%BA%E8%AE%AE%E4%BD%BF%E7%94%A8GPU%E7%8E%AF%E5%A2%83%EF%BC%8C%E5%9B%A0%E4%B8%BA%E4%BC%9A%E5%BF%AB%E5%BE%88%E5%A4%9A))
    # 数据预处理
    train_loader = torch.utils.data.DataLoader(
        datasets.MNIST('data', train=True, download=True,
                       transform=transforms.Compose([
                           transforms.ToTensor(),
                           transforms.Normalize((0.1307,), (0.3081,))
                       ])),
        batch_size=512, shuffle=True)
    
    # 定义网络
    class ConvNet(nn.Module):
        def __init__(self):
            super().__init__()
            self.conv1 = nn.Conv2d(1, 10, kernel_size=5)  # 28x28 -> 24x24
            self.conv2 = nn.Conv2d(10, 20, kernel_size=5)  # 24x24 -> 20x20
            self.fc1 = nn.Linear(20*20*20, 500)
            self.fc2 = nn.Linear(500, 10)
        def forward(self, x):
            x = F.relu(F.max_pool2d(self.conv1(x), 2))  # -> 10x12x12
            x = F.relu(F.max_pool2d(self.conv2(x), 2))  # -> 20x4x4
            x = x.view(x.size(0), -1)
            x = F.relu(self.fc1(x))
            x = self.fc2(x)
            return F.log_softmax(x, dim=1)
    
    model = ConvNet().to(device)           # 将模型移动到GPU ([3.2.1 ConvNet Mnist - PyTorch Tutorial](https://pytorch-tutorial.readthedocs.io/en/latest/tutorial/chapter03_intermediate/3_2_1_cnn_convnet_mnist/#:~:text=model%20%3D%20ConvNet%28%29,parameters))
    optimizer = optim.Adam(model.parameters())
    # 训练一个epoch示例
    model.train()
    for data, target in train_loader:
        data, target = data.to(device), target.to(device)
        optimizer.zero_grad()
        output = model(data)
        loss = F.nll_loss(output, target)
        loss.backward()
        optimizer.step()
    

    运行过程中,nvidia-smi可以看到显存和GPU占用情况。若输出训练日志,说明模型已在GPU上执行。

  • TensorFlow示例:下面示例使用TensorFlow/Keras在GPU上训练MNIST:

    import tensorflow as tf
    # 检查GPU
    gpus = tf.config.list_physical_devices('GPU')
    print("可见GPU:", gpus)  # 确认使用GPU ([使用 GPU  |  TensorFlow Core](https://www.tensorflow.org/guide/gpu?hl=zh-cn#:~:text=import%20tensorflow%20as%20tf%20print%28,len%28tf.config.list_physical_devices%28%27GPU))
    
    # 加载数据并归一化
    (x_train, y_train), (x_test, y_test) = tf.keras.datasets.mnist.load_data()
    x_train, x_test = x_train / 255.0, x_test / 255.0
    
    # 构建模型
    model = tf.keras.models.Sequential([
        tf.keras.layers.Flatten(input_shape=(28, 28)),
        tf.keras.layers.Dense(128, activation='relu'),
        tf.keras.layers.Dense(10, activation='softmax')
    ])
    model.compile(optimizer='adam',
                  loss='sparse_categorical_crossentropy',
                  metrics=['accuracy'])
    # 训练模型
    model.fit(x_train, y_train, epochs=3, batch_size=512)
    

    如果TensorFlow已正确配置GPU,上述训练过程会自动使用GPU加速,并在训练日志中看到GPU内存分配信息。

7. 常见问题及排查

  • 驱动/版本不匹配:若安装失败或运行报错,常见原因是CUDA、cuDNN与框架版本不匹配。请参考官方版本对应表,例如TensorFlow的[安装说明]指出TensorFlow 2.5+需要CUDA 11.2和cuDNN 8.1 (GPU 支持 | TensorFlow)。如出现cuda_runtime_api相关错误,请升级或降级驱动/CUDA/cuDNN至兼容版本。
  • nvidia-smi 不显示GPU:如果运行nvidia-smi提示“Command not found”或未列出显卡,说明驱动未正确安装或PATH未配置。检查驱动安装日志,重启系统,并确保nvidia-smi在PATH路径中(Windows应在C:\Program Files\NVIDIA Corporation\NVSMI下)。
  • TensorFlow不检测到GPU:出现“CPU device”日志而没有GPU日志,可能安装了不含GPU支持的TensorFlow版本(如使用pip install tensorflow时出现此问题请尝试pip install tensorflow-gpu或升级)。也可能是CUDA/cuDNN路径未添加到环境变量。可通过 print(tf.config.list_physical_devices('GPU')) 确认。 (使用 GPU | TensorFlow Core)
  • PyTorch调用CUDA失败:如果torch.cuda.is_available()返回False,检查是否使用了正确的安装命令(必须安装带cudatoolkit的PyTorch或对应的Wheel)。重新安装时可尝试清理环境后按官网命令安装。此外,有时显卡型号过旧也可能不受新CUDA支持。
  • cuDNN未找到:运行时出现找不到libcudnn.so之类错误,确认cuDNN库已复制到CUDA目录并执行了ldconfig (win10的tensorflow+cuda10.1+cudnn下载和安装_win10下cuda101 cudnn下载-CSDN博客)。Windows系统需将cudnn64_*.dll放在CUDA bin目录下。
  • 权限与磁盘空间:安装过程中若提示权限不足,请使用管理员权限(Windows)或sudo(Linux)运行。确保系统磁盘有足够空间存放CUDA和数据集。
  • 其他排错:可查看训练报错信息,上网搜索错误关键词。对未知问题,可尝试用conda clean --all清理缓存,换用其他环境,或在官方论坛/社区提问。

以上步骤和命令覆盖了Windows和Linux下从虚拟环境创建、GPU驱动与库安装,到云服务器部署和示例验证的全流程。如按照要求操作并关注版本兼容,通常能成功在GPU上运行深度学习代码 (GPU 支持 | TensorFlow) (创建GPU实例时自动安装或加载Tesla驱动_GPU云服务器(EGS)-阿里云帮助中心)。

参考资料: 官方安装文档及教程 (GPU 支持 | TensorFlow) (使用 GPU | TensorFlow Core) (创建GPU实例时自动安装或加载Tesla驱动_GPU云服务器(EGS)-阿里云帮助中心)(版本对应表、TensorFlow GPU指南、云服务器GPU配置说明);实用博客教程 (win10的tensorflow+cuda10.1+cudnn下载和安装_win10下cuda101 cudnn下载-CSDN博客) (在conda虚拟环境下安装PyTorch-gpu版本_conda安装torch-CSDN博客)(安装指引、环境测试示例)。

你可能感兴趣的:(服务器,深度学习,python,gpu算力)