首页 时政热点 科技头条 智能AI 安全攻防 数码硬件 开发者生态 汽车 游戏 社会热点 开源推荐 医疗健康 归档 标签 关于
智能AI evening

清华团队再探政策蒸馏:数据撑死,算法饿死

2026-09-16 1 阅读 约10分钟阅读 机器之心
分享:
字号:
本文由清华大学联合中国科学院大学、东北大学、伊利诺伊大学厄巴纳 - 香槟分校、约翰霍普金斯大学等机构研究者合作完成。 把 On -Policy Distillation(在线策略蒸馏,OPD)的训练集从 17000 道题删到 1 道,会发生什么? 按常理,这道题很快就该被榨干。模型翻来覆去做同一道题,学个几十步也就该停了。 实际跑出来是另一回事:它连着涨了几百步没停。数学三个基准的平均分从 59.1 起步,300 步时到 68.5;作为对照,用全部 17000 道题训练,同一时刻是 69.8。一条数据已经恢复了 70% 以上的全数据收益。 这是 Rethinking On-P olicy Dis tillation 系列的第二篇。 第一篇 问的是 OPD 为什么能 work,一个强的老师不一定总能让学生学得好。结论是思维模式得对得上,而分数更高不等于有新东西可教。 这次研究者问了一个更极端、也更本质的问题: 为什么 OPD 在一条样本上,也能在几百步的训练中持续稳定提升,接近全量数据的效果? 现有关于 OPD 的研究,大多关注训练目标、优化过程和师生模型之间的关系。相比之下,训练数据的规模与构成会如何影响 OPD,仍缺少分析。 研究者的回答是:OPD 是 "数据撑死" 但 "算法饿死"。 论文标题:Rethinking On-Policy Distillation of Large Language Models II: One Training Example 论文链接:https://huggingface.co/papers/2609.04172 资源合集:https://huggingface.co/collections/Thinking-Space/one-shot-opd 代码:https://github.com/Thinking-Space/One-Shot-OPD 一道题,能把模型训多远? 为了更清楚地观察训练题目如何影响 OPD,研究团队固定其余配置,只把数学训练集从 DAPO-Math-17K 缩减到一道题。 在数学任务上,Student 从 59.1 起步。训练到 300 步时,单题设置恢复了全量 OPD 增益的 87%,同时缩小了 69% 的初始师生差距。继续训练到 1000 步,单题设置的验证分数为 68.4,全量 17k 道题为 72.1,对应的全量增益恢复比例降至 72%。 单题设置在本文观察的 1000 步内没有追上全量训练。 300 步之后,两条曲线大致保持约 3 分的差距。换句话说,一道题可以获得全量 OPD 的大部分增益,但增加训练步数并没有消除它与全量数据之间的差距。 为了证明这个现象不是偶然发生的,研究者将这一设置用于 coding、instruction following 和 agentic tool use 三个任务中,单题训练分别缩小了 73%、66% 和 64% 的初始师生性能差距。然后同时,研究者在不同 model family 上展开实验,覆盖了 Qwen、Llama 和 OLMo 三组师生模型,One-Shot OPD 效果也依然不错。 此外,这个效果对训练题的性质几乎不敏感 :用模型一次都没做对过的难题,同样能把它训上去。 在三道不同难度的数学题上,研究者也观察到了相近的训练增益。其中最难的一道题在 300 个训练步中始终没有被 Student 解出,但模型的验证表现仍然提高。调整回答长度上限和采样温度也取得了相似的训练增益。 单题实验由此留下了两个问题。 第一,训练输入只有一道,为什么模型仍能获得这么多增益?第二,这些增益为什么又需要数百个训练步才能逐渐形成?前一个问题指向 rollout 提供的状态,后一个问题指向 Student 吸收 Teacher 监督的速度。 数据侧:一道题的 rollout,摸到了 71.5% 的状态空间 OPD 的学习单位不是题,是状态:题目加上已经写出来的那半截回答,构成模型下一步要面对的局面,每个局面都配着 Teacher 给的一个目标分布。因此,一道题并不只产生一份监督。在论文的默认设置中,每次更新包含 64 条 rollout。即使题目不变,一次更新也会包含许多带有监督的 token 位置。题目数记录的是输入有多少,却没有说明这些输入经过 rollout 后把模型带到了哪里。 为了描述状态的覆盖范围,研究者定义了 “ 状态覆盖率 ”(state coverage):把全量 OPD 访问过的状态汇成参考池、切成 200 个簇。一个训练设置访问到的簇数,占这 200 个参考簇的比例,就是它的状态覆盖率。 结果是 一道题就摸到了全量状态空间的大部分,而且大半在最初几十步就摸完了。 100 步时已覆盖 65.9% 的参考状态簇,到 300 步 时达到 71.5%;后 200 步新增的覆盖为 5.6 个百分点。重复从同一道题采样仍会产生新状态,但新增速度会逐渐放缓。 状态覆盖与验证表现同时提高,只能说明二者相关。研究者随后从 rollout 响应轨迹侧和 query 题目侧分别做了控制实验。 在 rollout 侧,研究者让初始 Student 对同一道题生成 64 条固定轨迹,再分别保留其中 1 条、4 条、16 条或全部 64 条,重复填满相同大小的训练 batch。随着保留的轨迹增加,验证准确率从 0.606 逐步提高到 0.666。 在题目侧,研究者从不同语义簇中选取代表性题目,构造 1 道、4 道和 16 道题的训练集。状态覆盖率分别为 71.5%、79.8% 和 98.9%;在相同训练预算下,16 道题的验证结果与全量数据基本相当。 题目数量相同,多样性仍可能不同。论文进一步比较了两组各含 16 道题的数据:一组从 16 个语义簇中各取一道,另一组全部来自同一个语义簇。前一组在状态覆盖率和验证表现上都更高;后一组的覆盖率在训练前 100 步左右达到约 76.8% 后便基本不再增长。 这些实验指向了同一个解释:在 OPD 中,一道题目的价值,很大程度上取决于它能否把 Student 带到此前没有访问过的状态。单题的输入数量虽少,反复 rollout 产生的状态却不少。加入语义上更分散的题目,还可以继续扩大状态覆盖。在本文的数学实验中,16 道从不同语义簇选出的题将状态覆盖率提高到 98.9%,并在相同训练预算下取得了与全量数据基本相当的验证结果。 换句话说,在这一设置下,把整套 DAPO-Math-17K 都投入训练,并没有比这 16 道多样化题目带来进一步可见的收益。相对于当前训练能够利用的监督,数据已经撑死。 算法侧:喂多少题对吸收率几乎没有影响 状态覆盖描述有哪些监督可以使用,但不能说明 Student 使用这些监督的速度。既然一道题能提供这么多信息,为什么仍然需要几百步来消化?为此,论文进一步定义了两个训练动态指标,分别描述 “吃到哪了” 和 “吃得多快”。 “距离 d” 是在 Student 当前访问的位置上,Teacher 与 Student 对实际生成 token 所给 log 概率之差的绝对值均值,用来描述二者还相差多少。 “吸收率 v” 表示一次更新吃掉了剩余距离的多
这篇文章对您有帮助吗?

订阅66必读

每日精选科技资讯,直达你的邮箱