目录
最后一课不再引入新缩写,而是把前 23 课连起来。目标不是训练一个巨型模型,而是完成一个规模可控、能够解释每个选择的小型语言模型项目。
项目完成的标准不是“跑出一段文字”,而是每个阶段都有记录、基线、检查和可复现结果。
1、先定义可验证目标
明确模型规模、数据范围、上下文长度、硬件预算与成功指标。例如:在 TinyStories 类数据上训练一个小型 Decoder-only Transformer,验证 Loss 持续下降,并能生成结构完整的短文本。
先建立小基线,再扩大规模;不要第一次运行就把所有参数拉满。
2、数据与 Tokenizer
记录数据来源、许可、清洗规则、训练/验证切分与去重策略。训练 BPE Tokenizer,保存词表、Merge 和特殊 Token,并用固定样例检查 encode/decode 是否可逆。
3、模型与训练
实现 Embedding、RoPE、Attention、RMSNorm、SwiGLU、Residual、LM Head 与 Causal Mask。先用极小 Batch 过拟合少量样本,确认 Loss 能快速下降,再启动正式训练。
记录随机种子、配置、代码版本、每 Step Loss、学习率、梯度范数、吞吐和显存。
4、评估不能只看训练 Loss
至少报告验证集 Loss 与 Perplexity,并用固定 Prompt 比较不同 Checkpoint。检查重复、乱码、上下文利用、记忆训练样本等问题。
若做 SFT,再增加指令遵循、格式正确率和人工偏好评估。
5、Checkpoint 与恢复
保存模型权重、优化器、学习率调度器、当前 Step、随机数状态与配置。必须实际执行一次中断恢复测试,确认恢复后的 Loss 与学习率连续。
6、推理与部署
实现 Greedy 与 Top-P Sampling,加入 KV Cache,并测量 TTFT、TPOT、显存与吞吐。服务层需要限制输入长度、输出长度和并发,记录错误但避免泄露用户内容。
7、最终交付清单
仓库应包含 README、环境锁定、数据说明、配置、训练命令、评估脚本、示例输出、模型卡与已知限制。若公开权重,还要确认数据与基础组件许可。
一份可信报告必须同时展示成功结果、失败案例和未解决问题。
容易混淆的三件事
- 生成看似通顺不等于训练正确。
- 训练 Loss 不是唯一评估。
- 不能忽略数据与权重许可。
记住这 5 件事
- 目标要可验证
- 先做小规模过拟合测试
- 记录配置与随机种子
- 评估训练外数据
- 实际测试断点恢复与部署指标
参考资料
第二十四课复习总图
24 课到这里形成闭环:从 Token、训练与架构,到推理、微调、对齐和完整项目。