第3章:深度学习框架安装——PyTorch与TensorFlow的CUDA版本安装与验证
好,咱们接着往下走。上一章我们把CUDA和cuDNN搞定了,现在终于到了最激动人心的环节——装框架。
说实话,我见过太多人在这一步翻车了。明明CUDA装得好好的,一装PyTorch就报错,一跑TensorFlow就崩。为什么?说白了,就是版本没对上。
我个人习惯是:先确定CUDA版本,再选框架版本,最后动手装。顺序错了,后面全是坑。
3.1 版本匹配:这是最关键的
先看一张图,你就明白整个安装逻辑了:
嗯,这张图你保存好。每次装框架前看一眼,能省不少事。
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 计算成功")
好了,这一章的内容就这些。框架装好只是第一步,下一章我们会聊聊多机多卡环境里的网络配置——那才是真正考验人的地方。