60 秒回答模板

我会先把问题拆成两类:一类是训练不收敛,比如 loss 不降、梯度异常、验证集效果不涨;另一类是指令格式损失,比如 JSON、标签、固定话术或多轮模板输出不稳定。排查顺序不能一上来只调 rank 或 alpha。第一步做对照实验,用同一批验证样本比较 base model、SFT 全量或历史 LoRA、当前 LoRA,确认是训练没学到、学偏了,还是推理模板不一致。第二步查数据和模板,重点看样本是否有错误答案、格式标注是否一致、assistant 部分是否正确参与 loss、system/user/assistant 分隔符和推理时是否一致。第三步查训练稳定性,看学习率、warmup、batch size、梯度裁剪、混合精度和 loss 曲线;学习率过大容易震荡,过小可能长期没变化。第四步再看 LoRA 参数,rank 决定可学习容量,alpha 决定增量缩放,rank 太低学不动,alpha 太大可能覆盖基座行为,alpha 太小效果不明显。最后用固定格式验证集、通用能力验证集和回归样本做门禁,修复方式通常是清洗模板、降低学习率、调整 rank/alpha、加入格式一致的高质量样本、做早停和回归评估,而不是只凭一次 loss 判断。

考点 先定性症状
难度 真实面经题
回答目标 让候选人能讲出 LoRA 故障排查的优先级和闭环:先复现和对照,再查数据模板、训练稳定性、rank/alpha,最后用格式和能力回归验证。

深入解析

01

先区分不收敛和格式退化

不收敛通常表现为训练 loss 长期不降、验证 loss 上升、梯度爆炸或指标随机波动;格式退化则可能是模型能回答内容但不再遵循 JSON、标签、固定字段、工具参数或多轮对话格式。两类问题可以同时出现,但诊断入口不同:前者先看训练信号和超参,后者要重点看模板、loss mask、数据一致性和推理时 decoding。

02

建立最小可复现实验

不要直接在完整训练任务里盲调。应该抽一个小而干净的 dev set,固定随机种子、基础模型、tokenizer、chat template、训练步数和推理参数,分别跑 base model、历史 checkpoint、当前 LoRA checkpoint。这样可以判断异常是数据批次引入、训练配置引入,还是推理链路引入,也能避免把已有基座缺陷误判为 LoRA 失败。

03

数据质量决定训练信号

LoRA 参数量小,对数据噪声和格式不一致更敏感。需要检查重复样本、空答案、截断样本、错配图片文本、乱码、角色颠倒、目标答案太短、正负样本混杂,以及同一任务存在多种互相冲突的输出格式。若格式样本占比太低,模型可能学到任务内容却学不到严格结构。

04

模板和 loss mask 是格式问题高发点

指令输出格式异常经常不是模型能力问题,而是训练和推理模板不一致。例如训练用了某套 system/user/assistant 分隔符,推理换了另一套;训练把 user 和 assistant 全部算入 loss,模型被迫学习用户输入;多模态样本里的 image token 位置不一致;长答案被截断导致结束符和闭合括号学不到。这些会直接破坏格式遵循。

05

学习率和优化器先于 rank 微调

训练不稳定时优先看学习率、warmup、有效 batch size、梯度累积、梯度裁剪、weight decay、bf16/fp16 溢出和 scheduler。LoRA 常用较高学习率,但过高会让 adapter 更新过猛,出现 loss 震荡和通用能力回退;过低则可能 loss 平缓但实际没有学到目标格式。

06

rank 和 alpha 分别控制容量与缩放

rank 太低时 adapter 表达能力不足,复杂格式、跨模态对齐或多任务指令难以学习;rank 太高会增加过拟合和训练成本。alpha 通常影响 LoRA 增量相对基座权重的放大程度,alpha 过大可能让增量覆盖基座原本的指令遵循和语言能力,过小则效果弱。排查时应成组实验 rank、alpha 和学习率,不能只改一个值就下结论。

07

评估要覆盖格式、内容和通用能力

只看训练 loss 不够。格式类任务要有可执行的结构校验,例如 JSON parse、字段完整率、枚举合法率、结束符闭合率和模板匹配率;内容类任务要看准确率、人工偏好或任务指标;同时保留通用问答、拒答、安全和多轮样本,防止修好格式却牺牲基座能力。

08

修复要形成回归防护

常见修复包括清洗格式样本、统一 chat template、修正 loss mask、降低学习率、增加 warmup、调小 alpha、提高 rank、加入高质量格式示例、使用早停和 checkpoint 对比。上线前应把触发过问题的样本加入回归集,并记录训练配置、数据版本和推理模板,避免下一轮增量训练再次破坏格式。

易错点

  • 只说调小学习率或多训几轮,没有先区分不收敛、过拟合、格式退化和推理模板不一致。
  • 把输出格式异常全归因于模型能力差,忽略 chat template、角色标记和 loss mask 错误。
  • 只看训练 loss,不看验证集、格式 parse 成功率和通用能力回归。
  • 盲目增大 rank,忽略数据噪声、学习率过高和 alpha 过强可能带来的行为覆盖。
  • 训练时使用一种模板,推理时换另一种 system/user/assistant 包装,却把失败归因于 LoRA。
  • 没有 base model 对照和历史 checkpoint 对照,无法判断问题是基座已有缺陷还是本次微调引入。
  • 修复格式时只调 decoding 参数,不清洗格式样本和模板,导致离线验证一换温度就复发。
  • 把少量人工看起来正确的样例当成结论,没有沉淀可重复的 dev set 和回归集。

面试官追问

训练 loss 下降但输出格式仍然不稳定,最可能是什么原因?

优先怀疑格式样本占比不足、格式标注不一致、训练和推理 chat template 不一致、assistant loss mask 错误,或者 decoding 过于随机。loss 下降只能说明平均 token 预测变好,不保证结构约束变稳定。

如何判断是 rank 不够还是学习率不合适?

先看小规模干净数据上的过拟合能力。如果小集都学不动,可能 rank 太低、目标模块没挂对或学习率太低;如果小集能学会但全量震荡,更多是学习率、数据噪声或 batch 稳定性问题。

alpha 过大时会看到什么现象?

常见现象是目标任务短期变强但通用指令遵循、拒答边界、语言流畅度或固定格式被破坏,验证集波动加大。它本质上是 LoRA 增量相对基座影响过强。

输出 JSON 总是缺字段,应该怎么修?

先检查训练样本是否每条都有完整字段和闭合结构,再检查答案截断、结束符、loss mask 和推理模板;随后增加严格格式样本、降低 temperature,并用 JSON parse 成功率和字段完整率做验证。

多模态 LoRA 里还要额外排查什么?

要检查图文是否匹配、image token 位置是否一致、视觉编码器或 projector 是否冻结合理、图片预处理是否训练推理一致,以及格式错误是否集中出现在 OCR、定位或跨图推理样本上。