数据与副作用:数据怎么造、蒸馏的合规边界、以及微调之后模型为什么变笨了

T4-4模块 4 · 微调与对齐面试权重 更新于 2026-08-19
关联题目Q4-09Q4-10Q4-11

这篇学完你能回答什么

  1. 微调数据从哪来?怎么保证质量?多少条够?评测集怎么切才不会自欺欺人?
  2. 什么是蒸馏?用大模型造数据训小模型,技术上和合规上各要注意什么?
  3. 微调后"学会了新任务但变笨了"是怎么回事?怎么提前发现、怎么缓解?

从一个真实故障讲起

一个客服平台的团队要做工单自动分类,14 个类别。他们判断得没错——这是典型的"能力/格式"问题,类别定义里有大量说不清的行业默契,属于该微调的场景。

数据也不算少:4200 条历史工单,人工复核过类别标签。他们拿一个 7B 开源模型做了全参微调,3 个 epoch。评测集是从这 4200 条里随机切的 10%。

结果非常漂亮:分类准确率从 few-shot 基线的 82% 提到 94%。上线。

三天后,客服主管找过来:"这个模型是不是坏了?"

现场是这样的——客服在同一个对话框里问模型"这个工单该怎么处理",模型回了两个字:"计费类"。问它"帮我把这段话润色一下",回:"账号类"

它把所有输入都当成了待分类的工单。

团队跑了一遍通用基准,MMLU 掉了 11 个点。

这是一次教科书级的灾难性遗忘(catastrophic forgetting):模型确实学会了新任务,代价是把"除了这件事之外的所有事"忘掉了一大半。而它之所以没在上线前被发现,是因为评测集是从训练集里随机切的——同源同分布,只能证明"它在这类输入上分得准",证明不了"它在别的输入上还正常"。

这一篇讲的就是这两件事:数据怎么造才不自欺欺人,以及副作用怎么提前看见。

学会了一件事,忘掉了其余所有事
分类准确率 82% → 94%,上线三天后客服问它「润色一下」,它回「账号类」

  1. 14 个类别的工单分类

    4200 条历史工单,人工复核过类别标签

  2. 7B 全参微调 3 epoch

    最容易触发遗忘的组合

  3. 评测集随机切 10%断点

    就从这 4200 条里切,同源同分布

  4. 82% → 94%,上线

    few-shot 基线 82%,分数非常漂亮

  5. 问它「润色一下」

    它回:「账号类」

分类准确率few-shot 基线 82%微调后 94%
通用能力微调前的 MMLU掉了 11 个点
同一个对话框里的其他请求上线前正常应答所有输入都被当成待分类工单
同源评测集能证明什么它在这类输入上分得准证明不了它在别的输入上还正常
上线前只要做一次「任务外输入」抽测 —— 拿一批完全不属于这个任务的请求打模型,看它还正不正常说话 —— 这个故障就能被拦住。

核心概念:先打比方,再给定义

关于数据:微调像给一个人做专项集训。集训的效果几乎完全取决于教材,而不取决于教练多努力、场地多先进。微调的成败八成在数据,算力只占很小一块——7B 的 LoRA 微调几小时几百块钱,而标注 1500 条高质量样本可能要两个人两周。面试里很多人把成本重心讲在 GPU 上,这本身就是没做过的信号。

关于蒸馏知识蒸馏(knowledge distillation)就是让一个强模型当老师,把它的做法教给一个小模型。最常见的形态是"大模型造数据,小模型学"。要记住两条:学生学不过老师(教师的错误会被原样继承),以及老师的话不能白抄(这是合规问题,后面单说)。

关于遗忘:把一个能力全面的人关进一个房间,三个月只让他做一件事,他会把这件事做得极好,同时忘掉很多别的。灾难性遗忘说的就是这件事。它不是异常,是默认会发生的——你不做任何缓解措施,它一定发生,区别只在程度。

教材选错了,练得越狠偏得越远
微调的成败八成在数据;而只做一件事的代价,是忘掉其余所有事

专项集训 · 效果全在教材

不取决于教练多努力、场地多先进

很多人却把成本重心算在场地上 —— 这本身就是没做过的信号

对应
微调的成本重心

八成成败在数据,算力只占很小一块

7B 的 LoRA 微调几小时几百块钱;标注 1500 条高质量样本可能要两个人两周

来源判准体检去重切分
关进一个房间三个月

只让他做一件事,他会做得极好

同时忘掉很多别的 —— 这不是意外,是默认

