真实面经题目 · 原创解析

大模型 SFT 微调效果不好时,可以从哪些数据、模板、训练配置、参数高效微调和评估闭环维度优化?

这题考的是 SFT 效果诊断和优化方法论:要把问题拆成数据质量、任务分布、指令模板、训练超参、PEFT 配置、基座能力和评估闭环,而不是只说多清洗数据。

出现于:百度 · 后端开发

60 秒回答模板

我会先做诊断,再逐层优化。第一步明确“效果不好”具体是什么:是任务准确率低、格式不稳定、指令不遵循、幻觉多、风格不对、泛化差,还是原有能力退化;不同问题对应的优化方向不同。第二步看数据,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 优化讲成可执行 playbook:先诊断失败类型,再从数据、模板、训练超参、PEFT 配置和评估闭环逐层定位并迭代。

深入解析

01

先定义失败类型再优化

SFT 效果不好不能笼统处理。要先把失败类型拆开:目标任务正确率低、输出格式不稳定、指令遵循差、回答风格不符合、幻觉增加、拒答边界不对、多轮上下文混乱、长文本退化,或基座原有能力被破坏。诊断时要固定基座模型、数据版本、模板、训练参数和评测集,先复现实验,再做单变量对比,避免同时改太多因素看不出原因。

02

数据质量和分布是第一优先级

SFT 本质上让模型模仿高质量指令到答案的映射。数据要检查答案事实是否正确、指令是否清楚、角色边界是否一致、多轮对话是否缺上下文、是否有重复和近重复、是否混入低质量模板话术、是否存在安全或版权风险。分布上要覆盖目标场景、难例、边界、拒答、工具使用或格式化输出,同时避免热门任务过度占比导致模型偏科。高质量少量数据通常优于大量噪声数据。

03

模板和 loss mask 影响指令遵循

很多 SFT 问题不是模型不会,而是训练格式和线上格式不一致。需要统一 system、user、assistant、tool 等角色边界,明确特殊 token、分隔符、结束符和多轮拼接方式。训练时通常只对 assistant 应答部分计算 loss,不应让模型学习预测用户输入或系统提示。结构化输出任务还要保证 schema、字段说明、示例和线上解析器一致,否则会出现离线看似正常、上线格式崩坏。

04

训练配置决定学多少和忘多少

超参要围绕稳定收敛和避免灾难性遗忘调整。学习率过大可能破坏基座能力,过小可能学不到任务;epoch 过多可能过拟合模板,过少可能欠拟合;batch size、梯度累积、warmup、weight decay、梯度裁剪、序列长度、packing、混合精度和 checkpoint 选择都会影响结果。要同时看训练 loss、验证集表现、格式通过率、通用能力回归和不同长度样本表现,而不是只看训练 loss 降低。

05

参数高效微调要调覆盖范围

使用 LoRA、QLoRA、Adapter 等参数高效微调时,重点不是只套默认配置,而是确认可训练参数是否覆盖任务所需能力。可以调整 rank、alpha、dropout、目标模块、是否包含 attention、MLP、embedding 或 lm head,以及量化精度和优化器设置。rank 太低可能表达能力不足,太高可能过拟合和成本上升;目标层选错可能导致格式学会了但推理能力没提升,或风格变了但事实能力下降。

06

评估闭环防止局部最优

SFT 优化必须有稳定评估闭环。离线评测要覆盖目标任务、边界样本、拒答、安全、格式、长上下文和通用能力回归;自动指标可以看准确率、EM/F1、格式通过率、BLEU/ROUGE 或 judge 分,但不能完全替代人工评审。线上还要看采纳率、重试率、投诉率、人工修正率、延迟和成本。每轮训练要记录数据版本、模板版本、超参、checkpoint 和 badcase 修复情况,形成可追溯迭代。

易错点

  • 不先定义效果不好具体指什么,直接从清洗数据或调学习率开始。
  • 只关注数据清洗,不看任务分布、难例覆盖、拒答样本和线上真实输入分布。
  • 训练模板和推理模板不一致,角色边界、结束符、特殊 token 或 schema 对不上。
  • loss mask 设置错误,让模型学习预测用户输入、系统提示或 padding,而不是只学习目标回答。
  • 只看训练 loss 下降,不看验证集、badcase、格式通过率、安全指标和通用能力回归。
  • 使用 LoRA 默认参数不验证,忽略 rank、目标模块、dropout、量化精度和可训练范围的影响。
  • 同时修改数据、模板、超参和评测集,导致无法判断到底哪个改动产生效果。

面试官追问

SFT 后模型通用能力下降怎么办?

先确认是否学习率过大、训练轮数过多、数据分布过窄或高重复导致过拟合。可以降低学习率和 epoch,加入通用指令数据或回归样本,调整任务配比,使用早停和 checkpoint 选择,并把通用能力回归集纳入每轮评估。

训练 loss 降了但评测效果没提升,可能是什么原因?

可能是训练集噪声或模板模式被学会了,但目标能力没提升;也可能评测集和训练分布不一致、loss mask 错误、格式不一致、数据泄漏或评测指标不匹配。要看验证集分任务结果、badcase、输出样例和线上模板一致性。

SFT 数据是不是越多越好?

不是。SFT 更看重质量、覆盖和分布。大量重复、错误、低质或风格混乱的数据会让模型学到坏模式。更好的做法是高质量样本优先,补齐目标场景、难例、边界和拒答,并通过评估确定新增数据是否带来增量。

LoRA 的 rank 应该怎么选?

rank 代表适配能力和参数量的折中。简单风格或格式对齐可以从较低 rank 试起,复杂任务迁移可能需要更高 rank;但 rank 越高越可能增加成本和过拟合。应该结合验证集、回归集、训练稳定性和目标模块选择做网格或分阶段实验。

什么时候 SFT 不适合解决问题?

如果问题来自知识缺失、实时信息、工具调用、检索不到证据或业务规则变化,单纯 SFT 可能不是最优解。可以考虑 RAG、工具调用、规则约束、提示词改造或数据管道修复。SFT 更适合稳定任务格式、风格、指令遵循和特定能力迁移。