1.4 KiB
1.4 KiB
Day 4 Exam
A. 代码阅读题
train_full_sft.py和train_pretrain.py的训练循环有哪些完全相同的地方?- SFT 的
from_weight默认值是什么?为什么? max_seq_len=768相比 pretrain 默认340的意义是什么?SFTDataset.generate_labels是否会训练多轮对话里的多个 assistant?eval_llm.py中 pretrain 权重和 SFT 权重的 prompt 构造有什么区别?
B. 对比题
用同一个 prompt 比较 pretrain 和 full_sft:
解释什么是机器学习。
回答:
- 哪个更像聊天助手?
- 哪个更可能只是续写文本?
- 这种差异来自模型结构还是训练数据?
C. 工业题
- SFT 数据中如果有大量低质量长回答,会对模型造成什么影响?
- 为什么 SFT 前后必须固定一组评测 prompt?
- 如何判断模型是在学能力,还是只是在学模板?
- 领域 SFT 为什么要混合通用数据?
D. 实验题
完成 SFT 后,运行:
python eval_llm.py --weight full_sft
cd scripts && python eval_toolcall.py --weight full_sft
记录:
- 普通对话 8 个 prompt 的表现。
- tool call 自动测试中成功和失败样例。
- 失败原因是格式、工具选择、参数、还是最终回答。
E. 通过标准
你能解释:
SFT 训练循环不是魔法,真正关键是 chat template 和 assistant-only labels。