对应
灾难性遗忘 catastrophic forgetting

不做任何缓解措施,它一定发生

学会了新任务,代价是把「除了这件事之外的所有事」忘掉一大半;区别只在程度

LoRA 优先5–20% 复演epoch 1–3跟踪通用基准
第三个比方是蒸馏:强模型当老师,小模型学。两条记死 —— 学生学不过老师(教师的错误被原样继承),老师的话不能白抄(合规问题,见图 4)。

原理拆解

判准没定清,标注员就只会看长度
四步各有一个「算过关」的判据;副作用则在权重里另有一张量表

来源线上真实 query + 人工修正 > 历史业务数据 > 大模型合成 > 公开数据集核心判据是分布贴不贴近线上 —— 用公开数据集训出来的模型,在你的线上分布上通常水土不服
判准先于标注判准没定清楚,标注员会退化到用表面特征做判断:长度、有没有小标题、语气客气不客气判准写完先让两个人各标 50 条算一致率;一致率上不去说明判准本身有问题,这时候改判准比加标注量有用得多
体检与去重近重复剔除(embedding 或 MinHash)、分布体检、边界样例覆盖检查每个主类别至少 20–30 条,且必须包含「差点就是另一类」的边界样例 —— 模型学不会边界,是因为你没给边界
切分评测集必须与训练集异源:下面三条至少满足两条时间上晚于训练集 / 由不同的人标注 / 另加一份「任务外」通用能力评测集(这一条专门抓遗忘)
副作用的机制侧(2026 年研究结论,可作进阶加分点)
连续微调里发生了什么数字读法
注意力头被严重扰动15–23%低层受害最重
冻结注意力 vs 冻结前馈减少约 64% vs 约 23%这解释了「冻结哪些层」不是随便选的
中间层表示漂移CKA 相似度下降 0.32–0.47微调后漂得最重的是中间层
梯度冲突有结构Q/K 投影约 67%,V 约 34%冲突集中在 Q/K,不在 V

检测比缓解更重要,也最常被跳过:训练日志里同时画三条曲线 —— 任务 loss、任务指标、一份保留的通用基准(MMLU、HellaSwag、常识 QA)。任务 loss 一路下降、通用能力同时塌掉,是最典型的失败形态,只看任务指标的人永远看不见它。

缓解按性价比排:① 优先 LoRA 而不是全参,基座权重物理冻结;② 混 5–20% 通用数据做复演,低于 5% 起不到正则作用、高于 20% 明显拖慢新任务收敛;③ 学习率降一个量级、epoch 控在 1–3;④ 必要时冻结低层注意力。

一句可以直接背进面试的判据:任务上好 10%、其他上差 25%,这笔交易基本不划算。

数据构造的四步

原文示意
① 来源 ──► ② 判准 ──► ③ 体检与去重 ──► ④ 切分
   │           │            │                │
线上真实     先定规则     长度/格式分布      评测集必须
分布优先     再开标注     近重复剔除         与训练集异源

① 来源:优先级从高到低是——线上真实 query + 人工修正 > 历史业务数据 > 大模型合成 > 公开数据集。核心判据是分布是否贴近线上。用公开数据集训出来的模型在你的线上分布上通常水土不服。

② 判准先于标注。这是最容易跳过、代价最大的一步。判准没定清楚,标注员会退化到用表面特征做判断——长度、有没有小标题、语气客气不客气。前一篇提到的那个 DPO 故障(chosen 比 rejected 平均短 40%)就是判准缺位的直接后果。判准写完,先让两个人各标 50 条,算一致率;一致率上不去,说明判准本身有问题,这时候改判准比加标注量有用得多。

③ 体检与去重。至少做三件事:

  • 近重复剔除:用 embedding 或 MinHash 找相似样本。重复样本会让模型在那个模式上过拟合,同时让评测虚高。
  • 分布体检:把关键属性(长度、类别占比、来源渠道、时间跨度)的分布打出来。任何和你预期不符的系统性倾向,都会被原样学进权重。
  • 边界样例覆盖检查:每个主类别至少 20–30 条,且必须包含"差点就是另一类"的边界样例。模型学不会边界,是因为你没给边界。

④ 切分:评测集必须与训练集异源。 这是开头故障的直接教训。从同一批数据里随机切 10% 当评测集,切出来的是同一批标注员、同一时间段、同一采样口径的数据,它只能证明模型拟合了这批数据的分布。正确做法是三条至少满足两条:

  • 时间上晚于训练集(防止信息泄漏,也检验对新分布的适应)
  • 由不同的人标注(检验判准的可复现性,而不是某个标注员的个人习惯)
  • 另加一份"任务外"的通用能力评测集(这一条专门用来抓遗忘,见后文)

