DeepSeek-V3技術報告
目錄
DeepSeek-V3技術報告
1. 摘要
2. 引言
3. DeepSeek V3 架構
3.1 基礎架構
3.1.1. 多頭潛在注意力
3.1.2. DeepSeekMoE和無輔助損失的負載均衡
3.2 多令牌預測
4. 基礎設施
4.1 計算集群
4.2 訓練框架
4.2.1. DualPipe算法與計算通信協同優化
4.2.2. 高效實現跨節點全到全通信
4.2.3. 以最小的開銷節省大量內存
4.3 FP8 訓練
4.3.1. 混合精度框架
4.3.2. 量化和乘法精度優化
4.3.3. 低精度存儲和通信
4.4 推理和部署
4.4.1. 預填充
4.4.2. 解碼
4.5 硬件設計的建議
4.5.1. 通信硬件
4.5.2.計算硬件
5. 預訓練
5.1 數據結構
5.2 超參數
5.3 長上下文擴展
5.4 評估
5.4.1. 評估基準
5.4.2. 評估結果
5.5 討論
5.5.1. 多令牌預測(MTP)策略的消融研究
5.5.2. 無輔助損失負載均衡策略的消融研究
5.5.3. Batch-Wise負載均衡與Sequence-Wise負載均衡?
6. 后訓練
6.1 監督微調(SFT)
6.2 強化學習(RL)
6.3 評估
6.3.1. 評估設置
6.3.2. 標準評估
6.3.3. 開放式評估
6.3.4. DeepSeek-V3作為生成獎勵模型
6.4 討論
6.4.1. DeepSeek-R1蒸餾
6.4.2. 自我獎勵
6.4.3. 多令牌(MTP)預測評估
7. 結論,局限和未來的工作
1. 摘要
DeepSeek-V3是一款強大的混合專家(Mixture-of-Experts, MoE)語言模型,總參數量為671B,每個Token激活37B參數。
為了實現高效的推理和成本效益高的訓練,DeepSeek-V3采用了多頭潛在注意力(Multi-head Latent Attention, MLA)和DeepSeekMoE混合專家模型架構,這些架構已經在DeepSeek-V2中得到了充分驗證。
此外還采用了兩個策略,DeepSeek-V3開創了無輔助損失的負載均衡策略(auxiliary-loss-free strategy),并設定了多Token預測訓練目標(Multi-Token Prediction, MTP)以增強性能。
DeepSeek-V3在14.8萬億高質量且多樣化的token上進行了預訓練,隨后經過監督微調(SFT)和強化學習(RL)階段,充分發揮了其能力。
全面評估表明,DeepSeek-V3在性能上超越了大部分開源模型,并達到了與領先閉源模型相當的水平。盡管性能卓越,DeepSeek-V3的完整訓練僅需2.788M H800 GPU小時。此外,其訓練過程非常穩定,整個訓練過程中沒有出現任何不可恢復的損失峰值,也未進行過任何回滾。
模型檢查點可在https://github.com/deepseek-ai/DeepSeek-V3獲取。
2. 引言
????????近年來,大語言模型經歷了快速迭代和演進,逐步縮小了與通用人工智能(AGI) 的差距。除了閉源模型外,開源模型也取得顯著進展,包括 DeepSeek 系列(MoE)、LLaMA 系列(Dense)、Qwen 系列(Dense)和 Mistral 系列(MoE),這些模型正在努力縮小與閉源模型之間的差距。為了進一步突破開源模型的能力邊界,研究團隊開發了 DeepSeek-V3,這是一個擁有67B參數的大規模專家混合(MoE)模型,其中每個Token激活37B參數。
????????基于提升性能和降低成本的雙重目標,在架構設計方面,DeepSeek-V3 采用了MLA來確保推理效率,并使用 DeepSeekMoE來實現經濟高效的訓練。這兩種架構在 DeepSeek-V2 中已經得到驗證,證實了它們能夠在保持模型性能的同時實現高效的訓練和推理。除了延續這些基礎架構外,研究團隊還引入了兩項創新策略來進一步提升模型性能。首先,DeepSeek-V3 首創了無輔助損失的負載均衡策略,有效降低了負載均衡對模型性能的負面影響。另外,DeepSeek-V3 采用了多 token 預測訓練目標MTP,這種方法在評估基準測試中展現出了顯著的性能提升。
????????為了提高訓練效率,該研究采用了FP8 混合精度訓練技術并對訓練框架進行了全面優化。低精度訓練作為一種高效的訓練方案,其發展與硬件性能的提升密切相關。本研究首次在超大規模模型上成功驗證了 FP8 混合精度訓練框架的有效性。通過采用 FP8 計算和存儲技術,顯著提升了訓練速度并降低了 GPU 內存占用。在訓練框架方面,研究團隊開發的 DualPipe 算法實現了高效的流水線并行處理,減少了流水線氣泡,并通過計算和通信并行處理的方式降低了訓練過程中的通信開銷。這種優化確保了即使在模型規模進一步擴大的情況下,只要維持適當的計算通信比例,就能在不同節點間實現細粒度專家分配,同時將全節點間的通信開銷降至接近于零。此外,研究團隊優化了跨節點的全節點通信內核,充分利用了 InfiniBand(IB) 和 NVLink 的帶寬性能。通過精細的內存優化,使得 DeepSeek-V3 的訓練無需依賴成本高昂的張量并行技術。
????????在預訓練過程中,我們在14.8T高質量和多樣化的 token 上訓練DeepSeek-V3。預訓練過程非常穩定。在整個訓練過程中,我們沒有遇到任何不可挽回的損失峰值或需要回滾的情況。接下來,我們對DeepSeek-V3進行兩個階段上下文長度擴展。在第一階段,最大上下文長度擴展到32K,在第二階段進一步擴展到128K。在此之后,我們在DeepSeek-V3的基礎模型上進行了后訓練,包括監督微調(SFT)和強化學習(RL),以使其與人類偏好保持一致,并進一步釋放其潛力。在后訓練階段,我們從DeepSeek-R1系列模型中提取推理能力,同時小心地保持模型精度和生成長度之間的平衡。
????????我們在一系列全面的基準上評估了DeepSeek-V3。盡管其訓練成本經濟,但綜合評估表明 DeepSeek-V3-Base 已成為目前最強大的開源基礎模型,特別是在代碼和數學方面。它的聊天版本也優于其他開源模型,并在一系列標準和開放式基準測試中實現了與領先的閉源模型(包括GPT-4o和Claude-3.5-Sonnet)相當的性能。
????????最后,我們再次強調DeepSeek-V3的經濟培訓成本,如表1所示,這是通過我們對算法、框架和硬件的優化協同設計實現的。在預訓練階段,在每萬億個令牌上訓練DeepSeek-V3僅需要180K H800 GPU小時,即在我們擁有2048個H800 GPU的集群上需要3.7天。因此,我們的預訓練階段在不到兩個月的時間內完成,花費2664K GPU小時。結合1用于上下文長度擴展的19K GPU小時和用于后訓練的5K GPU小時,DeepSeek-V3的完整訓練僅花費2.788M GPU小時。假設H800 GPU的租金為每小時2美元,我們的總培訓成本僅為5.576M美元。請注意,上述成本僅包括DeepSeek-V3的正式訓練,不包括前期對架構、算法或數據的研究和消融實驗相關的成本。?
我們的主要貢獻包括:
架構:創新的負載平衡策略和訓練目標
- 在DeepSeek-V2高效架構的基礎上,我們創新性提出了一種用于無輔助損失的負載均衡策略,最大限度地減少了因負載平衡而導致的性能下降。
- 我們研究了多令牌預測(MTP)訓練目標并證明它對模型性能有益。它還可以用于推測解碼以加速推理。
預訓練:邁向終極的訓練效率
- 我們設計了一個FP8混合精度訓練框架,并首次在超大規模模型上驗證了FP8訓練的可行性和有效性。
- 通過算法、框架和硬件的共同設計,我們克服了跨節點MoE訓練中的通信瓶頸,實現了近乎完全的計算與通信高度重疊。這顯著提高了我們的訓練效率,降低了訓練成本,使我們能夠在不增加額外成本的情況下進一步擴大模型規模。
- 我們僅以2.664M H800 GPU小時的經濟成本,在14.8T的 token 上完成了DeepSeek-V3的預訓練,生產處目前最強大的開源基礎模型。預訓練后的后續訓練階段僅需0.1M GPU小時。
后訓練:從DeepSeek-R1中蒸餾知識
- 我們引入了一種創新的方法,將思維鏈(CoT)模型(特別是DeepSeek R1系列模型)的推理能力遷移到標準 LLM中,特別是DeepSeek-V3。我們的管道將 R1的驗證和反思模式優雅地整合到DeepSeek-V3中,顯著提高了其推理性能。同時,我們還保持對DeepSeek-V3輸出風格和長度的控制。
核心評估結果總結
知識:(1)在MMLU、MMLU Pro和GPQA等教育基準測試中,DeepSeek-V3的表現優于所有其他開源模型,在MMLU上達到88.5,在MMLU-Pro上達到75.9,在GPQA上達到59.1。它的性能可與GPT-4o和Claude-Connect-3.5等領先的閉源模型相媲美,縮小了該領域開源和閉源模型之間的差距。(2) 對于真實性基準測試,DeepSeek-V3在SimpleQA和中文SimpleQA上的開源模型中表現出了卓越的性能。雖然它在英語事實知識(SimpleQA)方面落后于GPT-4o和Claude-Connect-3.5,但在漢語事實知識(Chinese SimpleQA)上超越了這些模型,突顯了它在漢語事實信息方面的優勢。
代碼、數學和推理:(1)DeepSeek-V3在所有非長期CoT開源和閉源模型中的數學相關基準測試中取得了最先進的性能。值得注意的是,它甚至在特定的基準測試(如MATH-500)上表現優于o1預覽版,展示了其強大的數學推理能力。(2)在編碼相關任務方面,DeepSeek-V3成為LiveCodeBench等編碼競爭基準測試中表現最佳的模型,鞏固了其作為該領域領先模型的地位。對于工程相關任務,雖然DeepSeek-V3的性能略低于Claude-Connect-3.5,但它仍然遠遠超過了所有其他模型,這表明了它在各種技術基準上的競爭力。
????????在本文的其余部分,我們首先詳細介紹DeepSeek-V3模型架構(第3節)。隨后,我們介紹我們的基礎設施,包括計算集群、訓練框架、FP8訓練支持、推理部署策略以及對未來硬件設計的建議(第4節)。接下來,我們描述預訓練過程,包括訓練數據構建、超參數設置、長上下文擴展技術、相關評估及討論(第5節)。然后,我們討論后訓練的努力,包括監督微調(SFT)、強化學習(RL)、相應的評估和討論(第6節)。最后,我們總結這項工作,討論DeepSeek-V3的現有局限性,并提出未來研究的潛在方向(第7節)。
3. DeepSeek V3 架構
????????我們首先介紹DeepSeek-V3的基本架構,其特點是由多頭潛在注意力(MLA) 實現高效推理和DeepSeekMoE 實現經濟訓練模型架構。然后,我們提出一個多令牌預測(MTP)訓練目標,我們觀察到這可以提高在評估基準上的整體性能。DeepSeek-V3整體遵循DeepSeek-V2的設計方案。
3.1 基礎架構
????????DeepSeek-V3的基本架構仍在Transformer框架內。為了高效推理和經濟訓練,DeepSeek-V3還采用了由DeepSeek-V2充分驗證過的MLA和DeepSeekMoE。與DeepSeek-V2相比,一個例外是我們為DeepSeekMoE引入了一種無輔助損失的負載平衡策略,以減輕確保負載平衡的努力而導致的性能下降。圖2展示了DeepSeek-V3的基本架構,本節我們將簡要回顧MLA和DeepSeekMoE的細節。
?
3.1.1. 多頭潛在注意力
????????DeepSeek-V3 在注意力機制方面采用了 MLA 架構。設向量維度為 d,注意力頭數為 ,每個頭的維度為
,
表示給定注意力層中第 t 個 token 的注意力輸入。MLA 的核心是,對注意力鍵和值進行低秩聯合壓縮,以減少推理過程中的鍵值(KV)緩存開銷:
其中 表示鍵值的壓縮潛在向量,
表示 KV 壓縮維度,
為維度下投影變換矩陣,
分別為鍵和值的維度上投影變換矩陣。
用于生成攜帶旋轉位置編碼(Rotary Positional Embedding, RoPE) 的解耦鍵矩陣;RoPE(·)表示旋轉位置編碼矩陣的應用操作;[·;·]表示向量連接操作。注意,對于MLA ,僅需在生成過程中緩存藍色方框內高亮標記的向量( 即
和
),這種設計顯著降低了 KV 緩存空間,同時保持了與標準多頭注意力相當的性能水平。?
????????對于注意力查詢部分,我們也進行了低秩壓縮,可以在訓練過程中有效減少激活內存占用:
其中 表示查詢的壓縮潛在向量,
表示查詢壓縮維度,
,
分別為查詢的維度降維和升維變換矩陣,
用于生成攜帶旋轉位置編碼的解耦查詢矩陣。
????????最終,將注意力查詢( )、鍵(
)和值(
)組合得到最終的注意力輸出
:
?其中為輸出維度變換矩陣。
?
3.1.2. DeepSeekMoE和無輔助損失的負載均衡
DeepSeekMoE的基本架構。對于前饋網絡(FFNs),DeepSeelk-V3使用DeepSeekMoE架構。與傳統的MoE架構如GShard 相比,DeepSeekMoE使
用更細粒度的專家,并將一些專家隔離為共享專家。令表示第t個標記的FFN輸入,我們計算FFN輸出
如下:
其中,和
分別表示共享專家和路由專家的數量;
和
分別表示第 i 位共享專家和第 i 位路由專家;
表示已激活的路由專家的數量;
是第 i 位專家的門控值;
是專家親和力的象征;
是第i個路由專家的質心向量;
表示在為第 K 個令牌和所有路由專家計算的親和度得分中,包含 K 最高得分的集合。與DeepSeek-V2略有不同,DeepSeek-V3使用 sigmoid 函數計算親和度分數,并在所有選定的親和度分數之間應用歸一化以產生門控值。
無輔助損失的負載均衡。對于MoE模型,不平衡的專家負載我將導致路由崩潰,并降低在具有專家并行性的場景中的計算效率。傳統解決方案通常依賴于輔助損失來避免負載不平衡。然而,過大的輔助損失會損害模型性能。為了在負載均衡和模型性能之間取得更好的權衡,我們開創了一種無輔助損失的負載均衡策略以確保負載均衡。具體來說,我們為每個專家引入一個偏置項并將其添加到相應的親和力得分
中以確定top-K路由:
請注意,偏置項僅用于路由。門控值,將乘以FFN輸出,仍然從原始親和力得分派生。在訓練期間,我們持續監控每個訓練步驟中整個批次的專家負載在每個步驟結束時,如果對應的專家負載過重,則將偏置項減少 𝛾;如果對應的專家負載不足,則增加 𝛾,其中 𝛾是一個稱為偏置更新速度的超參數。通過動態調整,DeepSeek-V3在訓練期間保持專家負載的平衡,并比通過純輔助損失鼓勵負載平衡的模型表現出更好的性能。
互補的序列級輔助損失。雖然 DeepSeek-V3 主要采用無輔助損失策略來實現負載均衡,但為了防止單個序列中出現顯著的負載不均衡現象,我們還引入了補充性的序列級平衡損失:
其中平衡因子是一個超參數,在 DeepSeek-V3 中被設置為極小值;
表示指示函數; T 代表序列中的 token 總數。這種序列級平衡損失機制有助于保持單個序列內專家負載的均衡性。?
?
節點限制路由。類似于 DeepSeek-V2 的設備限制路由策略,DeepSeek-V3 采用了受控路由機制來優化訓練過程中的通信開銷。簡而言之,我們限制每個 token 最多只能分配給 M 個計算節點,這些節點根據分布在每個節點上專家的最高個親和力得分之和選擇。在這種約束下,MoE 訓練框架能幾乎可以實現計算與通信的完全重疊并行處理。
無Token丟棄。由于有效的負載平衡策略,DeepSeek-V3 在整個訓練過程中都保持著良好的負載平衡狀態。因此,訓練過程中不存在 token 丟棄現象。此外,我們還實施了特定的部署策略,以確保推理負載均衡,因此DeepSeek-V3在推理期間也不丟棄token。
3.2 多令牌預測
????????受Gloeckle的啟發,我們研究并為DeepSeek-V3設置了一個多令牌預測(MTP)目標,這將預測范圍擴展到每個位置的多個未來token。一方面,MTP目標可以密集化訓練信號,并可能提高數據效率。另一方面,MTP可能使模型預先規劃其表示,以更好地預測未來的token。圖3說明了我們的MTP實現。不同于Gloeckle并行使用獨立輸出頭預測D個額外令牌,我們順序預測額外令牌,并在每個預測深度保持完整的因果鏈。我們在本節中介紹MTP實現的詳細信息。?
?
MTP模塊。具體來說,我們的MTP實現使用 D 個順序模塊來預測 D 個額外的令牌。
第 k個MTP模塊由一個共享向量層Emb(?)、一個共享輸出層 OutHead(?),一個 Transformer 塊 TRM(?) 和一個維度投影矩陣
組成。對于輸入序列中的第 i 個 token?,在第 k 層預測時,我們的模型首先將兩個向量進行組合:該 token 在第(k?1) 層的特征表示
和第(i+k) 個 token 的向量
,通過線性變換進行融合:
其中 [?;?] 表示向量拼接操作。特別是在 k=1時,代表主模型輸出的特征表示。值得注意的是,每個 MTP 模塊,其嵌入層都與主模型共享。經過組合的特征向量
作為第 k 層的 Transformer 處理單元的輸入,生成當前該層的輸出特征表示
:
其中 T 代表輸入序列的長度, i:j表示切片操作(包括左右邊界)。最后,以為輸入,共享輸出層將計算第 k 個預測 token 的概率分布
,其中 V 為詞匯表大小:
輸出層 OutHead(·) 首先通過線性變換將特征表示轉換為 logits,然后使用 Softmax(·) 函數計算第 k 個預測 token 的概率分布。同樣,每個MTP模塊的輸出層也與主模型共享。這種保持預測因果鏈的設計思路與 EAGLE 類似,但兩者目標不同:EAGLE 主要用于推測解碼,而本研究中的MTP主要用于優化訓練效果。
MTP訓練目標。對于每個預測層級,計算交叉熵損失:
其中,T 表示輸入序列長度, $$t_i$$代表第 i 個位置的目標 token, 表示第 k 個 MTP 模塊對
的預測概率。最終,我們計算所有層級 MTP 損失的平均值,并乘以權重系數
,得到總體 MTP 損失
,作為 DeepSeek-V3 的補充訓練目標:
推理階段的 MTP:我們的MTP策略主要是為了提高主模型的性能,因此在推理過程中,我們可以直接丟棄MTP模塊,主模型可以獨立正常運行。此外,我們還可以將這些MTP模塊重新用于推測解碼,以進一步改善生成延遲。
4. 基礎設施
4.1 計算集群
????????DeepSeek-V3在一個配備2048個 NVIDIA H800 GPU的集群上進行訓練。H800集群中的每個節點都包含8個GPU,通過節點內的NVLink和NVSwitch連接。不同節點之間使用InfiniBand(IB)互連以促進通信。
4.2 訓練框架
????????DeepSeek-V3的訓練由HAI-LLM框架支持,這是一個由我們的工程師從頭開始構建的高效輕量級的培訓框架。總體而言,DeepSeek-V3應用了16路流水線并行(PP),跨越8個節點的64路專家并行(EP)和ZeRO-1數據并行(DP)。
????????為了便于DeepSeek-V3的高效訓練,我們實施了細致的工程優化。首先,我們設計了DualPipe算法以實現高效的管道并行。與現有的PP方法相比,DualPipe 算法顯著減少了流水線氣泡現象。更重要的是,它在前向和后向過程中重疊了計算和通信階段,從而解決了跨節點專家并行性帶來的繁重通信開銷的挑戰。其次,我們開發了高效的跨節點全對全通信內核,以充分利用IB和NVLink帶寬,并節省專用于通信的流式多處理器(SMs)。最后,我們在訓練過程中精心優化了內存占用,從而使我們能夠在不使用昂貴的張量并行(TP)的情況下訓練DeepSeek-V3。
4.2.1. DualPipe算法與計算通信協同優化
????????對于DeepSeek-V3,跨節點專家并行性引入的通信開銷導致大致大約1:1得計算與通信比率效率低下。為了應對這一挑戰,我們設計了一種創新的管道并行算法稱為DualPipe,該算法不僅通過有效地重疊前向和反向計算通信階段來加速模型訓練,還減少了管道氣泡。
????????DualPipe的核心思想是在一對單獨的前向和反向塊內重疊計算和通信。具體來說,我們將每個塊分為四個模塊:注意力機制,全節點數據分發, MLP 處理,全節點數據整合。特別是對于反向計算塊,注意力和MLP進一步分為兩部分:輸入梯度計算和權重梯度計算,類似于ZeroBubble。此外,我們還有一個PP通信組件。如圖4所示,對于一對前向和反向塊,我們重新排列這些組件并手動調整專用于通信與計算并精確調控用于通信和計算的 GPU 流處理器資源分配比例,系統能夠在運行過程中有效隱藏全節點通信和 PP 通信開銷。
????????考慮到有效的重疊策略,完整的DualPipe調度如圖5所示。它采用創新的雙向管道調度策略,同時從流水線兩端輸入微批次數據,并且大部分通信過程能夠與計算過程完全重疊。這種設計確保了即使在模型規模進一步擴大的情況下,只要我們保持恒定的計算通信比率,我們仍然可以在節點間使用細粒度的專家分配,同時將全節點通信開銷降至接近于零。?
????????此外,即使在沒有沉重通信負擔的更一般場景中,DualPipe仍表現出效率優勢。我們總結了不同PP方法的管道氣泡和內存使用情況。如表2所示,與ZB1P 和1F1B相比,DualPipe顯著減少了管道氣泡,同時僅將峰值激活記憶增加了1倍。盡管DualPipe需要保留兩份模型參數,但這不會顯著增加內存消耗,因為我們訓練時使用較大的EP大小。與Chimera相比,DualPipe僅要求管道階段和微批次可被2整除,而不要求微批次必須被管道階段整除。此外,對于DualPipe算法,無論是氣泡還是激活內存都不會隨著微批次數量的增加而增加。?
?
4.2.2. 高效實現跨節點全到全通信
????????為了確保DualPipe有足夠的計算性能,我們定制了高效的跨節點全到全通信內核(包括調度和組合),以節省專用于通信的SMs數量。內核的實現與MoE門控算法和集群網絡拓撲共同設計。具體來說,在我們的集群中,跨節點GPU通過IB完全互連,節點內通信通過NVLink處理。NVLink提供160 GB/s的帶寬,大約是IB(50 GB/s)的3.2倍。為了有效地利用IB和NVLink的不同帶寬,我們將每個令牌最多分配給4個節點,從而減少IB流量。對于每個令牌,當做出路由決定時,它將首先通過IB傳輸到目標節點上具有相同節點索引的GPU。一旦到達目標節點,我們將努力確保它即時通過NVLink轉發到托管其目標專家的特定GPU,而不會被隨后到達的令牌阻塞。這樣,通過IB和NVLink的通信完全重疊,每個令牌可以高效地選擇每個節點平均3.2名專家,而不會產生額外的NVLink開銷。這意味著,雖然DeepSeek-V3實際上只選擇了8個路由專家,但它可以將這個數字擴展到最多13個專家(4個節點×3.2個專家/節點),同時保持相同的通信成本。總體而言,在這種通信策略下,只有20個SM足以充分利用IB和NVLink的帶寬。
????????詳細地說,我們采用了warp specialization技術,將20個SM劃分為10個通信信道。在調度過程中,(1)IB發送,(2)IB到NVLink轉發,以及(3)NVLink接收分別由各自的warp處理。分配給每個通信任務的wrap數量,根據所有SM的實際工作負載動態調整。同樣,在組合過程中,(1)NVLink發送,(2)NVLink到IB的轉發和累積,以及(3)IB接收和累積也由動態調整的warp處理。此外,調度和組合內核都與計算流重疊,因此我們還考慮了它們對其他SM計算內核的影響。具體來說,我們采用定制的PTX(并行線程執行)指令并自動調整通信塊大小,這顯著減少了L2緩存的使用和對其他SM的干擾。
4.2.3. 以最小的開銷節省大量內存
為了減少訓練過程中的內存占用,我們采用了以下技術:
- RMSNorm和MLA上投影的重新計算。我們在反向傳播過程中重新計算所有RMSNorm操作和MLA上投影,從而消除了持續存儲其輸出激活的需要。通過較小的開銷,該策略顯著降低了存儲激活的內存需求。
- CPU中的指數移動平均。在訓練過程中,我們保留了模型參數的指數移動平均(EMA),以提前估計學習率衰減后的模型性能。EMA參數存儲在CPU內存中,并在每個訓練步驟后異步更新。這種方法允許我們在不會產生額外的內存或時間開銷的情況下維護EMA參數。
- MTP的共享嵌入和輸出頭。采用 DualPipe 策略,我們將模型的最淺層(包括嵌入層)和最深層(包括輸出頭)部署在相同的 PP等級上。這種布置使得MTP模塊和主模型之間能夠物理共享參數和梯度,進一步提高了我們的內存效率。
?
4.3 FP8 訓練
????????受低精度訓練最新進展的啟發,我們提出了一種利用FP8數據格式訓練DeepSeek-V3的細粒度混合精度框架。雖然低精度訓練有很大的希望,但它往往受到激活、權重和梯度中異常值的限制。盡管在推理量化方面取得了重大進展,但很少有研究證明低精度技術在大規模語言模型預訓練中的成功應用。為了應對這一挑戰并有效地擴展FP8格式的動態范圍,我們引入了一種細粒度量化策略:使用元素的分塊分組,或使用
元素的分塊分組。在我們提高精度的累積過程中,相關的去量化開銷大大減輕,這是實現精確FP8通用矩陣乘法(GEMM)的關鍵方面。此外,為了進一步減少MoE訓練中的內存和通信開銷,我們在FP8中緩存和調度激活,同時在BF16中存儲低精度優化器狀態。我們在兩個與DeepSeek-V2-Lite和DeepSeek-V2相似的模型規模上驗證了所提出的FP8混合精度框架,訓練了大約 1T token。值得注意的是,與BF16基線相比,我們的FP8訓練模型的相對損失誤差始終保持在0.25%以下,這一水平完全在訓練隨機性的可接受范圍內。
?
4.3.1. 混合精度框架
????????基于已有廣泛采用的低精度訓練技術的基礎上,我們設計了專門用于 FP8 訓練混合精度框架。在此框架中,大多數計算密集型操作以 FP8 執行,而關鍵操作則保持原有數據格式,以實現訓練效率和數值穩定性的最優平衡。整體框架結構如圖6所示。
????????首先,為提高模型訓練速度,大部分核心計算操作,即GEMM 運算,均采用 FP8 精度實現。這些 GEMM 運算接收 FP8 格式的張量輸入,輸出 BF16 或 FP32 格式的結果。如圖6所示,線性運算相關的三個 GEMM 操作,包括 Fprop(前向傳播)、Dgrad(激活反向傳播)和 Wgrad(權重反向傳播),均采用 FP8 執行。這種設計策略理論上將計算速度提升至原有 BF16 方法的兩倍。此外,FP8 格式的 Wgrad GEMM 使得激活值能夠以 FP8 格式存儲,用于反向傳播,從而顯著降低了內存消耗。
????????雖然 FP8 格式在效率方面具有優勢,但某些運算由于對計算精度較為敏感,仍需要更高精度的支持。另外,部分計算開銷較小的運算可以采用更高精度而不會顯著影響整體訓練效率。因此,經過仔細研究,我們對以下模塊保持原有精度(BF16 或 FP32):嵌入層、輸出層、MoE 門控模塊、歸一化運算和注意力運算模塊。這種針對性的高精度保留策略確保了 DeepSeek-V3 訓練過程的動態穩定性。為進一步保證數值計算的穩定性,主要權重參數、權重梯度和優化器狀態均采用更高精度存儲。盡管這些高精度組件會帶來一定的內存開銷,但可以通過在分布式訓練系統中跨多個DP等級高效分片來最小化其影響。
?
4.3.2. 量化和乘法精度優化
????????基于我們的混合精度FP8框架,我們介紹了幾種提高低精度訓練精度的策略,重點介紹了量化方法和乘法過程。
細粒度量化
????????在低精度訓練框架中,由于FP8格式的動態范圍有限,溢出和欠流是常見的挑戰,而FP8格式受到其縮減指數位的限制。作為標準做法,通過將輸入張量的最大絕對值縮放到FP8的最大可表示值,將輸入分布與FP8格式的可表示范圍對齊。這種方法使低精度訓練對激活異常值高度敏感,這會嚴重降低量化精度。為了解決這個問題,我們提出了一種細粒度量化方法,該方法在更細粒度的級別上應用縮放。如圖7(a)所示:
(1)對于激活,我們在 1x128 圖塊為基礎對元素進行分組和縮放(即每個token對應每 128 個通道);
(2)對于權重,我們在 128x128 塊為基礎對元素進行分組和縮放(即每 128 個輸入通道對應每 128 個輸出通道)。
????????這種方法通過根據較小的元素組調整尺度,確保量化過程能夠更好地適應異常值。在附錄B.2中,我們進一步討論了當我們以與權重量化相同的方式在塊的基礎上對激活進行分組和縮放時的訓練不穩定性。
????????我們方法中的一個關鍵修改是沿GEMM操作的內部維度引入每組縮放因子。標準FP8 GEMM不直接支持此功能。然而,結合我們精確的FP32累積策略,它可以有效地實施。
????????值得注意的是,我們的細粒度量化策略與微尺度格式的理念高度一致,而NVIDIA下一代GPU(Blackwell系列)的Tensor內核已經宣布支持具有較小量化粒度的微尺度格式。我們希望我們的設計可以作為未來工作的參考,以跟上最新GPU架構的步伐。
增加累積精度
????????低精度GEMM操作經常遇到下溢問題,其準確性在很大程度上取決于高精度累積,這通常在FP32精度下進行。然而,我們觀察到,FP8 GEMM在NVIDIA H800 GPU上的累積精度僅限于保留約14位,遠低于FP32的累積精度。當內部維度K較大時,這個問題將變得更加明顯,這是大規模模型訓練中批量大小和模型寬度增加的典型場景。以兩個隨機矩陣的GEMM運算,K=4096為例,在我們的初步測試中,Tensor Cores中有限的累積精度導致最大相對誤差接近2%。盡管存在這些問題,有限的累積精度仍然是少數FP8框架的默認選項,嚴重限制了訓練精度。
????????為了解決這個問題,我們采取了推廣CUDA Cores以提高精度的策略。該過程如圖7(b)所示。具體來說,在Tensor Cores上執行MMA(矩陣乘法累加)期間,使用有限的位寬累加中間結果。一旦達到的間隔,這些部分結果將被復制到CUDA Cores上的FP32寄存器,在那里進行全精度FP32累積。如前所述,我們的細粒度量化沿著內部維度K應用每組縮放因子。這些縮放因子可以在CUDA Cores上有效地相乘,作為去量化過程,額外的計算成本最小。
????????值得注意的是,此修改降低了單個戰組的WGMMA(戰組級矩陣乘累加)指令發布率。然而,在H800架構上,兩個WGMMA同時存在是很典型的:當一個戰組執行升級操作時,另一個能夠執行MMA操作。這種設計實現了兩個操作的重疊,保持了Tensor核心的高利用率。根據我們的實驗,設置? =128個元素,相當于4個WGMMA,代表了可以在不引入大量開銷的情況下顯著提高精度的最小累積間隔。
尾數超過指數
????????與之前工作采用的混合FP8格式不同,該格式在Fprop中使用E4M3(4位指數和3位尾數),在Dgrad和Wgrad中使用E5M2(5位指數和2位尾數)。我們在所有張量上采用E4M3格式以獲得更高的精度。我們將這種方法的可行性歸因于我們的細粒度量化策略,即分片和分塊縮放。通過對較小的元素組進行操作,我們的方法在這些分組的元素之間有效地共享指數位,減輕了有限動態范圍的影響。
在線量化
????????延遲量化用于張量量化框架中,該框架維護了先前迭代中最大絕對值的歷史來推斷當前值。為了確保準確的比例并簡化框架,我們在線計算每個1x128激活圖塊或128x128權重塊的最大絕對值。基于此,我們推導出縮放因子,然后將激活或權重在線量化為FP8格式。
?????????
4.3.3. 低精度存儲和通信
????????結合我們的FP8訓練框架,我們通過將緩存的激活和優化器狀態壓縮為較低精度的格式,進一步減少了內存消耗和通信開銷。
低精度優化器狀態。
????????我們采用BF16數據格式而不是FP32來跟蹤AdamW優化器中的第一和第二時刻,而不會導致可觀察到的性能下降。然而,主權重(由優化器存儲)和梯度(用于批量累積)仍保留在FP32中,以確保整個訓練過程中的數值穩定性。
低精度激活。
????????如圖6所示,Wgrad操作在FP8中執行。為了減少內存消耗,自然選擇以FP8格式緩存激活,以便線性運算符反向傳遞。然而,對于低成本高精度培訓,需要特別考慮幾個操作:
(1) 注意力運算的線性輸入。這些激活也用于注意力運算的反向傳遞,這使得它對精度很敏感。我們采用專門針對這些激活的定制E5M6數據格式。此外,這些激活將在反向傳播過程中從1x128量化塊轉換為128x1塊。為了避免引入額外的量化誤差,所有縮放因子都是四舍五入的,即2的整數冪。
(2) MoE中SwiGLU運算符的輸入。為了進一步降低內存成本,我們緩存SwiGLU運算符的輸入,并在反向傳播過程中重新計算其輸出。這些激活也通過我們的細粒度量化方法存儲在FP8中,在內存效率和計算精度之間取得了平衡。
低精度通信。
????????通信帶寬是MoE模型訓練的關鍵瓶頸。為了緩解這一挑戰,我們將MoE向上投影之前的激活量化為FP8,然后應用調度組件,該組件與MoE向上來投影中的FP8 Fprop兼容。與注意力運算后的線性輸入一樣,此激活的縮放因子是2的整數次冪。在MoE向下投影之前,對激活梯度應用了類似的策略。考慮到訓練精度的重要性,前向和反向傳播中的組合運算環節都保持 BF16 格式,以確保訓練管道關鍵環節的計算精度。
?
4.4 推理和部署
????????我們將DeepSeek-V3部署在H800集群上,其中每個節點內的GPU通過NVVLink互連,整個集群的所有GPU通過IB完全互連。為了同時確保在線服務的服務級別目標(SLO)和高吞吐量,我們采用了以下部署策略,分離預填充和解碼階段。
4.4.1. 預填充
????????預填充階段的最小部署單元由4個節點組成,共有32個GPU。attention部分采用4路張量并行(TP4)結合序列并行(SP),再加上8路數據并行(DP8)。其小規模的TP大小限制了TP通信的開銷。對于MoE部分,我們使用32路專家并行(EP32),確保每個專家處理足夠大的批量,從而提高計算效率。對于MoE的全連接通信,我們使用與訓練相同的方法:首先通過IB跨節點傳輸token,然后通過NVLink在節點內部的GPU間轉發。特別是,我們對淺層的密集MLP使用1路張量并行以節省TP通信。
????????為了在MoE部分的不同專家之間實現負載均衡,我們需要確保每個GPU處理大約相同數量的token。為此,我們引入了冗余專家的部署策略,復制高負載專家并冗余部署。高負載專家基于在線部署期間收集的統計信息檢測,并定期調整(例如每10分鐘一次)。確定冗余專家集后,我們根據觀察到的負載仔細重新安排節點內GPU上的專家,盡量在不增加跨節點全連接通信開銷的情況下平衡GPU之間的負載。對于DeepSeek-V3的部署,我們在預填充階段設置了32個冗余專家。對于每個GPU,除了原本托管的8個專家外,還將托管一個額外的冗余專家。
????????此外,在預填充階段,為了提高吞吐量并隱藏全連接和TP通信音的開銷,我們同時處理兩個具有相似計算工作量的微批次,使一個微批次的attention和MoE與另一個微批次的dispatch和combine重疊。
????????最后,我們正在探索一種動態冗余策略,每個GPU托管更多專家(例如16個專家),但在每次推理步驟中只激活9個。在每一層的全連接操作開始之前,我們實時計算全局最優路由方案。鑒于預填充階段涉及大量計算,計算此路由方案的開銷幾乎可可以忽略不計。
4.4.2. 解碼
????????在解碼過程中,我們將共享專家視為路由專家。從這個角度來看,每個Token在路由時會選擇9個專家,其中共享專家被視為一個重載專家,總是會被選擇。解碼階段的最小部署單元由40個節點組成,配備320個GPU。attention部分采用TP4與SP結合,加上DP80,而MoE部分使用EP320。對于MoE部分,每個GPU僅托管一個專家,64個GPU負責托管冗余專家和共享專家。dispatch和combine部分的所有對所有通信通過IB直接點對點什轉輸以實現低延遲。此外,我們利用IBGDA技術進一步減少延遲并提高通信效率。
????????類似于預填充,我們定期根據在線服務的統計專家負載確定一定間隔內的冗余專家集。然而,由于每個GPU僅托管一個專家,因此無需重新安排專家。我們還在探索解碼的動態冗余策略。然而,這需要更仔細地優化計算全局最優路由方案的算法,并將dispatch內核融合以減少開銷。
????????此外,為了提高吞吐量并隱藏所有對所有通信的開銷,我們還正在探索同時處理兩個具有相似計算工作量的微批次。與預填充不同,attention在解碼階段占用更多時間。因此,我們將一個微批次的attention與另一個微批次的dispatch+MOE+combine重疊。在解碼階段,每個專家的批量大小相對較小(通常在256個token以內),瓶頸是內存訪問而非計算。由于MoE部分只需加載一個專家的參數,內存訪問開銷很小,因此使用較少的SM不會顯著影響整體性能。因此,為了避免影響attention部分的計算算速度,我們可以只分配一小部分SM給dispatch+MoE+combine。
?
4.5 硬件設計的建議
????????基于我們對全對全通信和FP8訓練方案的實踐經驗,我們向AI硬件供應商提出以下芯片設計建議。
4.5.1. 通信硬件
在DeepSeek-V3中,我們實現了計算與通信的重疊,以在計算過程中隱藏通信延遲。這大大減少了與串行計算和通信相比對通信帶寬的依賴。然而,當前的的通信實現依賴于昂貴的SM(例如,在H800 GPU可用的132個SM中,我們分配了20個用于此目的),這將限制計算吞吐量。此外,使用SM進行通信會導致顯著的效率低下,因為Tensor Cores完全未得到充分利用。
目前,SM主要為所有對所有通信執行以下任務:
- 在IB(InfiniBand)和NVLink域之間轉發數據,同時聚合來自單個GPU的目的地為同一節點內多個GPU的IB流量。
- 在RDMA緩沖區(注冊的GPU內存區域)和輸入/輸出緩沖區之間傳輸數據。
- 執行reduce操作用于all-to-all combine。
- 在分塊數據傳輸期間管理細粒度內存布局,以跨IB和NVLink域向多個專家傳輸數據。
我們希望未來供應商開發能夠將這些通信任務從寶貴的計算單元SM中卸載,充當GPU協處理器或網絡協處理器的的硬件。此外,為了減少應用程序編程復雜性,我們希望這種硬件能夠統一IB(擴展)和NVLink(擴展)網絡,使計算單元可以通過提交基于簡單原語的通信請求輕松完成在整個IB-NVLink統一域中的讀取、寫入、組播和reduce等操作。
4.5.2.計算硬件
Tensor內核中FP8 GEMM累積精度更高。在當前NVIDIA Hopper架構的Tensor Core實現中,FP8 GEMM(通用矩陣乘法)采用定點累積,根據最大指數右移對齊尾數乘積后進行加法。我們的實驗表明,它只使用每次尾數乘積最高14位的符號填充右移后的結果,并截斷超出此范圍的位。然而,例如,要從32個FP8xFP8乘法的累積中獲得精確的的FP32結果,至少需要34位精度。因此,我們建議未來的芯片設計增加Tensor Core中的累積精度,以支持全精度累積,或者根據訓練和推理算法的精度要求選擇適當的累積位寬。這種方法確保誤差保持在可接受范圍內,同時保持計算效率。
支持分片和分塊量化。當前的GPU僅支持每張量量化,缺乏對我們分片和分塊量化的本地支持。在當前實現中,當達到間隔時,部分結果將從Tensor Core復制到CUDA Core,乘以縮放因子,并添加到CUDA Core上的FP32寄存器。雖然結合我們精確角的FP32累積策略顯著減輕了去量化開銷,但Tensor Core和CUDA Core之間的頻繁數據移動仍然限制了計算效率。因此,我們建議未來的芯片支持細粒度量化,使Tensor Core能夠接收縮放收因子并實現帶組縮放的MMA。這樣,整個部分和累積和去量化可以直接在Tensor Core中完成,直到產生最終結果,避免頻繁的數據移動。
在線量化提供支持。當前的實現難以有效支持在線量化,盡管我們的研究已證明其有效性。在現有過程中,我們需要從HBM(高帶寬內存)讀取128個BEF16激活值(前一次計算的輸出)以進行量化,并將量化的FP8值寫回HBM,然后再次讀取用于MMA。為解決這一效率問題,我們建議未來的芯片將FP8轉換和TMA(張量內存加速器)訪問整合為單一融合操作,從而在將激活從全局內存傳輸到共享內存的過程中完成量化,避免費預繁的內存讀寫。我們還建議支持warp級別的轉換指令以加速,這進一步促進了層歸一化和FP8轉換的更好子融合。或者,可以采用近內存計算方法,即將計算邏輯放置在接近HBM的位置。在這種情況下,BF16元素可以直接在從HBM讀入GPU時轉換為FP8,減少大約50%的片外小內存訪問。
對轉置GEMM操作的支持。當前架構使得將矩陣轉置與GEMM操作融合變得繁瑣。在我們的工作流程中,前向傳播期間的激活被量化為1x128 FP8塊并存儲。在反向傳播期間,需要讀出矩陣,去量化,轉置,重新量化為128x1塊,并存儲在HBM中。為了減少內存操作,我們建議未來的芯片在MMA操作之前啟用直接從共享內存讀取矩陣的轉置,對于訓練和推理所需的精度。結合FP8格式轉換和TMA訪問的融合,此增強將顯著簡化量化工作流。
?
5. 預訓練
5.1 數據結構
????????與DeepSeek-V2相比,我們通過提高數學和編程樣本的比例來優化預訓練語料庫,不僅限于英語和中文。此外,我們的數據處理管道經過改進,以盡量減少冗余的同時保持語料庫多樣性。受啟發,我們實現了文檔打包方法以確保數據完整性,但在訓練過程中沒有引入跨樣本注意力掩碼。最后,DeepSeek-V3的訓練語料庫由14.8T高質量和多樣化的token組成。
????????在DeepSeekCoder-V2的訓練過程中,我們觀察到Fill-in-Middle(FIM)策略不會損害下一個token預測能力,同時使模型能夠根據上下文線索準確預測中間文本。為了與DeepSeekCoder-V2保持一致,我們在DeepSeek-V3的預訓練中還納入了FIM策略。具體來說,我們采用Prefix-Suffix-Middle(PSM)框架來結構化數據,如下所示:
????????這種結構在文檔級別應用于預打包過程。FIM策略的應用率為0.1,與PSM框架一致。
????????DeepSeek-V3的分詞器采用Byte-BPE(BBPE),詞匯表擴展至128K個token。我們對預分詞器和訓練數據進行了修改,以優化多語言壓縮效率。此外,與DeepSeek-V2相比,新的預分詞器引入了結合標點和換行的標記。然而,當模型處理沒有終端換行符的多行提示時,特別是對于少樣本評估提示,可能會引入token邊界偏差。為了解決這個問題,我們在訓練過程中隨機拆分一定比例的這種組合token,從而這使模型接觸到更廣泛的特殊情況,減輕這種偏差。
5.2 超參數
模型超參數。我們將Transformer層的數量設置為61,隱藏維度設置為7168。所有可學習的參數均用標準差為0.006的隨機初始化。在MLA中,我們將注意力頭的數量設置為128,每個頭的維度
設置為128。KV壓縮維度
設置為512,查詢壓縮維度
設置為1536。對于解耦的查詢和鍵,我們將每個頭維度
設置為64。我們用MoE層替換除前三層之外的所有FFN層。每個MoE層由1個共享專家和256個路由專家組成,其中每個專家的中間隱藏維度為2048。在路由的專家中,每個令牌將激活8個專家,并且每個令牌將確保發送到最多4個節點。多令牌預測深度 D 設置為1,即除了精確的下一個令牌外,每個令牌還將預測一個額外的令牌。與DeepSeek-V2一樣,DeepSeek-V3也在壓縮潛在向量之后使用了額外的RMSNorm層,并在寬度瓶頸處乘以額外的縮放因子。在此配置下,DeepSeek-V3包括671B個總參數,其中37B參數為每個令牌激活。
訓練超參數。我們使用AdamW優化器,將超參數設置為𝛽1=0.9,𝛽2=0.95,并且weight_decay=0.1。我們在預訓練期間將最大序列長度設置為4K,并在14.8T令牌上預訓練DeepSeek-V3。對于學習率調度,我們首先在前2K個步驟中將其線性增加從0到2.2×10?4。然后,我們保持 的恒定學習率,直到模型消耗10T的訓練 token。隨后,我們按照余弦衰減曲線,在4.3T token中將學習率逐漸衰減到
。在最后500B個token的訓練過程中,我們在前333B個token中保持
的恒定學習率,并在剩余的167B個token中將學習率切換到另一個恒定學習率
。梯度剪裁范數設置為1.0。我們采用批量大小調度策略,在前469B個token的訓練中,批量大小從3072逐漸增加到15360,然后在剩余的訓練中保持15360。我們利用管道并行性將模型的不同層部署到不同的GPU上,并且對于每一層,路由專家將在屬于8個節點的64個GPU上均勻部署。對于節點限制路由,每個token 最多將發送到4個節點(即𝑀=4)。對于無輔助損失負載平衡,我們將前14.3T token 的偏置更新速度𝛾設置為0.001,并在剩余500B token的偏差更新速度設為0.0。對于平衡損失,我們將𝛼設置為0.0001,以避免任何單個序列內的極端不平衡。MTP損失權重𝜆對于前10T token設置為0.3,對于剩余的4.8T token設置為0.1。
5.3 長上下文擴展
???????DeepSeek-V3 采用與 DeepSeek-V2 相似的方法實現長上下文處理能力。在預訓練完成后,我們使用 YaRN 進行上下文擴展,并執行兩個額外的訓練階段,每個階段包含 1000 步,逐步將上下文窗口從 4K 擴展至 32K, 然后再擴展至128K。系統沿用了 DeepSeek-V2 的 YaRN 配置,僅將其應用于解耦的共享鍵 。兩個階段的超參數設置保持相同,包括比例 s = 40, α=1 , β = 32,以及縮放因子
。在第一階段,序列長度設置為 32K,批量大小為 1920。在第二階段,序列長度增加至 128K,相應地將批量大小調整為 480。兩個階段的學習率都設置為
,與預訓練階段的最最終學習率匹配。
????????通過這種兩階段擴展訓練,DeepSeek-V3能夠處理長達128K的輸入,同時保持強大的性能。圖8 所示,經過監督微調后,DeepSeek-V3 在“Needle In A Haystack”(NIAH)測試中取得了顯著的性能,證明了在高達128K的上下文窗口長度上的持續穩健性。
?
5.4 評估
5.4.1. 評估基準
????????DeepSeek-V3的基礎模型是在以英語和中文為主的多語言語料庫上進行預訓練的,因此我們主要在英語和中文的一系列基準以及多語言基準上評估其性能。我們的評估基于我們集成在HAI-LLM框架中的內部評估框架。考慮的基準分類如下,其中下劃線基準為中文,雙下劃線基準為多語言基準:
- 多學科多項選擇題數據集包括MMLU、MMLURedux、MMLU Pro、MMMLU、C-Eval和CMMLU。
- 語言理解和推理數據集包括HellaSwag、PIQA、ARC和BigBench Hard(BBH)。
- 閉式問答數據集包括TriviaQA和NaturalQuestions。
- 閱讀理解數據集包括RACE、DROP、C3和CMRC。
- 參考消歧數據集包括CLUEWSC和WinoGrande。
- 語言建模數據集包括Pile。
- 中國理解和文化數據集包括CCPM。
- 數學數據集包括GSM8K、Math、MGSM和CMath。
- 代碼數據集包括HumanEval、LiveCodeBench Base(0801-1101)、MBPP和CRUXEval。
????????標準化檢查包括AGIEval。請注意,AGIEval包括英文和中文子集。根據我們之前的工作(DeepSeek AI),我們對HellaSwag、PIQA、WinoGrande、RACE Middle、RACE High、MMLU、MMLU Redux、MMLU Pro、MMMLU、ARC Easy、ARC Challenge、c-Eval、CMMLU、C3和CCPM等數據集采用基于困惑度的評估,并對TriviaQA、NaturalQuestions、DROP、MATH、GSM8K、MGSM、HumanEval、MBPP、LiveCodeBench Base、CRUXEval、BBH、AGIEval、CLUEWSC、CMRC和CMath采用基于生成的評估。此外,我們對Pile-test進行了基于語言建模的評估,并使用每字節比特數(BPB)作為指標,以確保使用不同標記器的模型之間的公平比較。
?
5.4.2. 評估結果
????????在表3中,我們將DeepSeek-V3的基礎模型與最先進的開源基礎模型進行了比較,包括DeepSeek-V2-base(我們之前的版本)、Qwen2.5 72B base和LLaMA-3.1 405B base。我們使用內部評估框架評估所有這些模型,并確保它們共享相同的評估設置。請注意,由于過去幾個月我們的評估框架發生了變化,DeepSeek-V2-Base的性能與我們之前報告的結果略有不同。總體而言,DeepSeek-V3-Base在大多數基準測試中全面優于DeepSeek-V2-Base和Qwen2.5 72B Base,并超過LLaMA-3.1 405B Base,基本上成為最強大的開源模型。
????????從更詳細的角度來看,我們將DeepSeek-V3-Base與其他開源基礎模型進行了單獨比較。(1) 與DeepSeek-V2-Base相比,由于我們模型架構的改進、模型大小和訓練令牌的擴展以及數據質量的提高,DeepSeek-V3-Base的性能明顯優于預期。(2) 與最先進的中國開源模型Qwen2.5 72B Base相比,DeepSeek-V3-Base也顯示出顯著的優勢,特別是在英語、多語言、代碼和數學基準測試方面。至于中國基準測試,除了中國多學科多項選擇任務CMMLU外,DeepSeek-V3-Base的表現也優于Qwen2.5 72B。(3) 與最大的開源模型LLaMA-3.1 405B Base相比,DeepSeek-V3-Base在多語言、代碼和數學基準測試方面也表現出更好的性能。對于英語和漢語基準測試,DeepSeek-V3-Base顯示出有競爭力或更好的性能,尤其在BBH、MMLU系列、DROP、C-Eval、CMMLU和CCPM上表現出色。
????????由于我們高效的架構和全面的工程優化,DeepSeek-V3實現了極高的訓練效率。在我們的訓練框架和基礎設施下,訓練DeepSeek-V3每個萬億token僅需180K H800 GPU小時,這比訓練72B或405B密集模型便宜得多。
5.5 討論
5.5.1. 多令牌預測(MTP)策略的消融研究
表4,顯示了MTP策略的消融結果。具體來說,我們在不同尺度的兩個基線模型上驗證了MTP策略。在小規模上,我們訓練了一個基線MoE模型,該模型在1.33T token上包含15.7B個總參數。在大規模上,我們訓練了一個基線MoE模型,該模型在540B token上包含228.7B個總參數。在它們之上,保持訓練數據和其他架構不變,我們在其上添加了一個深度為1的MTP模塊,并用MTP策略訓練兩個模型進行比較。請注意,在推理過程中,我們直接丟棄了MTP模塊,因此比較模型的推理成本完全相同。從表中可以看出,MTP 策略在大多數評估基準上持續提高了模型性能。
5.5.2. 無輔助損失負載均衡策略的消融研究
表5,顯示了無輔助損失負載均衡策略的消融結果。我們在不同尺度的兩個基線模型上驗證了這一策略。在小規模上,我們訓練了一個基線MoE模型,該模型在1.33T token上包含15.7B個總參數。在大規模上,我們訓練了一個基線MoE模型,該模型在578B個 token上包含228.7B個總參數。這兩個基線模型都純粹使用無輔助損失負載均衡策略來促進負載均衡,并使用帶有 top-K 親和度歸一化的sigmoid門控函數。它們控制輔助損失強度的超參數分別與DeepSeek-V2-Lite和DeepSeek-V2相同。在這兩個基線模型之上,保持訓練數據和其他架構不變的情況下,我們刪除了所有輔助損失并引入了無輔助損失負載均衡策略進行比較。從表中我們可以觀察到,無輔助損失負載均衡策略在大多數評估基準上始終取得了更好的模型性能。
5.5.3. Batch-Wise負載均衡與Sequence-Wise負載均衡?
????????輔助損失自由平衡與序列式輔助損失之間的關鍵區別在于它們的平衡范圍:批次級與序列級相比于序列式的輔助損失,批次級的平衡施加了更靈活的約束,因為它并不強制每個序列內的領域平衡。這種靈活性使專家能夠更好地專注于不同的領域。為了驗證這一點,我們在Pile測試集的不同領域中記錄并分析了一個基于16B輔助損失的基線和一個16B輔助損失自由模型的專家負載。如圖9所示,我們觀察到,輔助損失自由模型確實表現出更強的專家專業化模式。
????????為了進一步研究這種靈活性與模型性能優勢之間的相關性,我我們還設計并驗證了一種批處理級別的輔助損失,它鼓勵在每個訓練批次上進行負載均衡,而不是在每個序列上。實驗結果表明,在實現相似的批處理級別負載均衡時,批處理級別的輔助損失也可以達到與輔助損失自由方法相似的模型性能。具體來說,在我們的1BMoE模型實驗中,驗證損失分別為:使用序列式輔助損失為2.258,使用輔助損失自由方法為2.253,使用批處理級別輔助損失為2.253。我們也在3B MoE模型上觀察到了類似的結果:使用序列式輔助損失的模型驗證損失為2.085,而使用輔助損失自由方法或批處理級別輔助損失的模型驗證損失均為2.080。
????????此外,盡管批處理級別的負載均衡方法顯示出一致的性能優勢,但它們也面臨兩個潛在的效率挑戰:(1)某些序列或小批次內的負載不均衡,(2)推理過過程中由于領域轉移引起的負載不均衡。第一個挑戰通過我們使用大規模專家并行性和數據并行性的訓練框架自然得到解決,這保證了每個微批次的較大規模。對于第二個挑戰,我們還設計并實現了一個高效的推理框架、采用冗余專家部署,如第3.4節所述,以克服這一問題。
?
?
6. 后訓練
6.1 監督微調(SFT)
我們整理了指令微調數據集,包含多個領域的150 萬個實例,每個領域采用了特定的數據創建方法。
推理數據: 在數學、代碼競賽和邏輯謎題等推理類任務中,系統采用內部 DeepSeek-R1 模型生成數據。雖然 R1 生成的數據具有較高的準確性,但同時存在過度思考、格式不規范和輸出過長等問題。因此,研究的核心目標是在保持 R1 模型高準確性的同時,實現輸出的清晰簡潔。
????????為了建立我們的方法論,我們首先為特定領域(如代碼、數學或一般推理)開發一個專家模型,使用結合監督微調(SFT)和強化學習(RL)的訓練管道。這這個專家模型作為最終模型的數據生成器。訓練過程涉及為每個實例生成兩種不同類型的SFT樣本:第一種將問題與其原始回答配對,格式為<問題,原始回答>;第二種則結合系統提示、問題和R1回答,格式為<系統提示,問題,R1回答>。
????????系統提示經過精心設計,包含引導模型生成帶有反思和驗證機制別的響應的指令。在RL階段,模型利用高溫采樣生成集成R1生成和原始數據模式的響應,即使沒有顯式系統提示。經過數百次RL步驟后,中間的RL模型學會了融入R1模式,從而戰我略性地提升整體性能。
????????完成RL訓練階段后,我們實施拒絕采樣以精選高質量的SFT數據供最終模型使用,其中專家模型作為數據生成源。這種方法確保最終訓練數據保留DeepSeek-R1的優勢,同時生成簡明有效的響應。
非推理數據:對于非推理數據,對于創意寫作、角色扮演和基礎問答,我們利用 DeepSeek-V2.5 生成響應,并通過人工標注員驗證數據的準確性和正確性。
SFT 訓練設置:我們使用SFT數據集對DeepSeek-V3-Base進行兩次迭代的微調,采用從開始逐漸減少到
$余弦衰減學習率調度。在訓練期間,每個單序列由多個樣本打包而成。然而,我們采用樣本掩碼策略以確保這些示例保持獨立且互不可見。
?
6.2 強化學習(RL)
- 獎勵模型設計
我們在強化學習過程中,系統同時采用規則型和模型型兩種獎勵模型(Reward Model, RM)。
基于規則的RM。對于可以使用特定規則驗證的問題,我們采用基于規則的獎勵系統來確定反饋。例如,某些數學問題有確定的結果,我們要求模型在指定格式(如方框內)提供最終答案,以便我們應用規則驗證其正確性。同樣,對于LeetCode問題,我們可以使用編譯器根據測試用例生成反饋。通過盡可能利用基于規則的驗證,我們確保更高的可靠性,因為這種方法不易受到操縱或利用。
基于模型的RM。對于具有自由形式真實答案的問題,我們依賴獎勵模型來確定響應是否與預期的真實答案匹配。相反,對于沒有明確真實答案的問題,例如涉及創意寫作的問題,獎勵模型的任務是根據問題和相應的答案作為輸入提供反饋。獎勵模型從DeepSeek-V3 SFT檢查點進行訓練。為了增強其可靠性,我們構建了偏好數據,這些數據不僅提供了最終的獎勵,還包括導致獎勵的思考鏈。這種方法有助于減輕特定任務中獎勵勤欺騙的風險。
-
群組相對策略優化(GRPO)
系統采用與 DeepSeek-V2 相似的GRPO方法。這種方法放棄了通常與策略模型大小相同的批評模型,并從組分數中估計基線。具體實現中,對每個問題q,GRPO 從原策略模型中采樣一組輸出
,然后通過最大化以下目標函數來優化策略模型
:
其中𝜀和𝛽是超參數; 是參考模型;
是優勢,來源于與每個組內的產出相對應的獎勵
:?
在強化學習過程中,我們整合了來自不同領域的提示,如編碼、數學、寫作、角色扮演和問答。這種方法不僅使模型更符合人類偏好,而且提高了基準測試的性能,特別是在可用SFT數據有限的情況下。
6.3 評估
6.3.1. 評估設置
評估基準。除了用于基礎模型測試的基準外,我們還進一步評估了IFEval、FRAMES、LongBench v2、GPQA、SimpleQA、C-SimpleQA、SWE-Bench Verified 、Aider 、LiveCodeBench (2024年83月至11月的問題)、Codeforces、中國全國高中數學奧林匹克競賽和美國邀請數學考試2024上評估指令模型。
比較基線。我們根據幾個強基線對我們的聊天模型進行了全面評估,包括DeepSeek-V2-0506、DeepSeek-V2.5-0905、Qwen2.5 72B指令、LLaMA-3.1 405B指令、Claude-Connect 3.5-1022和GPT-4o-0513。對于DeepSeek-V2型號系列,我們選擇最具代表性的變體進行比較。對于閉源模型,評估是通過其各自的API進行的。
詳細評估配置。對于包括MMLU、DROP、GPQA和SimpleQA在內的標準基準測試,我們采用簡單evals框架4中的評估提示。我們在零樣本設置中使用MMLU-Redux的零值提示格式。對于其他數據集,我們遵循其原始評估協議,并使用數據集創建者提供的默認提示。對于代碼和數學基準測試,HumanEval-Mul數據集總共包括8種主流編程語言(Python、Java、Cpp、C#、JavaScript、TypeScript、PHP和Bash)。我們使用CoT和非CoT方法來評估LiveCodeBench上的模型性能,數據收集于2024年8月至2024年11月。Codeforces數據集是使用競爭對手的百分比來衡量的。使用無代理框架對驗證的SWE Bench進行評估。我們使用“diff”格式來評估Aider相關的基準。對于數學評估,AIME和CNMO 2024在0.7的溫度下進行評估,結果在16次運行中取平均值,而MATH-500采用貪婪解碼。我們允許所有模型為每個基準輸出最多8192個令牌。
?
6.3.2. 標準評估
表6顯示了評估結果,顯示DeepSeek-V3是性能最好的開源模型。此外,它與GPT-4o和Claude-3.5-Sonnet等前沿閉源模型具有競爭力。
英語基準。
????????MMLU是一個被廣泛認可的基準,旨在評估大型語言模型在不同知識領域和任務中的性能。DeepSeek-V3表現出了有競爭力的性能,與LLaMA-3.1-405B、GPT-4o和Claude Sonnet 3.5等頂級機型不相上下,同時明顯優于Qwen2.5 72B。此外,DeepSeek-V3在MMLU Pro上表現出色,MMLU Pro是一個更具挑戰性的教育知識基準,與Claude Sonnet 3.5非常接近。在MMLU Redux上,DeepSeek-V3超越了同行,這是MMLU的改進版本,標簽已更正。此外,在博士級評估測試平臺GPQA Diamond上,DeepSeek-V3取得了顯著成績,排名僅次于Claude 3.5 Sonnet,遠遠超過了所有其他競爭對手。
????????在DROP、LongBench v2和FRAMES等長上下文理解基準測試中,DeepSeek-V3繼續證明其作為頂級模型的地位。它在DROP的3-shot設置中獲得了令人印象深刻的91.6 F1分數,超過了該類別中的所有其他型號。在FRAMES上,一個需要回答超過10萬個令牌上下文的基準測試,DeepSeek-V3緊隨GPT-4o之后,同時以顯著的優勢超越了所有其他模型。這展示了DeepSeek-V3在處理超長上下文任務方面的強大能力。DeepSeek-V3的長上下文功能通過其在LongBench v2上的一流性能得到了進一步驗證,LongBench v2是DeepSeek V3發布前幾周發布的數據集。在事實知識基準SimpleQA上,DeepSeek-V3落后于GPT-4o和Claude Sonnet,主要是由于其設計重點和資源分配。DeepSeek-V3分配了更多的訓練令牌來學習中文知識,從而在C-SimpleQA上取得了出色的表現。在遵循指令的基準測試中,DeepSeek-V3的表現明顯優于其前身DeepSeek-V2系列,突顯了其理解和遵守用戶定義格式約束的能力得到了提高。
編程和數學基準。
????????對于LLM來說,編程是一項具有挑戰性和實用性的任務,包括以工程為重點的任務,如SWE Bench Verified和Aider,以及算法任務,如HumanEval和LiveCodeBench。在工程任務中,DeepSeek-V3落后于Claude-Connect-3.5-1022,但明顯優于開源模型。開源的DeepSeek-V3有望促進編碼相關工程任務的進步。通過提供對其強大功能的訪問,DeepSeek-V3可以推動軟件工程和算法開發等領域的創新和改進,使開發人員和研究人員能夠突破開源模型在編碼任務中可以實現的界限。在算法任務中,DeepSeek-V3表現出卓越的性能,在HumanEval-Mul和LiveCodeBench等基準測試中表現優于所有基線。這一成功可以歸因于其先進的知識提取技術,該技術有效地增強了其在以算法為中心的任務中的代碼生成和問題解決能力。
????????在數學基準測試中,DeepSeek-V3表現出了卓越的性能,大大超過了基線,為非o1類模型設定了新的最先進水平。具體來說,在AIME、MATH-500和CNMO 2024上,DeepSeek-V3的絕對得分比第二好的模型Qwen2.5 72B高出約10%,這對于這些具有挑戰性的基準測試來說是一個相當大的差距。這種非凡的能力突顯了DeepSeek-R1蒸餾技術的有效性,該技術已被證明對非o1型模型非常有益。
中文基準。
????????Qwen和DeepSeek是兩個具有代表性的模型系列,對中文和英文都有強大的支持。在事實基準中文SimpleQA上,DeepSeek-V3比Qwen2.5-72B高出16.4分,盡管Qwen2.5是在一個包含18T令牌的更大語料庫上訓練的,比DeepSeek-V3預訓練的14.8T令牌多20%。
????????在中國教育知識評估的代表性基準C-Eval和CLUEWSC(中文Winograd Schema Challenge)上,DeepSeek-V3和Qwen2.5-72B表現出相似的性能水平,表明這兩個模型都很好地針對具有挑戰性的中文推理和教育任務進行了優化。
?
6.3.3. 開放式評估
????????除了標準基準測試外,我們還使用LLM作為評判標準,對開放式生成任務的模型進行評估,結果如表7所示。具體來說,我們堅持AlpacaEval 2.0和Arena Hard的原始配置,它們利用GPT-4-Turbo-1106作為成對比較的判斷標準。在Arena Hard上,DeepSeek-V3在GPT-4-0314的基礎上取得了超過86%的勝率,與Claude-Connect 3.5-1022等頂級機型的表現不相上下。這突顯了DeepSeek-V3的強大功能,特別是在處理復雜的提示方面,包括編碼和調試任務。此外,DeepSeek-V3取得了突破性的里程碑,成為第一個在Arena Hard基準測試中超過85%的開源模型。這一成就顯著彌合了開源和閉源模型之間的性能差距,為開源模型在具有挑戰性的領域中可以實現的目標設定了新的標準。
????????同樣,DeepSeek-V3在AlpacaEval 2.0上表現出色,表現優于閉源和開源模型。這表明它在寫作任務和處理直截了當的問答場景方面表現出色。值得注意的是,它以20%的顯著優勢超過了DeepSeek-V2.5-0905,突出了在處理簡單任務方面的實質性改進,并展示了其進步的有效性。
6.3.4. DeepSeek-V3作為生成獎勵模型
????????我們將DeepSeek-V3的判斷能力與最先進的模型GPT-4o和Claude-3.5進行了比較。表8顯示了RewardBench中這些模型的性能。DeepSeek-V3的性能可與GPT-4o-0806和Claude-3.5-Sonnet-1022的最佳版本相媲美,同時超越了其他版本。此外,DeepSeek-V3的判斷能力也可以通過投票技術得到增強。因此,我們使用DeepSeek-V3和投票來對開放式問題提供自我反饋,從而提高了對齊過程的有效性和穩健性。?
?
6.4 討論
6.4.1. DeepSeek-R1蒸餾
????????我們基于DeepSeek-V2.5對從DeepSeek-R1蒸餾的貢獻進行了消融分析。基線模型是在短CoT數據上訓練的,而其競爭對手使用上述專家檢查點生成的數據。
????????表9展示了蒸餾數據的有效性,顯示LiveCodeBench和MATH-500基準測試都有顯著改進。我們的實驗揭示了一個有趣的權衡:蒸餾可以帶來更好的性能,但也大大增加了平均響應長度。為了在模型精度和計算效率之間保持平衡,我們仔細選擇了蒸餾中DeepSeek-V3的最佳設置。
????????我們的研究表明,從推理模型中提取知識為訓練后優化提供了一個有前景的方向。雖然我們目前的工作重點是從數學和編碼領域提取數據,但這種方法在各種任務領域顯示出更廣泛的應用潛力。在這些特定領域證明的有效性表明,長CoT蒸餾對于提高其他需要復雜推理的認知任務中的模型性能可能很有價值。在不同領域進一步探索這種方法仍然是未來研究的重要方向。
6.4.2. 自我獎勵
????????獎勵在強化學習中起著關鍵作用,指導優化過程。在通過外部工具進行驗證很簡單的領域,例如一些編碼或數學場景,強化學習RL表現出了非凡的功效。然而,在更一般的情況下,通過硬編碼構建反饋機制是不切實際的。在DeepSeek-V3的開發過程中,針對這些更廣泛的上下文,我們采用了憲法AI方法,利用DeepSeek-V3本身的投票評估結果作為反饋源。該方法產生了顯著的對齊效果,顯著提高了DeepSeek-V3在主觀評價中的性能。通過整合額外的憲法輸入,DeepSeek-V3可以朝著憲法方向進行優化。我們認為,這種將補充信息與LLMs相結合作為反饋來源的范式至關重要。LLM是一個多功能處理器,能夠將來自不同場景的非結構化信息轉化為獎勵,最終促進LLM的自我改進。除了自我獎勵,我們還致力于發現其他通用和可擴展的獎勵方法,以在一般場景中持續提高模型能力。
6.4.3. 多令牌(MTP)預測評估
????????DeepSeek-V3不是只預測下一個令牌,而是通過MTP技術預測接下來的2個令牌。結合推測解碼框架,可以顯著加快模型的解碼速度。一個自然的問題是關于額外預測令牌的接受率。根據我們的評估,第二個token預測的接受率在各種代主題中在85%到90%之間,證明了一致的可靠性。這種高接受率使DeepSeek-V3能夠顯著提高解碼速度,提供1.8倍的TPS(每秒token數)。
7. 結論,局限和未來的工作
????????本研究介紹了 DeepSeek-V3 大規模混合專家語言模型,該模型總參數量達到 671B,每次處理激活 37B 參數,訓練數據規模達 14.8T token。
????????模型在延續 MLA 和 DeepSeekMoE 架構優勢的基礎上,創新性地提出了無輔助損失負載均衡策略,并引入多 token 預測訓練目標以提升性能。
????????通過采用 FP8 訓練技術和精細的工程優化,模型實現了高效的訓練過程。后訓練階段,成功將 DeepSeek-R1 系列模型的推理能力遷移至新模型。
????????綜合評估表明,DeepSeek-V3 不僅成為當前性能最強的開源模型,其性能可與GPT-4o 和 Claude-3.5-Sonnet 等領先閉源模型相媲美。同時,模型維持了極具經濟的訓練成本,整個訓練過程只需 2.788M H800 GPU 小時,包括預訓練、上下文長度擴展和后訓練。
????????盡管模型在性能和訓練效率上表現出色,但仍存在一些局限性,特別是在部署方面。首先,為保證高效推理,模型的推薦部署單元規模較大,可能超出小型團隊的資源負擔;其次,盡管DeepSeek-V3的部署策略實現了端到端的生成速度,是DeepSeek-V2的兩倍多,但仍有優化空間。幸運的是,這些局限性有望隨著硬件技術的進步得到自然解決。
????????DeepSeek 將繼續堅持開源路線,秉持長期發展理念,穩步推進通用人工智能(AGI)的研究。未來研究將重點關注以下方向:
- 持續研究和優化模型架構,提升訓練和推理效率,探索支持無限上下文長度的高效方案。同時突破 Transformer 架構的固有局限,拓展模型建模能力邊界。
- 深化訓練數據的質量提升和規模擴展,探索新的訓練信號來源,實現數據在多個維度的全面擴展。
- 加強模型的深層推理能力,通過擴展推理的廣度和深度,提升模型的智能水平和解決問題能力。
- 建立更全面的多維度評估體系,避免過度優化特定基準測試集而產生的能力誤判,確保模型評估的科學性和全面性。