第2章:环境搭建——Python环境、PyTorch安装、CUDA配置、项目结构初始化
好,咱们正式开始动手了。
写Transformer之前,先把“厨房”收拾利索。环境搭不好,后面全是坑。我见过太多同学卡在环境上,代码写完了跑不起来,一查是CUDA版本不对——这种冤枉时间,咱们不花。
2.1 Python环境管理:我为什么推荐Miniconda
Python版本管理,我个人习惯用Miniconda。为什么不是Anaconda?因为Anaconda预装了一堆你用不到的包,占空间还容易冲突。Miniconda轻量,需要什么装什么,清爽。
安装步骤很简单:
- 去官网下载Miniconda(Python 3.9+版本)
- 一路默认安装,记得勾选“Add to PATH”
- 打开终端,验证一下:
conda --version
然后创建一个独立的环境,专门给这个项目用:
conda create -n transformer_env python=3.9
conda activate transformer_env
2.2 PyTorch安装:GPU版本还是CPU版本?
说白了,你写Transformer练手,CPU也能跑。但如果你想训练稍微大一点的模型,或者想体验GPU加速的快感,那就装CUDA版本。
我个人建议:直接装CUDA版本。哪怕你现在没显卡,PyTorch会自动fallback到CPU,以后插上显卡就能用,不用重装。
安装命令(以CUDA 11.8为例):
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
如果你没有NVIDIA显卡,或者不想折腾CUDA:
pip install torch torchvision torchaudio
验证安装是否成功:
python -c "import torch; print(torch.__version__); print(torch.cuda.is_available())"
如果输出 True,恭喜你,GPU就绪。如果是 False,也别慌——CPU模式照样能学完整个课程。
2.3 CUDA配置:避坑指南
CUDA配置是新手最容易翻车的地方。我总结几个常见问题:
| 问题 | 原因 | 解决办法 |
|---|---|---|
| torch.cuda.is_available() 返回 False | CUDA版本与PyTorch不匹配 | 用 nvidia-smi 查看驱动支持的CUDA版本,去PyTorch官网选对应版本 |
| 安装时网络超时 | PyTorch包较大,国内下载慢 | 加国内镜像源:-i https://pypi.tuna.tsinghua.edu.cn/simple |
| conda安装卡住 | conda在解析依赖 | 换成pip安装,快很多 |
2.4 项目结构初始化:一个工程化习惯
很多教程直接让你在Jupyter Notebook里写代码。但咱们要做的是工程,不是实验。我建议从一开始就建立清晰的项目结构。
这是我个人习惯的Transformer项目结构:
transformer_from_scratch/
├── config/ # 配置文件
│ └── config.py
├── data/ # 数据加载与预处理
│ └── dataset.py
├── models/ # 模型定义
│ ├── attention.py # 注意力机制
│ ├── transformer.py # 主模型
│ └── layers.py # 公共层
├── utils/ # 工具函数
│ └── helpers.py
├── train.py # 训练脚本
├── inference.py # 推理脚本
└── requirements.txt # 依赖清单
创建这些文件夹和文件,一行命令搞定:
mkdir -p transformer_from_scratch/{config,data,models,utils}
touch transformer_from_scratch/{train.py,inference.py,requirements.txt}
touch transformer_from_scratch/{config,data,models,utils}/__init__.py
2.5 验证环境:跑一个最小测试
环境搭好了,项目结构也有了。咱们跑个最小测试,确保一切正常:
# test_env.py
import torch
# 检查PyTorch版本
print(f"PyTorch版本: {torch.__version__}")
# 检查GPU
if torch.cuda.is_available():
print(f"GPU型号: {torch.cuda.get_device_name(0)}")
print(f"显存大小: {torch.cuda.get_device_properties(0).total_memory / 1e9:.2f} GB")
else:
print("当前使用CPU模式")
# 跑一个简单的张量运算
x = torch.randn(3, 4)
y = torch.randn(4, 5)
z = torch.mm(x, y)
print(f"矩阵乘法测试通过,结果形状: {z.shape}")
保存为 test_env.py,然后运行:
python test_env.py
如果看到输出没有报错,恭喜——你的Transformer开发环境已经就绪。
2.6 关于编辑器的一点建议
我个人推荐VS Code,配上Python插件和Jupyter插件。为什么?
- 代码补全好用
- 内置终端,不用切窗口
- 支持直接在.py文件里写# %%跑单元格,跟Jupyter一样方便
当然,PyCharm、Vim、甚至记事本都行。工具是次要的,关键是代码本身。
好,环境搭完了。下一章咱们开始写Transformer的第一个核心组件——注意力机制。到时候你会发现,环境搭建其实是最简单的一步。