2、环境与工具准备:Python环境配置、PyTorch安装、Jupyter Notebook设置、项目结构规划
说实话,每次带新人入门Transformer,我最怕的不是他们学不会注意力机制,而是卡在环境配置这一步。我自己就踩过不少坑——明明代码逻辑没问题,结果因为Python版本不对、CUDA没装好,折腾一整天。所以这一章,咱们先把地基打牢。
2.1 Python环境配置
我个人习惯用 Anaconda 来管理Python环境。为什么?因为它自带conda包管理器,虚拟环境隔离做得很干净。你想想看,要是同时做几个项目,一个要PyTorch 1.12,另一个要2.0,没有虚拟环境那不乱套了?
推荐版本:Python 3.9 或 3.10。PyTorch 2.x 对这两个版本支持最好。别用3.12,有些库还没适配。
安装步骤很简单:
- 去Anaconda官网下载对应系统的安装包
- 一路默认安装,记得勾选「Add Anaconda to PATH」
- 打开终端(Windows用Anaconda Prompt),验证安装:
conda --version
python --version
然后创建我们的项目环境:
conda create -n transformer_handson python=3.10
conda activate transformer_handson
小技巧:环境名别起太长,我一般用项目缩写。比如这个课程就叫 transformer_handson,好记又规范。
2.2 PyTorch安装
PyTorch的安装,说白了就一句话:去官网选配置,复制命令执行。但这里有个坑——CUDA版本。
我曾经帮一个学员排查问题,他装了CPU版的PyTorch,跑Transformer训练慢得离谱。后来才发现他显卡是RTX 3060,却装了CPU only版本。嗯,这里要注意:
- 有NVIDIA显卡:先查驱动支持的CUDA版本(命令行输
nvidia-smi) - 没有显卡:装CPU版本,也能跑,就是慢点
- Mac用户:M1/M2芯片装
mps版本,性能也不错
我推荐用pip安装,干净利落:
# CUDA 11.8 版本(最稳定)
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
# 或者 CPU 版本
pip install torch torchvision torchaudio
验证安装:
python -c "import torch; print(torch.__version__); print(torch.cuda.is_available())"
如果输出 True,恭喜你,GPU加速搞定了。
注意:别用conda装PyTorch,它经常给你装旧版本。我踩过这个坑,conda装出来的torch版本比官方晚两个月。
2.3 Jupyter Notebook设置
我个人觉得,写Transformer代码用Jupyter Notebook最舒服。为什么?因为你可以边写边看中间结果——注意力矩阵长什么样、词嵌入分布如何,一目了然。
安装和配置:
# 安装jupyter
pip install jupyter notebook
# 把虚拟环境注册到jupyter内核
pip install ipykernel
python -m ipykernel install --user --name=transformer_handson --display-name="Transformer Handson"
启动:
jupyter notebook
打开浏览器后,新建一个Notebook,右上角Kernel选「Transformer Handson」。这样你用的就是刚才配好的环境了。
我的习惯:每个章节建一个单独的Notebook文件,比如 02_environment_setup.ipynb。代码和笔记混在一起,回头复习也方便。
2.4 项目结构规划
代码写得多了你就会发现,项目结构比代码本身更重要。一个乱七八糟的文件夹,三个月后你自己都看不懂。
我建议这样组织:
transformer-handson/
├── data/ # 存放数据集
│ └── sample.txt
├── models/ # 模型定义
│ ├── __init__.py
│ ├── attention.py # 注意力机制
│ ├── transformer.py # Transformer主体
│ └── layers.py # 公共层
├── utils/ # 工具函数
│ ├── __init__.py
│ ├── data_loader.py # 数据加载
│ └── config.py # 配置参数
├── notebooks/ # Jupyter Notebook
│ ├── 01_intro.ipynb
│ └── 02_attention.ipynb
├── checkpoints/ # 模型保存
├── logs/ # 训练日志
├── requirements.txt # 依赖清单
└── README.md # 项目说明
为什么要这么分?
- models/ 放核心代码,每个组件一个文件,方便调试
- utils/ 放辅助功能,数据加载、配置管理都扔这里
- notebooks/ 放实验记录,适合边探索边写
- checkpoints/ 和 logs/ 自动生成,别手动往里塞东西
核心原则:每个文件只做一件事。attention.py 就只写注意力机制,别把数据加载也塞进去。我见过一个文件3000行的项目,改个bug要翻半天。
最后,生成 requirements.txt:
pip freeze > requirements.txt
这样别人拿到项目,直接 pip install -r requirements.txt 就能跑起来。
2.5 验证环境
写个简单的测试脚本,确保一切就绪:
# test_env.py
import torch
import torch.nn as nn
# 检查PyTorch版本
print(f"PyTorch version: {torch.__version__}")
# 检查GPU
device = "cuda" if torch.cuda.is_available() else "cpu"
print(f"Using device: {device}")
# 简单测试:创建一个张量
x = torch.randn(3, 4)
print(f"Tensor shape: {x.shape}")
# 测试线性层
linear = nn.Linear(4, 2)
y = linear(x)
print(f"Linear output shape: {y.shape}")
print("环境配置完成!")
跑一下:
python test_env.py
如果没报错,恭喜你,环境搞定了。接下来咱们就可以正式进入Transformer的世界了。
最后说一句:环境配置这事儿,一次配好,后面省心。别嫌麻烦,我当年为了配CUDA和cuDNN重装了三次系统。嗯,都是血泪教训。