4、实验环境搭建:PyTorch 2.0+环境配置、CUDA与cuDNN版本选择、Weights & Biases实验追踪设置

做实验嘛,环境搭不好,后面全是坑。我见过太多同学在环境上浪费一两天,结果发现是CUDA版本不对。今天咱们就把这事一次性搞定。

4.1 PyTorch 2.0+ 环境配置

PyTorch 2.0 是个大版本,引入了 torch.compile,能显著加速模型训练。我个人习惯用 conda 来管理环境,干净利落。

核心要点:PyTorch 2.0+ 对 CUDA 版本有明确要求,别装错了。

先创建一个干净的环境:

conda create -n swiglu_gelu python=3.10
conda activate swiglu_gelu

然后安装 PyTorch。这里要注意,官方推荐用 pip 安装,因为 conda 源有时候更新慢。我建议直接去 PyTorch 官网选对应版本:

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

为什么选 cu118?因为 CUDA 11.8 是目前兼容性最好的版本。我踩过 CUDA 12.0 的坑,有些老算子不兼容,折腾了半天。

小技巧:安装完后,跑一下 python -c "import torch; print(torch.__version__); print(torch.cuda.is_available())",确认 GPU 可用。

4.2 CUDA 与 cuDNN 版本选择

说白了,CUDA 是 NVIDIA 的并行计算平台,cuDNN 是专门为深度学习优化的加速库。两者版本必须匹配。

我整理了一个版本对照表,方便你参考:

PyTorch 版本 推荐 CUDA 版本 推荐 cuDNN 版本 备注
2.0.0 11.7 / 11.8 8.5.0 稳定首选
2.1.0 11.8 / 12.1 8.7.0 支持新特性
2.2.0+ 11.8 / 12.1 8.9.0 推荐 11.8

我曾经在项目中用过 CUDA 12.0,结果发现 cuDNN 8.6 有个 bug,导致卷积运算偶尔出错。后来老老实实换回 11.8,再也没出过问题。所以我的建议是:别追新,求稳

安装 cuDNN 也很简单,下载对应版本的 tar 包,解压后复制到 CUDA 目录:

tar -xzvf cudnn-linux-x86_64-8.7.0.84_cuda11-archive.tar.xz
sudo cp cudnn-*-archive/include/cudnn*.h /usr/local/cuda/include
sudo cp -P cudnn-*-archive/lib/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*

注意:cuDNN 版本必须和 CUDA 版本严格对应,否则训练时会报奇怪的错误。我曾经因为版本不匹配,模型跑了一天才发现精度不对,血泪教训。

4.3 Weights & Biases 实验追踪设置

做实验不记录,等于白做。W&B 是我最常用的实验追踪工具,比 TensorBoard 好用多了。它能自动记录超参数、损失曲线、GPU 利用率,还能对比不同实验。

安装很简单:

pip install wandb

然后登录:

wandb login

会弹出一个链接,复制到浏览器,获取 API key 粘贴回来就行。

在代码里集成 W&B 也很简单,我一般这样写:

import wandb

# 初始化
wandb.init(
    project="swiglu_vs_gelu",
    config={
        "learning_rate": 0.001,
        "architecture": "SwiGLU",
        "dataset": "ImageNet-1k",
        "epochs": 100
    }
)

# 训练循环中记录
for epoch in range(epochs):
    train_loss = train_one_epoch()
    val_acc = validate()
    wandb.log({
        "train_loss": train_loss,
        "val_accuracy": val_acc,
        "epoch": epoch
    })

个人经验:我习惯在 config 里记录所有超参数,包括 batch size、优化器类型、激活函数等。这样回头对比实验时,一眼就能看出差异。

W&B 还有一个很实用的功能——对比实验。你可以把 SwiGLU 和 GELU 的实验放在同一个 project 里,用不同的 run name 区分。然后在 W&B 网页上直接对比损失曲线和准确率曲线,非常直观。

嗯,这里要注意一点:W&B 默认会记录所有 print 输出和系统指标,如果你觉得信息太多,可以在 init 时设置 settings=wandb.Settings(_disable_stats=True) 来关闭。

4.4 环境验证脚本

为了确保一切就绪,我写了个小脚本,跑一下就知道环境对不对:

import torch
import wandb

print(f"PyTorch 版本: {torch.__version__}")
print(f"CUDA 是否可用: {torch.cuda.is_available()}")
print(f"CUDA 版本: {torch.version.cuda}")
print(f"cuDNN 版本: {torch.backends.cudnn.version()}")
print(f"GPU 数量: {torch.cuda.device_count()}")
print(f"当前 GPU: {torch.cuda.get_device_name(0)}")

# 测试 W&B
wandb.init(project="test_env", mode="dryrun")
wandb.log({"test": 1})
wandb.finish()
print("W&B 配置成功!")

如果所有输出都正常,恭喜你,环境搭建完成。如果报错,别慌,多半是 CUDA 版本或 cuDNN 路径的问题。检查一下 LD_LIBRARY_PATH 环境变量,确保指向正确的 CUDA 目录。

总结一下:PyTorch 2.0+ 配 CUDA 11.8 + cuDNN 8.7,这是目前最稳的组合。W&B 用来记录实验,省心省力。环境搭好了,后面才能安心做评测。

实验环境搭建核心流程 PyTorch 2.0+ CUDA + cuDNN Weights & Biases conda 环境 + pip 安装 torch.compile 加速 CUDA 11.8 稳定首选 cuDNN 8.7 版本匹配 wandb init + log 实验对比与可视化 环境验证脚本 → 确认一切就绪

这张图把整个环境搭建的流程串起来了。从 PyTorch 安装,到 CUDA/cuDNN 配置,再到 W&B 集成,最后用验证脚本收尾。每一步都有坑,但按这个流程走,基本不会出大问题。

专注资料整理