【DeepSeek】大模型 “注意力簡史”:與兩位 AI 研究者從 DeepSeek、Kimi 最新改進聊起


上周,DeepSeek、Kimi 都放出了新的大模型架構改進和最佳化成果,分別是 NSA、MoBA。二者都聚焦對大模型中 “注意力機制” 的改進。

注意力機制是當前大語言模型(LLM)的核心機制。2017 年 6 月那篇開啟大語言模型革命的 Transformer 八子論文,標題就是:Attention Is All You Need(注意力就是你所需要的一切)。

而最佳化 Attention 的計算效率和效果,又能幫助解決 AI 學界和業界都非常關心的一個問題,就是長文字(long context)。

不管是要一次輸入一整本書,讓模型能幫我們提煉、理解;還是在生成現在 o1、R1 這類模型需要的長思維鏈;又或者是希望模型未來能有越來越長的 “記憶”,這都需要長文字能力的支援。

這期節目我們邀請了兩位做過 Attention 機制改進的 AI 研究者做嘉賓。

一位是清華電腦系自然語言處理實驗室的博士生肖朝軍,他是 InfLLM 注意力機制改進的一作,導師是清華電腦系副教授劉知遠。

另一位是清華大學 NICS-EFC 實驗室的博士生傅天予,他是 MoA 注意力機制改進的共同一作,導師是清華電子工程系主任汪玉。這個實驗室也做了很多與硬體層結合的最佳化工作。

兩位有一些相互補充的視角,他們之前做的注意力機制改進也都和 NSA、MoBA 一樣,屬於 “稀疏注意力” 範疇。

傅天予分享了一個他的導師汪玉,對大模型最佳化目標的簡潔描述:

神經網路就是 y=f(x)。x 是輸入,y 是輸出,f 是這個網路。

現在的趨勢是,x 越變越長,這是多模態等帶來的;y 也越變越長,這是思維鏈帶來的。f 要做的事就是,當 x 和 y 都變得這麼長時,怎麼能算得快,同時又能正確地輸入 x,並正確地輸出想要的 y。這就是大家努力的總體目標。

f 要怎麼做到這兩點,改進注意力機制就是方法之一。

以下是本期播客的實錄,文字有精簡。


Attention 的提出就是為了長文字,只是當時的 “長” 不是現在的 “長長長”

晚點:兩位可以先自我介紹一下,以及講講你們過去和注意力機制改進相關的研究。

肖朝軍:我是來自清華大學電腦系的博士生肖朝軍,一直專注於大模型高效架構層面的研究。2024 年,我們發佈了 InfLLM,也是做大模型注意力機制的改進。

一年多前,開源模型最多也就處理 8K 就是 8000 token 左右的文字長度。我們就想,能不能在無需訓練的情況下,在推理階段(可以理解為大模型的使用階段)用稀疏注意力機制處理更長的 128K 甚至 1000K 的文字。這個注意力機制的思路和現在的 DeepSeek NSA 類似。而 NSA 是進一步把稀疏注意力做到了預訓練階段,寫了非常豐富的算子,做了很精細的設計,是一個很大的進步。

(註:大模型裡,稀疏指僅部分連接,效率更高;對應的稠密,也就是 dense,指資料 / 計算全連接。)

傅天予:我是來自清華大學電子系的博士生傅天予,我們也一直關注神經網路模型的高效性最佳化。

也是在 24 年,我們發佈了一篇和今天要聊的 MoBA 標題很像的論文,叫 MoA——Mixture of Sparse Attention(混合稀疏注意力機制),而 MoBA 是 Mixture of Block Attention(混合分塊注意力機制)。我們發現,之前的一些稀疏注意力機制,雖然能使模型流暢地輸出內容,但模型其實沒有有效利用遠距離的上下文資訊,我們就希望能分析不同注意力頭的各自特性,找到究竟其中那些對模型能真正利用長上下文很關鍵,然後更多保留這部分注意力頭。

晚點:我們可以先聊關於 Attention 的一些基礎問題。2017 年提出目前大語言模型主流架構 Transformer 的那篇論文,標題就是 Attention Is All You Need。簡單來說,Attention 作為大模型的核心模組,它是用來做什麼的?

傅天予:要解釋這個,我們要先知道一個大模型的輸入和輸出是什麼,它的輸入就是一系列 Token,也就是 “詞元”,簡單理解就是一個詞。每個詞本身有一個含義,但也有必須聯絡上下文才能表達的含義,比如代詞 “it”,要放到上下文裡才知道指什麼。所以 Attention 機制的核心思想就是希望能知道輸入的每一個詞和之前的詞的關係。

