新智元報道
編輯:英智
從GPT-2到DeepSeek-V3和Kimi K2,架構看似未變,卻藏著哪些微妙升級?本文深入剖析2025年頂級開源模型的創新技術,揭示滑動窗口注意力、MoE和NoPE如何重塑效率與性能。
從最初的GPT架構問世以來,已經過去七年了。
回顧2019年GPT-2,再看2024-2025年的DeepSeek-V3和Llama 4,你會發現,這些模型的結構依然驚人地相似。
當然,位置嵌入已從絕對位置編碼演變為旋轉位置編碼(RoPE),多頭注意力(Multi-Head Attention)大多被分組查詢注意力(Grouped-Query Attention)取代,更高效的SwiGLU激活函數也逐漸取代了GELU。
但在這些細微改進之下,我們真的見證了突破性的變化嗎?還是只是在打磨相同的架構?
圖1 本文提到的模型架構
本文沒有聚焦于基準測試性能或訓練算法,而是關注當今旗艦開源模型的架構發展。
研究這些架構本身的結構變化仍然具有很大價值,可以追蹤2025年LLM研究者的最新動態。
DeepSeek V3/R1
DeepSeek R1在2025年1月發布時引起了巨大反響。
R1是一個基于DeepSeek V3構建的推理模型,DeepSeek V3于2024年12月首次亮相。
本節重點介紹DeepSeek V3中引入的兩種關鍵架構技術,這顯著提升了計算效率:
多頭潛在注意力(Multi-Head Latent Attention, MLA)
混合專家模型(Mixture-of-Experts, MoE)
多頭潛在注意力
先從分組查詢注意力(Grouped-Query Attention, GQA)說起。
近年來,GQA已成為替代多頭注意力(Multi-Head Attention, MHA)的新標準,因為在計算和參數效率上表現更優。
傳統的MHA中,每個注意力頭都有自己獨立的鍵和值。
而GQA為了降低內存占用,會將多個注意力頭分組,讓它們共享相同的鍵和值投影。
舉個例子(如下圖2所示),假如有2個鍵-值組和4個注意力頭,那么頭1和頭2會共享一組鍵和值,頭3和頭4共享另一組。
這樣就減少了鍵和值的計算總量,從而降低了內存使用量,提高了效率。
根據消融研究,這種方式在不明顯影響模型性能的情況下實現了更高的效率。
圖2 MHA與GQA的比較,組大小為2,其中兩個查詢共享一個鍵值對
GQA 的核心思想是通過讓多個查詢頭共享鍵和值來減少鍵和值頭的數量。這帶來了兩個好處:
降低了模型的參數量;
推理過程中減少了鍵和值張量的內存帶寬使用,因為需要存儲和從鍵值緩存中檢索的鍵和值更少。
雖然GQA主要是為了提升MHA的計算效率,但消融研究表明,GQA在語言模型性能上與標準的MHA表現相當。
多頭潛在注意力提供了一種不同的內存節省策略,尤其適合與鍵-值緩存搭配使用。
與GQA通過共享鍵和值頭不同,MLA的方法是將鍵和值張量壓縮到一個低維空間,然后再存儲到鍵值緩存中。
在推理時,這些壓縮的張量會在使用前被投影回原始尺寸,如圖3所示。
雖然會增加一次額外的矩陣乘法,但顯著降低了內存使用量。
圖3 MLA工作流程(用于DeepSeekV3和R1)與常規MHA的比較
順便提一句,查詢在訓練時也會被壓縮,但在推理時不會。
MLA并不是DeepSeek V3首創的技術,它的前身DeepSeek-V2就已經引入了這種技術。
此外,DeepSeek-V2論文中包含了一些有趣的消融研究,解釋了為什么DeepSeek團隊選擇MLA而不是GQA。
圖4 DeepSeek-V2論文中的表格,來自https://arxiv.org/abs/2405.04434
如圖所示,GQA的表現似乎不如MHA,而MLA在建模性能上優于MHA。
MLA是一種能減少鍵值緩存的內存使用量的技巧,同時在建模性能上略勝MHA一籌。
專家混合模型(MoE)
DeepSeek的另一個值得關注的架構組件是其使用的專家混合(Mixture-of-Experts, MoE)層。
MoE的核心思想是將Transformer中的每個前饋網絡(FeedForward)模塊替換為多個專家層,而每個專家層本身也是一個前饋網絡模塊。
簡單來說,就是用多個前饋網絡塊替換單個前饋網絡塊,如下圖所示。
圖5 DeepSeek V3/R1中的MoE模塊(右)與標準前饋網絡模塊(左)
因此,用多個前饋網絡模塊替換單一前饋網絡模塊,會顯著增加模型的總參數量。
關鍵的技巧在于,不會為每個token激活所有專家。相反,一個router會為每個token選擇一小部分專家。
由于每次只激活少數專家,MoE模塊通常被稱為「稀疏」模塊。
通過MoE增加的大量總參數提升了模型的容量,這意味著模型在訓練時可以吸收更多知識。
而稀疏性則保證了推理的高效,因為不會同時使用所有參數。
例如,DeepSeek-V3每個MoE模塊有256個專家,總計671B參數。但在推理過程中,每次只激活9個專家。
這意味著每次推理步驟只使用37B參數,而不是全部參數。
DeepSeek-V3的MoE設計中一個特點是使用了一個共享專家。這個共享專家對每個token始終保持激活。
圖6 來自DeepSeekMoE論文,https://arxiv.org/abs/2401.06066
研究發現,與沒有共享專家的情況相比,共享專家能提升整體建模性能。
DeepSeek-V3是一個擁有671B參數的超大規模模型,在發布時超越了其他開源模型,包括405B參數的Llama 3。
盡管參數量巨大,但得益于MoE架構,DeepSeek-V3在推理時的效率非常高,每個token僅激活一小部分參數。
另一個關鍵的區別是DeepSeek-V3使用了多頭潛在注意力(MLA)而非分組查詢注意力(GQA)。
MLA和GQA都是比標準多頭注意力(MHA)更高效的替代方案,尤其是在使用鍵值緩存時。
盡管MLA的實現更復雜,但DeepSeek-V2論文中的研究表明,MLA的建模性能優于GQA。
Kimi 2
Kimi 2最近在AI社區引發了巨大反響,因為它是一個性能卓越的開源權重模型。
根據基準測試,Kimi 2的表現可與頂尖模型(如Gemini、Claude和ChatGPT)相媲美。
優化器創新:Muon而非AdamW
一個值得注意的亮點是Kimi K2使用了一種相對較新的優化器Muon的變體,而非業界標準的AdamW。
這是Muon首次在如此大規模的生產模型中取代AdamW。
這帶來了非常平滑的訓練損失曲線,這很可能幫助Kimi K2在上述基準測試中名列前茅。
Kimi K2模型擁有1萬億個參數,規模令人震撼。
Kimi K2的出現并非偶然,它基于本文開頭討論的DeepSeek-V3架構,只是規模更大,如下圖所示。
圖7 DeepSeek V3與Kimi K2的架構對比
Kimi K2的架構與DeepSeek V3基本相同,區別在于它在專家混合(MoE)模塊中使用了更多的專家,并在多頭潛在注意力(MLA)模塊中減少了注意力頭的數量。
Kimi K2并非橫空出世。此前的 Kimi 1.5模型也表現不俗。
然而,Kimi 1.5不幸與DeepSeek R1的論文在同一天發布。
因此,Kimi K2團隊很可能吸取了這些教訓,在DeepSeek R2發布之前,將Kimi K2作為開源權重模型發布。
截至本文撰寫時,Kimi K2是最令人印象深刻的開源權重模型。
Qwen3
Qwen團隊始終在提供高質量的開源LLM,位列排行榜前列。
Qwen3包括7個密集模型:0.6B、1.7B、4B、8B、14B和32B,以及2個專家混合模型:30B-A3B和235B-A22B。
Qwen3(Dense)
Qwen3 0.6B模型可能是當前一代開源模型中參數量最小的。
盡管規模小,但模型性能非常出色。如果在本地運行,它具有很高的token/秒吞吐量和低內存占用。
此外,由于其小規模,它也非常適合本地訓練(例如用于教育目的)。
因此,Qwen3 0.6B已經取代了Llama 3 1B,成為大多數用途的首選模型。
以下是這兩種架構的對比圖。
圖8 Qwen3 0.6B與Llama 3 1B的架構對比
Qwen3整體架構較小,隱藏層更小,注意力頭更少,因此內存占用較小。
然而,它使用了比Llama 3更多的Transformer模塊,這導致運行速度較慢(生成token/秒的速度較低)。
Qwen3(MoE)
Qwen3還推出了兩種專家混合模型變體:30B-A3B和235B-A22B。
MoE變體有助于降低大模型的推理成本,針對推理的擴展性進行了優化。
在固定的推理預算下,MoE模型可以實現更高的模型容量,而不會成比例增加推理成本。
通過同時發布這兩種類型的模型,Qwen3系列能夠支持更廣泛的用例:密集模型適用于穩健性、簡單性和微調,而MoE模型則適合大規模高效推理。
圖9 DeepSeek-V3與Qwen3 235B-A22B的架構對比
Qwen3模型放棄了使用共享專家。團隊沒有透露放棄共享專家的具體原因。
OLMo 2
由非營利組織Allen人工智能研究所開發的OLMo系列模型,因其在訓練數據和代碼的透明度而備受關注。
OLMo模型因透明度而廣受歡迎,它們的性能也并不差。
1月份發布時,OLMo 2在計算成本與性能的Pareto frontier上表現突出,如圖所示。
圖10 不同大模型的建模基準性能與預訓練成本的對比,來自OLMo 2論文 https://arxiv.org/abs/2501.00656
OLMo 2有哪些有趣的架構設計呢?
主要集中在normalization:RMSNorm層的位置以及新增的QK-Norm。
規范化層的位置
OLMo 2的架構在很大程度上沿襲了GPT,與其他當代LLM相似。
與Llama、Gemma一樣,OLMo 2從LayerNorm切換到了RMSNorm。
不過,RMSNorm層的位置值得一提。
在原始Transformer中,兩個規范化層分別被放置在注意力模塊和前饋網絡模塊之后。這種方式被稱為后規范化。
GPT以及之后的大多數LLM將規范化層放在注意力模塊和前饋網絡模塊之前,這種方式被稱為前規范化。
圖11 后規范化、前規范化以及OLMo 2版本的后規范化的對比
前規范化在初始化時能產生更穩定的梯度。
此外,前規范化甚至在沒有精心設計的學習率預熱(learning rate warm-up)的情況下也能表現良好,學習率預熱對后規范化來說是至關重要的工具。
OLMo 2采用了一種后規范化的形式(但使用的是RMSNorm而不是LayerNorm,因此稱之為Post-Norm)。
在OLMo 2中,規范化層不再放在注意力模塊和前饋網絡模塊之前,而是放在之后。
與原始Transformer不同的是,OLMo 2的規范化層仍然位于殘差層內部。
那么,為什么要改變規范化層的位置呢?原因在于這有助于提高訓練穩定性。
圖12 前規范化(如GPT-2、Llama 3)與OLMo 2的后規范化的訓練穩定性對比圖
遺憾的是,這同時展示了規范化層重新排列和QK-Norm的效果,因此很難單獨判斷規范化層位置調整的具體貢獻。
QK-Norm
QK-Norm實際上是另一個RMSNorm層。
它被放置在多頭注意力(MHA)模塊內部,在應用旋轉位置編碼(RoPE)之前,對查詢和鍵進行規范化。
以下是為Qwen3從頭實現的分組查詢注意力(GQA)層的代碼片段:
class GroupedQueryAttention(nn.Module): def __init__( self, d_in, num_heads, num_kv_groups, head_dim=None, qk_norm=False, dtype=None ): Apply projections queries = self.W_query(x) keys = self.W_key(x) values = self.W_value(x) Optional normalization if self.q_norm: queries = self.q_norm(queries) if self.k_norm: keys = self.k_norm(keys) Expand K and V to match number of heads keys = keys.repeat_interleave(self.group_size, dim=1) values = values.repeat_interleave(self.group_size, dim=1) ...
QK-Norm結合后規范化能穩定訓練過程。
OLMo 2的亮點主要集中在RMSNorm的位置調整:將RMSNorm放置在注意力模塊和前饋網絡模塊之后,以及在注意力機制中對查詢和鍵添加RMSNorm(即QK-Norm)。
這兩者結合有助于穩定訓練過程中的損失,下圖進一步對比了OLMo 2和Llama 3的架構。
除了OLMo 2仍然使用傳統的多頭注意力(MHA)而非分組查詢注意力(GQA)外,兩者的架構相似。
圖13 Llama 3與OLMo 2的架構對比
Gemma 3
與Llama等熱門模型相比,谷歌Gemma似乎被低估了。
Gemma的顯著特點是其超大的詞匯量,以及對27B模型的特別重視。
Gemma 3也提供了更小規模的版本:1B、4B和12B。
27B模型恰好達到了一個非常理想的平衡點:它的能力遠超8B模型,但又不像70B模型那樣需要大量計算資源。在Mac Mini上運行27B模型完全沒有問題。
Gemma 3還有什么有趣的地方呢?
正如之前討論的,DeepSeek-V3/R1采用了專家混合架構,通過推理時只激活部分參數來降低內存需求。
Gemma 3則使用了另一種方法來降低計算成本,即滑動窗口注意力(sliding window attention)。
滑動窗口注意力
滑動窗口注意力讓Gemma 3團隊大幅降低了鍵值緩存的內存需求,如下圖所示。
圖14 Gemma 3論文(https://arxiv.org/abs/2503.19786)通過滑動窗口注意力實現的鍵值緩存內存節省
如果把常規的自注意力(self-attention)看作一種全局注意力機制(因為每個序列元素可以訪問所有其他序列元素)。
那么滑動窗口注意力可以看作一種局部注意力機制,它限制了當前查詢位置周圍的上下文范圍。
圖15 常規注意力(左)與滑動窗口注意力(右)的對比
滑動窗口注意力可以與多頭注意力(MHA)和分組查詢注意力(GQA)一起使用;Gemma 3使用的是分組查詢注意力。
如上所述,滑動窗口注意力也被稱為局部注意力,因為局部窗口會圍繞當前查詢位置并隨其移動。
相比之下,常規注意力是全局的,因為每個token都可以訪問所有其他token。
Gemma 2也已經使用了滑動窗口注意力。
Gemma 3的不同之處在于調整了全局注意力(常規注意力)和局部注意力(滑動窗口)的比例。
Gemma 2使用了一種混合注意力機制,將滑動窗口(局部)注意力和全局注意力以1:1的比例結合,每個token可以關注附近4096個token的上下文窗口。
在Gemma 3中,這一比例調整為5:1,即每5個滑動窗口(局部)注意力層才有一個全局注意力層;此外,滑動窗口的大小從Gemma 2的4096縮小到Gemma 3的1024。
這使得模型更專注于高效的局部計算。
根據消融研究,使用滑動窗口注意力對模型性能的影響微乎其微,如圖所示。
圖16 Gemma 3論文(https://arxiv.org/abs/2503.19786)顯示滑動窗口注意力對模型輸出的困惑度(perplexity)幾乎沒有影響
Gemma3規范化層位置
Gemma 3在其分組查詢注意力(GQA)模塊周圍同時使用了前規范化和后規范化的RMSNorm設置。
這與Gemma 2的做法類似,但仍值得強調,因為它與以下情況不同:
原始Transformer使用的后規范化(Post-Norm);
GPT-2推廣并被許多后續架構采用的前規范化(Pre-Norm);
之前提到的OLMo 2中使用的后規范化變體。
圖17 OLMo 2與Gemma 3的架構對比;注意Gemma 3中額外的規范化層
Gemma 3是一款性能優異的開源LLM,它在開源社區中有些被低估。
最引人注目的是使用滑動窗口注意力來提高效率(未來與專家混合模型MoE結合可能會很有趣)。
此外,Gemma 3在規范化層的位置上也有獨特的設計,在注意力模塊和前饋網絡模塊前后都放置了RMSNorm層。
Gemma 3n
Gemma 3發布幾個月后,谷歌推出了Gemma 3n,這是針對小型設備(如手機)優化的模型。
為了提升效率,Gemma 3n引入的一項變化是所謂的逐層嵌入(Per-Layer Embedding, PLE)參數層。
其核心思想是將模型的一部分參數保留在GPU內存中,而特定于token層的嵌入(例如文本、音頻和視覺模態的嵌入)則根據需要從CPU或SSD流式傳輸。
下圖展示了PLE的內存節省效果。
圖18 谷歌Gemma 3n博客(https://developers.googleblog.com/en/introducing-gemma-3n/)
另一個有趣的技巧是MatFormer。
例如,Gemma 3n使用單一的共享大型語言模型(Transformer)架構,可以將其切片為更小的、獨立可用的模型。
每個切片都經過訓練可以獨立運行,因此在推理時,可以只運行所需的切片(而不是整個大模型)。
Mistral Small 3.1
Mistral Small 3.1是繼Gemma 3之后于3月發布的一款模型,擁有24B參數。
它在多項基準測試中超越了Gemma 3 27B,除了數學任務外表現更優,同時推理速度更快。
Mistral Small 3.1推理延遲較低的原因可能包括:
定制分詞器(Tokenizer):優化的分詞器可能提高了處理效率。
減少KV緩存和層數:通過縮小鍵值緩存(KV cache)和模型層數,降低了計算和內存需求。
標準架構:如下圖所示,Mistral Small 3.1采用了較為常規的架構設計。
圖19 Gemma 3 27B與Mistral Small 3.1 24B的架構對比
早期Mistral模型曾使用滑動窗口注意力,但Mistral Small 3.1中似乎放棄了這一機制。
Mistral Small 3.1使用的是常規的分組查詢注意力,而不是像Gemma 3那樣的帶滑動窗口的GQA。
這可能帶來額外的推理計算節省,因為可以利用更優化的代碼。
雖然滑動窗口注意力可以減少內存使用量,但并不一定能降低推理延遲,而Mistral Small 3.1的重點正是優化推理延遲。
Llama 4
Llama 4同樣采用了MoE架構,其整體架構與DeepSeek-V3非常相似,如下圖所示。
圖20 DeepSeek V3(671B參數)與Llama 4 Maverick(400B參數)的架構對比
雖然Llama 4 Maverick的整體架構看起來與DeepSeek-V3非常相似,但仍有一些值得注意的差異。
Llama 4沿用了其前身的分組查詢注意力(GQA),而DeepSeek-V3使用了多頭潛在注意力(MLA)。
DeepSeek-V3和Llama 4 Maverick都是超大規模架構,但DeepSeek-V3的總參數量比Llama 4大約多68%。
然而,在活躍參數方面,DeepSeek-V3每次推理使用37B個參數,是Llama 4 Maverick(17B活躍參數)的兩倍多。
Llama 4 Maverick使用了更經典的MoE設置,專家數量較少但規模較大(每次激活2個專家,每個專家的隱藏層大小為8192)。
而DeepSeek-V3的MoE設置則有更多但較小的專家(每次激活9個專家,每個專家的隱藏層大小為2048)。
此外,DeepSeek-V3在每個Transformer中都使用了MoE層,而Llama 4則在每隔一個Transformer中交替使用MoE和密集模塊。
參考資料:
https://magazine.sebastianraschka.com/p/the-big-llm-architecture-comparison
![]()





京公網安備 11011402013531號