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