minimind/learning/day07/02_deep_dive.md

78 lines
1.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# Day 7 Deep Dive: 把 MiniMind 训练链路串起来
## 总链路
```text
Tokenizer
-> Pretrain
-> SFT
-> Evaluation
-> Optional: Distillation / DPO / PPO / GRPO / Agent RL
-> Convert / Serve / Web Demo
```
## 关键连接 1:模型结构和训练目标
模型只负责:
```text
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。
## 最终复盘问题
你要能回答:
- 当前模型最强能力是什么?
- 最弱能力是什么?
- 训练瓶颈是数据、模型容量、训练时长还是评测方式?
- 下一周最值得投入的改进是什么?