[ PROMPT_NODE_22718 ]
nanogpt
[ SKILL_DOCUMENTATION ]
# nanoGPT - 极简 GPT 训练
## 快速开始
nanoGPT 是一个为学习和实验设计的简化版 GPT 实现。
**安装**:
bash
pip install torch numpy transformers datasets tiktoken wandb tqdm
**在 Shakespeare 上训练** (CPU 友好):
bash
# 准备数据
python data/shakespeare_char/prepare.py
# 训练 (CPU 上约 5 分钟)
python train.py config/train_shakespeare_char.py
# 生成文本
python sample.py --out_dir=out-shakespeare-char
**输出示例**:
ROMEO:
What say'st thou? Shall I speak, and be a man?
JULIET:
I am afeard, and yet I'll speak; for thou art
One that hath been a man, and yet I know not
What thou art.
## 常见工作流
### 工作流 1:字符级 Shakespeare 训练
**完整训练流水线**:
bash
# 第 1 步:准备数据 (生成 train.bin, val.bin)
python data/shakespeare_char/prepare.py
# 第 2 步:训练小模型
python train.py config/train_shakespeare_char.py
# 第 3 步:生成文本
python sample.py --out_dir=out-shakespeare-char
**配置** (`config/train_shakespeare_char.py`):
python
# 模型配置
n_layer = 6 # 6 层 Transformer
n_head = 6 # 6 个注意力头
n_embd = 384 # 384 维嵌入
block_size = 256 # 256 字符上下文
# 训练配置
batch_size = 64
learning_rate = 1e-3
max_iters = 5000
eval_interval = 500
# 硬件
device = 'cpu' # 或 'cuda'
compile = False # PyTorch 2.0 设为 True
**训练时间**:约 5 分钟 (CPU),约 1 分钟 (GPU)
### 工作流 2:复现 GPT-2 (124M)
**在 OpenWebText 上进行多 GPU 训练**:
bash
# 第 1 步:准备 OpenWebText (约 1 小时)
python data/openwebtext/prepare.py
# 第 2 步:使用 DDP 训练 GPT-2 124M (8 张 GPU)
torchrun --standalone --nproc_per_node=8
train.py config/train_gpt2.py
# 第 3 步:从训练好的模型采样
python sample.py --out_dir=out
**配置** (`config/train_gpt2.py`):
python
# GPT-2 (124M) 架构
n_layer = 12
n_head = 12
n_embd = 768
block_size = 1024
dropout = 0.0
# 训练
batch_size = 12
gradient_accumulation_steps = 5 * 8 # 总 batch 约 0.5M tokens
learning_rate = 6e-4
max_iters = 600000
lr_decay_iters = 600000
# 系统
compile = True # PyTorch 2.0
**训练时间**:约 4 天 (8× A100)
### 工作流 3:微调预训练的 GPT-2
**从 OpenAI 检查点开始**:
python
# 在 train.py 或配置中
init_from = 'gpt2' # 选项: gpt2, gpt2-medium, gpt2-large, gpt2-xl
# 模型自动加载 OpenAI 权重
python train.py conf