先附上原始論文和效果對比https://arxiv.org/pdf/2412.19437
摘要 (Abstract)
DeepSeek-V3是DeepSeek-AI團隊推出的最新力作,一個強大的混合專家(Mixture-of-Experts,MoE)語言模型。它擁有671B的總參數量,但每個token僅激活37B參數,實現了效率和性能的平衡。DeepSeek-V3在架構上采用了多頭潛注意力(Multi-head Latent Attention, MLA)和DeepSeekMoE,并在訓練策略上進行了創新,引入了無輔助損失的負載均衡和多token預測目標。經過14.8萬億token的預訓練,以及監督微調和強化學習階段,DeepSeek-V3在多項評估中超越了其他開源模型,并在某些任務上達到了與領先閉源模型相媲美的水平。更令人印象深刻的是,DeepSeek-V3的訓練成本極低,整個訓練過程僅需2.788M H800 GPU小時,且訓練過程非常穩定。
1. 引言 (Introduction)
大型語言模型(LLMs)的發展日新月異,不斷縮小與通用人工智能(AGI)的差距。DeepSeek-V3的發布,進一步推動了開源模型的發展。它不僅在性能上表現出色,而且在訓練效率和成本控制方面也樹立了新的標桿。
本文將深入剖析DeepSeek-V3的各個方面,包括模型結構、預訓練、后訓練和推理部署,揭示其創新之處和實現邏輯。
2. 模型結構 (Architecture)
DeepSeek-V3的架構設計有兩大核心目標:
- 高效推理 (Efficient Inference): 通過多頭潛注意力(MLA)實現。
- 經濟訓練 (Economical Training): 通過DeepSeekMoE實現。
此外,DeepSeek-V3還引入了多token預測 (Multi-Token Prediction, MTP) 訓練目標,進一步提升模型性能。
2.1 多頭潛注意力 (Multi-Head Latent Attention, MLA)
MLA是DeepSeek-V2中首次提出的注意力機制,旨在減少推理過程中的KV緩存大小。其核心思想是對Key和Value進行低秩聯合壓縮。
MLA的計算過程如下:
-
Key和Value的壓縮:
- 計算潛向量:
cKV = WDKV * ht
(WDKV是降維矩陣,ht是輸入) - 計算壓縮后的Key:
[k1; k2; ...; knh] = k = WUK * cKV
- 計算解耦Key (用于RoPE):
k = ROPE(WKR * ht)
- 將壓縮后的Key和解耦Key拼接:
kt,i = [k; k]
- 計算壓縮后的Value:
[v1; v2; ...; vnh] = v = WUV * cKV
- 計算潛向量:
-
Query的壓縮(訓練時):
- 計算潛向量:
c = WDQ * ht
- 計算壓縮后的Query:
[q1; q2; ...; qnh] = q = WUQ * c
- 計算解耦Query (用于RoPE):
q = ROPE(WQR * c)
- 將解耦Query進行切分:
qt,i = [q; q]
- 計算潛向量:
-
注意力計算:
ot,i = Softmax( (qt,i * kTi) / sqrt(dh + d) ) * v
ut = W0 * [ot,1; ot,2; ...; ot,nh]
MLA的優勢:
- 減少KV緩存: 推理時只需緩存壓縮后的潛向量
cKV
和解耦Keyk
,大大減少了KV緩存的大小。 - 保持性能: 在減少KV緩存的同時,MLA能夠保持與標準多頭注意力(MHA)相當的性能。
2.2 DeepSeekMoE
DeepSeekMoE是DeepSeek團隊提出的一種MoE架構,相比于傳統的MoE架構(如GShard),它具有以下特點:
- 更細粒度的專家 (Finer-grained Experts): 每個專家負責處理更小的計算量。
- 共享專家 (Shared Experts): 部分專家被所有token共享,處理通用知識。
- 無輔助損失的負載均衡 (Auxiliary-Loss-Free Load Balancing): 避免了輔助損失對模型性能的負面影響。
DeepSeekMoE的計算過程如下:
-
FFN輸出:
h = ut + Σ FFN(s)(ut) + Σ git * FFN(r)(ut)
這里,FFN(s)
表示共享專家,FFN(r)
表示路由專家(routed experts),git
表示路由權重。 -
路由權重計算:
git = { sit , sit ∈ Topk({sj,t | 1 ≤ j ≤ Nr}, Kr); 0, otherwise
sit = Sigmoid( ut * ei )
其中:
* `Ns`: 共享專家數量
* `Nr`: 路由專家數量
* `Kr`: 每個token激活的路由專家數量
* `ei`: 第i個路由專家的中心向量
* `Topk`函數選擇親和度(affinity)最高的K個專家。
-
無輔助損失負載均衡: DeepSeek-V3使用了一種創新的無輔助損失負載均衡策略。它為每個專家引入一個偏置項
bi
,并將其添加到親和度得分sit
中,以確定top-K路由:s'i,t = { si,t + bi, si,t + bi ∈ Topk({sj,t + bj | 1 ≤ j ≤ Nr}, Kr); 0, otherwise }
在訓練過程,會動態調整每個專家偏置
b
,過載則減小,負載不足則增加。 -
補充序列級輔助損失: 為了防止單個序列內的極端不平衡,DeepSeek-V3還引入了一個非常小的序列級輔助損失。
DeepSeekMoE的優勢:
- 高效訓練: 更細粒度的專家和共享專家機制使得計算更高效。
- 更好的負載均衡: 無輔助損失的負載均衡策略避免了性能損失,同時實現了更好的負載均衡。
2.3 多token預測 (Multi-Token Prediction, MTP)
DeepSeek-V3采用了MTP訓練目標,這受到Gloeckle等人(2024)工作的啟發。MTP擴展了預測范圍,在每個位置預測多個未來的token。
MTP的實現:
-
MTP模塊: DeepSeek-V3使用了D個串行的MTP模塊來預測D個額外的token。每個MTP模塊包含:
- 共享的嵌入層(Shared Embedding Layer)
- 共享的輸出頭(Shared Output Head)
- Transformer塊
- 投影矩陣
-
計算過程: 對于第i個輸入token ti,在第k個預測深度:
- 組合表示:
h = Mk * [RMSNorm(h-1); RMSNorm(Emb(ti+k))]
- Transformer塊:
h:T-k = TRMk(h)
- 預測概率:
P = OutHead(h)
- 組合表示:
-
MTP訓練目標: 對于每個預測深度,計算交叉熵損失
LMTP
,最終的MTP損失是所有深度損失的加權平均。
MTP的優勢:
- 增強信號: MTP提供了更密集的訓練信號,有助于模型學習。
- 預規劃: MTP可能使模型能夠預先規劃其表示,以更好地預測未來的token。
- 推理加速: MTP可用于推測解碼,以提升推理速度。
3. 預訓練 (Pre-Training)
DeepSeek-V3的預訓練過程有以下幾個關鍵點:
- 數據 (Data): 使用了14.8T高質量、多樣化的token,并優化了數學和編程樣本的比例,擴展了多語言覆蓋。
- FIM (Fill-in-Middle): 采用了FIM策略,提高了模型處理上下文的能力。
- 超參數 (Hyper-Parameters): 采用了AdamW優化器,并使用了學習率調度和批大小調度策略。
- 穩定性 (Stability): 預訓練過程非常穩定,沒有出現不可恢復的損失峰值或回滾。
- 長上下文擴展: 采用兩階段上下文長度擴展,最終支持128K的上下文長度。
4. 后訓練 (Post-Training)
DeepSeek-V3的后訓練包括兩個階段:
-
監督微調 (Supervised Fine-Tuning, SFT):
- 數據: 使用了1.5M實例的多領域指令數據集。
- 推理數據生成: 采用了從DeepSeek-R1模型中蒸餾推理能力的方法。
- 非推理數據生成: 使用DeepSeek-V2.5生成響應,并由人工標注者進行驗證。
-
強化學習 (Reinforcement Learning, RL):
- 獎勵模型 (Reward Model, RM): 使用了基于規則的RM和基于模型的RM。
- 優化算法: 采用了Group Relative Policy Optimization (GRPO)算法。
5. 推理部署 (Inference and Deployment)
DeepSeek-V3的推理部署策略旨在同時保證在線服務的服務水平目標(SLO)和高吞吐量。
- 分離階段: 將推理過程分為預填充(Prefilling)和解碼(Decoding)兩個階段。
- 預填充:
- 采用4路張量并行(TP4)和8路數據并行(DP8)。
- MoE部分采用32路專家并行(EP32)。
- 使用冗余專家策略實現負載均衡。
- 同時處理兩個微批次,以提高吞吐量。
- 解碼:
- 采用TP4和DP80。
- MoE部分采用EP320。
- 使用直接點對點傳輸和IBGDA技術來減少延遲。
- 也采用冗余專家策略。
6. 創新點總結
DeepSeek-V3的創新點可以歸納為以下幾點:
- 架構創新:
- MLA: 減少推理時的KV緩存。
- DeepSeekMoE: 更細粒度的專家、共享專家和無輔助損失的負載均衡。
- MTP: 多token預測目標,增強訓練信號。
- 訓練創新:
- FP8訓練: 首次在超大規模模型上驗證了FP8訓練的可行性和有效性。
- DualPipe: 高效的流水線并行算法,實現了計算和通信的高度重疊。
- 跨節點All-to-All通信優化: 充分利用IB和NVLink帶寬,減少通信開銷。
- 內存優化: 通過重計算、CPU中的EMA、共享嵌入和輸出頭等技術,減少內存占用。
- 知識蒸餾: 從DeepSeek-R1中蒸餾長CoT(Chain-of-Thought)推理能力。
- 推理創新:
- 冗余專家: 動態調整專家部署,實現負載均衡。
- 分離階段: 將預填充和解碼分離,優化吞吐量和延遲。
7. 實驗結果 (Evaluation Results)
DeepSeek-V3在多個基準測試中都取得了優異的成績,包括:
- 知識: 在MMLU、MMLU-Pro、GPQA等教育基準測試中,DeepSeek-V3超越了所有其他開源模型,并接近領先的閉源模型。
- 代碼、數學和推理: 在數學和編碼基準測試中,DeepSeek-V3取得了SOTA性能。
- 長上下文: 在長上下文理解任務中,DeepSeek-V3表現出色。
- 中文能力: 在中文基準測試中,DeepSeek-V3表現出強大的競爭力。
- 開放式評估: 在Arena-Hard和AlpacaEval 2.0等開放式評估中,DeepSeek-V3也取得了優異的成績。
8. 局限性與未來方向
論文中承認DeepSeek-V3存在一些局限性,主要是在部署方面:
- 部署資源要求高: 為了保證高效推理,DeepSeek-V3的推薦部署單元較大。
- 推理速度仍有提升空間: 雖然推理速度已經比DeepSeek-V2快兩倍以上,但仍有優化潛力。
未來的研究方向包括:
- 進一步優化模型架構: 探索更高效的注意力機制和MoE架構。
- 數據擴展: 持續迭代訓練數據,并探索更多樣的訓練信號來源。
- 深度思考能力: 增強模型的推理能力和問題解決能力。
- 更全面的評估方法: 探索更全面、多維度的模型評估方法。