真实面经题目 · 原创解析
大模型 SFT 微调效果不好时,可以从哪些数据、模板、训练配置、参数高效微调和评估闭环维度优化?
这题考的是 SFT 效果诊断和优化方法论:要把问题拆成数据质量、任务分布、指令模板、训练超参、PEFT 配置、基座能力和评估闭环,而不是只说多清洗数据。
真实面经题目 · 原创解析
这题考的是 SFT 效果诊断和优化方法论:要把问题拆成数据质量、任务分布、指令模板、训练超参、PEFT 配置、基座能力和评估闭环,而不是只说多清洗数据。
我会先做诊断,再逐层优化。第一步明确“效果不好”具体是什么:是任务准确率低、格式不稳定、指令不遵循、幻觉多、风格不对、泛化差,还是原有能力退化;不同问题对应的优化方向不同。第二步看数据,SFT 最常见瓶颈是样本质量和分布:要清理错误标签、低质量回答、重复样本、模板污染和多轮上下文错位,同时补充目标任务、困难样本、拒答样本、边界样本和高质量示范,控制不同任务和长度的配比。第三步看指令模板和训练目标,保证 system、user、assistant 边界清楚,训练时只对 assistant 目标部分算 loss,格式和线上推理模板一致,避免把用户输入、系统提示和答案混在一起学。第四步看训练配置,包括学习率、batch size、epoch、warmup、weight decay、序列长度、packing、梯度裁剪、精度和 checkpoint 选择;学习率过大或训练过久可能遗忘,过小或样本太少可能学不到。第五步看参数高效微调配置,如果用 LoRA 或类似方法,要调 rank、alpha、dropout、目标层、是否训练 embedding 或输出头,并确认可训练参数覆盖了任务所需能力。第六步建立评估闭环,用固定 dev/test、人工评审、自动指标、线上 A/B 和 badcase 归因比较版本,同时监控安全、格式、成本、延迟和通用能力回归。SFT 优化不是一个单点技巧,而是数据、模板、训练、PEFT 和评估共同收敛的工程过程。
SFT 效果不好不能笼统处理。要先把失败类型拆开:目标任务正确率低、输出格式不稳定、指令遵循差、回答风格不符合、幻觉增加、拒答边界不对、多轮上下文混乱、长文本退化,或基座原有能力被破坏。诊断时要固定基座模型、数据版本、模板、训练参数和评测集,先复现实验,再做单变量对比,避免同时改太多因素看不出原因。
SFT 本质上让模型模仿高质量指令到答案的映射。数据要检查答案事实是否正确、指令是否清楚、角色边界是否一致、多轮对话是否缺上下文、是否有重复和近重复、是否混入低质量模板话术、是否存在安全或版权风险。分布上要覆盖目标场景、难例、边界、拒答、工具使用或格式化输出,同时避免热门任务过度占比导致模型偏科。高质量少量数据通常优于大量噪声数据。
很多 SFT 问题不是模型不会,而是训练格式和线上格式不一致。需要统一 system、user、assistant、tool 等角色边界,明确特殊 token、分隔符、结束符和多轮拼接方式。训练时通常只对 assistant 应答部分计算 loss,不应让模型学习预测用户输入或系统提示。结构化输出任务还要保证 schema、字段说明、示例和线上解析器一致,否则会出现离线看似正常、上线格式崩坏。
超参要围绕稳定收敛和避免灾难性遗忘调整。学习率过大可能破坏基座能力,过小可能学不到任务;epoch 过多可能过拟合模板,过少可能欠拟合;batch size、梯度累积、warmup、weight decay、梯度裁剪、序列长度、packing、混合精度和 checkpoint 选择都会影响结果。要同时看训练 loss、验证集表现、格式通过率、通用能力回归和不同长度样本表现,而不是只看训练 loss 降低。
使用 LoRA、QLoRA、Adapter 等参数高效微调时,重点不是只套默认配置,而是确认可训练参数是否覆盖任务所需能力。可以调整 rank、alpha、dropout、目标模块、是否包含 attention、MLP、embedding 或 lm head,以及量化精度和优化器设置。rank 太低可能表达能力不足,太高可能过拟合和成本上升;目标层选错可能导致格式学会了但推理能力没提升,或风格变了但事实能力下降。
SFT 优化必须有稳定评估闭环。离线评测要覆盖目标任务、边界样本、拒答、安全、格式、长上下文和通用能力回归;自动指标可以看准确率、EM/F1、格式通过率、BLEU/ROUGE 或 judge 分,但不能完全替代人工评审。线上还要看采纳率、重试率、投诉率、人工修正率、延迟和成本。每轮训练要记录数据版本、模板版本、超参、checkpoint 和 badcase 修复情况,形成可追溯迭代。
先确认是否学习率过大、训练轮数过多、数据分布过窄或高重复导致过拟合。可以降低学习率和 epoch,加入通用指令数据或回归样本,调整任务配比,使用早停和 checkpoint 选择,并把通用能力回归集纳入每轮评估。
可能是训练集噪声或模板模式被学会了,但目标能力没提升;也可能评测集和训练分布不一致、loss mask 错误、格式不一致、数据泄漏或评测指标不匹配。要看验证集分任务结果、badcase、输出样例和线上模板一致性。
不是。SFT 更看重质量、覆盖和分布。大量重复、错误、低质或风格混乱的数据会让模型学到坏模式。更好的做法是高质量样本优先,补齐目标场景、难例、边界和拒答,并通过评估确定新增数据是否带来增量。
rank 代表适配能力和参数量的折中。简单风格或格式对齐可以从较低 rank 试起,复杂任务迁移可能需要更高 rank;但 rank 越高越可能增加成本和过拟合。应该结合验证集、回归集、训练稳定性和目标模块选择做网格或分阶段实验。
如果问题来自知识缺失、实时信息、工具调用、检索不到证据或业务规则变化,单纯 SFT 可能不是最优解。可以考虑 RAG、工具调用、规则约束、提示词改造或数据管道修复。SFT 更适合稳定任务格式、风格、指令遵循和特定能力迁移。