nanoGPT 核心代码速查表
一、快速启动命令# 准备莎士比亚数据python data/shakespeare_char/prepare.py# 训练小模型python train.py config/train_shakespeare_char.py# 生成文本python sample.py config/train_shakespeare_char.py二、model.py 核心类| 类名 | 作用 | 关键参数 ||-------------------------------|----------------------|------------------------------------------------------|| LayerNorm | 层归一化 | ndim, bias || CausalSelfAttention | 因果自注意力 | n_head, n_embd || MLP | 前馈网络 | n_embd → 4*n_embd → n_embd || Block | Transformer 层 | 注意力 FFN 残差 || GPTConfig | 配置类 | n_layer, n_head, n_embd || GPT | 完整模型 | 组合以上所有组件 |三、Attention 计算步骤# 1. 投影 Q, K, Vq, k, v self.c_attn(x).split(self.n_embd, dim2)# 2. 多头重塑k k.view(B, T, heads, hs).transpose(1, 2)q q.view(B, T, heads, hs).transpose(1, 2)v v.view(B, T, heads, hs).transpose(1, 2)# 3. 计算注意力scores q k.transpose(-2, -1) / sqrt(hs)att softmax(scores)y att v# 4. 合并输出y y.transpose(1, 2).contiguous().view(B, T, C)四、训练参数速查| 参数 | 默认值 | 说明 ||------------------------|------------|---------------------|| batch_size | 12 | 每 GPU batch || block_size | 1024 | 序列长度 || learning_rate | 6e-4 | 最大学习率 || warmup_iters | 2000 | Warmup 步数 || max_iters | 600000 | 总训练步数 || weight_decay | 1e-1 | 权重衰减 || grad_clip | 1.0 | 梯度裁剪 |五、生成参数速查| 参数 | 默认值 | 说明 ||----------------------------|--------|------------------|| temperature | 0.8 | 越低越保守 || top_k | 200 | 只取前 k 个 || max_new_tokens | 500 | 生成长度 |六、常用配置修改降低显存占用python train.py config/train_shakespeare_char.py \--block_size64 \--batch_size8 \--n_layer4 \--n_head4 \--n_embd128使用 CPU 训练python train.py config/train_shakespeare_char.py \--devicecpu \--compileFalse使用更大模型python train.py config/train_gpt2.py \--init_fromgpt2-medium # 或 gpt2-large, gpt2-xl七、关键函数签名# model.pymodel.forward(idx, targetsNone) → (logits, loss)model.generate(idx, max_new_tokens, temperature, top_k) → tokens# train.pyget_batch(split) → (x, y)estimate_loss() → {train: loss, val: loss}get_lr(iter_num) → learning_rate八、学习检查清单- [ ] 能解释 CausalSelfAttention 的前向过程- [ ] 能画出 Block 的结构图- [ ] 能解释 wte 和 wpe 的区别- [ ] 能解释为什么推理时只取最后一个位置的 logits- [ ] 能解释 gradient_accumulation_steps 的作用- [ ] 能解释学习率 warmup cosine decay 的原理- [ ] 能解释 temperature 和 top_k 的区别