蘋果:簡單得驚人的自蒸餾 ( Self-Distillation ) 可提升程式碼產生表現 (★ 110 分)
Apple 提出的簡單自蒸餾 ( SSD, Simple Self-Distillation ),做法是先讓大型語言模型 ( LLM, Large Language Model ) 用特定解碼溫度與 top-k / top-p 截斷規則(分別保留前 k 個高機率詞元,或保留累積機率達 p 的候選)對同一批競賽程式題抽樣作答,再把這些完全未驗證、未執行測試的原始輸出拿回去做監督式微調 ( SFT, Supervised Fine-Tuning )。這套方法不需要人工標註答案、教師模型、驗證器、程式執行環境,也不需要強化學習 ( RL, Reinforcement Learning )。在程式碼基準 LiveCodeBench v6 上,Qwen3-30B-Instruct 的第一個答案即通過率 ( pass@1 ) 從 42.4% 提升到 55.3%,五次抽樣通過率 ( pass@5 ) 也明顯上升;而且進步不只出現在單一模型,Llama 與 Qwen 的 4B、8B 到 30B 模型都有提升,且增幅主要集中在中等與困難題。
論文把程式碼產生過程分成 fork(多條合理延伸分支的分岔點)與 lock(幾乎只剩少數正確續詞的鎖定點)。單一解碼溫度必須在兩者之間折衷:溫度低時,lock 會更精準,但 fork 缺乏探索空間;溫度高時,fork 較容易找到不同解法,卻也會讓低機率干擾尾部重新冒出。作者認為,SSD 的效果來自把這種取捨直接寫進模型內部,也就是訓練時先做候選集合壓縮 ( support compression ),再重塑保留下來的高機率區。玩具模擬、真實模型分析與理論推導都指向同一件事:SSD 會讓 lock 更穩、fork 仍保有可用多樣性,因此只靠調整推論階段的溫度與截斷設定,追不上微調後模型的表現。
論文還做了一個很反直覺的壓力測試:把訓練抽樣溫度拉到 2.0,且完全不做截斷,結果大約 62% 的輸出連可擷取的程式碼區塊都沒有,許多答案中途還會退化成多語混雜的亂文。即便如此,Qwen3-30B-Instruct 仍可提升到 48.1% 的 pass@1 與 64.0% 的 pass@5,顯示 SSD 的效益未必主要來自「抽到很多正確程式」,而更像是來自對詞元機率分布的重塑。額外測試也顯示,30B 模型在數學推理、一般程式碼產生與程式理解等基準上大致維持穩定,但較小模型的取捨較明顯,有些基準進步、有些退步。
討論串裡,多數人最關注的是這個方法簡單到近乎粗暴,卻能帶來不小增幅,認為這再次反映出機器學習常常先靠經驗找到有效做法,理論才慢慢補上;也有人直言,目前仍缺乏足夠好的工具去看清神經網路在高維空間裡到底發生了什麼。幾位留言者認為 fork / lock 的解釋最有說服力,等於把原本只能靠單一採樣參數處理的「情境感知解碼」內化到模型本身,甚至推測這種機制可能不只適用於程式碼,也可能延伸到敘事寫作、一般推理與創作任務。另一些人則從產業角度看待這件事,認為若這類技術和本地端模型進展持續疊加,未來程式輔助模型可能更便宜、更多人會自行架設;但也有人追問 Apple 是否公開蒸餾後權重,討論裡看不出已有釋出。留言中也夾雜一些輕鬆吐槽,例如有人笑稱 SSD 早就是固態硬碟的縮寫,也有人替標題中的 `embarrassingly` 辯護,指出它在電腦科學裡沿用自 `embarrassingly parallel`,不是單純的誇飾字眼。
👥 27 則討論、評論 💬
https://news.ycombinator.com/item?id=47637757