A2D用冻结师生对造题,1.5B数学蒸馏收回99.9%师生差距

Ask to Distill: Learning to Synthesize Data for On-Policy Distillation

Jiashuo Sun, Hao Zhang, Xueqiang Xu, Heng Wang, Yixuan Xie, Pengcheng Jiang, Zhenrui Yue, Jiajun Fan, Peiran Li, Ge Liu, Shaowen Wang, Jiawei Han

cs.AI, cs.CL

2026-10-20

A2D不看标准答案,用冻结师生对的分歧和兼容性训练出题器,三组数学均分超过真题库OPD,1.5B收回99.9%差距,回答还短20%、信号多28%。

这篇在解决什么

On-policy distillation(OPD)在学生自己采样的回答上,用老师的下一个 token 分布做监督。题库可以很小:很少的题、甚至单题,就能收回大题库里的大部分增益。题不附标准答案,它负责把学生送进某些状态,让这一对师生的分布差露出来。

新题没有正确答案,也不能每来一道候选就更新一次学生。只留师生 KL 最大的题也不够。分歧可能落在学生 top-K 里、老师还纠得动的候选上,也可能落在这次更新碰不到的词上。下游只在 top-K 上写优势,第二种分歧没有更新项。

方法

Ask-to-Distill(A2D)把造题当成分布引诱。出题模型复制学生权重,用 GRPO 更新:同一指令采一组题,按组内奖励优势只改出题策略。打分的学生和老师冻结。没有外部种子题,也没有对错奖励。Qwen3-Embedding-4B 只在出题训练之后做语义去重。

冻结学生在预算内答一条。Disagreement δt 是双方 top-K 并集上、从老师指向学生的前向 KL。Compatibility ωt 是老师概率落在学生 top-K 上的质量,下游更新用的就是这批候选。位置分 st = min(δt/δref, 1) · ωt,两个量必须在同一位置一起高。δref 是学生自采样校准题上 δ 的分位数,训练期间固定。

题目分是 st 的次线性求和,α = 0.5,再乘长度惩罚和 batch 内 BLEU 聚类的多样性惩罚,避免只靠写长刷分。残缺输出、答案泄露和重复 n-gram 会被滤掉,Jaccard 与嵌入余弦负责去重。留下的纯 prompt 走标准 OPD:从原始学生出发,老师冻结,优势只打在 top-K 上,损失为裁剪后的 PPO 目标。出题奖励不复现这个损失。

结果

数学、代码各三对师生,主表都是三次运行的均值。Recovery 等于师生均分差距收回的比例。

学生 ← 老师学生 / 老师Vanilla 真题库A2Drecovery
Qwen3-1.7B ← Qwen3-4B-RL-Math25.7 / 48.443.0(76.4%)46.290.2%
R1-Distill-1.5B ← JustRL-DeepSeek-1.5B38.8 / 51.750.5(90.7%)51.699.9%
R1-Distill-7B ← Skywork-OR1-Math-7B58.1 / 66.062.9(61.0%)64.581.3%

相对不训练出题器的学生出题,三组高 5.1、3.4、3.7 个点。1.7B 的 AIME26 从 20.0 到 26.5;1.5B 的 AMC23 从 78.1 到 83.6,均分几乎贴上老师。KL 过滤(分歧最高的 20% 真题)、Evol-Instruct、R-Zero 的均分都更低。单基准仍有反例:1.7B 的 BRUMO25 上 Evol-Instruct 为 37.9,A2D 为 35.4;1.5B 的 BRUMO25 上 A2D 为 34.0,低于 Vanilla 的 35.8。

代码里 Qwen3-4B 蒸同尺寸 Instruct 老师,均分 39.6,recovery 82.9%,Vanilla 为 34.5(44.4%)。LiveCodeBench 35.9,老师参考 33.7。老师换成 30B-A3B 后,A2D 均分降到 35.7,recovery 32.8%;APPS-Interview 从 Vanilla 的 21.3 到 31.6,CodeContests 从 4.8 到 13.9。Coder-3B 蒸 32B,均分 21.2,起点 19.7,Vanilla 20.2,recovery 12.3%。老师更强,学生可以更弱。

