# Day 7 Final Exam ## A. 闭卷概念题 1. 从零训练 MiniMind,按顺序需要哪些阶段? 2. Pretrain 和 SFT 的 labels 有什么区别? 3. 为什么 `ignore_index=-100` 是训练中的关键设计? 4. GRPO 为什么不需要 critic? 5. 蒸馏中的 CE 和 KL 分别学什么? 6. checkpoint 为什么要保存 optimizer? 7. 为什么训练 loss 不能替代生成评测? 8. Tool call 能力在 MiniMind 中主要从哪里来? ## B. 代码定位题 写出以下功能所在文件和函数: 1. MiniMind causal LM loss。 2. SFT assistant-only labels。 3. Pretrain 数据 padding 和 label mask。 4. Checkpoint 保存和恢复。 5. GRPO reward 计算。 6. Rollout engine 抽象。 7. 推理时 chat template 构造。 8. Tool call 自动测试入口。 ## C. 实战题 重新从空日志开始,写出你会执行的完整命令: 1. 环境检查。 2. pretrain。 3. resume pretrain。 4. SFT。 5. eval pretrain。 6. eval full_sft。 7. eval toolcall。 每条命令后写一句:这一步验证什么。 ## D. Debug 场景题 给出排查路径: 1. SFT loss 正常下降,但模型推理输出乱码。 2. 模型只会复述用户问题。 3. GRPO reward 上升,但人工看回答变差。 4. 训练恢复后 step 对不上。 5. Tool call JSON 经常非法。 ## E. 最终报告题 写一份 2 页以内最终报告,必须包含: - 训练环境 - 数据文件 - 模型配置 - 训练命令 - loss 记录 - pretrain vs full_sft 对比 - 失败样例 - 你对 GRPO 或蒸馏的理解 - 下一步最值得做的 3 个实验 ## F. 评分标准 总分 100: - 20:成功训练并推理 `pretrain` / `full_sft` - 20:理解 dataset、template、label mask - 15:理解模型结构和 causal LM loss - 15:理解训练工程和 checkpoint - 15:能做结构化评测和失败分析 - 15:理解至少一个后训练算法 通过线:75。 优秀线:90,且最终报告里有清晰失败分析和下一步实验设计。