训练微调面试题
从一个可测问题开始:基座模型在指定格式抽取任务中经常漏字段。先确认失败类型,再讨论训练目标、数据、适配方式和上线评估。
核心问题
1. Base、Instruct、Chat 模型有什么区别?
Base 通常侧重预训练语言建模目标;Instruct/Chat 通常经过指令或对话方向的后训练。名称不是统一能力保证,应检查模型卡、训练说明、聊天模板和实际任务表现。不能只换模型名,仍沿用另一模型的特殊 token 和对话拼接方式。
追问:模型输出乱码或复述提示,先检查 tokenizer、chat template、停止条件和输入格式,再怀疑训练算法。参见 SFT。
2. 什么时候选 Prompt、RAG 或微调?
| 失败类型 | 优先尝试 | 为什么 |
|---|---|---|
| 指令或字段含义不清 | 改任务定义、示例和输出校验 | 先排除需求和接口问题 |
| 需要经常更新的事实或引用 | 检索与工具 | 外部证据可更新、可追溯 |
| 固定任务的行为不稳定 | 在明确基线上评估 SFT | 用示范数据学习目标行为 |
| 多个可接受回答之间有稳定偏好 | 评估偏好优化 | 数据要表达清楚比较标准 |
| 延迟高、显存不足 | 推理和部署分析 | 不一定需要重新训练 |
这些方法可以组合。SFT 是训练目标/流程,LoRA 是参数更新方式,二者不是互斥选项;DPO 也可以使用 LoRA。
3. LoRA 为什么省资源,省的是哪些资源?
对一个形状为 d × k 的权重矩阵,用 B(d × r)A(r × k) 表示低秩增量,增加的可训练参数量为 r(d+k)。冻结基座后,通常能减少梯度和优化器状态的存储,但仍需加载基座,训练还要保存激活。实际显存受序列长度、batch、精度和目标层影响。
QLoRA 主要通过量化冻结基座进一步节省存储,并不意味着相同 rank 下 LoRA 参数更少。低 rank 也不保证与全量微调等效。依据见 LoRA 原论文、QLoRA 原论文 和 站内详解。
4. DPO 与基于奖励模型的 RLHF 有何不同?
典型的奖励模型 + PPO 路线先学习偏好评分,再使用奖励和约束优化策略。标准 DPO 从同一输入的 chosen/rejected 偏好对出发,利用策略与参考策略的相对概率构造目标,训练流程中无需单独拟合一个显式奖励模型或运行 PPO。
这不等于 DPO 不需要高质量偏好数据,也不等于必然优于其他对齐方法。标注不一致、长度偏差和任务分布偏移都会影响结果。参考 DPO 原论文;概念展开见 RLHF 与 DPO。
5. loss 下降,为什么任务效果还会变差?
训练 loss 衡量的是当前训练目标,未必等同业务成功。重复样本、评估泄漏、格式 token 占比、过拟合、错误的标签 mask,都会让曲线与实际能力脱节。
先按文档、用户或任务来源拆分训练/验证/测试集,再固定模板和解码配置比较基座、SFT 与后续对齐模型。测试集用于最终报告,不反复用于选超参;通用能力和安全回归与目标任务一起检查。参见 训练数据 和 模型评估。
追问角度
- 显存不足:区分权重、梯度、优化器状态和激活,不直接声称“换 LoRA 就一定能跑”。
- 偏好数据:同一输入是否可比,chosen 是否真的正确,是否控制顺序和长度偏差?
- 部署回归:合并 adapter、量化或改变 chat template 后,是否重跑相同评估集?
示例回答骨架
“我会先用固定样本比较提示和结构化输出基线。若目标行为仍不稳定,再准备独立拆分的示范数据做 SFT,并视资源选择 LoRA。训练时监控验证集,最终比较字段准确性、格式通过率、旧任务退化和推理成本。新模型只有在这些指标符合预设标准时才进入灰度。”
自测
给定 d=k=4096, r=8,计算单个矩阵的 LoRA 可训练参数与原矩阵参数量,并解释为什么这个比例不能直接等同“训练显存节省比例”。