大型語言模型 (LLM) 架構大比拼
看到一篇寫得非常好的文章——大型 LLM 架構對比,文中列舉了 Llama-3.2、Qwen3-4B、SmolLM3-3B、DeepSeek-V3、Qwen3-235B-A22B、Kimi-K2 等模型的架構,並詳細探討了它們的區別和優勢。正在學習大型模型的同學建議讀一讀!
英文文章:https://sebastianraschka.com/blog/2025/the-big-llm-architecture-comparison.html
距離最初的 GPT 架構問世已七年有餘。乍看之下,從 2019 年的 GPT-2 到展望 2024-2025 年的 DeepSeek-V3 和 Llama 4,人們可能會訝異於這些模型在結構上依然保持著高度的相似性。
當然,位置嵌入(positional embeddings)已從絕對位置編碼(absolute positional encoding)演變為旋轉位置嵌入 (RoPE),多頭注意力(Multi-Head Attention, MHA)也大體被分組查詢注意力(Grouped-QueryAttention, GQA)所取代,而更高效的 SwiGLU 激活函數替換了 GELU 等。但這些細微的改進之下,我們是真正看到了突破性的變革,還是僅僅在原有架構基礎上進行打磨呢?
要比較不同的 LLM,找出影響其性能(無論是好是壞)的關鍵因素極具挑戰性:資料集、訓練技術和超參數差異巨大,而且往往缺乏詳細記錄。
然而,我認為深入研究架構本身的結構變化,以了解 LLM 開發者在 2025 年的最新動態,仍然具有重要價值(部分架構如圖 1 所示)。
圖 1:本文涵蓋的部分架構。
因此,在本文中,作者將不探討基準性能或訓練演算法,而是重點關注當前主流開源模型在架構上的發展。
目錄
1. DeepSeek V3/R1
1.1 多頭潛在注意力 (MLA)
1.2 專家混合 (MoE)
1.3 DeepSeek 總結
2. OLMo 2
2.1 歸一化層的位置
2.2 QK-範數 (QK-Norm)
2.3 OLMo 2 總結
3. Gemma 3
3.1 滑動窗口注意力
3.2 Gemma 3 中的歸一化層放置
3.3 Gemma 3總結
3.4 Gemma 3n
4. Mistral Small 3.1
5. Llama 4
6. Qwen3
6.1 Qwen3 (密集模型)
6.2 Qwen3 (MoE)
7.SmolLM3
7.1 無位置嵌入 (NoPE)
8. Kimi 2
1. DeepSeek V3/R1
您可能已經多次聽說,DeepSeek R1 於 2025 年 1 月發布時引起了巨大迴響。DeepSeek R1 是一個基於 DeepSeek V3 架構構建的推理模型,該架構於 2024 年 12 月問世。
儘管本文的重點是 2025 年發布的架構,但作者認為將 DeepSeek V3 納入其中是合理的,因為它是伴隨 2025 年 DeepSeek R1 的發布才獲得廣泛關注和應用的。
如果您對 DeepSeek R1 的具體訓練過程感興趣,您可能會發現作者今年早些時候撰寫的 一篇關於深度理解推理 LLM 的文章 會有所幫助。
本節中,作者將重點介紹 DeepSeek V3 中引入的兩個關鍵架構技術,它們提高了計算效率並使其不同於許多其他 LLM:
多頭潛在注意力(Multi-Head Latent Attention, MLA)
專家混合(Mixture-of-Experts, MoE)
1.1 多頭潛在注意力 (MLA)
在討論多頭潛在注意力 (MLA) 之前,我們現簡要回顧一下相關的背景知識,以了解其應用動機。為此,我們從分組查詢注意力 (GQA) 說起,近年來,GQA 已成為多頭注意力 (MHA) 的一種新型標準替代方案,因為它在計算和參數效率上更勝一籌。
GQA 的核心思想可以簡要概括如下:與 MHA 中每個注意力頭都有自己獨立的鍵(key)和值(value)不同,為了減少記憶體佔用,GQA 將多個查詢頭分組,使其共享同一組鍵和值投影。
例如,如圖 2 所示,如果存在 2 個鍵值組和 4 個注意力頭,那麼注意力頭 1 和 2 可能共享一組鍵值,而注意力頭 3 和 4 共享另一組。這減少了鍵值計算的總量,從而降低了記憶體使用並提高了效率(根據消融研究,對模型性能沒有顯著影響)。
圖 2:MHA 和 GQA 的比較。這裡,分組大小為 2,這意味著一個鍵值對由 2 個查詢共享。
因此,GQA 的核心思想是透過讓多個查詢頭共享鍵(key)和值(value)來減少鍵值頭的數量。這不僅(1)降低了模型的參數數量,而且(2)減少了推論時鍵值張量(tensor)的記憶體頻寬使用,因為需要儲存和從 KV 快取中檢索的鍵值更少。
(如果您對 GQA 的程式碼實現感興趣,可以查看作者的 GPT-2 到 Llama 3 轉換指南,其中包含一個不帶 KV 快取的版本;帶 KV 快取的版本則可在此處查看:這裡。)
儘管 GQA 主要是一種彌補 MHA 計算效率不足的變通方法,但消融研究(例如 GQA 原論文 和 Llama 2 論文 中的研究)表明,它在 LLM 建模性能方面與標準 MHA 表現相當。
現在,多頭潛在注意力 (MLA) 提出了一種不同的記憶體節省策略,該策略特別適用於 KV 快取。與 GQA 共享鍵(key)和值(value)頭不同,MLA 在將鍵和值張量儲存到 KV 快取之前,將其壓縮到較低維度的空間中。
在推論時,這些壓縮後的張量會先被恢復到原始大小,然後才能被使用,如圖 3 所示。這雖然增加了額外的矩陣乘法運算,但顯著減少了記憶體佔用。
圖 3:MLA(DeepSeek V3 和 R1 中使用)與常規 MHA 的比較。
(順便提一下,查詢(Queries)也會被壓縮,但僅在訓練期間,而非推論期間。)
此外,MLA 並非 DeepSeek V3 中的新內容,其 DeepSeek-V2 前身 也曾使用(甚至首次引入)該技術。V2 論文還包含了一些有趣的消融研究,這或許能解釋 DeepSeek 團隊為何選擇 MLA 而非 GQA(參見圖 4)。
圖 4:DeepSeek-V2 論文中的標註表格,https://arxiv.org/abs/2405.04434
如圖 4 所示,GQA 的性能似乎不如 MHA,而 MLA 在模型性能方面優於 MHA,這很可能是 DeepSeek 團隊選擇 MLA 而非 GQA 的原因。(如果能看到 MLA 和 GQA 之間「每詞元 KV 快取」的節省量比較,那會更有趣!)
在進入下一個架構組件之前,我們總結一下本節:MLA 是一種巧妙的技巧,既能減少 KV 快取記憶體使用,又能在模型性能方面略微優於 MHA。
1.2 專家混合 (MoE)
DeepSeek 中另一個值得關注的主要架構組件是其專家混合(MoE)層的應用。儘管 MoE 並非 DeepSeek 的獨創,但它在今年重新流行起來,我們之後會討論的許多模型也採用了這種方法。
您可能已經熟悉 MoE 了,但快速回顧一下可能仍有幫助。MoE 的核心思想是用多個專家層替換 Transformer 塊中的每個前饋類神經網路(FeedForward)模組,其中每個專家層也都是一個前饋類神經網路模組。這意味著我們將單個前饋層替換為多個前饋層,如圖 5 所示。
圖 5:DeepSeek V3/R1 中的專家混合 (MoE) 模組(右)與使用標準前饋塊的 LLM(左)的示意圖。
Transformer 塊內部的前饋類神經網路(圖中深灰色模組)通常包含模型總參數的很大一部分。(請注意,Transformer 塊以及前饋類神經網路在 LLM 中會重複很多次;在 DeepSeek-V3 中,重複了 61 次。)
因此,將單個前饋塊替換為多個前饋塊(如 MoE 設定中所做)會大幅增加模型的總參數數量。然而,其中的關鍵技巧在於,我們不會為每個詞元都使用(「啟動」)所有專家。相反,一個路由機制會為每個詞元選擇一小部分專家。(為節省時間,或者說文章篇幅,作者會在以後更詳細地介紹路由策略。)
由於一次只啟動少數專家,MoE 模組通常被稱為稀疏模組,與始終使用全部參數集的密集模組形成對比。然而,MoE 透過大量參數增加了 LLM 的容量,這意味著它在訓練期間可以吸收更多的知識。稀疏性則保持了推論效率,因為我們不會同時使用所有參數。
例如,DeepSeek-V3 的每個 MoE 模組擁有 256 位專家,模型總參數量達到 6710 億。但在推論時,每次只啟動 9 位專家(1 位共享專家外加 8 位由路由選擇的專家)。這意味著每步推論只使用 370 億參數,而不是全部 6710 億。DeepSeek-V3 的 MoE 設計中一個顯著特點是使用了「共享專家」。這是一個始終為每個詞元啟動的專家。這個想法並不新鮮,它在 DeepSeek 2024 MoE 和 2022 年 DeepSpeedMoE 論文 中就已經被引入了。
圖 6:取自《DeepSeekMoE:實現專家混合語言模型中終極專家特化》的標註圖,https://arxiv.org/abs/2401.06066
在 DeepSpeedMoE 論文 中,首次指出共享專家的好處,他們發現其相比沒有共享專家的情況能提升整體模型性能。這可能是因為常見的或重複的模式無需由多個獨立專家分別學習,從而讓這些專家有更多空間學習更特化的模式。
1.3 DeepSeek 總結
總而言之,DeepSeek-V3 是一個擁有 6710 億參數的大型模型,發布時其性能超越了包括 4050 億參數的 Llama3 在內的許多其他開源模型。儘管體量更大,但得益於其專家混合(MoE)架構,它在推論時效率更高,因為每個詞元僅啟動一小部分(僅 370 億)參數。
另一個關鍵的顯著特徵是 DeepSeek-V3 採用了多頭潛在注意力 (MLA) 而非分組查詢注意力 (GQA)。MLA 和 GQA 都是標準多頭注意力(MHA)的推論高效替代方案,尤其是在使用 KV 快取時。儘管 MLA 的實現更為複雜,但 DeepSeek-V2 論文中的研究表明,它比 GQA 具有更好的模型性能。
2. OLMo 2
Allen 人工智慧研究所(Allen Institute for AI)開發的 OLMo 系列模型因其在訓練資料和程式碼方面的透明度,以及相對詳細的技術報告而備受關注。
雖然您可能不會在任何基準測試或排行榜上看到 OLMo 模型名列前茅,但它們非常清晰,更重要的是,由於其透明性,它們成為了開發 LLM 的絕佳藍圖。
儘管 OLMo 模型因其透明度而備受歡迎,但它們的性能也相當不俗。事實上,在 1 月發布時(早於 Llama 4、Gemma 3 和 Qwen 3),OLMo 2 模型已達到計算效率與性能的帕累托最優前沿,如圖 7 所示。
圖 7:不同 LLM 的模型基準性能(越高越好)與預訓練成本(FLOPs;越低越好)對比圖。此圖取自 OLMo 2 論文並進行了標註,https://arxiv.org/abs/2501.00656
如本文前面所述,作者致力於只關注 LLM 的架構細節(而非訓練或資料),以保持文章篇幅適中。那麼,OLMo2 中有哪些有趣的架構設計選擇呢?主要歸結於歸一化:RMSNorm 層的放置以及 QK-範數的添加,作者將在下面討論。
值得一提的是,OLMo 2 仍然使用傳統的多頭注意力 (MHA),而非 MLA 或 GQA。
2.1 歸一化層的位置
總體而言,OLMo 2 在很大程度上遵循了原始 GPT 模型的架構,與其他當代 LLM 類似。然而,也存在一些值得注意的偏差。讓我們從歸一化層開始。
與 Llama、Gemma 和大多數其他大型語言模型一樣,OLMo 2 也從 LayerNorm 切換到了 RMSNorm。
但由於 RMSNorm 已是「老生常談」(它本質上是 LayerNorm 的簡化版,可訓練參數更少),作者將跳過 RMSNorm 與 LayerNorm 的討論。(感興趣的讀者可以在作者的 GPT-2 到 Llama 轉換指南 中找到 RMSNorm 的程式碼實現。)
然而,RMSNorm 層的放置位置值得討論。原始 Transformer 模型(出自「Attention is all you need」論文)將兩個歸一化層分別放置在 Transformer 塊的注意力模組和前饋模組之後。
這也被稱作後歸一化(Post-LN 或 Post-Norm)。
GPT 模型和許多後續的 LLM 則將歸一化層放置在注意力模組和前饋模組之前,這被稱為前歸一化(Pre-LN 或 Pre-Norm)。後歸一化和前歸一化的比較如圖所示。
圖 8:後歸一化、前歸一化和 OLMo 2 的後歸一化變體的比較。
在 2020 年,Xiong 等人 的研究表明,前歸一化 (Pre-LN) 在初始化時能產生更理想的梯度行為。此外,研究人員還指出,前歸一化甚至在沒有仔細調整學習率預熱的情況下也能表現良好,而學習率預熱對於後歸一化 (Post-LN) 來說是至關重要的工具。
現在,作者之所以提及這一點,是因為 OLMo 2 採用了一種後歸一化形式(但使用的是 RMSNorm 而非 LayerNorm,因此作者稱之為 Post-Norm)。在 OLMo 2 中,歸一化層並非置於注意力層和前饋層之前,而是放在其後,如上圖所示。然而,請注意,與原始 Transformer 架構不同的是,這些歸一化層仍然位於殘差層(跳躍連接)內部。
那麼,他們為什麼要改變歸一化層的位置呢?原因是它有助於訓練穩定性,如下圖所示。
圖 9:顯示前歸一化(如 GPT-2、Llama 3 和許多其他模型)與 OLMo 2 後歸一化變體訓練穩定性對比的圖表。
不幸的是,這張圖顯示的是重排序與 QK-範數結合的結果,而 QK-範數是一個獨立的機制。因此,很難判斷歸一化層重排序本身貢獻了多少。
2.2 QK-範數 (QK-Norm)
既然前一節已經提到了 QK-範數,而且我們後面討論的其他 LLM,如 Gemma 2 和 Gemma 3,也使用了 QK-範數,那麼我們來簡要討論一下這是什麼。
QK-範數本質上是又一個 RMSNorm 層。它被放置在多頭注意力 (MHA) 模組內部,並在應用旋轉位置嵌入 (RoPE) 之前應用於查詢(q)和鍵(k)。為了說明這一點,下面是作者為 Qwen3 從零開始實現 所寫的分組查詢注意力 (GQA) 層的一個片段(GQA 中 QK-範數的應用與 OLMo 中的 MHA 類似):
class GroupedQueryAttention(nn.Module): def __init__( self, d_in, num_heads, num_kv_groups, head_dim=None, qk_norm=False, dtype=None ): # ... if qk_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 = None def forward(self, x, mask, cos, sin): b, num_tokens, _ = x.shape # 應用投影 queries = self.W_query(x) keys = self.W_key(x) values = self.W_value(x) # ... # 可選的歸一化 if self.q_norm: queries = self.q_norm(queries) if self.k_norm: keys = self.k_norm(keys) # 應用 RoPE queries = apply_rope(queries, cos, sin) keys = apply_rope(keys, cos, sin) # 擴展 K 和 V 以匹配頭的數量 keys = keys.repeat_interleave(self.group_size, dim=1) values = values.repeat_interleave(self.group_size, dim=1) # 注意力計算 attn_scores = queries @ keys.transpose(2, 3) # ...
如前所述,QK-範數與後歸一化協同工作,共同穩定訓練過程。需要注意的是,QK-範數並非 OLMo 2 發明,其概念可追溯到 2023 年的「擴展視覺 Transformers」論文。
2.3 OLMo 2 總結
簡而言之,OLMo 2 值得注意的架構設計決策主要在於 RMSNorm 的放置:RMSNorm 放在注意力模組和前饋模組之後而非之前(一種後歸一化的變體),以及在注意力機制內部為查詢(queries)和鍵(keys)添加 RMSNorm(QK-範數),這兩者共同有助於穩定訓練損失。
下面是 OLMo 2 與 Llama 3 的並排比較圖;可以看出,除了 OLMo 2 仍然使用傳統的 MHA 而非 GQA 外,兩者架構相對相似。(不過,OLMo 2 團隊在 3 個月後發布了使用 GQA 的 320 億參數變體)。
圖 10:Llama 3 和 OLMo 2 的架構比較。
3. Gemma 3
Google 的 Gemma 模型一直表現優異,在作者看來,它們一直被低估了,不如 Llama 系列等其他流行模型受關注。
Gemma 的獨特之處在於其相對較大的詞彙量(以便更好地支援多種語言),以及更側重於 270 億參數的模型尺寸(而非 80 億或 700 億)。但請注意,Gemma 2 也提供了更小的尺寸:10 億、40 億和 120 億。
270 億參數的尺寸達到了一個非常好的平衡點:它比 80 億參數的模型功能強大得多,但又不像 700 億參數的模型那樣耗費資源,而且在作者的 Mac Mini 上也能流暢執行。那麼,Gemma 3 還有哪些值得關注的特點呢?正如前面討論的,DeepSeek-V3/R1 等其他模型採用專家混合 (MoE) 架構,以在給定固定模型尺寸下減少推論所需的記憶體(MoE 方法也被我們後面將討論的多個其他模型所採用)。
Gemma 3 採用了不同的「技巧」來降低計算成本,即滑動窗口注意力(sliding window attention)。
3.1 滑動窗口注意力
藉助於滑動窗口注意力(最初由 2020 年的 LongFormer 論文 引入,且已被 Gemma 2 採用),Gemma3 團隊大幅減少了 KV 快取的記憶體需求,如下圖所示。
圖 11:來自 Gemma 3 論文(https://arxiv.org/abs/2503.19786)的標註圖,展示了透過滑動窗口注意力節省的 KV 快取記憶體。
那麼,什麼是滑動窗口注意力呢?如果我們把常規的自注意力機制看作是一種全局注意力機制,因為每個序列元素都可以訪問其他所有序列元素,那麼滑動窗口注意力則可以看作是一種局部注意力機制,因為它限制了當前查詢位置周圍的上下文大小。這在下圖中有所說明。
圖 12:常規注意力(左)與滑動窗口注意力(右)的比較。
請注意,滑動窗口注意力可與多頭注意力(MHA)和分組查詢注意力(GQA)結合使用;Gemma 3 使用的是分組查詢注意力。
如上所述,滑動窗口注意力也被稱為局部注意力,因為局部窗口環繞並隨當前查詢位置移動。相比之下,常規注意力是全局的,因為每個詞元都可以訪問所有其他詞元。
現在,正如前文簡要提及,Gemma 2 的前身架構也曾使用滑動窗口注意力。Gemma 3 的不同之處在於,它們調整了全局(常規)注意力與局部(滑動)注意力之間的比例。
例如,Gemma 2 採用混合注意力機制,以 1:1 的比例結合了滑動窗口(局部)注意力和全局注意力。每個詞元可以關注其附近 4k 詞元的窗口。
Gemma 2 在每隔一層中使用滑動窗口注意力,而 Gemma 3 現在採用 5:1 的比例,這意味著每 5 個滑動窗口(局部)注意力層只有 1 個完整注意力層;此外,滑動窗口大小從 4096(Gemma 2)減少到僅 1024(Gemma 3)。這使得模型的重點轉向更高效的局部計算。
根據他們的消融研究,滑動窗口注意力對模型性能的影響微乎其微,如下圖所示。
圖 13:來自 Gemma 3 論文(https://arxiv.org/abs/2503.19786)的標註圖,顯示滑動窗口注意力對 LLM 生成輸出的困惑度幾乎沒有影響。
儘管滑動窗口注意力是 Gemma 3 最顯著的架構特點,但作者想在上一節 OLMo 2 的基礎上,簡要探討一下歸一化層的放置問題。
3.2 Gemma 3 中的歸一化層放置
一個雖小但有趣的細節是,Gemma 3 在其分組查詢注意力模組前後都使用了 RMSNorm,即同時採用了前歸一化 (Pre-Norm) 和後歸一化 (Post-Norm) 設定。
這與 Gemma 2 類似,但仍值得強調,因為它與(1)原始 Transformer(出自「Attention is all you need」)中使用的後歸一化、(2)GPT-2 普及並隨後在許多其他架構中使用的前歸一化,以及(3)我們之前看到的 OLMo 2 中的後歸一化變體有所不同。
圖 14:OLMo2 和 Gemma 3 的架構比較;請注意 Gemma 3 中額外的歸一化層。
作者認為這種歸一化層放置方法相對直觀,因為它兼顧了前歸一化和後歸一化的優點。在作者看來,多一點歸一化總沒壞處。最壞的情況下,如果多餘的歸一化是冗餘的,這只會導致一些效率低下。但在實際應用中,由於 RMSNorm 的計算成本相對較低,這應該不會產生任何明顯影響。
3.3 Gemma 3 總結
總之,Gemma 3 是一款性能優秀的開源 LLM,在作者看來,它在開源社群中多少被低估了。其最有趣的亮點在於利用滑動窗口注意力提升了效率(未來將其與 MoE 結合將會很有趣)。
此外,Gemma 3 獨具匠心地放置了歸一化層,在注意力模組和前饋模組的前後都設置了 RMSNorm 層。
3.4 Gemma 3n
在 Gemma 3 發布幾個月後,Google 發布了 Gemma 3n,這是一個經過優化以適應小型設備效率的 Gemma 3 模型,目標是在手機上執行。
Gemma 3n 實現更高效率的變化之一是所謂的「逐層嵌入參數層(Per-Layer Embedding, PLE)」。其核心思想是僅將模型參數的一個子集保留在 GPU 記憶體中。詞元-層特有的嵌入,例如文本、音訊和視覺模態的嵌入,則按需從 CPU 或固態硬碟(SSD)串流傳輸。
下圖展示了 PLE 的記憶體節省效果,列出了標準 Gemma 3 模型 54.4 億個參數。這很可能指的是 Gemma 3 的 40 億參數變體。
圖 15:來自 Google Gemma 3n 博客(https://developers.googleblog.com/en/introducing-gemma-3n/)的標註圖,說明了 PLE 記憶體節省情況。
54.4 億參數與 40 億參數之間的差異,是因為 Google 在報告 LLM 參數數量時採用了一種有趣的方式。他們通常會排除嵌入參數,以使模型看起來更小,除非在這種情況下,為了讓模型看起來更大而將其包含在內,這便顯得很方便。這種做法並非 Google 獨有,它已成為整個領域的普遍做法。
另一個有趣的技巧是 MatFormer 概念(Matryoshka Transformer 的縮寫)。例如,Gemma 3n 使用一個共享的 LLM(Transformer)架構,該架構可以切分成更小的、可獨立使用的模型。每個切片都經過訓練,可以獨立執行,因此在推論時,我們只需執行所需的部分(而不是整個大型模型)。
4. Mistral Small 3.1
Mistral Small 3.1 24B 於 3 月份,也就是 Gemma 3 發布後不久問世,值得關注的是它在多項基準測試(數學除外)上超越了 Gemma 3 27B,並且速度更快。
Mistral Small 3.1 推論延遲較低的原因可能在於其定制化的分詞器,以及對 KV 快取和層數的縮減。除此之外,它採用了標準的架構,如下圖所示。
圖 16:Gemma 3 27B 和 Mistral 3.1 Small 24B 的架構比較。
有趣的是,早期的 Mistral 模型曾利用滑動窗口注意力,但似乎在 Mistral Small 3.1 中放棄了這一技術。因此,由於 Mistral 使用常規的分組查詢注意力,而非 Gemma 3 中帶滑動窗口的分組查詢注意力,可能存在額外的推論計算節省,這得益於能夠使用更優化的程式碼(例如 FlashAttention)。例如,作者推測滑動窗口注意力雖然減少了記憶體使用,但不一定能降低推論延遲,而這正是 Mistral Small 3.1 所關注的重點。
5. Llama 4
本文前面關於專家混合 (MoE) 的詳細介紹再次派上用場。Llama 4 也採用了 MoE 方法,其他方面則遵循相對標準的架構,與 DeepSeek-V3 非常相似,如下圖所示。(Llama 4 包含原生多模態支援,類似於 Gemma 和 Mistral 等模型。然而,由於本文側重於語言建模,我們僅關注文本模型部分。)
圖 17:DeepSeek V3(6710 億參數)和 Llama 4 Maverick(4000 億參數)的架構比較。
雖然 Llama 4 Maverick 的整體架構與 DeepSeek-V3 非常相似,但仍有一些值得強調的有趣區別。
首先,Llama 4 類似其前輩,使用了分組查詢注意力 (GQA),而 DeepSeek-V3 則採用了我們在本文開頭討論過的多頭潛在注意力 (MLA)。目前,DeepSeek-V3 和 Llama 4 Maverick 都是非常龐大的架構,DeepSeek-V3 的總參數量比 Llama 4 Maverick 大約 68%。然而,DeepSeek-V3 擁有 370 億個活躍參數,是 Llama 4 Maverick(170 億)活躍參數的兩倍多。
Llama 4 Maverick 採用更經典的 MoE 設定,專家數量更少但規模更大(2 個活躍專家,每個隱藏層大小為 8192),而 DeepSeek-V3 則有 9 個活躍專家,每個隱藏層大小為 2048。此外,DeepSeek 在每個 Transformer 塊(除了前 3 個)中都使用 MoE 層,而 Llama 4 則在每隔一個 Transformer 塊中交替使用 MoE 和密集模組。
鑑於架構之間存在諸多細微差異,要準確判斷它們對最終模型性能的影響實屬不易。然而,主要結論是,專家混合(MoE)架構在 2025 年的受歡迎程度顯著提升。
6. Qwen3
通義千問(Qwen)團隊一直致力於提供高品質的開源 LLM。作者記得在 NeurIPS 2023 協助共同指導 LLM 效率挑戰賽時,所有最佳獲獎方案都基於 Qwen2。
現在,Qwen3 又是另一個熱門模型系列,在各自規模類別中名列排行榜前茅。它擁有 7 個稠密模型:0.6B、1.7B、4B、8B、14B 和 32B。此外,還有 2 個 MoE 模型:30B-A3B 和 235B-A22B。
(順便提一句,「Qwen3」中沒有空格並非打字錯誤;作者只是努力保留了通義千問開發者選擇的原始拼寫。)
6.1 Qwen3 (密集模型)
我們先來討論密集模型架構。撰寫本文時,0.6B 模型很可能是當前世代最小的開源模型。根據作者的個人經驗,它在如此小的尺寸下表現異常出色。如果您打算在本地執行它,它具有出色的每秒詞元吞吐量和較低的記憶體佔用。更重要的是,由於其小巧的尺寸,它也很容易在本地進行訓練(用於教育目的)。
因此,Qwen3 0.6B 在多數情況下已經取代了 Llama 3 1B。這兩種架構的比較如下圖所示。
圖 18:Qwen3 0.6B 和 Llama 3 1B 的架構比較;請注意 Qwen3 是一個更深層的架構,層數更多,而 Llama 3 是一個更寬的架構,注意力頭更多。
如果您對無需依賴外部第三方 LLM 庫的易讀 Qwen3 實現感興趣,作者最近從頭開始(純 PyTorch)實現了一個 Qwen3。
上圖中所示的計算性能數據是基於我在 A100 GPU 上執行的從零開始的 PyTorch 實現。可以看出,Qwen3 佔用記憶體更小,因為它整體架構更小,而且隱藏層和注意力頭也更少。然而,它比 Llama 3 使用了更多的 Transformer 塊,導致執行速度更慢(每秒詞元生成速度更低)。
6.2 Qwen3 (MoE)
如前所述,Qwen3 也提供了兩種 MoE 版本:30B-A3B 和 235B-A22B。為什麼有些架構,比如 Qwen3,會同時提供常規(密集)和 MoE(稀疏)版本呢?
正如本文開頭所述,MoE 變體有助於降低大型基礎模型的推論成本。提供密集和 MoE 兩種版本,可根據使用者的目標和限制提供靈活性。
密集模型通常更容易進行微調、部署和在各種硬體上進行最佳化。
另一方面,MoE 模型則針對大規模推論進行了最佳化。例如,在固定的推論預算下,它們可以實現更高的整體模型容量(即,由於模型更大,訓練期間可以吸收更多知識),而無需按比例增加推論成本。
透過發布這兩種類型,Qwen3 系列可以支援更廣泛的用例:密集模型適用於魯棒性、簡單性和微調,而 MoE 模型則適用於高效的大規模服務。
為了總結本節,我們來比較一下 DeepSeek-V3 和 Qwen3 235B-A22B(請注意,A22B 代表「220 億活躍參數」),前者活躍參數幾乎是後者的兩倍(370 億)。
圖 19:DeepSeek-V3 和 Qwen3 235B-A22B 的架構比較。
如上圖所示,DeepSeek-V3 和 Qwen3 235B-A22B 架構驚人地相似。然而,值得注意的是,Qwen3 模型放棄了共享專家的使用(早期的 Qwen 模型,例如 Qwen2.5-MoE 確實使用了共享專家)。
不幸的是,Qwen3 團隊並未透露他們放棄共享專家的原因。如果作者必須猜測,或許是當他們將專家數量從 2 個(Qwen2.5-MoE 中)增加到 8 個(Qwen3 中)時,對於其設定的訓練穩定性而言,共享專家根本沒有必要。於是,他們透過只使用 8 個而不是 8+1 個專家,節省了額外的計算/記憶體成本。(然而,這並不能解釋 DeepSeek-V3 為何仍保留共享專家。)
7. SmolLM3
SmolLM3 也許不如本文中提及的其他 LLM 那樣受歡迎,但作者認為它仍然是一個值得納入的有趣模型,因為它在相對較小的 30 億參數模型尺寸下提供了非常好的模型性能,其規模介於 17 億和 40 億參數的 Qwen3 模型之間,如下圖所示。
此外,它還分享了許多訓練細節,與 OLMo 類似,這實屬罕見且總是令人讚賞!
圖 20:SmolLM3 發布公告(https://huggingface.co/blog/smollm3)中比較 SmolLM3 勝率與 Qwen3 1.7B 和 4B 以及 Llama 3 3B 和 Gemma 3 4B 的標註圖。
如下圖所示的架構比較,SmolLM3 架構看起來相當標準。然而,它最有趣的方面或許是其使用了無位置嵌入(NoPE)。
圖 21:Qwen3 4B 和 SmolLM3 3B 的並排架構比較。
7.1 無位置嵌入 (NoPE)
在 LLM 應用中,無位置嵌入(NoPE)是一個較早提出的概念,可追溯到 2023 年的一篇論文(《位置編碼對 Transformer 中長度泛化能力的影響》),旨在移除顯式的位置資訊注入(例如透過早期 GPT 架構中的經典絕對位置嵌入層或現今的旋轉位置嵌入 RoPE)。
在基於 Transformer 的大型語言模型(LLM)中,位置編碼通常是必需的,因為自注意力機制獨立於詞元順序處理它們。絕對位置嵌入透過添加一個額外的嵌入層來為詞元嵌入添加資訊,從而解決了這個問題。
圖 22:摘自作者著作《從零構建大型語言模型》(https://www.amazon.com/Build-Large-Language-Model-Scratch/dp/1633437167)的修改圖,說明了絕對位置嵌入。
另一方面,RoPE 的解決方案是旋轉查詢和鍵向量,使其相對於詞元位置。
然而,在 NoPE(無位置嵌入)層中,根本不添加任何此類位置訊號:不固定,不學習,也不相對。什麼都沒有。
即使沒有位置嵌入,模型仍然知道哪些詞元在前面,這要歸功於因果注意力遮罩。該遮罩阻止每個詞元關注未來的詞元。因此,位置 t 的詞元只能看到位置小於等於 t 的詞元,這保留了自迴歸排序。
因此,儘管沒有明確添加位置資訊,但模型的結構中仍然隱含著方向感,LLM 在常規的基於梯度下降的訓練中,如果發現對最佳化目標有利,便能學會利用這種方向感。(更多資訊請查閱 NoPE 論文 中的定理。)
總的來說,NoPE 論文 不僅發現不需要注入位置資訊,還發現 NoPE 具有更好的長度泛化能力,這意味著隨著序列長度的增加,LLM 的回答性能下降較少,如下圖所示。
圖 23:來自 NoPE 論文(https://arxiv.org/abs/2305.19466)的標註圖,顯示 NoPE 具有更好的長度泛化能力。
請注意,上述實驗是使用大小約為 1 億參數的相對較小的 GPT 風格模型和相對較小的上下文大小進行的。這些發現能多大程度上推廣到更大的當代 LLM,目前尚不清楚。
因此,SmolLM3 團隊可能只是在每四個層中「應用」了 NoPE(或者說省略了 RoPE)。
8. Kimi 2
Kimi 2 最近在人工智慧社群引發了巨大轟動,因為它是一款性能卓越的開源模型。根據基準測試,它與 Google 的 Gemini、Anthropic 的 Claude 以及 OpenAI 的 ChatGPT 等頂級閉源模型不相上下。
一個顯著特點是它使用了相對較新的 Muon 最佳化器 的變體,而非 AdamW。據作者所知,這是 Muon 首次被用於如此規模的生產模型,此前它只被證明能擴展到 160 億參數(先前)。這使得訓練損失曲線表現出色,這可能會有助於將該模型推向前述基準測試的頂端。
雖然人們評論損失異常平滑(因為沒有尖峰),但作者認為它並非異常平滑(例如,參見下圖中 OLMo 2 的損失曲線;此外,梯度的 L2 範數可能更能衡量訓練穩定性)。然而,其損失曲線的衰減程度確實引人注目。
然而,正如本文引言中提到的,訓練方法學是另一個話題,留待以後討論。
該模型本身擁有 1 萬億參數,這確實令人印象深刻。
截至本文撰寫之時,它可能是這一代最大的 LLM(考慮到 Llama 4 Behemoth 尚未發布、閉源 LLM 不算在內,以及 Google 的 1.6 萬億參數 Switch Transformer 是另一代的編碼器-解碼器架構)。
Kimi 2 也算殊途同歸,它沿用了我們在本文開頭介紹的 DeepSeek-V3 架構,只是將其規模變得更大,如下圖所示。
圖 25:DeepSeek V3 和 Kimi K2 的架構比較。
如圖所示,Kimi 2 和 DeepSeek V3 基本相同,只是它在專家混合(MoE)模組中使用了更多的專家,而在多頭潛在注意力(MLA)模組中使用了更少的頭部。
Kimi 2 並非憑空出現。早期在 Kimik1.5:強化學習與 LLM 擴展 論文中討論的 Kimi 1.5 模型同樣令人印象深刻。然而,它不幸地與 DeepSeek R1 模型論文在同一天(1 月 22 日)發布。此外,據作者所知,Kimi 1.5 的權重從未公開分享過。
因此,Kimi K2 團隊很可能吸取了這些教訓,在 DeepSeek R2 發布之前,將 Kimi K2 作為開源模型分享出來。截至本文撰寫時,Kimi K2 是最令人印象深刻的開源模型。
如果你覺得這篇文章對你有幫助,別忘了點個讚、送個喜歡。
>/ 作者:致Great
>/ 作者:歡迎轉載,標註來源即可