真实面经题目 · 原创解析
LoRA 微调不收敛或输出格式异常时,如何从数据、模板、学习率、rank 和 alpha 排查?
这题考的是 LoRA 训练故障诊断能力:候选人要能把不收敛和输出格式失控拆成数据、模板、损失、超参、adapter 容量和评测回归几个层面逐步定位。
真实面经题目 · 原创解析
这题考的是 LoRA 训练故障诊断能力:候选人要能把不收敛和输出格式失控拆成数据、模板、损失、超参、adapter 容量和评测回归几个层面逐步定位。
我会先把问题拆成两类:一类是训练不收敛,比如 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 判断。
不收敛通常表现为训练 loss 长期不降、验证 loss 上升、梯度爆炸或指标随机波动;格式退化则可能是模型能回答内容但不再遵循 JSON、标签、固定字段、工具参数或多轮对话格式。两类问题可以同时出现,但诊断入口不同:前者先看训练信号和超参,后者要重点看模板、loss mask、数据一致性和推理时 decoding。
不要直接在完整训练任务里盲调。应该抽一个小而干净的 dev set,固定随机种子、基础模型、tokenizer、chat template、训练步数和推理参数,分别跑 base model、历史 checkpoint、当前 LoRA checkpoint。这样可以判断异常是数据批次引入、训练配置引入,还是推理链路引入,也能避免把已有基座缺陷误判为 LoRA 失败。
LoRA 参数量小,对数据噪声和格式不一致更敏感。需要检查重复样本、空答案、截断样本、错配图片文本、乱码、角色颠倒、目标答案太短、正负样本混杂,以及同一任务存在多种互相冲突的输出格式。若格式样本占比太低,模型可能学到任务内容却学不到严格结构。
指令输出格式异常经常不是模型能力问题,而是训练和推理模板不一致。例如训练用了某套 system/user/assistant 分隔符,推理换了另一套;训练把 user 和 assistant 全部算入 loss,模型被迫学习用户输入;多模态样本里的 image token 位置不一致;长答案被截断导致结束符和闭合括号学不到。这些会直接破坏格式遵循。
训练不稳定时优先看学习率、warmup、有效 batch size、梯度累积、梯度裁剪、weight decay、bf16/fp16 溢出和 scheduler。LoRA 常用较高学习率,但过高会让 adapter 更新过猛,出现 loss 震荡和通用能力回退;过低则可能 loss 平缓但实际没有学到目标格式。
rank 太低时 adapter 表达能力不足,复杂格式、跨模态对齐或多任务指令难以学习;rank 太高会增加过拟合和训练成本。alpha 通常影响 LoRA 增量相对基座权重的放大程度,alpha 过大可能让增量覆盖基座原本的指令遵循和语言能力,过小则效果弱。排查时应成组实验 rank、alpha 和学习率,不能只改一个值就下结论。
只看训练 loss 不够。格式类任务要有可执行的结构校验,例如 JSON parse、字段完整率、枚举合法率、结束符闭合率和模板匹配率;内容类任务要看准确率、人工偏好或任务指标;同时保留通用问答、拒答、安全和多轮样本,防止修好格式却牺牲基座能力。
常见修复包括清洗格式样本、统一 chat template、修正 loss mask、降低学习率、增加 warmup、调小 alpha、提高 rank、加入高质量格式示例、使用早停和 checkpoint 对比。上线前应把触发过问题的样本加入回归集,并记录训练配置、数据版本和推理模板,避免下一轮增量训练再次破坏格式。
优先怀疑格式样本占比不足、格式标注不一致、训练和推理 chat template 不一致、assistant loss mask 错误,或者 decoding 过于随机。loss 下降只能说明平均 token 预测变好,不保证结构约束变稳定。
先看小规模干净数据上的过拟合能力。如果小集都学不动,可能 rank 太低、目标模块没挂对或学习率太低;如果小集能学会但全量震荡,更多是学习率、数据噪声或 batch 稳定性问题。
常见现象是目标任务短期变强但通用指令遵循、拒答边界、语言流畅度或固定格式被破坏,验证集波动加大。它本质上是 LoRA 增量相对基座影响过强。
先检查训练样本是否每条都有完整字段和闭合结构,再检查答案截断、结束符、loss mask 和推理模板;随后增加严格格式样本、降低 temperature,并用 JSON parse 成功率和字段完整率做验证。
要检查图文是否匹配、image token 位置是否一致、视觉编码器或 projector 是否冻结合理、图片预处理是否训练推理一致,以及格式错误是否集中出现在 OCR、定位或跨图推理样本上。