Moonshot 提出注意力殘差 AttnRes:改掉傳統殘差連線,推理表現大漲
Moonshot AI 提出名為 AttnRes(注意力殘差)的新架構,用動態注意力聚合取代 Transformer 中傳統的固定殘差連線。模型可按需回看早期各層特徵,解決深層特徵稀釋問題。分塊版本以極小開銷達到基準模型 1.25 倍算力的效果,多步推理與程式碼能力提升明顯。

只要搭過稍微深一點的神經網路,你多半對殘差連線(Residual Connection)感激涕零。正是當年把輸入直接加到輸出上的神來之筆,才讓深度學習擺脫了梯度消失的噩夢,一路催生出今天龐大的 Transformer 軍團。
但這套用了近十年的老辦法,其實一直揣著個暗病:它對所有層一視同仁。隨著模型越堆越深,每一層的新特徵只能像往大水缸裡倒水一樣硬擠進去,前面積累的特徵被無限稀釋,隱藏狀態的數值也跟著野蠻膨脹。
Moonshot AI(Kimi 團隊)最近在開源社群給出了新解法,他們提出了一種叫 AttnRes(注意力殘差)的架構,把 Transformer 沿用多年的固定殘差累加,換成了自適應的注意力機制。
讓每一層自己挑選過去的記憶
傳統的殘差結構說白了就是加法:每一層算出來的東西,原封不動按固定權重累加在一起。這就好比你在寫一份長篇報告,每寫完一頁就得把前面所有草稿死板地裝訂在一塊,越往後翻越厚,前面關鍵的草稿反而找不到了。
AttnRes 的思路很直接:既然我們在同一層處理 token 之間關係時用了注意力,為什麼跨越不同層深度時不行?
在 AttnRes 架構裡,每一層都有一個輕量的學習查詢向量。當模型計算當前層時,它不再機械累加前一層,而是通過 softmax 注意力,主動在前面所有層的輸出裡挑選有用的特徵。如果某一層需要底層細粒度的語法線索,它就可以直接把注意力拉回最初幾層,而不需要經過中間幾十層的層層稀釋。
但如果每一層都回頭看所有的歷史層,視訊記憶體佔用會直接飆升到 O(Ld)。為了能真正落地,Moonshot 團隊設計了 Block AttnRes。
他們把網路切分成若干個塊,比如通常劃分為 8 個塊。塊內依然保留計算開銷極低的傳統殘差,而塊與塊之間才動用注意力機制聚合。這樣一來,視訊記憶體佔用瞬間從 O(Ld) 降到了 O(Nd),幾乎沒有增加多少訓練負擔。
複雜推理跳漲 7.5 分,算力效率白撿 25%
根據 Moonshot 放出的實驗資料,Block AttnRes 幾乎完全繼承了全量注意力殘差的能力。
最顯眼的資料是在算力利用率上:採用了 Block AttnRes 的模型,在相同訓練步數下達到的損失值,直接追平了基準模型多花 1.25 倍算力才訓出來的效果。換句話說,光是改動殘差連線方式,就憑空省下了四分之一的訓練算力。
在能力評測上,它在多步複雜推理和程式碼任務裡的提升尤為劇烈。在極具挑戰的高難度理科基準 GPQA-Diamond 上,AttnRes 把分數從 36.9 直接拉到了 44.4,漲幅高達 7.5 分;在程式碼評測 HumanEval 上,從 59.1 提高到 62.2;在 MBPP 上從 72.0 提升到 73.9。
通用任務和中文基準也都有不同程度的漲幅,MMLU 從 73.5 漲到 74.6,BBH 提高 1.7 分達到 78.0,中文 C-Eval 也從 79.6 提升到 82.5。同時,實驗證明它有效遏制了 PreNorm 帶來的輸出幅度失控,讓各層之間的梯度範數分佈平緩得多。
為什麼重要
我們認為,這項工作最聰明的地方,在於它精準踩中了當前大模型預訓練的深水區盲點。過去兩年裡,全行業都在卷注意力機制內部的最佳化、稀疏化以及上下文視窗的長度,但大家幾乎把層與層之間的骨架預設當成了不可觸碰的公理。
Moonshot 證明了殘差連線這種基礎積木依然存在巨大的調優紅利。特別是通過 Block 分塊折中,把理論創新轉化成幾乎零開銷的即插即用模組,這種工程品味值得同行借鑑。對正在預訓練自研模型的團隊來說,只要幾行 PyTorch 程式碼就能白拿 1.25 倍算力等效的增益,尤其是讓多步推理能力提升明顯,吸引力非常大。
不過,我們看起來這也是一把雙刃劍。儘管 Block 結構控制了視訊記憶體峰值,但在千卡、萬卡級別超大規模叢集的流水線並行(Pipeline Parallelism)下,跨越多個 block 的跨層注意力必然會打破原本嚴格侷限在 stage 內的通訊界限,帶來額外的跨卡通訊排程成本。如何在大規模並行訓練框架下優雅支援它,可能是開發者下一步需要填的坑。
來源 (1)
- github.com(在新分頁開啟)原文github.com