在標準 Attention 裡,每新輸入一個詞都要和前面輸入的所有詞去計算相關性,它是一個關係強弱加權。這樣不僅能幫大模型理解這個詞本身,還能理解它的語境

肖朝軍:補充一下,大家也可能需要瞭解,再往前,神經網路是怎麼處理序列(輸入模型的一系列 Token 整體上是一個序列)的。

之前的主流方法是循環神經網路(RNN)。循環是什麼意思呢?就是一個詞、一個詞地去理解,去動態維護一個 “記憶”。

比如當 RNN 來處理 “我是肖朝軍” 這句話時,會先處理 “我”,再是 “是”,再是 “肖”,每處理一步,就把之前所有輸入都變成 “記憶”,也就是系統裡的一堆矩陣。在 “我是肖朝軍” 的例子裡,RNN 處理到 “肖” 時,已經把 “我” 和 “是” 轉化成了一個 “記憶”。

RNN 裡的 “記憶” 的儲存大小是不變的,但這會使它 “遺忘” 很久以前的詞元。當只是一句話時,這個問題不嚴重。但如果像我們今天這樣錄 2 個小時的播客,我最開始說完我是誰後,之後只會說 “我”,這樣到後面,模型就會忘掉 “我” 和 “肖朝軍” 的關係。這是 RNN 的缺陷。

而 Transformer,它所使用的 Attention 機制,就是把過往所有詞都以一個個向量的形式儲存下來。這樣在 2 小時的聊天裡,我每次提到 “我”,它都會去和過往所有詞做一次相關性計算,就能知道 “我” 和 “肖朝軍” 高度相關。

這也導致,Attention 的 “記憶” 不是固定的儲存大小,而是把 “記憶” 擴展為過往全部詞元,這就能改進 RNN 長序列的遺忘問題。

晚點:所以當年從 RNN 到 Transformer 提出 Attention,本身就是為瞭解決長文字問題。

肖朝軍:對,不過當時的長,也沒多長,就是幾百 Token。

在 Attention 之後,很快就提出了稀疏 Attention,最開始是為了 BERT(註:Google 最早的 Transformer 架構的大語言模型,但它的最佳化目標和同為 Transformer 架構的 OpenAI 的 GPT 系列模型略微不同,BERT 一度是比 GTP 更主流的大模型),它只能處理 512 Token。

然後稀疏 Attention 出來後,讓模型能處理 4K token 了,這是 18、19 年的事,那時大家認為這已經非常長了。

而到了現在,動輒是 128k 甚至 1M(100 萬)的長度,發展非常快。所以 Transformer 確實是為了長文字,只是這個長和現在的長還不太一樣。

原初 Attention 兩大瓶頸:“視訊記憶體開銷” 和 “計算複雜度”

晚點:從長文字到了長長長長長文字。後來原初 Transfomer 裡標準的 Full Attention 又遇到了什麼瓶頸,為什麼不夠用呢?

肖朝軍:首先就是儲存問題,其實就是剛才講的,它的 “記憶” 大小是不固定的,序列越長,記憶就越大。比如有幾百萬個詞,那存下來要好幾百 G,現在 GPU 的視訊記憶體(視訊記憶體是 GPU 的 “專屬記憶體”,最初主要儲存圖像資訊,在大語言模型裡,它用來儲存模型參數和訓練資料)就幾十 G,儲存遠遠不夠。

第二是計算複雜度的問題,因為 Full Attention,是每處理一個 Token 時,都需要和前面所有 Token 做一遍相關性計算,如果序列長度是 N,它的計算複雜度就是 N 的平方,當長度越長,計算時間就會越來越高。

傅天予:我補充一點關於訓練和推理階段的 Attention 的區別。之前很多稀疏注意力工作都是一個稠密訓練的 Attention,但在推理階段把它變成稀疏的。這是因為我們發現 Attention 本身含有稀疏性。

這可能有幾個主要原因:一是 Attension 裡有 Softmax(軟最大值)機制。簡單理解,它是一個 “更軟” 版本的取最大值的過程。一般取最大值時,會把最大的數取為 1,其他全部取 0。而 Softmax 是把最大的那個取為 0.9,第二大的可能是 0.09,第三大的是 0.009……這導致在這麼多相關性數值裡,我們一般叫 Attention Score 或 Attention Weights,本來就只有很少的數很大,這就為稀疏性提供了一個潛在的數學保證。

