一个简单到尴尬却有效的SFT实验

张开发
2026/4/9 10:37:57 15 分钟阅读

分享文章

一个简单到尴尬却有效的SFT实验
卷友们好我是rumor。上周Apple有篇论文做了一个简单到有点尴尬的实验从模型自己采样一批代码答案不过滤对错不执行验证直接拿去SFT。结果Qwen3-30B在LiveCodeBench v6上pass1从42.4%涨到55.3%相对提升30%。其他不同模型上也有一定增长。论文名叫Embarrassingly Simple Self-Distillation作者自己也觉得这件事不应该有效——但它就是有效了。Simple Self-DistillationSimple Self-DistillationSSD的方法很简单只有三步从当前模型用高温T_train约1.0-2.0采样N个答案全部打包成训练数据不管对错标准cross-entropy SFT没有verifier没有reward没有teacher模型没有任何正确性判断。压力测试T_train调到2.0采出来62%是乱码没有可提取的代码。用这堆垃圾数据训完pass1还是涨了5.7个百分点。这说明SFT学到的不是什么是正确答案而是别的东西。SSD跑出结果后作者做了一个对照实验直接在推理时用高温采样decode-only不做任何训练passk会不会也涨答案是不会。高温推理无法复现SSD的效果。这说明关键变化发生在训练里——SFT之后模型权重本身变了这个变化不能靠调推理参数来模拟。那训练改了什么问题的根源作者提出的假设从LLM生成过程的一个基本矛盾出发。写代码时不同位置的token面临完全不同的情形。有些位置几乎没有选择。写完def quicksort(arr):之后下一行结构几乎固定已经决定递归函数名只有quicksort。这类位置的分布是尖的——一个token占绝大多数剩下是干扰噪声。论文叫它Lock位置。有些位置有很多合法选择。Partition的具体实现、边界条件有多种合法写法。这类位置的分布是平的——几个token概率差不多走哪条都行。论文叫它Fork位置。矛盾在于温度是全局参数没法对两类位置分别处理。温度低→Lock干净但Fork被压扁pass5失去意义温度高→Fork有多样性但Lock的干扰噪声跑回来输出质量下降这就是precision-exploration conflict精确-探索冲突。SSD在做什么SSD不知道哪些是Lock位置、哪些是Fork位置但它和推理时的截断top-k/p配合对两类位置产生了不同的效果。SSD训练的核心作用是帮Fork位置。用高温采样的数据做SFT相当于让模型去拟合一个更均匀的分布——在Fork位置多条合法路径的概率变得更接近多样性被写进模型权重。这样推理时即使用正常温度Fork位置的探索空间也比训练前更大。这叫within-support reshaping支持集内重塑。Lock位置的改善主要来自推理时的截断。top-k/p把概率最低的那些token砍掉support compression支持集压缩Lock位置的干扰噪声本来就在分布尾部这一刀直接切掉了它们。这个操作和SSD训练无关——有截断就有这个效果。两件事各司其职训练给Fork多样性截断给Lock精确性。这解释了为什么decode-only不行推理时用高温确实给了Fork多样性但同时在Lock位置放大了干扰没有东西纠正它。SSD的做法是把Fork的多样性烧进权重推理时用正常温度截断Lock干净Fork也有多样性。为了验证假说作者搭了一个最小化的受控环境模型必须先通过一个Fork状态多条合法路径再连续通过三个Lock状态只有一个正确选择才算成功。SSD之前低温能过Lock但卡在Fork高温能过Fork但在Lock出错——两全其美的温度不存在。SSD训练之后可行的温度区间变宽了成功率提升。实验效果从实验结果可以看到Hard题涨幅 Easy题Qwen3-30B-InstructHard 15.3pp vs Easy 6.5pp。Hard题有更多Fork位置算法决策点多SSD的多样性提升在这里更显著。pass5涨幅 pass130B-Instructpass5 18.1pp vs pass1 12.9pp。SSD没有让模型坍缩到单一输出它真的在扩展探索空间。跨模型泛化Llama-3.1-8B 3.5ppQwen3-4B 7.5ppQwen3-30B 12.9ppThinking版本也有提升。不是某个模型的特化。Thinking模型涨幅较小Qwen3-30B-Instruct 12.9pp而Qwen3-30B-Thinking只涨了2.1pp。论文没有解释这个现象但从机制上比较好理解Thinking模型已经在用另一种方式解决Fork问题了——它把探索过程写进reasoning chain在thinking tokens里显式地试不同路径最终答案生成时大部分已经是Lock位置。SSD要优化的Fork多样性Thinking模型通过CoT链已经内化了所以边际收益更小。反过来这也支持了SSD的机制假说如果涨幅真的来自Fork多样性提升那本来就有显式探索能力的Thinking模型涨得少是预期行为。关于除了代码外其他领域的效果其他任务的影响与模型大小有关作者将编程领域SSD后的模型在数学推理、通用代码生成和代码理解上做了测试结论是30B模型性能大致稳定小模型4B/8B则出现退化Llama-3.1-8B在AIME上几乎归零原因是格式问题——SSD让它倾向输出code block而非最终数字答案。。数学等其他领域还没验证其他领域的SSD尚未验证。总结看完这篇论文再次感叹深度学习的博大精深难道之前没人发现这个问题吗其实之前大家很少用这么高的temperate直觉上看到那些数据就觉得不行。所以即使之前有很多self-training的工作他们通过低温度采样到的样本也不一定能对fork有较大提升。高温采样不筛选这个组合此前没有被系统测试过。再进一步思考SFT到底在优化什么SSD把SFT的优化目标劈成了两半学什么是对的和学哪里该探索、哪里该锁定。后者不需要正确答案高温乱码也能提供。当前数据军备竞赛里大量的标注和执行验证是在为第一件事付钱却把第二件事当成了理所当然的附赠。这两件事是可以分开的而且其中一件便宜很多。我是朋克又极客的AI算法小姐姐rumor北航本硕大模型算法工程师谷歌开发者专家欢迎关注我带你学习带你肝一起在人工智能时代旋转跳跃眨巴眼「尴尬的实验值得尴尬的赞」

更多文章