2、环境准备:Python虚拟环境搭建、PyTorch安装、CUDA与cuDNN版本匹配检查

说实话,很多人做深度学习项目,第一步就栽在环境配置上。

我见过太多同学,代码写好了,一跑就报错。查了半天,原来是CUDA版本不对。或者更惨——装了GPU版PyTorch,结果根本没用上显卡。

所以这一章,咱们把环境彻底搞定。后面写SwiGLU的时候,你只管专心写代码,不用再跟环境问题较劲。

2.1 Python虚拟环境:为什么必须用?

你想想看,一个项目依赖PyTorch 2.0,另一个项目依赖PyTorch 1.8。如果全装到系统Python里,早晚会冲突。

虚拟环境就是干这个的——每个项目有自己独立的小天地,互不干扰。

我个人习惯用 conda,因为它不光管Python包,还能管CUDA工具链。当然你用 venv 也行,但conda在GPU环境管理上更省心。

创建虚拟环境的命令很简单:

# 创建一个名叫 swiglu_env 的环境,指定Python 3.10
conda create -n swiglu_env python=3.10

# 激活环境
conda activate swiglu_env

# 退出环境
conda deactivate

嗯,这里要注意:Python版本别选太新。我建议3.9或3.10,兼容性最好。3.12以上有些老库还没适配。

2.2 PyTorch安装:GPU版还是CPU版?

这问题其实不用纠结。你要做深度学习,肯定装GPU版。除非你电脑没显卡。

怎么判断?去 pytorch.org 首页,选你的配置,它会生成安装命令。

举个例子,我常用的安装方式:

# CUDA 11.8 版本
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

# CUDA 12.1 版本
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

小技巧:别用 conda install pytorch,它经常下旧版本。我推荐用 pip 安装,版本更新更及时。

2.3 CUDA与cuDNN版本匹配:避坑指南

这是最容易出问题的地方。我曾经花了一整个下午,就为了搞清楚CUDA 11.7和PyTorch 1.13到底能不能配一起。

核心原则就一条:PyTorch版本决定了它支持的最高CUDA版本

比如PyTorch 2.0.1,官方支持CUDA 11.7和11.8。你装CUDA 12.0?对不起,PyTorch不认。

怎么检查当前环境?

# 检查CUDA是否可用
python -c "import torch; print(torch.cuda.is_available())"

# 查看CUDA版本
python -c "import torch; print(torch.version.cuda)"

# 查看cuDNN版本
python -c "import torch; print(torch.backends.cudnn.version())"

# 查看GPU信息
python -c "import torch; print(torch.cuda.get_device_name(0))"

如果 torch.cuda.is_available() 返回 True,恭喜你,环境配好了。

警告:如果返回 False,别慌。先检查nvidia-smi能不能看到显卡。能看到,说明驱动没问题。问题大概率出在PyTorch版本和CUDA版本不匹配上。

2.4 版本匹配速查表

为了方便你对照,我整理了一张表。这是我平时查得最多的:

PyTorch版本 支持的CUDA版本 推荐的cuDNN版本
2.0.x 11.7, 11.8 8.5.0
2.1.x 11.8, 12.1 8.9.0
2.2.x 11.8, 12.1 8.9.0
2.3.x 11.8, 12.1 8.9.0

说白了,你只要记住:PyTorch 2.0以上,CUDA 11.8是最稳的选择。我所有项目都用这个组合,没出过问题。

2.5 验证环境:跑一个简单测试

环境装好了,咱们跑个小程序验证一下。这也是后面SwiGLU测试框架的基础:

import torch
import torch.nn as nn

# 检查GPU
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
print(f"Using device: {device}")

# 创建一个简单的张量
x = torch.randn(3, 4).to(device)
print(f"Tensor on {x.device}")

# 验证矩阵乘法
y = torch.mm(x, x.T)
print(f"Matrix multiplication result shape: {y.shape}")

# 验证梯度
x.requires_grad_(True)
z = x.sum()
z.backward()
print(f"Gradient check passed: {x.grad is not None}")

如果所有输出都正常,说明你的环境已经准备好了。GPU在干活,梯度能回传,万事俱备。

我个人经验:每次新建项目,我都会先跑一遍这个测试。花30秒,省得后面调试时怀疑人生。

2.6 本章知识体系

下面这张图,帮你把环境准备的核心逻辑串起来:

环境准备核心流程 Python虚拟环境 conda create -n swiglu_env PyTorch安装 pip install torch (GPU版) CUDA + cuDNN 版本匹配检查 验证:torch.cuda.is_available() 避坑要点 • 不要用conda装PyTorch • Python选3.9或3.10 • CUDA 11.8最稳 • 先查nvidia-smi • 再查torch版本 • 最后查cuda是否可用 我曾经踩过的坑: 装了CUDA 12.0,PyTorch 2.0根本不认,折腾半天 才发现版本不匹配。 检查命令速查 nvidia-smi → 查看驱动和CUDA版本 python -c "import torch; print(torch.cuda.is_available())" python -c "import torch; print(torch.version.cuda)" python -c "import torch; print(torch.backends.cudnn.version())" python -c "import torch; print(torch.cuda.get_device_name(0))"

环境准备说难不难,说简单也不简单。核心就是记住:版本匹配是王道。你按照上面的流程走一遍,基本不会出问题。

好了,环境搞定了。下一章咱们就开始写SwiGLU的代码,那才是真正有意思的部分。


专注资料整理