蒸馏:技术侧与合规侧

技术侧。 蒸馏分两种形态:

  • 白盒蒸馏:能拿到教师的完整概率分布(logits),用 KL 散度让学生的分布逼近教师的分布。信息量最大,但要求教师权重在手——只有开源权重模型能这么做。
  • 黑盒蒸馏:只能拿到教师输出的文本,用它当 SFT 的标准答案。调 API 的场景只能这么做,这也是绝大多数团队的实际形态。

黑盒蒸馏有两个必须做的动作:

  1. 拒绝采样过滤(rejection sampling):教师对同一个输入采样 N 次,用判分器/规则/多数投票筛掉错的,只把通过验证的留下来当训练数据。不做过滤直接拿教师输出训,等于把教师的错误率原样烧进学生的权重。
  2. 明确学生的能力上限就是教师。想让学生超过教师,得走可验证奖励那一档,靠蒸馏做不到。

合规侧(截至 2026-08,条款易变,正式项目务必现场核对原文)。

厂商 明确允许 明确禁止
OpenAI Output 的所有权归用户(条款里把权利让渡给用户) 用 Output 开发与 OpenAI 竞争的模型;程序化批量抽取 Output;反向工程
Anthropic 用输出训练不与 Anthropic 竞争的模型。官方举例:情感分析、内容分类、摘要、信息抽取、语义检索、异常检测 训练通用聊天机器人、开放式文本生成模型;把 Output 当训练目标去复刻;反向工程训练方法

一句话判断口径:

风险不在"用没用大模型造数据",在"造出来的东西是不是同类通用模型"。 训一个客服意图分类的小模型 → 基本安全;训"我们自己的通用助手" → 踩线。

还有一个最容易答错的点所有权和用途是两件事。 OpenAI 的条款明确说输出归你,但同一份条款也明确禁止拿它训竞品。面试里如果候选人用"输出的版权是我的"来论证"我可以拿去训模型",这是一个可以直接判定的知识缺口。

补充两条背景:法律上的追责路径主要是服务条款违约 + 商业秘密,而不是著作权(模型输出的版权地位本身还不清晰);开源权重模型另算——Apache 2.0 系(如 Qwen)基本没有这类限制,Llama 系有自己的社群许可条款需要单独看。

灾难性遗忘:机制与缓解

机制侧(2026 年的研究结论,可作进阶加分点):

  • 注意力头是主要受害者:连续微调中约 15–23% 的注意力头被严重扰动,且低层受害最重。
  • 冻结不同部件的效果差异极大:冻结注意力权重可减少约 64% 的遗忘,冻结前馈层只减少约 23%。这解释了为什么"冻结哪些层"不是随便选的。
  • 中间层表示漂移最重:微调后中间层的 CKA 相似度下降 0.32–0.47。
  • 梯度冲突有结构:Q/K 投影矩阵的梯度冲突率约 67%,V 投影只有约 34%。

工程侧缓解(教程主线,按性价比排序):

  1. 优先用 LoRA 而不是全参。基座权重物理冻结,遗忘的物理基础就少了一大半。开头那个团队用全参跑 3 个 epoch,是最容易触发遗忘的组合。
  2. 混入 5–20% 的通用数据做复演(rehearsal)。低于 5% 起不到正则作用,高于 20% 会明显拖慢新任务收敛。一句可以直接引用的经验:不带复演的全参微调,在研究之外几乎总是错的。
  3. 学习率降一个量级,epoch 控制在 1–3。超过 3 个 epoch 收益递减而遗忘陡增。
  4. 必要时冻结低层。结合上面的机制,冻结低层注意力的性价比高于冻结前馈层。

检测(这一条最重要,也最常被跳过):

训练过程中必须跟踪一份保留的通用基准(MMLU、HellaSwag、常识 QA 之类),而不是只看任务 loss。 任务 loss 一路下降、通用能力同时塌掉,是最典型的失败形态,而只看任务指标的人永远看不见它。

一句可以直接背进面试的判据:

任务上好 10%、其他上差 25%,这笔交易基本不划算。

工程实践(截至 2026-08)

数据量经验区间

