之心報道機器之心編輯部最近,擴散語言模型(dLLM)有點火?,F在,蘋果也加入這片新興的戰場了。不同于基于Transformer的自回歸式語言模型,dLLM基于掩碼式擴散模型(maskeddiffusionmodel/MDM),此前我們已經報道過LLaDA和Dream等一些代表案例,最近首款實現商業化的dLLM聊天機器人Mercury也已經正式上線(此前已有MercuryCoder)。感興趣的讀者可在這里嘗試https://poe.com/Inception-Mercury相較于自回歸語言模型,dLLM的一大主要特點是:。而且dLLM不是從左到右地生成,而是并行迭代地優化整個序列,從而實現內容的全局規劃。
Mercury聊天應用demo,https://x.com/InceptionAILabs/status/1938370499459092873蘋果的一個研究團隊表示:「代碼生成與dLLM范式非常契合,因為編寫代碼通常涉及非順序的反復來回優化?!故聦嵣?,此前的MercuryCoder和GeminiDiffusion已經表明:基于擴散的代碼生成器可以與頂尖自回歸代碼模型相媲美。然而,由于開源dLLM的訓練和推理機制尚未被完全闡明,因此其在編碼任務中的表現尚不明確。
現有的針對dLLM的后訓練研究,例如采用DPO訓練的LLaDA1.5以及采用GRPO訓練的d1和MMaDA,要么收效甚微,要么嚴重依賴半自回歸解碼(使用相對較小的塊大小進行塊解碼)。言及此,今天我們介紹的這項來自蘋果的研究就希望填補這一空白。他們首先研究了dLLM的解碼行為,然后建立了一種用于擴散LLM的原生強化學習(RL)方法。論文標題:DiffuCoder:UnderstandingandImprovingMaskedDiffusionModelsforCodeGeneration論文地址:https://arxiv.org/pdf/2506.20639項目地址:https://github.com/apple/ml-diffucoder該研究基于對DiffuCoder的分析。這是一個7B級的針對代碼生成的MDM,蘋果使用了1300億個有效token(arXiv:2411.04905)來訓練它。該模型的性能可比肩同規模的自回歸編碼器,為理解dLLM的行為以及開發擴散原生的后訓練方法提供了強大的測試平臺。
基于得到的分析結果,蘋果還針對性地對GRPO進行了定制優化,提出了一種采用全新耦合采樣方案的新算法:coupled-GRPO效果相當不錯DiffuCoder首先,蘋果是怎么訓練出DiffuCoder的呢?基本方法很常規:用大規模語料庫。
下圖展示了其多個訓練階段。他們首先進行了類似于Dream的適應性預訓練(adaptationpre-training)中訓練(mid-training)介于預訓練和后訓練之間,類似于OpenCoder中的退火階段——事實證明這是有效的。接下來是指令微調階段,作用是增強模型遵循指令的能力。最后,在后訓練階段,他們采用了一種全新的coupled-GRPO方法(將在后文介紹)來進一步增強模型的pass@1編程能力。更詳細的訓練配置請訪問原論文。他們在HumanEval、MBPP、EvalPlus和BigCodeBench基準上對DiffuCoder進行了評估并與其它一些模型進行了比較,結果見下表??梢钥吹剑珼iffuCoder在使用130B代碼token(第1階段和第2階段)進行持續訓練后,達到了與Qwen2.5-Coder和OpenCoder相當的性能。然而,所有dLLM在指令調整后都僅比其基礎模型略有改進,尤其是與Qwen2.5-Coder+SFT相比時,而后者在相同數據上進行指令微調后進步非常明顯。基于DiffuCoder理解掩碼式擴散模型LLaDA和Dream等當前dLLM依賴于低置信度的重掩碼解碼策略,而LLaDA使用半自回歸解碼方法(即塊擴散解碼)可在某些任務上實現性能提升。dLLM的另一種常見做法是將擴散時間步長設置為等于序列長度,從而有效地利用逐個token的生成來提升性能。鑒于此,他們引入了局部和全局自回歸性(AR-ness)指標,以系統地研究dLLM的解碼順序。具體而言,他們的分析旨在揭示:dLLM的解碼模式與自回歸模型的解碼模式有何不同;數據模態(例如代碼或數學)如何影響模型行為;AR-ness如何在不同的訓練階段演變。
生成中的自回歸性在標準的自回歸解碼中,模型嚴格按照從左到右的順序生成token,以確保強大的序列一致性。然而,基于擴散的解碼可能會選擇無序地恢復[MASK]。因此,他們引入了兩個指標來量化擴散模型的非掩碼式調度與自回歸模式的相似程度,其中包括下一個token模式和左優先模式。1、局部:連續下一個token預測局部AR-ness@k是通過預測序列與范圍k內下一個token預測模式匹配的比例來計算的。如果k長度范圍內的所有token都是前一個生成token的直接后繼,則就隨意考慮此范圍。局部AR-ness會隨著k的增加而衰減,因為維持更長的連續范圍會變得越來越困難。2、全局:最早掩碼選擇在步驟t中,如果預測token位于前k個被掩碼的位置,則對全局AR-ness進行評分。全局AR-ness@k是每個t的平均比例,它衡量的是始終揭示最早剩余token的趨勢,從而捕捉從左到右的填充策略。該比例隨k的增長而增長,因為隨著被允許的早期位置越多,該標準就越容易滿足。對于這兩個指標,值越高表示生成的自回歸性越強。解碼分析他們在條件生成過程中對以下對象進行自回歸性比較:不同的dLLM,包括從零開始訓練的LLaDA以及改編自自回歸LLM的Dream或DiffuCoder;不同的數據模態,包括數學和代碼;DiffuCoder的不同訓練階段。1、dLLM的解碼與自回歸模型有何不同?對于自回歸解碼,局部和全局AR-ness均等于1(即100%自回歸)。相反,如圖3所示,dLLM并不總是以純自回歸方式解碼。在dLLM解碼中,很大一部分token既不是從最左邊的掩碼token中恢復出來的,也不是從下一個token中恢復出來的。
這一觀察結果表明,與常規自回歸模型相比,dLLM采用了更靈活的解碼順序。然而,局部和全局自回歸值都更接近于1而不是0,這表明文本數據本身就具有某種自回歸結構,而基于擴散的語言模型無論是從零開始訓練還是從自回歸模型適應而來,都能自然地捕捉到這些結構。實驗結果表明,適應得到的dLLM往往比從零開始訓練的dLLM表現出更強的自回歸值。這是因為它們會從原始自回歸訓練中繼承從左到右的token依賴關系。較低的自回歸值會打破這種依賴關系,從而為并行生成提供更多機會。較高的自回歸值也可能帶來好處;例如,LLaDA通常需要采用半AR(塊解碼)生成來實現更高的整體性能。在這種情況下,塊解碼器會明確地將因果偏差重新引入生成過程。在DiffuCoder中,蘋果該團隊認為模型可以自行決定生成過程中的因果關系。2、不同的數據模態會如何影響解碼范式?根據圖3,盡管數學和代碼解碼表現出了不同程度的局部自回歸值,但他們得到了一個相當一致的發現:代碼生成的全局自回歸值均值較低,方差較高這表明,在生成代碼時,模型傾向于先生成較晚的token,而一些較早被掩蔽的token直到很晚才被恢復。原因可能是數學文本本質上是順序的,通常需要從左到右的計算,而代碼具有內在的結構。因此,模型通常會更全局地規劃token生成,就像程序員在代碼中來回跳轉以改進代碼實現一樣。
3、自回歸值AR-ness在不同的訓練階段如何變化?從圖4(第1階段)可以看的,在使用650億個token進行訓練后,他們已經觀察到相對較低的自回歸值。然而,當他們將訓練擴展到7000億個token時,AR-ness會提升,但整體性能會下降。于是蘋果猜想,預訓練數據的質量限制了性能。因此,他們選擇階段1的6500億個token作為階段2的起點。在中訓練(階段2)和指令調整(階段3)期間,在第一個高質量數據周期(epoch)中,該模型學習到了較高的因果偏差。然而,隨著token數量的增加,任務性能會提升,而測量到的AR-ness會開始下降。這種模式表明,在第一個周期之后,dLLM就會開始捕獲超越純自回歸順序的依賴關系。在GRPO訓練之后,模型的全局AR-ness也會下降,同時,在解碼步驟減少一半的情況下,性能下降幅度會減小。
4、熵沉(EntropySink)當dLLM執行條件生成時,第一步擴散步驟從給定前綴提示的完全掩碼補全開始,并嘗試恢復補全序列。
在此步驟中,他們將每個恢復的token的置信度得分記錄在圖3(a)中??梢钥吹?,LLaDA和Dream的默認解碼算法會選擇置信度最高的token,同時重新掩蔽其余token。LLaDA使用對數概率,而Dream使用負熵來衡量置信度,值越大表示模型對該token高度自信。
值得注意的是,由此產生的分布呈現出特征性的L形模式。蘋果將這種現象稱為熵沉(EntropySink)。他們假設熵沉的出現是因為文本的內在特性使模型偏向于位于給定前綴右側的token:這些位置接收更強的位置信號和更接近的上下文,導致模型賦予它們不成比例的高置信度。這種現象可能與注意力下沉(attentionsink)的原因有關,但其根本原因尚需進一步分析和驗證。這種對局部相鄰token的熵偏差可以解釋為何dLLM仍然保持著非平凡的自回歸性。
生成多樣性自回歸大語言模型的訓練后研究表明,強化學習模型的推理路徑會受基礎模型的pass@k采樣能力限制。因此蘋果在動態大語言模型中結合pass@k準確率來研究生成多樣性。如圖5(右)和圖6所示,對于DiffuCoder的基礎版和指令微調版模型,低溫設置下單次采樣正確率(pass@1)很高,但前k次采樣的整體正確率(pass@k)提升不明顯,說明生成的樣本缺乏多樣性。當把溫度調高到合適范圍(比如1.0到1.2),pass@k指標顯著提升,這說明模型其實隱藏著更強的能力。在很多強化學習場景中,模型需要先在推理過程中生成多樣的回答,強化學習才能進一步提升單次回答的準確率。DiffuCoder的pass@k曲線顯示它還有很大的優化空間,這也正是蘋果設計coupled-GRPO算法的原因。另外,如圖5(左)和圖1(a)所示,更高的溫度還會降低模型的自回歸性,意味著模型生成token的順序更隨機——這和傳統自回歸模型不同:傳統模型中溫度只影響選哪個token,而動態大語言模型中溫度既影響選詞又影響生成順序。coupled-GRPORL就像「試錯學習」,比如玩游戲時通過不斷嘗試找到最優策略;GRPO是一種改進的RL方法,能讓語言模型學得更快更好。以前的研究證明它們對自回歸模型很有效,但在擴散語言模型(dLLM)中用得還不多。而將掩碼擴散過程表述為馬爾可夫決策過程,可以實現類似于PPO的策略優化方法。為了便于與GRPO集成,需要在擴散模型中對token概率進行近似。當前的掩碼擴散模型依賴于蒙特卡洛抽樣進行對數概率估計。然而,蒙特卡洛采樣在GRPO的訓練過程中會帶來顯著的開銷。打個比方,現在的模型計算「猜詞概率」時,依賴多次隨機嘗試(蒙特卡洛采樣),這會導致訓練GRPO時速度很慢、開銷很大。比如,原本可能只需要算1次概率,現在要算100次,電腦算力消耗劇增,這就是當前需要解決的關鍵問題。在原始GRPO的損失計算中,僅對涉及掩碼token的位置計算損失,導致在采樣次數有限時出現效率低下和高方差問題。為提升概率估計的準確性同時覆蓋所有token,蘋果提出了耦合采樣方案(Coupled-SamplingScheme),其核心思想是通過兩次互補的掩碼操作,確保每個token在擴散過程中至少被解掩一次,并在更真實的上下文中評估其概率。coupled-GRPO的實際實現在實際應用中,本研究選擇λ=1,以平衡計算成本與估計精度。為進行公平比較,本研究引入一個「去耦基線(de-coupledbaseline)」:該基線使用相同數量的樣本,但不強制掩碼之間的互補性(即兩次獨立采樣)。此外,在優勢分數計算中,本研究采用留一法(Leave-One-Out,LOO)策略確定基線得分,這樣可以得到一個無偏估計。耦合采樣方案可以看作是應用了AntitheticVariates的方差縮減技術,并且本文還列出了用于驗證獎勵的詳細設計,包括代碼格式獎勵以及測試用例執行通過率作為正確性獎勵。詳見原論文。coupled-GRPO通過互補掩碼、LOO優勢估計和溫度優化,在擴散語言模型的訓練中實現了更穩定的獎勵學習與更低的AR-ness,顯著提升了生成質量與并行效率。其實驗結果不僅驗證了強化學習與擴散模型結合的潛力,也為dLLM的實際應用(如代碼生成、高速推理)提供了可行路徑。
未來研究可進一步探索其在多模態生成和大模型蒸餾中的應用。