(註:如前文所說,Transfomer 裡的 Attention 是每輸入一個新 Token,要計算它與前面所有 Token 的相關性,所以會得到一組值。常規在一組值裡取最大值時,是將最大的設為 1,其他都設為 0;而 Softmax 是對所有值進行一種函數處理,使它們都分佈在 0 到 1 之間,且總和為 1,最大值會得到最高的權重。這些權重之間的數值懸殊很大,是 “稀疏” 的,一些很小的值,後續處理時可能被捨棄。)

二是從語言學的角度,比如我們今天播客可能有 2 小時,但在 “朝軍” 和 “我” 之間產生的關聯非常稀疏,就是這 2 小時裡,前面有幾萬個 Token,但和 “朝軍” 有強相關性的只有 “我” 這個詞,關聯本身就很稀疏。

最後是從人腦角度,也不是所有神經元都和所有神經元連接,它的連接也非常稀疏,並且隨著年齡增大,會越來越稀疏。

所以無論從數學上,還是語言學上,還是神經科學上的啟發,大家就覺得稀疏 Attention 本來就存在,並且是可以被利用起來提高效率。

晚點:總結而言,在 Full Attention 的基礎上,後來有那些改進思路?

肖朝軍:我認為主流分類就是稀疏注意力和剛才提到的 RNN(循環神經網路),它又復活了,比如 Mamba 這類模型,RNN 計算很高效,但有遺忘機制。

(註:Mamaba 是由卡內基梅隆大學在 2023 年提出的基於狀態空間模型的高效長序列建模架構,主要作者是 Tri Dao 和 Albert Gu 等,後文提及的 FlashAttention 的作者也是 Tri Dao。)

傅天予:不過現在大家好像不喜歡說自己是 RNN,會說是線性注意力。我覺得線性注意力裡的一些工作確實還是以循環的方式在進行,但也會有少部分工作,雖然也是把很長的序列壓縮到一個 “記憶” 裡,但不像傳統 RNN 是逐詞迭代進行的。

晚點:那種更主流呢?最近的 NSA 和 MoBA 都是稀疏注意力方向的改進。

肖朝軍:在 Mamba 之前,稀疏更主流。但 Mamba 之後,線性注意力機制的改進也非常多。

傅天予:稀疏注意力整體對原本注意力的改動沒那麼激進,與現有很多方法能直接搭上。而線性注意力可能描繪了一個更美好的藍圖。

因為它的儲存大小是固定的(註:線性注意力可理解為 RNN,前文有提及 RNN 的儲存大小是固定的),計算複雜度隨序列變長,不是平方增長,而是線性增長(這和它的計算方式有關)。

所以從 Scaling Laws 角度看,當輸入比較短時,線性注意力的提效可能不如稀疏注意力,但輸入特別長時,線性注意力的效率優勢會上來。

不過目前大家更多嘗試稀疏注意力,因為很多學界探索表明,純線性注意力的效果(效率衡量的是速度和計算資源消耗,效果衡量的是模型 “聰明” 程度)欠佳,還需要混合其它注意力機制。

晚點:Attention 的提出和後來的改進都是為了處理長文字。除了改進 Attention 機制本身,還有那些努力能幫助處理長文字?

傅天予:最佳化一個大模型,會有 3 個層次:演算法、系統和硬體。硬體層很好理解,你用更快的 GPU,當然可以變快。

系統層稍難理解,比如 FlashAttention 就是一個系統層改進。雖然 GPU 的峰值算力和峰值視訊記憶體是固定的,但程式碼寫得好不好,決定了你能用到百分之多少。系統層的工作就是追求提高這個百分比,充分利用頻寬、視訊記憶體、算力。FlashAttention 讓 Attention 的計算效率提升了一個台階,視訊記憶體則至少降了一個量級。

再上面是演算法層,細分又有模型層和更普遍意義的演算法。稀疏注意力、MoE(混合專家系統)都是對模型層的改進。而改變生成範式——比如從一個、一個詞往外蹦,變成兩個詞、兩個詞往外蹦,則是更普遍的演算法改進。

(註:MoE 現在是一個主流的大模型架構,比如 DeepSeek-V3 就是一個 MoE 模型,它也是 DeepSeek-R1 的基座模型。V3 也有生成方式上的改進,使用了 Meta 提出的 Multi-token Prediciton,一次生成兩個詞。)

肖朝軍:演算法層有很多改進,因為長文字的問題很多,不僅僅是計算複雜度和視訊記憶體。那針對不同場景,就有不同的最佳化方向。

比如 DeepSeek 在 DeepSeek-V2 里提出的 MLA 也是一個演算法改進,它解決什麼問題呢?就是剛才提到的,Transformer 需要把所有詞元都存下來,儲存量很大,這樣每次去訪問它的時間會很長,要一個一個讀出來。所以 DeepSeek 就想把這個維度壓低、儲存變小,就做了這方面的一個改進。

