1.1 流水线地图:四阶段全景


1.1 流水线地图:四阶段全景

本节摘要:本节铺开 nanochat 的完整流水线:一台单 GPU 节点(如 8×H100)、约 4 小时、约 100 美元(官方自报),依次跑过四个阶段——①BPE 分词器训练(约 2000 词表的小型 BPE);②在 FineWeb-Edu 约 100B tokens 高质量子集上预训练 124M 参数的 GPT;③SFT 指令微调;④推理界面(导出 llama.cpp、量化部署、Whisper 语音输入)。本节给出每阶段的输入/产物表与社区实测的 loss 轨迹(预训练 10.4→2.32),标出成本大头在②、本书的主战场在③④——以及这两章如何映射到第 2~8 章。

学习目标

阅读完本节,你应当能够:

  1. 按顺序说出四阶段的名字、输入与产物。
  2. 解释预训练 loss 从 10.4 起步、SFT loss 从约 1.3 起步这两个数字的含义。
  3. 把本书第 2~8 章逐一挂到流水线的③④环节上。
  4. 说出"发布帖为主轴、README 为依据"的取材原则及其原因。

一、四阶段总图

┌─────────────────────────────────────────────────────────────────┐ │ nanochat 流水线(单节点,约 4h / $100) │ ├─────────────────────────────────────────────────────────────────┤ │ ① 分词器训练 ② 预训练 前半程(灰色地带)│ │ FineWeb-Edu 文本 ──► BPE 词表 ~2000 FineWeb-Edu ~100B tok │ │ │ 124M GPT 基座 │ ├─────────────────────────────────────────────────────────────────┤ │ ③ SFT 指令微调 ────────► ④ 推理界面 后半程(本书) │ │ 指令对话数据 llama.cpp 导出+量化 │ │ 只对回答算 loss Whisper 语音输入 │ │ (第 2~4 章) 对话 Web 界面(第 5~8 章) │ └─────────────────────────────────────────────────────────────────┘

四阶段的输入与产物:

阶段 输入 产物 本书覆盖
① 分词器训练 FineWeb-Edu 原始文本 BPE 词表(约 2000 token,官方发布帖口径) 否(1.2 验收)
② 预训练 约 100B tokens 高质量子集 124M 参数 GPT 基座权重 否(1.2 验收)
③ SFT 基座权重 + 指令对话数据 对话模型权重 第 2~4 章
④ 推理界面 对话模型权重 GGUF 量化模型 + llama.cpp 服务 + 语音界面 第 5~8 章

💡 词表只有约 2000 个 token——比主流模型小两个数量级。这是刻意的实验取舍:小词表让分词器训练变成"分钟级"的玩具,把时间留给模型本身。第 8 章做中文改造时,小词表的利弊会再次出现。

二、loss 轨迹:两个阶段的两种起点

社区对 nanochat 完整跑通的 walkthrough 实测(数字来自公开复现日志,不同硬件会有出入):

预训练:step 0 loss ≈ 10.4 ← 均匀随机猜词的理论值(≈ ln(2000) ≈ 7.6, step 6612 loss ≈ 2.32 实际起点更高是初始化与未收敛所致,示意理解) SFT: step 0 loss ≈ 1.3 ← 起点就是"会说话"的水平

这两个起点讲述的故事:

  1. 预训练从零学语言:10.4 意味着模型对下一个词几乎一无所知;6612 步降到 2.32,语言能力在数小时内从无到有。
  2. SFT 从先验出发:SFT 起步就在约 1.3——因为基座模型已经见过海量文本,"预测对话里的下一个词"对它并不难;SFT 教的不是语言,而是格式与行为(何时停、扮演谁、遵循指令)。

这也意味着:SFT 阶段 loss 的绝对值没有预训练那么"值钱"。预训练 loss 每降 0.1 都是真金白银的语言能力;SFT 的 loss 下降里混着"学会行为"与"背下数据"两种成分,后者是有害的——如何区分,正是 3.2 节读图训练的主题。

这也是第 3 章超参设计的出发点:起点低、可学的空间小,SFT 的学习率要比预训练小、轮数要少,否则会把预训练学到的能力"冲刷"掉(灾难性遗忘,3.3 节排查表有专条)。

三、本书各章在地图上的落点

流水线落点 干什么
2 ③的燃料 指令数据形态、开源集挑选清洗、自造蒸馏
3 ③的主体 损失掩码、超参、训练实战与故障排查
4 ③↔④的接口 chat template、special tokens、采样参数
5 ④的质量闸门 评测:知道训出来的模型到底行不行
6 ④的部署 GGUF 量化 + llama.cpp 本地服务
7 ④的语音 Whisper 转写输入,语音对话界面
8 全图的中文化 分词、数据、模板与训练的本地化

成本结构补充(帮助决定"要不要自己跑全流程"):四阶段里预训练②占走绝大部分 GPU 时间与费用(官方口径全流程约 4 小时 / 约 100 美元,其中 SFT③只是最短的阶段之一);因此本书的实践成本远低于复现全流程——用一块 24GB 卡(0.2 节)就能把③④的实验做完整,②直接复用自训或社区权重。

注意第 4 章的特殊位置:模板既是训练侧的事(③怎么拼序列)也是推理侧的事(④怎么拼提示),它是流水线上最容易错位的一环——训练用一种格式、推理用另一种,模型立刻"失语"。第 4 章整章都在讲怎么把这条缝焊死。

四、一个重要提醒:仓库在动,地图的骨架不动

当前 master 的 nanochat 已转向 GPT-2 speedrun 路线,脚本清单(base_train.pychat_sft.pychat_eval.pychat_rl.pychat_cli.py 等)与数据(SFT 示例换用 SmolTalk)都与发布帖时代不同。但四阶段的骨架没变:分词 → 基座 → 指令微调 → 对话推理,仍是任何 ChatGPT 式系统的最小完整闭环。本书讲骨架上的通用工程实践,接口以官方仓库 README 为准——这也是把"发布帖为主轴、README 为依据"写进全书约定(0.2 节)的原因。

本节要点回顾

  1. 四阶段 = 分词器(~2000 词表 BPE)→ 预训练(FineWeb-Edu,124M 基座)→ SFT → 推理界面;本书覆盖后两格。
  2. loss 轨迹:预训练 10.4→2.32(学语言),SFT 从约 1.3 起步(学行为)——起点决定了第 3 章超参的"小 lr、少轮数"基调。
  3. 第 4 章的模板是③④之间的接缝,全流水线最易错位点。
  4. SFT 的 loss 下降混着"学行为"与"背数据"两种成分,读图时必须区分(3.2 主题)。

地图有了,接下来验收行李——1.2 节清点前三阶段交给你的三样产物,并与你在《ht-gpt:从零搭建 GPT 训练与推理实战》里训过的东西对表。


作者与出处
原作者: 灏天文库
整理: 灏天文库整理
本站整理收录,版权归原作者/开源协议所有;欢迎通过原文链接访问源仓库。
发布者: 作者: 灏天文库 转发
评论区 (0)
U