τ2-Bench 上,Qwen3-4B 对 Thinking 版 4B,双方非思考模式。Airline、Retail、Telecom 为 46.3%、49.4%、30.0%,平均 41.9%,recovery 95.2%。学生出题 37.3%(79.2%),Vanilla 40.4%,KL 过滤 40.9%,老师 43.3%。学生起点 14.4%,大头是 OPD 本身带来的,A2D 再补 4.6 个点。

各 1000 题对比,合成题回答 1020.7 token,DAPO-17k 为 1280.2,短 20%;累计信号 181.7 对 141.7,多 28%,整段轨迹都更高。个案并不每题都这样:合成计数题平均 st 0.172、1241 token,几何真题 0.117、2002 token,累计分是 214 对 234。两题都答错。

留出的 1500 道 DAPO 自然题上,平均分歧与一步更新后探针 KL 的下降 Spearman ρ = 0.727(95% CI [0.695, 0.755]),控制长度、通过率和熵后偏相关 0.386。s̄ 最高档的降幅是最低档的 2.15 倍。24.4M token 预算下,五档题库的六基准均分从 41.06% 升到第四档 43.49%,分歧最大的第五档为 43.11%。AIME24/25/26 上拿掉兼容性、多样性或长度惩罚,准确率下降 2.1 到 6.6 个点;完整奖励是 45.0%、35.8%、29.2%,AIME25 分别掉 6.2、6.0、6.6。

为什么重要

SFT 要目标回答,自博弈看出题对错。OPD 的监督来自老师在学生前缀上的分布,题决定的是学生会走进哪些状态。A2D 直接优化够得着的监督有多少。题库不存答案,下游的更新公式保持不动。

有师生对、缺好题时可以套用:出题器从学生初始化,奖励只是冻结模型的一次前向。它改题分布,与挑选监督位置、给轨迹重新加权互补。

代码题训练的 Qwen3-4B,四项数学从 31.38% 到 38.60%,增加 7.23 个点,真题库 Vanilla 增加 5.33。数学题训练的 R1-Distill-7B,三项代码均分从 47.00% 到 52.40%,老师为 52.70%;APPS-Intro 上学生 70.1%,老师 68.7%。

幅度取决于这对模型。同尺寸、后训练不同时,recovery 能到八成、九成;老师大很多,改题分布补不齐。针对该对做 RL,也比换一个更强的模型来出题更有效。代码曲线里,老师初始化但不做 RL,只在两个 APPS 子集更好;学生初始化加上 RL 后,LiveCodeBench 约 35%,高于老师参考 33.7%,APPS-Intro 约 62%,仍低于老师的 65.6%。

局限与存疑

奖励来自每题一条学生回答,是代理分。高分位置不保证学习增益大,也不等于下游梯度。出题器只针对初始师生对训一轮。代码迭代三轮,每轮用更新后的学生重新出题,LiveCodeBench 加两个 APPS 子集的均分从 29.03% 到第一轮 40.53%,后两轮最好 40.82% 与 40.97%,再多 0.44 个点。学生越接近老师,又分歧大、又落在候选集内的题更难找。训练过程里没有这两项信号的曲线。

同一个 Qwen3-4B 学生,30B-A3B 老师得到的均分 35.7,低于 4B 老师的 39.6。7B 数学设定中 A2D 的下游 token 更少,AIME24、AIME25 与 AMC23 的均分 63.80%,Vanilla 为 61.70%;1.5B 上最优检查点的 token 量接近,只高 2.53 个点(54.80% 对 52.27%)。这两组曲线只覆盖三个数学基准。造题和打分的上游成本没有计入。

跨域增益的来源没有拆开。初始化曲线是单次轨迹,没有独立重复的误差。τ2-Bench 的用户和评判是 GPT-4o-mini。分歧最高的第五档准确率低于第四档,代理分和最终成绩没有单调关系。

术语

原文与代码

相关论文

全部论文解读