第3章:深度学习框架安装——PyTorch与TensorFlow的CUDA版本安装与验证

好,咱们接着往下走。上一章我们把CUDA和cuDNN搞定了,现在终于到了最激动人心的环节——装框架。

说实话,我见过太多人在这一步翻车了。明明CUDA装得好好的,一装PyTorch就报错,一跑TensorFlow就崩。为什么?说白了,就是版本没对上。

我个人习惯是:先确定CUDA版本,再选框架版本,最后动手装。顺序错了,后面全是坑。

3.1 版本匹配:这是最关键的

先看一张图,你就明白整个安装逻辑了:

深度学习框架安装核心逻辑 步骤1:确认CUDA版本 nvidia-smi 查看驱动版本 步骤2:选择框架版本 PyTorch / TensorFlow 步骤3:安装 pip / conda 常见版本对应关系 PyTorch 版本对应 • PyTorch 1.12 → CUDA 11.6 • PyTorch 2.0 → CUDA 11.7/11.8 • PyTorch 2.1+ → CUDA 12.1 TensorFlow 版本对应 • TF 2.10 → CUDA 11.2 • TF 2.12 → CUDA 11.8 • TF 2.15+ → CUDA 12.2 ⚠ 版本不匹配 = 装完跑不起来,这是最常见的坑

嗯,这张图你保存好。每次装框架前看一眼,能省不少事。

3.2 安装PyTorch(CUDA版本)

PyTorch的安装,我个人觉得是最省心的。官方提供了非常清晰的命令,你直接去 pytorch.org 选你的配置就行。

但这里有个细节——我建议你用conda装,别用pip。为什么?

我在项目中遇到过好几次,用pip装PyTorch,结果它把CUDA runtime也给你装了一份,跟你系统里已有的CUDA打架。conda就不会,它更尊重你已有的环境。

推荐安装方式(conda):

# 创建一个新环境,避免污染base
conda create -n pytorch_env python=3.10
conda activate pytorch_env

# 安装PyTorch 2.1 + CUDA 12.1
conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia

小技巧: 如果你网速慢,可以加上 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/ 用清华镜像。但注意,有时候镜像同步有延迟,版本可能不是最新的。

装完之后,怎么验证?别急着跑大模型,先来个小测试:

python -c "import torch; print(torch.__version__); print(torch.cuda.is_available()); print(torch.cuda.get_device_name(0))"

如果输出类似这样,就说明成了:

2.1.0
True
NVIDIA GeForce RTX 4090

我曾经遇到一个学员,装完以后 torch.cuda.is_available() 返回 False。查了半天,发现他 conda 环境里装的是 CPU 版本的 PyTorch。你想想看,命令里没写 pytorch-cuda=12.1,默认就给你装 CPU 版了。这个坑,我替你们踩过了。

3.3 安装TensorFlow(CUDA版本)

TensorFlow的安装,嗯,怎么说呢,比PyTorch稍微麻烦一点。尤其是2.10及以后的版本,官方对CUDA版本的要求更严格了。

我个人习惯用pip装TensorFlow,因为conda上的TensorFlow版本更新往往慢半拍。

推荐安装方式(pip):

# 创建新环境
conda create -n tf_env python=3.10
conda activate tf_env

# 安装TensorFlow 2.15 + CUDA 12.2
pip install tensorflow==2.15.0

注意: TensorFlow 2.11及以上版本,Linux上默认支持CUDA,但Windows上只支持CPU。如果你在Windows上想用GPU,请装2.10或更早版本。这个限制让不少Windows用户头疼过。

验证TensorFlow的GPU支持:

python -c "import tensorflow as tf; print(tf.__version__); print(tf.config.list_physical_devices('GPU'))"

正常输出:

2.15.0
[PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]

如果列表是空的,别慌。先检查一下你的CUDA和cuDNN版本对不对得上。我记得有一次,我帮一个同事排查,他装的是TF 2.12,但CUDA是11.6的,死活认不到GPU。换成CUDA 11.8就好了。

3.4 双框架共存?我劝你三思

有些同学喜欢在一个环境里同时装PyTorch和TensorFlow。技术上可行,但我不建议这么做。

为什么?两个框架依赖的CUDA版本可能不一样。你强行装在一起,轻则某个框架用不了GPU,重则两个都崩。

我的做法是:每个框架单独一个conda环境。PyTorch一个环境,TensorFlow一个环境。切换的时候 conda activate 一下就行,干净又卫生。

环境名称 框架 CUDA版本 Python版本
pytorch_env PyTorch 2.1 12.1 3.10
tf_env TensorFlow 2.15 12.2 3.10
base 不装框架 系统CUDA 3.10

3.5 常见问题与避坑指南

最后,我总结几个高频问题,都是我在实际项目中遇到过的:

  • 问题1:装完PyTorch,import时报错“No module named 'torch'”
    大概率是你没激活conda环境,或者装到了base环境里。检查一下 conda env list,看看当前激活的是哪个。
  • 问题2:TensorFlow报错“Could not load dynamic library 'libcudart.so.11.0'”
    这说明你的CUDA版本跟TensorFlow要求的对不上。我曾经折腾了一下午,最后发现是LD_LIBRARY_PATH没设置对。解决方案:export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH,然后重试。
  • 问题3:两个框架都能import,但只有一个能用GPU
    这就是我上面说的,版本冲突了。建议分开环境,别偷懒。

终极验证方法: 跑一个简单的矩阵乘法,看看GPU有没有真正工作。

# PyTorch 验证
import torch
x = torch.randn(1000, 1000).cuda()
y = torch.randn(1000, 1000).cuda()
z = torch.mm(x, y)
print("PyTorch GPU 计算成功")

# TensorFlow 验证
import tensorflow as tf
with tf.device('/GPU:0'):
    a = tf.random.normal([1000, 1000])
    b = tf.random.normal([1000, 1000])
    c = tf.matmul(a, b)
print("TensorFlow GPU 计算成功")

好了,这一章的内容就这些。框架装好只是第一步,下一章我们会聊聊多机多卡环境里的网络配置——那才是真正考验人的地方。

可可精品资料库