任务类型 建议条数 备注
分类 / 路由 每类 100–300 有实测案例:8B 模型 5 个类别共 150 条 LoRA 到 92%
结构化抽取 200–500 schema 越复杂取上限
内容生成(文案 / 摘要) 500–2000 风格类任务在这一档
复杂领域适配(医疗 / 法律 / 技术支持) 1000–5000 通常还要配复演数据
厂商侧下限参考 OpenAI SFT 最低 10 条、建议 50 条起看效果;RFT 建议先几十到几百条验证再投入 ——

共识是质量压倒数量:200 条精挑通常打得过 2000 条粗收。 数据不够时,正确动作是提高每条的质量和覆盖度,不是去合成一批凑数。

避坑清单

  1. 评测集绝不从训练集里随机切。 时间靠后、标注员不同、另加一份通用能力集,三条至少占两条。
  2. 训练前先跑一次数据体检:长度分布、类别占比、近重复率、边界样例数。做成脚本,每批数据都跑。
  3. 判准先写,再开标注;先小规模双标算一致率,一致率不行就改判准而不是加人。
  4. 蒸馏必须配拒绝采样,别拿教师的原始输出直接训。
  5. 合规看的是"训出来的是不是同类通用模型",不是"用没用它的输出"。所有权不等于使用权。
  6. 训练日志里同时画三条曲线:任务 loss、任务指标、通用基准指标。第三条是抓遗忘的唯一手段。
  7. 上线前做一次"任务外输入"抽测:拿一批完全不属于这个任务的请求打模型,看它是不是还正常说话。开头那个故障,只要有这一步就能拦住。
所有权归你,用途不归你
截至 2026-08 的条款口径:能拿输出训什么、不能训什么

蒸馏的合规边界
厂商 / 许可明确允许明确禁止 / 注意
OpenAIOutput 的所有权归用户(条款里把权利让渡给用户)用 Output 开发与 OpenAI 竞争的模型;程序化批量抽取 Output;反向工程
Anthropic用输出训练不与 Anthropic 竞争的模型。官方举例:情感分析、内容分类、摘要、信息抽取、语义检索、异常检测训练通用聊天机器人、开放式文本生成模型;把 Output 当训练目标去复刻;反向工程训练方法
Apache 2.0 系(如 Qwen)限制最少开源权重:教师权重在手,可做白盒蒸馏(用 KL 散度让学生分布逼近教师 logits)基本没有这类限制
Llama 系同为开源权重有自己的社群许可条款,需要单独看
判断口径与数据量经验值
一句话判据
风险不在「用没用大模型造数据」,在「造出来的东西是不是同类通用模型」
所有权 ≠ 使用权
条款把 Output 所有权给你,同一份条款禁止拿它训竞品;追责走服务条款违约 + 商业秘密,不是著作权
黑盒蒸馏必配
拒绝采样:教师采样 N 次,用判分器 / 规则 / 多数投票筛掉错的。不过滤 = 把教师错误率烧进学生权重
数据量分档
分类每类 100–300、抽取 200–500、生成 500–2000、复杂领域 1000–5000
厂商侧下限
OpenAI SFT 最低 10 条、建议 50 条起看效果;RFT 建议先几十到几百条验证再投入
训练前先体检
长度分布、类别占比、近重复率、边界样例数 —— 做成脚本,每批数据都跑
条款每年都在动 —— 2026-08 的口径只是当下这一版,正式项目务必现场核对原文。真正稳定的只有那条判据:看你训出来的是不是同类通用模型。

面试视角

遗忘这题背不出来,追问两层就见底
Q4-09 看有没有攒过数据集,Q4-10 看合规,Q4-11 看有没有真跑过训练

  1. 数据题按四步流水线答来源 → 判准 → 体检去重 → 切分
  2. 主动把切分讲出来「评测集必须和训练集异源」—— 绝大多数候选人漏掉这一步
  3. 遗忘题按三段答默认会发生 → 怎么提前看见 → 怎么缓解
  4. 顺序别反:先检测后缓解「看得见」是工程能力,知道有 rehearsal 这个词只是知识
  5. 合规先说训的是哪类模型分类 / 抽取这种非竞争用途允许,训通用助手就踩线
只读过:这些回答会暴露你
  • 「数据当然是越多越好」—— 共识恰恰相反:质量压倒数量
  • 「我们切了 10% 做验证集」—— 同源同分布,只证明它拟合了这批数据
  • 「微调的成本主要是 GPU」—— 成本重心讲在算力上,就是没做过的信号
  • 「灾难性遗忘就是学新的忘旧的」—— 只有定义,没有检测手段和剂量
  • 「模型输出的版权是我们的,所以随便用」—— 可以直接判定的知识缺口
