minimind/learning/day07/02_deep_dive.md

1.9 KiB
Raw Blame History

Day 7 Deep Dive: 把 MiniMind 训练链路串起来

总链路

Tokenizer
-> Pretrain
-> SFT
-> Evaluation
-> Optional: Distillation / DPO / PPO / GRPO / Agent RL
-> Convert / Serve / Web Demo

关键连接 1:模型结构和训练目标

模型只负责:

input_ids -> logits

训练目标由 labels 决定:

  • Pretrain labels:几乎所有文本 token。
  • SFT labels:assistant token。
  • DPO labels/masks:chosen/rejected assistant span。
  • GRPO:生成 completion 后用 reward 调整 logprob。

真正改变学习行为的,不只是模型,而是目标函数和数据组织。

关键连接 2:SFT 为什么是主线核心

MiniMind 一周训练目标应以 pretrain + full_sft 为核心,因为:

  • pretrain 让模型学会语言建模。
  • SFT 让模型学会对话模板和助手行为。
  • 这两步能在个人 GPU 上稳定复现。
  • RL/蒸馏更适合理解和小规模实验,不适合作为第一周硬交付。

关键连接 3:RL 为什么难

RL 多了这些不稳定来源:

  • policy 在线生成,数据分布不断变。
  • reward model 不等于真实人类偏好。
  • KL 太小会跑偏,太大会学不动。
  • reward 方差太小没有学习信号。
  • 小模型能力弱,容易产生无效 rollout。

所以 RL 训练要看:

  • reward
  • KL
  • advantage std
  • response length
  • debug samples
  • 人工评测

关键连接 4:工程上如何扩展

如果要继续提升:

  1. 先扩大或清洗 SFT 数据。
  2. 增加固定评测集。
  3. 调整 max_seq_len 和 batch。
  4. 尝试 MoE,但记录训练成本。
  5. 尝试 LoRA 做领域适配。
  6. 再做 GRPO/Agent RL,且必须设计可靠 reward。

最终复盘问题

你要能回答:

  • 当前模型最强能力是什么?
  • 最弱能力是什么?
  • 训练瓶颈是数据、模型容量、训练时长还是评测方式?
  • 下一周最值得投入的改进是什么?