(註:MLA 是 Multi-head Latent Attention,多頭潛在注意力。它通過一種聯合壓縮技術,把算注意力分數時的視訊記憶體佔用減少了超 90%,同時保持了模型性能。)


解決長思維鏈生成,是 o1/R1 的 RL(強化學習)方法繼續發展的關鍵

晚點:接下來,我們來看 NSA 和 MoBA 的一些具體改進。整體上,兩位看到的 NSA 和 MoBA 的最大亮點是什麼?

傅天予:我認為最有意思的是,他們都在預訓練階段就引入了稀疏注意力,而此前多數工作是做稠密訓練,在推理時才稀疏。訓練與推理的不一致難免會引入誤差。

所以業界和學界都很好奇:如果在預訓練階段就引入稀疏性,對模型最終效果是什麼影響?

這兩個成果,解答了這個大家關心的問題:就是稀疏注意力經過充分訓練,性能上可以比肩稠密注意力,甚至某些情況下還能超越。

這給稀疏注意力領域打了一劑強心針,之前很多審稿人會質疑,稀疏雖然讓模型變快了很多,但變笨了一點,這能否接受?而這些新成果就是告訴大家,你可以快的同時也很聰明。

肖朝軍:補充一下,從推理階段的稀疏到預訓練階段的稀疏,gap 其實挺大的。因為硬體上,GPU 本身不太適合稀疏計算,而適合稠密計算。把稀疏機制引入預訓練,怎麼實現加速是一個難點。

晚點:為什麼是在這個時間點,DeepSeek、Kimi 等公司不約而同地要把稀疏從推理階段引入預訓練?

肖朝軍:其實這和 o1/R1 密切相關,這類推理模型會用 RL(強化學習)在訓練中生成很長的思維鏈(CoT),這是讓模型變聰明的必然趨勢。

所以 “輸出很長” 變得更重要了,之前大家更關注 “輸入很長”,比如 Kimi 產品早期的特性就是輸入很長。但當前 DeepSeek 可能更關注輸出很長時的加速。


NSA 論文中的效果(左表)和效率(右表)提升。肖朝軍關注的輸出很長時的加速,體現在右表中的第一欄,Decode,即解碼、生成過程的加速;NSA 相比 Full Attention 加速了 11.6 倍。

其實我之前也想過把稀疏注意力引入訓練階段,但當時我沒有現在的認知,只是想提升訓練階段的效率。

現在的新認知是,解決長 CoT 才是未來繼續 RL Scaling 的關鍵點。DeepSeek-R1 報告裡有一張圖:隨著 RL 的訓練步數增加,整個輸出會越來越長。可以預想,訓練步數還會繼續增加,輸出長度也會繼續突破。這時把稀疏注意力引入預訓練階段,尤其是 RL 的訓練——但這件事(把稀疏引入 RL 訓練)NSA 論文裡還沒體現——它一定是個未來趨勢。



DeepSeek-R1 技術報告中展示隨訓練步數增長(橫軸),輸出長度(縱軸)持續增長。

所以我特別關注 NSA 和 MoBA 的理論加速比能不能落到實際,從論文看,他們都做得比較好。我們之前的 InfLLM 就是理論加速比高,但實際加速比不夠好。

晚點:為什麼之前加速比很難落下去?

肖朝軍:我一直在搞演算法,不是很懂底層系統,當時我也和別人討論過,就覺得稀疏天然不適合 GPU,就做罷了。

但看到 NSA 之後,我覺得還是自己的認知有侷限,就是我不懂硬體,沒有在算子層做最佳化。而 DeepSeek 真能把這個想法推下去,這是 NSA 給我的最大衝擊。

改進稀疏注意力的思路已比較成熟,但 DeepSeek 和 Kimi 真的把加速落到了真實系統

晚點:這次 NSA 也特別強調了它是 hardware-aligned(硬體協同)的,就是結合硬體層做了最佳化,這個可以解釋一下嗎?

傅天予:這需要理解 GPU 到底在怎麼做計算。GPU 的一個特性就是 “single instruction, multiple data”(單指令、多資料流),即給出一條相同指令,對不同資料做同樣的操作。

比如只計算一個矩陣時,GPU 比較慢,但如果對 20 個矩陣做同樣操作,它就很高效。所以 GPU 是高度平行計算,平行度越高,對 GPU 越友好。這是計算方面。

