真实面经题目 · 原创解析
LLM 微调项目里新数据加入后离线评估掉点,应该如何排查数据、训练和评估口径?
这道题考察 LLM 微调项目的掉点诊断能力。回答重点不是背 SFT 或 LoRA 方法名,而是把新数据引入后的数据 pipeline diff、质量和格式漂移、分布混合比例、训练 schedule、评估集回归、指标切片、Recall/Precision 取舍和上线决策串成一套可执行排查流程。
真实面经题目 · 原创解析
这道题考察 LLM 微调项目的掉点诊断能力。回答重点不是背 SFT 或 LoRA 方法名,而是把新数据引入后的数据 pipeline diff、质量和格式漂移、分布混合比例、训练 schedule、评估集回归、指标切片、Recall/Precision 取舍和上线决策串成一套可执行排查流程。
我会先把问题拆成“到底是哪一类样本掉了、是不是评估口径变化、是不是训练真的学坏了”。第一步固定基线和评估环境,对比加入新数据前后的数据版本、模板、标签口径、去重规则、采样比例和训练配置,确认只有预期变量变化。第二步做数据 pipeline diff:看新增数据来源、任务分布、难度分布、输入输出格式、system/user/assistant 角色、答案长度、拒答/安全样本、脏标和重复样本是否改变了训练目标。第三步看训练过程:混合训练比例是否挤压了旧能力,学习率、epoch、warmup、batch、loss mask、packing 和 checkpoint 选择是否导致过拟合或灾难性遗忘。第四步回到评估:确认 eval set 没有泄漏、污染、格式不一致或被新样本分布绕开,并按任务类型、数据来源、难度、长度、语言、旧能力/新能力切片看回归。最后用 Recall/Precision 的错误成本决定是否调阈值、补数据、降权新数据、重训或回滚;如果关键切片掉点不可解释、人工评估不过、线上风险不可控,就不应该上线。
离线评估掉点时,不能直接说“新数据有问题”或“模型不适合”。先固定基座模型、训练代码、tokenizer、prompt 模板、评估脚本、解码参数和 checkpoint 选择方式,复现加入新数据前的基线分数。然后列出唯一预期变化:新增数据、混合比例或训练轮次。如果代码、评估集、prompt 或解码参数也变了,先把这些变量拆开做 ablation,否则排查会混在一起。
新增数据要从采集、清洗、去重、格式化、过滤、采样到训练样本生成逐步 diff。重点看 schema 是否变了,system/user/assistant 角色是否错位,答案字段是否被截断,loss mask 是否覆盖了 prompt,特殊 token 是否异常,中文/英文/代码/表格等格式是否和旧数据不一致。很多离线掉点并不是模型能力问题,而是训练样本格式把模型教偏了。
数据质量要看脏标、错答、低质模板化答案、过长答案、重复样本、近重复样本、拒答样本和互相冲突的监督信号。标签漂移包括:同一类问题新旧答案风格不同、评分标准不同、是否允许猜测的口径不同、召回型答案和精确型答案混在一起。若新增数据质量参差不齐,模型可能在整体 loss 下降的同时,关键离线评估指标下降。
混合训练的风险是新任务收益挤压旧任务能力。需要按旧数据、新数据、公共能力集、目标业务集分别评估,看掉点是全局退化、旧能力遗忘,还是某些切片被新增分布拉偏。排查方法包括调整新旧数据比例、分层采样、按任务加权、保留 replay 数据、对低质来源降权,以及训练多个 mixture ablation 来画出比例和效果的关系。
训练配置也会制造掉点。学习率过大可能破坏原有能力,epoch 过多会过拟合新增数据,warmup、batch size、梯度裁剪、packing、max length、loss mask 和 early stopping 都可能影响结果。checkpoint 不能只选训练 loss 最低的点,要看验证集和关键 eval slice。若新增数据很小但权重很高,还要警惕模型记住新模板、输出风格变窄或拒答倾向异常增加。
评估层要确认 eval set 本身稳定:没有数据泄漏、去重策略变化、样本污染、prompt 模板不一致或 scorer 版本变化。指标要按任务、来源、难度、长度、语言、旧能力/新能力、人工高风险样本切片。Recall/Precision 取舍要看错误成本:如果漏召影响更大,可以接受一定误报并加人工复核;如果误答成本高,要优先 precision。若掉点集中在核心切片且无法通过数据修复、阈值调整或模型选择解释,就应回滚或暂缓上线。
训练 loss 下降只能说明模型更拟合训练分布,不代表目标评估分布更好。常见原因是新增数据分布和 eval set 不一致、标签口径漂移、答案格式变化、重复或模板样本过多、loss mask 错误,或者模型过拟合新增数据后遗忘旧能力。应按数据来源和任务切片看,而不是只看整体 loss。
可以做最小 ablation:同一训练配置只换数据版本,旧数据、新数据、混合数据分别训练或继续训练;再固定数据,只改学习率、epoch、比例、checkpoint。若只要加入某批数据就掉,优先查数据;若不同数据都在某个 schedule 下掉,优先查训练配置。还可以抽样人工审查高 loss 样本、错误样本和新增来源样本。
先定义正例和错误成本。检索、召回候选、风险发现类任务通常更重视 Recall,但需要人工复核或二阶段过滤控制误报;直接面向用户回答、自动执行、敏感内容判断等场景通常更重视 Precision,因为误答或误拦截成本高。面试回答要说明阈值不是拍脑袋定,而是按业务成本、人工承接能力和线上风险设定。
不能只看新能力涨了就上线。要看掉点是否发生在核心能力、是否影响高风险人群或高频请求、是否有人工评估和线上灰度兜底、是否能通过路由或阈值限制新模型使用范围。如果收益只在非核心切片,核心指标或安全指标下降且原因不清,应暂缓上线、降权新数据或回滚到旧模型。