真做过:这些细节骗不了人
  • 200 条精挑通常打得过 2000 条粗收;不够时提质量,不是合成凑数
  • 评测集与训练集异源:时间靠后、标注员不同,另加一份通用能力集
  • 「7B 的 LoRA 几小时几百块,真正贵的是标注和判准共识」
  • 训练时同时跟踪通用基准;混 5–20% 复演,低于 5% 没用、高于 20% 拖慢收敛
  • 先说清训的是哪类模型,再补一句蒸馏要配拒绝采样
大多数候选人在合规这块只有一个模糊的「好像不太行」—— 能说清允许什么、禁止什么、判据是什么的人极少,这是本篇最有区分度的两行。

面试官怎么问

Q4-09(数据从哪来、多少条够)是二面高频,看起来是常识题,实际筛的是"有没有真的攒过数据集";Q4-10(蒸馏与合规)在 toB 和有法务约束的团队里问得多;Q4-11(灾难性遗忘)是有训练经验的面试官爱问的,它几乎无法靠背——追问两层就能看出有没有真跑过。

答题结构建议

数据题按四步流水线答(来源 → 判准 → 体检去重 → 切分),并且主动把"评测集怎么切"讲出来——这一步是绝大多数候选人漏掉的,讲出来立刻区分开。

遗忘题按**"默认会发生 → 怎么提前看见 → 怎么缓解"**三段答。注意顺序:先讲检测再讲缓解,因为"看得见"才是工程能力,"知道有 rehearsal 这个词"只是知识。

分水岭信号

只读过 真做过
"数据当然是越多越好" "200 条精挑打得过 2000 条粗收;数据不够时该提质量不是去合成凑数"
"我们切了 10% 做验证集" "评测集必须和训练集异源——时间靠后、标注员不同,另加一份通用能力集抓遗忘"
"微调的成本主要是 GPU" "7B 的 LoRA 几小时几百块,真正贵的是标注和判准共识"
"灾难性遗忘就是学新的忘旧的" "训练时要同时跟踪通用基准,任务 loss 降而 MMLU 塌是最典型的形态;混 5–20% 通用数据做复演,低于 5% 没用高于 20% 拖慢收敛"
"用 LoRA 就不会遗忘" "LoRA 冻结基座所以遗忘少得多,但不是零——还是要测"
"我们用 GPT 造了数据训自己的模型" "先说清训的是哪类模型:分类/抽取这种非竞争用途是允许的,训通用助手就踩线了;而且蒸馏要配拒绝采样,不然教师的错误会被原样学走"
"模型输出的版权是我们的,所以随便用" "所有权和用途是两件事——条款把输出所有权给你了,但同一份条款禁止拿它训竞品"

倒数第二行和最后一行是本篇最有区分度的两处:大多数候选人在合规这块只有一个模糊的"好像不太行",能说清"允许什么、禁止什么、判据是什么"的人极少。

小结与延伸

  • 微调八成的成败在数据,不在算力。 数据四步:来源(贴近线上分布)→ 判准(先于标注)→ 体检去重(长度/占比/近重复/边界)→ 切分。
  • 评测集必须与训练集异源:时间靠后、标注员不同、外加一份通用能力集。同源随机切是自欺欺人,也是开头故障没被拦住的直接原因。
  • 数据量按任务分档:分类每类 100–300、抽取 200–500、生成 500–2000、复杂领域 1000–5000;质量压倒数量
  • 蒸馏:黑盒形态必须配拒绝采样过滤教师错误;学生上限就是教师。合规判据是**"造出来的是不是同类通用模型",且所有权 ≠ 使用权**。
  • 灾难性遗忘默认会发生。缓解按性价比:优先 LoRA → 混 5–20% 复演数据 → 降学习率、控 epoch 在 1–3 → 必要时冻结低层注意力。检测比缓解更重要:训练中必须跟踪通用基准。
  • 一句可背判据:任务上好 10%、其他上差 25%,这笔交易基本不划算。

延伸:本模块到此结束。微调做完之后"怎么证明它真的有用",是第 5 章评测与可观测要展开的;"你那次微调效果怎么量化的、和 few-shot 基线比过吗"这道简历深挖题(Q4-12)把本模块四篇的判断力全都串了一遍,是本章的收口。

关联题目Q4-09(数据从哪来、多少条够)、Q4-10(蒸馏与合规)、Q4-11(灾难性遗忘)

继续深入

本篇归属第 4 章「微调与对齐」,去做这一章的题