在記憶體方面,電腦的記憶體是存一串連續數字。GPU 順序訪問連續數字的效率很高,但如果要訪問的資料比較碎片化,GPU 一次取一大塊數,卻只有其中一小部分有用,效率就會很低,反之,如果取一大塊數,這些數都有用,效率就很高。

理解這兩點後再來看 NSA,它做了一個對 GPU 很友好的操作,就是它是 Block(塊,可以簡單為理解為是一組數)的,這又進到了 Kimi 的 MoBA 的標題裡了,MoBA 的 B 就指 Block。

所以 NSA 雖然是一個稀疏注意力,但它的粒度是到 “塊” 的,要麼這一塊都有用,要麼都沒用。這就滿足了剛才說的兩個期待:記憶體上是連續訪問,計算上是對同一塊資料做相同計算。它對硬體層的主要最佳化,就是提升 Block 的計算。

肖朝軍:對,打個廣告。我 24 年 2 月的 InfLLM 的核心觀點也是,稀疏注意力,就應該在塊層級去做,才會對硬體更友好。

晚點:其實我也問過 R1,NSA 和 MoBA 的異同,它說:“MoBA 更側重 Block 等級的調控,而 NSA 更側重 Token 等級的精細化操作和硬體最佳化。” 實際上二者都是 Block 等級的嗎?

肖朝軍:NSA 也是在 Block level 做的,但文章裡沒特別強調。因為即使是 Block,真要做到非常好的硬體最佳化,還是需要很多操作,所以它後面更多強調了它的硬體最佳化。

晚點:硬體最佳化靠什麼具體方法實現呢?就是前面提到的寫算子?

肖朝軍:對,就是寫一些系統層的算子(註:算子是神經網路中執行具體數學運算的模組、它在模型較底層,直接與晶片硬體互動)。DeepSeek 在 NSA 上寫算子時用的是 Triton,這是 OpenAI 開放原始碼的、在輝達的 CUDA 上再抽象了一層的介面。

傅天予:我想補充一個非常有意思的事,因為 Triton 是 GPT 3 那會兒出來的(註:Triton 開源於 2021 年,GPT-3 發佈於 2020 年 6 月)。一個不靠譜的坊間傳聞是,GPT 曾嘗試用稀疏注意力來訓練,所以去做了系統適配,這就有了 Triton。

不管傳聞真假,Triton 確實非常適合做塊狀稀疏計算。雖然 OpenAI 最後自己可能沒有用 Triton,但它已經成為學界要做塊狀稀疏計算的很好的工具。

晚點:所以這是 OpenAI 還 open 的時候,給社區帶來的一些貢獻。

肖朝軍:補充一下,我覺得 DeepSeek 未來可能會繼續深入到 CUDA 層(CUDA 是輝達自己提供的,可以幫開發者更好使用 GPU 的一套軟體平台)去寫最佳化。因為 Triton 是對編碼友好,CUDA 可以做更深。

還想補充一點, OpenAI 有沒有做稀疏注意力我不知道,但它一定在長文字上做了新的工作。最近它發了 DeepResearch,可以想像,長文字能力一定很強,只不過它自己沒有強調。

晚點:具體到 MoBA 和 NSA 的注意力機制的設計,它們的異同是什麼呢?

傅天予:我覺得共同點主要有三點。一是,它們都是先從更高層次選一塊需要關注的上下文,這個所謂的 “一塊” 就是 “Block Level”,具體選法,二者有細微差別,但總之要先選一塊,把這一塊內容拿進來,再去關注塊內部的細節。

二是,它們選塊時,都傾向關注離當前這個詞最近的詞,這也非常自然,因為即使是稠密注意力,天然也會表現出對臨近的詞更關注。這從語言學上也能理解。

三是,二者都是對於每一個輸入的詞(更具體的說是詞的查詢向量),它選的 Block 是不一樣的,就是它會針對當前在 decode(解碼,這裡指生成過程)的詞,選不同的上下文塊。

肖朝軍:所以整體思路其實挺相似,除了怎麼選塊的差別,還有對塊的表示可能有細微差別。

還是我剛才提到的那個點,現在改進注意力的思想已經比較一致了,但他們能把加速比落到真實的系統裡,這件事很關鍵。

晚點:除了你們提到的,NSA 和 MoBA 都是在塊等級上做計算,它們也提到自己都是動態稀疏注意力。這裡的 “動態” 是什麼意思,那麼相對應的靜態呢?

傅天予:其實 NSA 和 MoBA 都是既有動態,也有靜態。

解釋這個問題,還是要回到大模型怎麼處理文字。文字進入一個模型時,其實是進來了兩個東西,一是每個詞說了什麼,二是這些詞的位置,而位置就是靜態的。

