Skip to content

环境搭建

本教程的所有代码都基于 Python + PyTorch + HuggingFace 生态。这一页带你从零搭好一套能跑通「原理解析」到「训练 NanoGPT」的完整环境。

技术栈总览

┌─────────────────────────────────────────────┐
│  你的学习/实战代码 (Jupyter / .py)             │
├─────────────────────────────────────────────┤
│  HuggingFace 生态                            │
│   • transformers  现成模型与训练 API          │
│   • datasets      数据集加载与预处理          │
│   • tokenizers    分词器                     │
│   • accelerate    多卡/混合精度训练           │
├─────────────────────────────────────────────┤
│  PyTorch (torch)  张量计算与自动求导          │
├─────────────────────────────────────────────┤
│  硬件: CPU / NVIDIA GPU (CUDA) / Apple Silicon│
└─────────────────────────────────────────────┘
  • PyTorch:所有手写模型(如 NanoGPT)都用它实现,是当前研究与大模型训练的主流框架。
  • transformers:几百行代码就能调用/微调 BERT、GPT、LLaMA 等现成模型。
  • NanoGPT 实战只需要 PyTorch,其余库用于「调用与微调」章节。

第 1 步:安装 Python

推荐 Python 3.10 ~ 3.12。建议用虚拟环境隔离依赖。

bash
# 使用 conda(推荐,跨平台省心)
conda create -n transformer python=3.11 -y
conda activate transformer

# 或使用 venv
python -m venv venv
# Windows
venv\Scripts\activate
# macOS / Linux
source venv/bin/activate

第 2 步:安装 PyTorch

pytorch.org 根据系统选择命令。常见几种:

bash
# NVIDIA GPU(Linux/Windows,CUDA 12.x)
pip install torch --index-url https://download.pytorch.org/whl/cu121

# 仅 CPU(笔记本无独显也能学习原理和跑 NanoGPT)
pip install torch

# Apple Silicon(M1/M2/M3,用 MPS 加速)
pip install torch

验证安装

python
import torch
print("PyTorch 版本:", torch.__version__)
print("CUDA 可用:", torch.cuda.is_available())     # True 表示有 N 卡
print("MPS  可用:", torch.backends.mps.is_available())  # Mac 加速
print("设备数:", torch.cuda.device_count())

第 3 步:安装 HuggingFace 生态

bash
pip install transformers datasets accelerate evaluate
pip install sentencepiece protobuf matplotlib tqdm

国内网络下载模型慢,可设置镜像:

bash
# Windows (PowerShell)
$env:HF_ENDPOINT = "https://hf-mirror.com"
# macOS / Linux
export HF_ENDPOINT=https://hf-mirror.com

第 4 步:GPU 与显存怎么看

python
import torch
if torch.cuda.is_available():
    print(torch.cuda.get_device_name(0))
    # 显存占用/总量(MB)
    print(torch.cuda.memory_allocated() / 1e6, torch.cuda.max_memory_allocated() / 1e6)

命令行监控:

bash
nvidia-smi -l 1     # 每秒刷新一次 GPU 状态

我需要什么样的硬件?

学习阶段建议配置说明
理解原理 / 跑小 demo普通 CPU 笔记本完全够用
训练 NanoGPT(字符级)6GB+ 显存的 GPU,或纯 CPU小语料几分钟到半小时可出效果
微调 BERT/GPT-28~16GB 显存配合混合精度更省显存
微调 7B 大模型24GB+ 或用 LoRA/QLoRA本书不要求,仅在微调章节演示小模型

没有 GPU 也别担心:本教程的 搭建NanoGPT 提供「字符级小语料」版本,CPU 也能训练出能说话的模型。

第 5 步:准备好编辑器

  • Jupyter Notebook / Lab:适合逐格验证注意力等概念。
    bash
    pip install notebook
    jupyter lab
  • VSCode + Python 插件:适合写完整的训练脚本。

一个「开箱即用」的检验脚本

新建 check_env.py,运行后全部打印正常即环境就绪:

python
import torch
from transformers import AutoTokenizer, AutoModel

print("PyTorch:", torch.__version__)
device = "cuda" if torch.cuda.is_available() else ("mps" if torch.backends.mps.is_available() else "cpu")
print("使用设备:", device)

# 加载一个极小的分词器做个测试
tok = AutoTokenizer.from_pretrained("gpt2")
out = tok("Hello, Transformer!", return_tensors="pt").to(device)
print("Token IDs:", out["input_ids"].tolist())

print("环境就绪 ✅")
bash
python check_env.py

预期输出类似:

PyTorch: 2.x.x
使用设备: cpu
Token IDs: [[15496, 11, 5468, 23664, 0]]
环境就绪 ✅

常见问题(FAQ)

  • tokenizers 相关报错pip install tokenizers --upgrade
  • 下载模型超时:确认已设置 HF_ENDPOINT 镜像,或提前离线下载。
  • Windows 上 CUDA 装不上:先更新 NVIDIA 驱动,再按官网命令重装对应 CUDA 版本的 torch。
  • 显存不足 (OOM):调小 batch size、开启混合精度(见 训练与调参)。

下一步

环境就绪,进入正式的原理部分。先理解 Transformer 到底替代了 RNN 的什么 → 从RNN到Transformer