所以,如果一種注意力機制和位置強繫結,比如總是關注句子開頭的幾個詞,就偏靜態;如果是更多關注詞的內容,就是動態。

在 MoBA 裡,它會先固定選擇某個 Token 所在的 Block,其實就是在選擇臨近的位置的 Token,它也有靜態的部分在。

肖朝軍:NSA 裡用到的滑動窗口也是一種靜態稀疏注意力。因為它已經預設了這個詞要和那些窗口裡的一組詞做相關,而不是動態地決定和那些詞相關。

那它的問題也可以想像,比如 “我是肖朝軍” 這個例子,在很長的文字裡,就需要動態地去關聯 “朝軍” 和 “我”,靜態可能就滑不到那麼前面的 “我” 了。

傅天予:一般而言,靜態效率高,但效果稍差。動態效果更好,因為它同時關注位置和內容資訊,但這導致在輸入具體內容前,不知道具體要看那裡,這種計算對 GPU 不是很友好,就會比較慢。所以二者是一種權衡。


訓練曲線揭曉懸念:稀疏注意力一定更快,但它也能更好嗎?

晚點:NSA 和 MoBA 都做了一系列測試來驗證自己的效果和效率提升的有效性,在這些測試與實驗成果中,你們看到的亮點是什麼?

傅天予:我個人更關注他們的 Training Curve(訓練曲線)的下降情況。


NSA 展示了 270 億參數大小模型上的訓練損失曲線(Traning Loss Curve)。


MoBA 展示的訓練損失曲線。左圖的常用預測損失包含所有詞元,即也包含大量段前位置的詞元(相當於短文字);而右圖則展示了 32K 輸入長度下,最後 1K 詞元的預測損失,這種長文字末尾的預測損失,更能突出表現模型在上下文變長後的預測性能。

因為我們關注一個改進是否在帕累托前沿上,即同等速度下模型是否最聰明,同等聰明時模型是否最快。

稀疏注意力一定比稠密注意力更快,而訓練曲線會揭示,在投入足夠多的資源時,稀疏注意力能否和稠密注意力一樣好?這件事我們之前不知道。這兩份工作都給了一個比較積極的答案,就是稀疏和稠密的效果大機率會趨於一致,甚至稀疏會更好。

肖朝軍:我個人最關注的是在預訓練階段引入洗漱注意力後,模型在長推理、數學題上的效果。就還是長思維鏈的表現。


NSA 在主要 Benchmark 上與 Full Attention 的對比。涉及通用知識、推理和程式設計;在 4 項推理 Benchmark 中,NSA 的效果都好於 Full Attention。

除了 MMLU(是涉及幾十個學科的通用知識測試)和 MBPP(測試模型從自然語言合成簡短 Python 的能力)兩個指標,NSA 的表現都好於 Full Attention。


這張表中,NSA 則對比了 H2O、InfLLM 等過往稀疏注意力改進和 Full Attention 在測試長文字能力的 LongBench 上的表現,並展示了 MQA(多文件問答)、Code(程式碼)等細分任務上的得分。


MoBA 與 Full Attention 的效果對比。MoBA 與 NSA 的基準選擇有重合,也有區別。比如二者都測了衡量推理能力的 BBH、GSM8K,和與程式設計任務有關的的 MBPP,也都測了綜合衡量長文字能力的 LongBench。

晚點:這部分最後想補充問一下,之前很多工作,包括兩位自己的工作,都沒有把稀疏注意力引入預訓練階段,除了前面提到的認知問題,是不是也和學界的算力資源比較少有關?

肖朝軍:這有兩方面,一是學界要去搞預訓練,確實開銷很大,但我覺得這是很小的一方面。更多還是我之前說的認知問題,我不太會做底層最佳化,而且 InfLLM 是 2023 年就開始做的,當時也不知道生成長思維鏈對 RL 很重要。

傅天予:學界還有一個問題是缺資料。如果我們要把稀疏引入預訓練,並且想證明它好用,就需要讓它變得和稠密模型一樣強。但稠密模型那麼強,所用的資料、和一些訓練上的技巧,學界可能沒有或不知道。

你當然可以用一樣的方法、一樣的資料去訓練稀疏注意力和稠密注意力的兩個模型,如果稀疏的稍微聰明一點,好像也能證明問題。但工業界其實不會太認可。並且驗證成本也很高。

所以我們當時做 MoA 時,最大出發點就是不要訓練,我一定不要訓練。預訓練可能算力不夠,但微調(後訓練)還是做得起的。但我們就不要微調,因為我們希望 MoA 能即插即用,任何人訓練一個稠密注意力的模型後,都能直接用。

我們也不希望我們的方法改變原來模型的偏好。你一旦訓練,可能會讓一個本來禮貌的模型,突然變得機靈,我們不想這樣。所以當時是故意拿掉了訓練部分。

肖朝軍:對對對,我 InfLLM 論文的標題裡就寫了 Training-Free,就是不要訓練。

大模型訓練分預訓練、微調兩個階段。2023 年時,第一個階段還是短的輸入和輸出,第二階段才會用比較少量的資料把它訓長。所以當時還是想在訓練之後的階段把效率打上去。而現在看,從預訓練階段就引入稀疏,一是效果會更好,二是因為長 CoT,現在也真的需要這麼做。


多模態疊加長思維鏈,文字還會更長長長

晚點:再往下,你們認為注意力機制有那些探索方向?剛才也講到了一些,如長思維鏈生成的相關最佳化。還有呢?

肖朝軍:還有一點是,隨著長文字變得更長,稀疏注意力遲早會面臨儲存問題,因為它的儲存複雜度其實沒變,還是得存前面的全部內容。

儲存改進的極致是 RNN,也可以說是線性注意力,它的儲存大小是固定的,但性能可能有上限。在這兩個儲存的極端之間,有沒有一個中和?

晚點:想請天予補充一下,儲存這件事,它能如何從硬體上最佳化嗎?

傅天予:這很難。對比計算和儲存,計算發展得非常快,但片上儲存,例如視訊記憶體發展很慢。最近 4 年,輝達晶片的算力翻了幾十倍,儲存連兩倍都沒到。(輝達 2025 年發佈的 B200 的算力是 2021 年 A100 的 64 倍,視訊記憶體則是 1.2 倍)。

這是因為快速儲存非常佔晶片面積。而晶片面積再增大,良率會快速衰減,成本就會高得不可接受。

肖朝軍:當然儲存相對便宜,不一定用視訊記憶體,也可以用電腦記憶體,或直接掛硬碟,但這又帶來資料傳輸的速度問題。

其實人腦就不需要那麼多儲存。有沒有可能再進一步向人的機制靠近?就是能動態決策,什麼時候、什麼東西該存,什麼不該存,這可能是下一步要探索的。

晚點:長文字,目前階段看還是以語言為主,未來多模態的注意力要怎麼最佳化?

傅天予:我手頭正在探索多模態注意力的特點。一是模態變多時,上下文會有非常大的增長。對標人類,人 1 小時能讀 18K 的文字,但聽 1 小時音訊轉化成模型輸入是 90K,看 1 小時視訊,即使每秒只看 1 幀(正常視訊至少每秒 24 幀),輸入到模型也是 100 萬(具體數值和解析度有關)。100 萬 token 什麼概念?差不多能放下 3 冊《哈利波特》。

二是,不同模態也會改變注意力的稀疏模式。文字中常見的稀疏模式是關注臨近的詞。而對視訊而言,可能需關注不同幀的相同位置——比如在觀察球的運動軌跡時,那些和當前 Token 最相關的 Token 並非總是鄰近的,而是會跳躍,比如每隔 220 個 Token 看一下。所以不同模態對注意力設計也有不同要求。

我們最近剛開源了一個工作 FrameFusion,它雖然不是處理注意力問題,但也是希望解決長序列下的視訊理解問題。這個工作發現,現在我們在文字裡選擇捨棄那部分注意力的值時,更多是從重要性考慮;而視訊裡,有些東西雖然很重要,但它每幀都出現,就不需要重複看。所以我們會更多從冗餘性出發,只保留重要且獨特的部分。

晚點:你們覺得,我們現在已經看到的 NSA、MoBA 這些注意力機制,離我們理想中的注意力,總體還有多大差距?

肖朝軍:還是要從能力出發去思考這個問題,就是如何探索長文字的記憶能力。注意力機制本身能改的、大的東西也不多了。而獲得更長的 “記憶” 可能需要新的架構改進。

傅天予:汪玉老師特別喜歡說一個例子:神經網路就是 y=f(x)。x 是輸入,y 是輸出,f 是這個網路。

現在的趨勢是,x 越變越長,這是多模態等帶來的;y 也越變越長,這是思維鏈帶來的。f 要做的事就是,當 x 和 y 都變得這麼長時,我怎麼能算得快,同時又能正確地輸入 x,並正確地輸出想要的 y。這就是大家努力的總體目標。

至於 f 怎麼做到這兩點,注意力改進是方法之一。但也有其他方法能服務這個目標。


用 AGI 解決可控核聚變,然後供能 AGI?

晚點:我們又回到了長文字。未來更長的文字,可以用來做什麼呢?

肖朝軍:按 OpenAI 的規劃,下一步就是做創新。比如我們博士生做科研,從選題到做實驗,到最後寫 paper,整個過程會歷時幾個月甚至一、兩年,這幾個月時間裡的思考如果都存下來,現在的儲存肯定不夠。

(註:OpenAI 去年 7 月定義了 AGI 路線圖的 5 個階段:聊天者、推理者、智能體、創新者、組織者)。

而我覺得,AGI 的實現,未來一定要做科研。

晚點:為什麼你認為科研這個場景這麼重要?

肖朝軍:因為科研需要非常綜合的能力。能做科研,意味著 AI 要有思考能力、記憶能力、高效學習能力等等,所以科研是 AGI 發展到較高水平時的集中體現。

有了這種能力,AI 能拓展人類知識的邊界,提出新範式,探索新的宇宙奧秘。

晚點:OpenAI 的路線圖裡,創新者之後還有一個組織者。

肖朝軍:其實我不太認同這個。組織可能先於創新發生,它不一定是高智能水平才能做到的事,螞蟻間也有組織。

這(創新和組織)可能是兩個方向:一是單體智能增強,一是從單體向多體合作發展,誰先發展不一定。

大家以前會想,能不能讓大語言模型自己生成文字,再自己訓練自己,越訓越聰明。現在發現,這樣訓練完的大模型會直接崩掉。但如果 AI 真能做科研的話,其實有希望讓它自己迭代、自己升級,甚至有可能出現超越人類的智能。

晚點:現在有看到任何這樣的苗頭嗎?

肖朝軍:現在還沒有,但我覺得未來 AGI 總會發現自己的缺陷,那就得改自己。

晚點:它為什麼會產生這個動機呢?

肖朝軍:這個就是 AGI 的未來了。他現在肯定沒有動機。

晚點:對,現在只有人給它的學習目標,比如人給 GPT 設定的學習目標是預測下一個詞,給 o1 的目標是用長思維鏈來 “思考”。再往下會是什麼呢?

肖朝軍:那就看人類怎麼想了。也可以設計一個損失函數(Loss Function,它用來衡量模型預測值與真實值之間的誤差解釋,可為模型最佳化提供指導),告訴它,目標就是自我迭代,越來越聰明。

晚點:那麼什麼叫聰明呢?好像還是得人來定義。

肖朝軍:當然了,這個其實很難。人怎麼定義自己的智能,又怎麼定義人工智慧,都有很多分歧。比如這個話筒,它能錄我的聲音,這是智能嗎?

晚點:好像不是一般人理解的智能。

肖朝軍:但是大家肯定認為人臉識別是智能,它也和話筒一樣,只能做一個任務。為什麼話筒不是智能,人臉識別是智能?

人類對智能的定義現在還不完善。也許未來我們給 AGI 創造足夠多的能力後,它的目標不是人定的,而是它自己定的。

晚點:這個目標會是人類想要的嗎?

肖朝軍:這很難想像。我傾向認為未來 AGI 可能是自組織形式,一個 AI 可以帶著一堆 AI 工作,也會和人類一樣有分工,老闆負責 “畫餅”、定目標,只是這個目標是否服務人類社會,這是未知的。

傅天予:人類總覺得自己的智能好像高人一等,大腦奧秘真是難以捉摸。但人類智能在機理上是不是就比其他智能高級呢?或者說什麼機理最合適、最好呢?智能也不一定是越像人越好。

晚點:其實一開始聊稀疏注意力時,天予就提到,神經科學研究也發現神經元之間的連接是稀疏的。好像大家下意識還是把 AI 和人類大腦做類比。

傅天予:我覺得人是提供了一個可行解,而且是較優的解,但不能保證是最優解。

當大家都不相信一件事能行時,提供一個可行解或較優解,能幫助把事做成。但是去思考這件事怎麼做到最好時,只提供可行解是不夠的。

晚點:人腦的效率遠優於現在 AI。

肖朝軍:對,因為人的能源就是有限的,每天只能吃這麼多。控制能耗是生物進化的一個關鍵限制。但對 AI,假如它的智能水平足夠高,我們就能給它提供足夠的算力。

晚點:地球能源不也是有限的嗎?這是要實現可控核聚變呢?

肖朝軍:可以讓 AGI 去研究這個,然後再給自己供能。所以還是回到剛才說的,我認為科研會是 AGI 最重要的一個問題。 (晚點LatePost)