DeepSeek-V3技術報告解讀
介紹了一個強大的混合專家(MoE)語言模型DeepSeek-V3,它具有總計671億個參數和每個tokens啟動的37億個。為了實現高效的推理和成本效益的訓練,DeepSeek-V3採用了Multi-head Latent Attention (MLA) 和 DeepSeekMoE 架構,這些架構在DeepSeek-V2中得到了徹底驗證。此外,DeepSeek-V3開創了一種無輔助損失的負載平衡策略,並為更強性能設定了多tokens預測訓練目標。我們在14.8兆個多樣且高品質的tokens上預訓練了DeepSeek-V3,然後進行監督微調和強化學習階段以充分挖掘其能力。全面評估表明,DeepSeek-V3優於其他開源模型,並達到與領先閉源模型相當的性能。儘管表現出色,但DeepSeek-V3僅需2.788M H800 GPU小時即可完成全量訓練。此外,它的訓練過程非常穩定。在整個訓練過程中,我們沒有遇到任何不可恢復的損失峰值或回滾操作。
主要解決了在大規模語言模型領域提升性能、降低成本、最佳化訓練和推理效率以及增強多領域任務處理能力等核心問題
論文中雖未明確以傳統形式提出科學假說,但在模型研發過程中蘊含了如下關鍵假設:
無輔助損失負載平衡策略 假設假設採用無輔助損失的負載平衡策略能夠有效解決混合專家(MoE)模型中專家負載不均衡問題,且相較於傳統依賴輔助損失的方法,可在不損害模型性能的前提下實現更好的負載平衡,避免因負載失衡導致的計算效率降低和性能下降。 通過在不同規模模型上對比基於輔助損失和無輔助損失的負載平衡方法,實驗結果顯示無輔助損失策略在多數評估基準測試中表現更優,有力地支援了這一假設,表明該策略能有效提升模型性能。 多tokens預測提升性能 假定設定多tokens預測(MTP)訓練目標可增強模型對未來多個tokens的預測能力,從而提升模型在各類任務上的整體性能,並能應用於推測解碼以加速推理過程,提高生成效率。 論文通過在不同規模模型上加入 MTP 模組並進行訓練和對比實驗,發現 MTP 策略在多數評估基準上顯著增強了模型性能,驗證了此假設的合理性,證明其對模型性能提升的積極作用。 架構與訓練方法協同有效 推測多頭潛在注意力(MLA)、DeepSeekMoE 架構以及 FP8 混合精度訓練等方法相互相容且協同作用,能夠在大規模模型訓練中實現高效訓練和出色性能表現,共同推動模型能力提升。 文中展示的模型訓練穩定性、較低的訓練成本以及在多個領域基準測試中的優異成績,從側面支援了這些架構和訓練方法相容性與有效性的假設,表明它們能有效提升模型的綜合能力。 論文中提及了以下相關研究:
模型架構方面 :- 基於 Transformer 框架的研究,如 Vaswani 等人提出的原始 Transformer 架構,為 DeepSeek-V3 的基礎架構提供了重要參考,在此基礎上 DeepSeek-V3 採用了 Multi - head Latent Attention (MLA) 和 DeepSeekMoE 等架構進行改進和創新。 對混合專家(MoE)架構的研究,如 GShard(Lepikhin 等人)的工作,DeepSeek-V3 的 DeepSeekMoE 架構在其基礎上進行了最佳化,採用更精細的專家設定和獨特的負載平衡策略,與傳統 MoE 架構形成對比和發展。 訓練方法方面 :低精度訓練的相關研究,包括 Dettmers 等人、Kalamkar 等人、Narang 等人的工作,這些研究為 DeepSeek-V3 的 FP8 混合精度訓練框架提供了背景和基礎,論文在此基礎上針對大規模語言模型訓練的特點進行了改進和創新,如採用細粒度量化、提高積累精度等策略。 流水線平行(“Pipeline Parallelism” (pdf) ,PP)、專家平行(“Expert Parallelism” (pdf) ,EP)和資料平行(“Data Parallelism” (pdf) ,DP)等平行訓練方法的研究,如 Qi 等人、Rajbhandari 等人的相關工作,DeepSeek-V3 綜合應用了 16 路 Pipeline Parallelism (PP)、64 路 Expert Parallelism (EP) 和 ZeRO - 1 Data Parallelism (DP),並通過 DualPipe 演算法等對流水線平行進行最佳化,借鑑了前人在平行訓練方面的經驗和成果。 - 資料處理方面 : 關於文字資料編碼的研究,如 Byte - level BPE(Shibata 等人),DeepSeek-V3 的 tokenizer 採用了類似的方法並進行了擴展和最佳化,以適應多語言和提高壓縮效率等需求。 資料增強和預處理方法的研究,如 Ding 等人的文件打包方法,論文受其啟發在資料建構中採用了類似思路,並對可能出現的問題(如 token 邊界偏差)進行了處理和改進。 模型評估方面 :多工語言理解基準測試 : 使用MMLU、MMLU-Pro等基準測試來評估模型在多個知識領域和任務上的性能(Hendrycks et al., 2020; Wang et al., 2024b).程式碼和數學基準測試 : 使用HumanEval、LiveCodeBench、MATH等基準測試來評估模強化學習中Reward Model的相關研究,為 DeepSeek-V3 的強化學習階段採用的基於規則和基於模型的Reward Model提供了理論和實踐基礎,論文在其基礎上結合自身模型特點進行了應用和改進,如採用 Group Relative Policy Optimization (GRPO) 方法等。 多頭潛在注意力(MLA) 對於鍵值壓縮,,其中是壓縮後的潛在向量,為 KV 壓縮維度,是下投影矩陣。然後,是上投影矩陣。同時,。 對於查詢壓縮,,,,。 最終注意力輸出計算為,,其中是輸出投影矩陣。 對於注意力機制,通過對注意力鍵值和查詢進行低秩聯合壓縮來減少推理時的 KV 快取和訓練時的啟動記憶體。具體公式如下: DeepSeekMoE 與負載平衡 基本架構 :在 Feed - Forward Networks (FFNs)中採用 DeepSeekMoE 架構,使用更精細的專家設定,計算 FFN 輸出的公式為,其中和分別是共享專家和路由專家的數量,,,。無輔助損失負載平衡 :引入偏差項到親和分數來確定 top - K 路由,即,在訓練過程中動態調整偏差項以保持專家負載平衡。同時採用互補的sequence-wise輔助損失,其中,,,為平衡因子。節點限制路由 :採用限制路由機制,確保每個tokens最多傳送到個節點,根據節點上專家的親和分數總和選擇節點,以限制通訊成本,實現計算 - 通訊重疊。預測模組設定 :使用個順序模組預測個額外tokens。對於第個 MTP 模組,在處理第個輸入tokens時,先進行線性投影,然後經 Transformer 塊處理,最後由共享輸出頭計算機率分佈,其中。訓練損失計算 :對於每個預測深度,計算交叉熵損失,最終總體 MTP 損失為,為加權因子。計算叢集與訓練框架 在配備 2048 個 NVIDIA H800 GPU 的叢集上訓練,節點內 GPU 用 NVLink 和 NVSwitch 連接,節點間用 InfiniBand (IB)互連。基於 HAI - LLM 框架,應用 16 路 Pipeline Parallelism (PP)、64 路 Expert Parallelism (EP)和 ZeRO - 1 Data Parallelism (DP)。 設計 DualPipe 演算法實現高效流水線平行,通過重疊計算和通訊階段減少pipeline bubbles和通訊開銷。將每個 chunk 分為注意力、全對全調度、MLP 和全對全合併等元件,在正向和反向過程中重新排列和調整 GPU SMs 比例,確保全對全和 PP 通訊可隱藏。 FP8 訓練方法 細粒度量化 :對啟動和權重採用不同的分組量化方式,啟動按 tile 分組,權重按塊分組,並引入組縮放因子,以更好地處理特徵異常值,提高量化精度。提高積累精度 :針對 FP8 GEMM 運算在 NVIDIA H800 GPUs 上積累精度有限的問題,採用在 Tensor Cores 上執行一定間隔後將中間結果複製到 CUDA Cores 進行全精度 FP32 積累的策略,如設定元素可顯著提高精度且不引入過多開銷。其他策略 :採用 E4M3 格式在所有張量上提高精度,通過線上計算縮放因子進行量化,並對不同算子的儲存和通訊格式進行最佳化,如採用 BF16 跟蹤 AdamW 最佳化器的部分參數,對某些算子的啟動採用定製格式等。混合精度框架 :多數計算密集型操作採用 FP8 精度,如 GEMM 操作,同時對部分關鍵操作(如嵌入模組、輸出頭、MoE 門控模組、歸一化和注意力算子等)保留原精度(如 BF16 或 FP32),以平衡訓練效率和數值穩定性。精度提升策略 預訓練 資料建構 :最佳化預訓練語料庫,增加數學和程式設計樣本比例,擴大多語言覆蓋,採用文件打包方法處理資料,並使用 Byte - level BPE 分詞器,對特殊情況(如結合標點和換行的 tokens)進行處理以減少偏差。超參數設定 :設定模型超參數如 Transformer 層數為 61、隱藏維度為 7168 等,訓練超參數如採用 AdamW 最佳化器,設定學習率調度、批次大小等,並在不同訓練階段調整參數值。長上下文擴展 :採用 YaRN 方法分兩階段將上下文窗口從 4K 擴展到 128K,設定相應的超參數如,,,等。後訓練 Reward Model :採用規則 - 基於和模型 - 基於的Reward Model。規則 - 基於的獎勵系統用於可驗證的問題,模型 - 基於的Reward Model從 DeepSeek - V3 SFT 檢查點訓練,並建構包含思考鏈的偏好資料提高可靠性。Group Relative Policy Optimization :採用 GRPO 方法,通過從舊策略模型採樣輸出並最大化特定目標函數來最佳化策略模型,在訓練過程中融入多領域提示以增強性能。監督微調(SFT) :使用包含 1.5M 實例的資料集,針對推理和非推理資料採用不同生成方法,如推理資料利用內部 DeepSeek - R1 模型生成並處理,非推理資料用 DeepSeek - V2.5 生成並由人工標註驗證。採用餘弦衰減學習率調度對 DeepSeek - V3 - Base 進行兩個 epoch 的微調,並採用樣本掩碼策略處理樣本。強化學習(RL) 資料建構與處理 最佳化預訓練語料庫,增加數學和程式設計樣本比例,擴大多語言覆蓋,採用文件打包方法保證資料完整性,但不使用跨樣本注意力掩碼。使用 Byte-level BPE 分詞器,對新引入的結合標點和換行的 tokens 進行隨機拆分處理,以減少 token 邊界偏差。 採用 Fill-in-Middle (FIM)策略,按照 Prefix-Suffix-Middle (PSM)框架以 0.1 的比例結構化資料,如 <|fim_begin|> 𝑓pre<|fim_hole|> 𝑓suf<|fim_end|> 𝑓middle<|eos_token|>
,在訓練過程中與其他資料一起輸入模型。 超參數設定 模型超參數:設定 Transformer 層數為 61,隱藏維度為 7168,所有可學習參數隨機初始化標準差為 0.006。在 MLA 中,注意力頭數 設為 128,單頭維度 為 128,KV 壓縮維度 為 512,查詢壓縮維度 為 1536, decoupled queries 和 key 的單頭維度 為 64。除前三層外,FFNs 用 MoE 層替代,每個 MoE 層含 1 個共享專家和 256 個路由專家,中間隱藏維度為 2048,每個 token 啟動 8 個專家,且確保傳送到最多 4 個節點,多tokens預測深度 設為 1。 訓練超參數:採用 AdamW 最佳化器,,,weight_decay = 0.1。預訓練最大序列長度設為 4K,在 14.8T tokens 上訓練。學習率從 0 線性增加到 在前 2K 步,保持該值直到消耗 10T 訓練 tokens,再按餘弦衰減曲線在 4.3T tokens 內降至 ,最後在訓練最後 500B tokens 時,前 333B 保持 ,後 167B 設為 。梯度裁剪范數為 1.0,批次大小在前 469B tokens 內從 3072 逐漸增加到 15360,之後保持 15360。同時設定輔助損失相關參數,如輔助 - loss-free 負載平衡的偏差更新速度在前 14.3T tokens 設為 0.001,後 500B tokens 設為 0.0,平衡損失的平衡因子 設為 0.0001,MTP 損失權重 在前 10T tokens 設為 0.3,後 4.8T tokens 設為 0.1。 長上下文擴展 :採用 YaRN 方法分兩階段擴展上下文窗口,從 4K 到 32K 再到 128K,每階段 1000 步。YaRN 組態與 DeepSeek-V2 相同,僅應用於 decoupled shared key ,超參數為 scale ,,,,兩階段學習率均設為 ,序列長度和批次大小在兩階段分別設為 32K、1920 和 128K、480。多tokens預測(MTP)消融實驗 在不同規模模型上進行,小尺度採用 15.7B 總參數模型在 1.33T tokens 上訓練,大尺度採用 228.7B 總參數模型在 540B tokens 上訓練。 在基線模型基礎上,保持訓練資料和其他架構不變,分別加入 1-depth MTP 模組訓練對比模型。訓練完成後,在多個評估基準上對比基線模型和加入 MTP 模組的模型性能,重點觀察 MTP 策略對模型性能的影響,同時確保在推理時直接丟棄 MTP 模組使對比模型推理成本相同。 輔助 - loss-free 平衡策略消融實驗 同樣在不同規模模型開展,小尺度為 15.7B 總參數模型在 1.33T tokens 訓練,大尺度是 228.7B 總參數模型在 578B tokens 訓練。 基線模型均單純使用輔助損失鼓勵負載平衡,並採用 sigmoid 門控函數與 top-K 親和歸一化,其控制輔助損失強度的超參數與 DeepSeek-V2-Lite 和 DeepSeek-V2 相同。在此基礎上,移除輔助損失並引入輔助 - loss-free 平衡策略訓練對比模型,在多個評估基準測試對比模型性能,分析輔助 - loss-free 策略的有效性。 監督微調(SFT)實驗 建構包含 1.5M 實例的多領域指令微調資料集,對推理和非推理資料採用不同生成方法。推理資料由內部 DeepSeek-R1 模型生成,通過特定訓練流程建構專家模型作為資料生成器,生成兩種 SFT 樣本(<problem, original response>
和 <system prompt, problem, R1 response>
),並在 RL 階段後進行拒絕採樣篩選高品質資料;非推理資料用 DeepSeek-V2.5 生成並經人工標註驗證。 採用餘弦衰減學習率調度,從 開始逐漸降至 ,對 DeepSeek-V3-Base 進行兩個 epoch 微調,訓練時將單個序列由多個樣本打包,但採用樣本掩碼策略保證樣本隔離。 強化學習(RL)實驗 Reward Model實驗 :採用規則 - 基於和模型 - 基於的Reward Model。對於可規則驗證的問題(如數學題、LeetCode 問題)用規則 - 基於獎勵系統,根據問題格式和測試用例驗證答案;對於自由形式答案或無明確答案的問題(如創意寫作)用模型 - 基於的Reward Model,從 DeepSeek-V3 SFT 檢查點訓練,並建構包含思考鏈的偏好資料提高可靠性。Group Relative Policy Optimization(GRPO)實驗 :採用 GRPO 方法,對每個問題從舊策略模型採樣一組輸出,通過最大化目標函數\mathcal{J}_{GRPO }(\theta)=\mathbb{E}\left[q \sim P(Q),\left\{o_{i}\right\}_{i = 1}^{G} \sim \pi_{\theta_{old }}(O | q)\right]\frac{1}{G}\sum_{i = 1}^{G}\left(min\left(\frac{\pi_{\theta}\left(o_{i} | q\right)}{\pi_{\theta_{old }}\left(o_{i} | q\right)}A_{i}, clip\left(\frac{\pi_{\theta}\left(o_{i} | q\right)}{\pi_{\theta_{old }}\left(o_{i} | q\right)}, 1-\varepsilon, 1+\varepsilon\right)A_{i}\right)-\beta \mathbb{D}_{K L}\left(\pi_{\theta} \| \pi_{r e f}\right)最佳化策略模型,其中,在訓練中融入多領域提示增強性能。教育與語言理解類 MMLU(Hendrycks 等人) :涵蓋多學科知識的大規模多工語言理解資料集,用於全面評估模型在不同知識領域的語言理解和推理能力,如歷史、科學、技術等多個學科的選擇題測試,幫助衡量模型在複雜知識場景下的表現。MMLU - Redux(Gema 等人) :是 MMLU 的改進版本,對標籤進行了修正,進一步精確評估模型在多學科知識問答上的精準性,使評估結果更具可靠性,可對比模型在不同版本資料集上的性能變化。MMLU - Pro(Wang 等人) :為更具挑戰性的教育知識基準測試,著重考察模型在專業教育知識方面的掌握程度,如高等教育階段的學科知識,深度檢驗模型的知識深度和推理能力。MMMLU(OpenAI) :多語言大規模多工語言理解資料集,除了知識測試外,還關注模型在多語言環境下的理解和處理能力,涉及多種語言的文字,對模型的語言通用性提出更高要求。C - Eval(Huang 等人) :針對中文的多層次多學科評估套件,專門用於評估基礎模型在中文語境下的知識理解和應用能力,涵蓋中文的各個學科領域,反映模型對中文教育知識的掌握情況。CMMLU(Li 等人) :聚焦中文的大規模多工語言理解資料集,主要測試模型在中文語言任務上的表現,包括中文語法、語義理解、文化知識等方面,突出模型在中文語言處理方面的能力。語言推理與理解類 HellaSwag(Zellers 等人) :通過給定上下文讓模型完成句子的任務,重點評估模型的語言推理和常識理解能力,測試模型是否能根據上下文進行合理的語義推斷和邏輯推理,以生成連貫的文字。PIQA(Bisk 等人) :圍繞物理常識的自然語言推理資料集,要求模型運用物理知識和邏輯思維解決問題,考查模型在特定領域常識推理方面的能力,提升模型在實際生活場景中的應用能力。ARC(Clark 等人) :AI2 推理挑戰資料集,包含不同難度等級的科學問題,旨在檢驗模型的科學推理和知識應用能力,從科學知識的角度評估模型的智能水平和推理精準性。BigBench Hard(BBH)(Suzgun 等人) :一系列具有挑戰性的語言任務集合,涵蓋多種複雜的語言理解和推理場景,如隱喻理解、邏輯謎題等,全面考驗模型在複雜語言環境下的應對能力。閉卷問答類 TriviaQA(Joshi 等人) :大規模遠端監督的閱讀理解挑戰資料集,涵蓋廣泛的知識領域,要求模型在無額外資訊的情況下回答問題,檢驗模型的知識儲備和問答能力。NaturalQuestions(Kwiatkowski 等人) :基於真實使用者問題的問答研究基準,反映模型在處理自然語言問題時的表現,與實際應用場景緊密結合,測試模型能否精準理解使用者意圖並提供有效答案。閱讀理解類 RACE(Lai 等人) :源自考試的大規模閱讀理解資料集,包含不同難度等級的閱讀文章和問題,評估模型在閱讀理解、資訊提取和推理方面的能力,模擬學生在考試中的閱讀任務。DROP(Dua 等人) :需要在段落上進行離散推理的閱讀理解基準,強調模型對文字細節和邏輯關係的理解,通過複雜的問題設定考查模型的深度推理能力。C3(Sun 等人) :針對中文機器閱讀理解的資料集,專注於中文文字的理解和分析,為評估模型在中文閱讀任務中的表現提供標準,推動中文自然語言處理技術的發展。CMRC(Cui 等人) :中文機器閱讀理解資料集,進一步細化了對中文文字的考查,包括中文詞彙、語法、語義等多方面的理解,全面評估模型在中文閱讀方面的能力。參考消歧類 CLUEWSC(Xu 等人) :中文語言理解評估基準中的指代消歧任務資料集,主要測試模型在中文文字中識別和解析指代關係的能力,對於理解文字語義和連貫性至關重要。WinoGrande(Sakaguchi 等人) :大規模的對抗性 Winograd 模式挑戰資料集,通過複雜的語言結構和語義關係考查模型的語義理解和推理能力,挑戰模型在語義模糊場景下的處理能力。語言建模類 Pile(Gao 等人) :一個包含 800GB 多樣文字的語言建模資料集,為模型訓練和評估提供豐富的文字資源,涵蓋多種領域和體裁的文字,有助於提升模型的語言生成和泛化能力。中文文化類 CCPM(Li 等人) :中文古典詩歌匹配資料集,專注於中文文化領域的知識測試,考查模型對中文古典文化的理解和相關知識的掌握,豐富模型在文化領域的知識儲備。程式碼與數學類 GSM8K(Cobbe 等人) :數學應用題資料集,測試模型解決數學文字問題的能力,要求模型理解數學問題的語義並運用數學知識進行計算和推理,評估模型的數學思維和應用能力。MATH(Hendrycks 等人) :專門的數學資料集,涵蓋各種數學領域的問題,如代數、幾何、微積分等,深度評估模型的數學知識掌握和推理能力,為數學教育和研究提供參考。MGSM(Shi 等人) :用於評估模型數學推理能力的資料集,在數學問題的複雜性和多樣性上有所側重,進一步挑戰模型在數學領域的處理能力。CMath(Wei 等人) :針對中文數學測試的資料集,關注模型在中文數學語境下的理解和解題能力,適應中文數學教育和研究的需求。HumanEval(Chen 等人) :用於評估模型在程式碼生成和理解方面的能力,包含多種程式設計任務,要求模型生成可執行的程式碼或回答與程式碼相關的問題,推動模型在軟體開發領域的應用。LiveCodeBench - Base(0801 - 1101)(Jain 等人) :針對程式碼的綜合評估基準,涵蓋不同類型的程式碼任務和場景,從多個角度評估模型在程式碼處理方面的能力,如程式碼補全、程式碼糾錯等。MBPP(Austin 等人) :通過程式設計問題考查模型的程式碼生成和問題解決能力,與實際程式設計工作流程緊密相關,檢驗模型在實際程式設計任務中的表現。CRUXEval(Gu 等人) :專注於程式碼推理、理解和執行的基準測試,對模型在程式碼邏輯分析和執行方面的能力提出更高要求,促進模型在程式碼智能領域的發展。程式碼類 數學類 標準化考試類 AGIEval(Zhong 等人) :包含英語和中文子集的人類中心基準測試,模擬標準化考試場景,綜合評估模型在多方面知識和能力的表現,如語言能力、邏輯思維、知識應用等,為模型在教育和考試領域的應用提供參考。EM(Exact Match) :在多項選擇題或需要精確答案的任務中使用,如在 MMLU、MMLU - Redux、MMLU - Pro、MMMLU、C - Eval、CMMLU 等教育和語言理解類基準測試中。它衡量模型生成的答案與真實答案完全匹配的比例。例如,在 MMLU 測試中,模型對每個問題給出一個答案,若該答案與標準答案完全一致,則在該問題上記為正確,最終計算所有問題中正確回答的比例作為 EM 分數。公式可簡單表示為:正確回答的問題數量總問題數量。通過 EM 指標可以直觀地瞭解模型在這些基準測試上的精確回答能力,反映模型對知識的精準掌握和應用程度。Accuracy(精準率) :在一些分類或判斷任務中使用,如在 Codeforces 等競賽類評估中。它表示模型做出正確判斷或分類的比例。假設在 Codeforces 比賽中,模型對每個參賽選手的程式碼是否正確進行判斷,若判斷正確的次數為 ,總判斷次數為 ,則精準率為 。這有助於評估模型在特定領域的判斷精準性,與實際應用場景中的性能表現密切相關。Pass@1 :在程式碼生成和數學問題解決等任務中較為常見,如在 HumanEval、AIME、MATH - 500 等基準測試中。它表示模型在一次嘗試中生成的答案或程式碼能夠通過測試用例或滿足問題要求的比例。以 HumanEval 為例,對於每個程式設計問題,模型生成一段程式碼,若該程式碼在第一次提交時能通過所有測試用例,則在該問題上記為通過,最終計算所有問題中一次通過的比例作為 Pass@1 分數。其公式為:一次通過的問題數量總問題數量。該指標能夠有效評估模型在程式碼生成和數學解題等方面的實際能力,體現模型的生成質量和可靠性。在閱讀理解和資訊提取任務中,如 DROP 測試中使用。F1 分數綜合考慮了模型的精確率(Precision)和召回率(Recall),計算公式為 。在 DROP 任務中,模型需要從文字中提取相關資訊回答問題,精確率表示模型提取的正確資訊佔提取的所有資訊的比例,召回率表示模型提取的正確資訊佔文字中所有正確資訊的比例。通過 F1 分數可以全面評估模型在閱讀理解任務中的性能,平衡模型在精準性和完整性方面的表現。 Bits - Per - Byte(BPB) :在語言建模任務中,如 Pile - test 中使用。它用於衡量模型在編碼文字時的效率,通過計算模型編碼每個字節所需的平均位元數來評估。較低的 BPB 值表示模型在壓縮文字資訊方面更有效,能夠更高效地表示語言資料。其計算涉及到複雜的資訊理論和編碼理論,在實際應用中通過特定的演算法和工具對模型生成的編碼進行分析和計算。Resolved(解決率) :在 SWE - Bench Verified 等軟體工程相關的評估中使用。它表示模型能夠成功解決或處理的問題的比例,類似於 Pass@1,但可能針對的是更複雜的軟體工程任務場景,如軟體缺陷修復、系統設計問題等。具體計算方式為 成功解決的問題數量總問題數量,通過該指標可以評估模型在軟體工程領域的實際應用能力和問題解決能力。模型性能評估 在多個基準測試上,DeepSeek-V3 表現優異。在教育基準測試如 MMLU、MMLU-Pro、GPQA 中,其得分分別達到 88.5、75.9、59.1,超越其他開源模型,與 GPT-4o 和 Claude-Sonnet-3.5 等領先閉源模型相當,顯著縮小了開源與閉源在該領域的差距。 在事實性基準測試的 SimpleQA 和 Chinese SimpleQA 上,雖在英文事實知識方面落後於 GPT-4o 和 Claude-Sonnet-3.5,但在中文事實知識上表現突出,超過這些模型,凸顯了其在中文領域的優勢。 在程式碼和數學相關基準測試中,於數學基準測試如 MATH-500 上表現卓越,超越多數模型,展現出強大的數學推理能力;在編碼競賽基準測試如 LiveCodeBench 中也處於領先地位,鞏固了其在程式碼領域的優勢。 消融實驗結果 多tokens預測(MTP) :在不同規模模型上的消融實驗表明,MTP 策略對模型性能有顯著提升作用。如在小尺度(15.7B 總參數,1.33T tokens 訓練)和大尺度(228.7B 總參數,540B tokens 訓練)模型上,加入 MTP 模組的模型在多數評估基準如 Pile-test、BBH、MMLU、DROP 等上的表現均優於基線模型,證明了 MTP 策略在增強模型對未來tokens預測能力和提升整體性能方面的有效性。輔助 - loss-free 平衡策略 :同樣在不同規模模型(小尺度 15.7B 總參數,1.33T tokens 訓練;大尺度 228.7B 總參數,578B tokens 訓練)的消融實驗顯示,與純粹基於輔助損失的方法相比,輔助 - loss-free 策略在多數評估基準如 Pile-test、BBH、MMLU、DROP 等上能取得更好的模型性能,驗證了該策略在平衡專家負載和提升模型性能方面的優勢。標準評估結果 在與其他代表性 chat 模型對比中,DeepSeek-V3 在多個英語基準測試中表現突出。在 MMLU 及其衍生測試(MMLU-Redux、MMLU-Pro)中,成績優異,與頂尖模型競爭;在長上下文理解測試(DROP、LongBench v2、FRAMES)中,如在 DROP 的 3-shot 設定下 F1 得分達 91.6,遠超其他模型,證明了其處理長文字的能力;在指令跟隨基準測試中,相比 DeepSeek-V2 系列有顯著提升,表明其更好地理解和遵循使用者指令的能力。 在程式碼和數學基準測試方面,在工程任務中雖稍遜於 Claude-Sonnet-3.5-1022,但大幅領先其他開源模型;在演算法任務如 HumanEval-Mul 和 LiveCodeBench 中表現最佳,這得益於其先進的知識蒸餾技術。在數學測試如 AIME、MATH-500、CNMO 2024 上,比 Qwen2.5-72B 等模型高出約 10%的絕對分數,凸顯了從 DeepSeek-R1 蒸餾知識的有效性。 在中文基準測試中,在 Chinese SimpleQA 上超越 Qwen2.5-72B 達 16.4 分,在 C-Eval 和 CLUEWSC 上與 Qwen2.5-72B 表現相近,說明在中文推理和教育任務上的良好性能。 開放 - 端評估結果 在開放 - 端生成任務評估中,在 Arena-Hard 基準測試上,DeepSeek-V3 以超過 86%的勝率擊敗基線 GPT-4-0314,與 Claude-Sonnet-3.5-1022 等頂級模型相當,成為首個在該基準上超過 85%的開源模型,表明其在處理複雜提示和任務方面的強大能力。 在 AlpacaEval 2.0 上,DeepSeek-V3 也超越了閉源和開源模型,相比 DeepSeek-V2.5-0905 提升 20%,體現了其在寫作和簡單問答任務上的出色表現。 作為生成Reward Model的結果 在 RewardBench 測試中,DeepSeek-V3 的判斷能力與 GPT-4o-0806 和 Claude-3.5-Sonnet-1022 等最佳版本相當,且通過投票技術可進一步增強其判斷能力,在提供反饋和改進模型對齊過程中表現出良好性能。 負載平衡策略革新 :在 DeepSeek-V2 架構基礎上,創新性地提出無輔助損失的負載平衡策略。在混合專家(MoE)架構的 DeepSeekMoE 中,傳統方法依賴輔助損失來平衡專家負載,但這可能損害模型性能。而 DeepSeek-V3 引入偏差項到親和分數來確定 top - K 路由,即。在訓練過程中動態調整偏差項,通過監測專家負載,在每個訓練步結束時,若專家過載則減小偏差項,若負載不足則增加偏差項。這種方法有效解決了專家負載不平衡問題,相比傳統基於輔助損失的方法,在多個評估基準上取得更好性能,顯著提升了模型訓練的穩定性和效率,減少了因負載失衡導致的性能下降風險。多tokens預測目標設定 :設定多tokens預測(MTP)訓練目標,這是對傳統單tokens預測的重要拓展。通過多個順序模組預測多個未來tokens,在第個 MTP 模組處理第個輸入tokens時,先進行線性投影,然後經 Transformer 塊處理,最後由共享輸出頭計算機率分佈。計算每個預測深度的交叉熵損失,最終總體 MTP 損失為。該目標增強了訓練訊號,使模型能更好地學習文字的長期依賴關係,提高資料效率,並且在推理時可選擇丟棄 MTP 模組或用於推測解碼加速,在不增加推理成本的情況下提升了模型的整體性能。FP8 訓練框架應用與最佳化 :率先在大規模模型訓練中應用 FP8 混合精度訓練框架,並通過多種策略驗證其有效性。在框架中,多數計算密集型操作如 GEMM 採用 FP8 精度,同時對部分關鍵操作(如嵌入模組、輸出頭、MoE 門控模組、歸一化和注意力算子等)保留原精度(如 BF16 或 FP32),以平衡訓練效率和數值穩定性。通過細粒度量化,對啟動按 tile 分組,權重按塊分組,並引入組縮放因子,有效緩解了 FP8 格式動態範圍有限導致的量化誤差問題。在提高積累精度方面,針對 FP8 GEMM 運算在 NVIDIA H800 GPUs 上積累精度有限的問題,採用在 Tensor Cores 上執行一定間隔後將中間結果複製到 CUDA Cores 進行全精度 FP32 積累的策略(如設定元素),顯著提高了訓練精度。通過這些最佳化,在不同規模模型訓練上與 BF16 基線相比,相對損失誤差始終保持在 0.25%以下,大大減少了訓練時間和 GPU 記憶體使用,實現了高效訓練,為大規模語言模型訓練的硬體資源最佳化提供了可行方案。訓練框架工程最佳化 :在訓練框架上進行了多方面的精心最佳化。設計 DualPipe 演算法實現高效流水線平行,通過將每個 chunk 分為注意力、全對全調度、MLP 和全對全合併等元件,在正向和反向過程中重新排列和調整 GPU SMs 比例,確保全對全和 PP 通訊可隱藏,有效解決了跨節點專家平行帶來的通訊開銷問題,相比傳統 PP 方法減少了pipeline bubbles,在保證計算精度的同時提高了訓練速度。開發高效的跨節點全對全通訊核心,根據叢集網路拓撲(節點間用 InfiniBand (IB)互連,節點內 GPU 用 NVLink 連接)和 MoE 門控演算法定製通訊策略,如限制每個tokens最多傳送到 4 個節點,利用 NVLink 高頻寬優勢減少 IB 流量,通過 warp 專業化技術和動態調整通訊任務 warps 數量等方法,充分利用硬體資源,實現高效通訊。在記憶體最佳化方面,採用重新計算 RMSNorm 和 MLA 上投影、在 CPU 中保存指數移動平均(EMA)、共享 MTP 模組與主模型的嵌入層和輸出頭等技術,極大地減少了記憶體佔用,使得在不使用昂貴的張量平行(TP)的情況下能夠訓練大規模模型,降低了訓練成本。從 DeepSeek - R1 蒸餾知識 :在後訓練階段,成功引入創新方法從 DeepSeek - R1 系列模型中蒸餾推理能力到 DeepSeek - V3 中。對於推理相關資料集,利用內部 DeepSeek - R1 模型生成資料,並通過特定的訓練流程建構專家模型作為資料生成器,生成兩種 SFT 樣本(<problem, original response>
和 <system prompt, problem, R1 response>
),在 RL 階段後進行拒絕採樣篩選高品質資料。在程式碼和數學等領域的基準測試如 LiveCodeBench 和 MATH - 500 上,實驗表明這種蒸餾方法顯著提升了模型性能,但也存在增加平均響應長度的問題。通過精心選擇蒸餾參數和設定,在平衡模型精準性和計算效率的同時,有效增強了 DeepSeek - V3 的推理能力,縮小了與領先模型在複雜任務上的差距,為模型性能最佳化提供了新的思路和方法。模型性能全面提升 :綜合上述創新和最佳化,DeepSeek - V3 在多個領域的基準測試中表現出色。在教育基準測試中超越多數開源模型,與領先閉源模型相當;在程式碼和數學相關任務上取得優異成績,成為開源模型中的佼佼者。例如,在 MMLU 上達到 88.5 分,在 HumanEval 上 Pass@1 為 65.2,在 MATH - 500 上 EM 為 90.2 等。同時,訓練成本經濟,在預訓練階段,訓練每兆 tokens 僅需 180K H800 GPU 小時,全模型訓練僅需 2.788M GPU 小時,相比其他同規模模型具有明顯優勢,為自然語言處理領域提供了一個性能強大且成本效益高的模型選擇。突破 Transformer 架構侷限 :儘管當前基於 Transformer 的架構在一定程度上取得了良好效果,但仍存在可最佳化空間。未來可探索全新的架構設計,例如研究如何更有效地整合不同類型的神經網路結構,以突破 Transformer 在處理長距離依賴和複雜語義關係時的固有侷限性。可以嘗試引入基於圖神經網路的結構,更好地捕捉文字中的語義圖結構,提升模型對語義的理解和推理能力。最佳化注意力機制 :進一步改進注意力機制,如在多頭潛在注意力(MLA)的基礎上,研究如何更準確地分配注意力權重,減少不必要的計算開銷。可以探索自適應注意力機制,根據輸入文字的特點動態調整注意力頭的數量和權重分配策略,提高模型在不同任務和資料分佈下的適應性和效率。增加資料多樣性和質量 :持續擴充和最佳化訓練資料,不僅要增加資料的數量,更要注重資料的多樣性和質量。例如,進一步挖掘多領域、多語言、多模態的資料資源,涵蓋更廣泛的知識領域和文化背景,使模型能夠學習到更豐富的語義和知識表示。同時,加強對資料的清洗和預處理,去除噪聲和錯誤資訊,提高資料的可靠性。探索新的訓練訊號 :深入研究並引入新的訓練訊號,以增強模型的學習能力。除了傳統的文字序列資訊外,可以考慮結合語義解析樹、知識圖譜等結構化資訊作為額外的訓練訊號,幫助模型更好地理解文字的語義結構和邏輯關係,提升模型在複雜語言任務上的表現。增強深度思考和推理能力 :致力於提升模型的深度思考和推理能力,通過設計更複雜的訓練任務和學習策略,引導模型進行多步推理和邏輯分析。例如,開展基於複雜數學證明、邏輯謎題等任務的訓練,促使模型學習到更高級的推理技巧和思維模式,提高其在解決需要深度思考問題時的性能。提升多模態處理能力 :隨著多模態資料在實際應用中的重要性日益增加,未來工作可聚焦於使模型具備多模態處理能力。這需要開發新的模型架構和訓練方法,能夠有效地融合圖像、音訊等不同模態的資訊與文字資訊,實現跨模態的理解和生成,如在圖像描述生成、視訊內容理解等任務上取得突破。建立多維度評估體系 :當前的模型評估主要依賴於一些現有的基準測試,但這些測試可能無法全面反映模型的真實能力。未來需要建構更全面、多維度的評估體系,除了傳統的精準率、F1 值等指標外,還應納入對模型可解釋性、魯棒性、安全性等方面的評估,以更準確地衡量模型在實際應用中的性能和可靠性。避免過度最佳化特定基準 :在研究過程中,要防止過度聚焦於最佳化特定的基準測試,而導致模型在實際應用場景中的泛化能力不足。應設計多樣化的評估任務和場景,確保模型在不同任務和資料分佈下都能保持良好的性能,避免出現過擬合特定基準的現象,使模型的評估結果更具實際意義和參考價值。我們介紹了一個強大的混合專家(MoE)語言模型DeepSeek-V3,它具有總計671億個參數和每個tokens啟動的37億個。為了實現高效的推理和成本效益的訓練,DeepSeek-V3採用了Multi-head Latent Attention (MLA) 和 DeepSeekMoE 架構,這些架構在DeepSeek-V2中得到了徹底驗證。此外,DeepSeek-V3開創了一種無輔助損失的負載平衡策略,並為更強性能設定了多tokens預測訓練目標。我們在14.8兆個多樣且高品質的tokens上預訓練了DeepSeek-V3,然後進行監督微調和強化學習階段以充分挖掘其能力。全面評估表明,DeepSeek-V3優於其他開源模型,並達到與領先閉源模型相當的性能。儘管表現出色,但DeepSeek-V3僅需2.788M H800 GPU小時即可完成全量訓練。此外,它的訓練過程非常穩定。在整個訓練過程中,我們沒有遇到任何不可恢復的損失峰值或回滾操作。該模型的檢查點可在https://github.com/deepseek-ai/DeepSeek-V3 上獲取。
近年來,大型語言模型(Large Language Models)正在經歷快速迭代和進化 (Anthropic, 2024;Google, 2024;OpenAI, 2024a),逐漸縮小與通用人工智慧(Artificial General Intelligence)之間的差距。除了閉源模型之外,開源模型包括 DeepSeek 系列 (DeepSeek-AI, 2024a、b、c;Guo et al., 2024)、LLaMA 系列 (AI@Meta, 2024a、b;Touvron et al., 2023a、b)、Qwen 系列 (Qwen, 2023、2024a、b) 和 Mistral 系列 (Jiang et al., 2023;Mistral, 2024)也在不斷進步,努力縮小與閉源模型的差距。為了進一步推動開源模型能力邊界,我們擴大了我們的模型規模,並引入 DeepSeek-V3,這是一個具有 671B 參數的大規模混合專家 (Mixture-of-Experts) 模型,其中每個tokens有 37B 參數被啟動。
從前瞻性的視角出發,我們始終追求強大的模型性能和經濟的成本 。因此,在架構方面,DeepSeek-V3仍然採用高效的Multi-head Latent Attention(MLA)(DeepSeek-AI,2024c),以及成本效益的DeepSeekMoE (Dai et al., 2024) 進行訓練。這兩個架構已經在DeepSeek-V2中進行了驗證(DeepSeek-AI,2024c),證明了它們在保持穩健的模型性能的同時實現高效訓練和推理的能力。除了基本架構之外,我們還實施了兩個額外策略來進一步增強模型能力。首先,DeepSeek-V3首創了一個無輔助損失的負載平衡策略(Wang et al., 2024a),旨在最小化由於努力鼓勵負載平衡而對模型性能產生的負面影響。其次,DeepSeek-V3採用了多tokens預測訓練目標,我們在評估基準上觀察到它能夠提升整體性能。
為了實現高效的訓練,我們支援FP8混合精度訓練,並對訓練框架進行了全面最佳化。低精度訓練已成為高效訓練的有前途解決方案(Dettmers等人,2022年;Kalamkar等人,2019年;Narang等人,2017年;Peng等人,2023年),其演進與硬體能力的進步密切相關 (Luo等人,2024年;Micikevicius等人,2022年;Rouhani等人,2023年)。在本文中,
我們介紹了一個FP8混合精度訓練框架,並首次驗證了它在超大規模模型上的有效性。通過支援FP8計算和儲存,我們實現了加速訓練並減少了GPU記憶體使用量。 對於訓練框架,我們設計了DualPipe演算法以實現高效的管道平行性,該演算法具有較少的管道氣泡並在訓練過程中通過計算通訊重疊隱藏大部分通訊。這種重疊確保,在模型進一步擴展時,只要保持計算到通訊的比例不變,我們可以仍然利用節點間的細粒度專家,並且接近零全向通訊開銷。 此外,我們也開發了高效的跨節點全向通訊核心來充分利用InfiniBand(IB) 和NVLink頻寬。同時,我們還精心最佳化了記憶體足跡,使得DeepSeek-V3無需昂貴的張量平行化即可進行訓練。結合這些努力,我們實現了高效率的訓練。 在預訓練階段,我們對DeepSeek-V3進行了14.8兆高品質和多樣化的tokens的訓練。整個預訓練過程非常穩定,在整個訓練過程中沒有遇到不可恢復的損失峰值或需要回滾的情況。接下來,我們為DeepSeek-V3進行兩階段的上下文長度擴展。第一階段將最大上下文長度擴展到32K,第二階段進一步擴展到128K。然後,我們對DeepSeek-V3的基礎模型進行後訓練,包括監督微調(SFT)和強化學習(RL),以使其與人類偏好保持一致,並進一步釋放其潛力。在後訓練階段,我們將從DeepSeek-R1系列模型中提取推理能力,並同時仔細維護模型精準度和生成長度之間的平衡。
我們對DeepSeek-V3進行了全面的基準測試。儘管其訓練成本低廉,但綜合評估顯示,DeepSeek-V3-Base已成為目前最強大的開源基礎模型之一,尤其是在程式碼和數學方面。它的聊天版本也優於其他開源模型,並在一系列標準和開放式基準上實現了與領先閉源模型(包括GPT-4o和Claude-3.5-Sonnet)相當的表現。 最後,我們再次強調DeepSeek-V3的經濟訓練成本(見表1),通過我們的演算法、框架和硬體最佳化協同設計實現。在預訓練階段,在每個兆個tokens上對DeepSeek-V3進行訓練僅需要180K H800 GPU小時,即我們在擁有2048個H800 GPU的叢集中花費了3.7天的時間。因此,我們的預訓練階段可以在不到兩個月內完成,並且總共花費了2664K GPU小時。結合上下文長度擴展所需的119K GPU小時以及後處理所需的5K GPU小時,DeepSeek-V3的全訓練過程只需要2788萬GPU小時。假設H800 GPU的租賃價格為每GPU小時2美元,則我們的總培訓費用僅為557.6萬美元。請注意,上述成本只包括官方的DeepSeek-V3培訓,不包括與先前研究或架構、演算法或資料相關的消融實驗的成本。
主要貢獻包括:
在DeepSeek-V2的高效架構之上,我們首創了一種無輔助損失的負載平衡策略,該策略可最小化鼓勵負載平衡所導致的性能下降。 我們研究了一個多tokens預測(MTP)目標,並證明它對模型性能有益。 它還可以用於推測解碼以加速推理。 我們設計了一個FP8混合精度訓練框架,並首次在超大規模模型上驗證了FP8訓練的可行性與有效性。 通過演算法、框架和硬體的共同設計,我們克服了跨節點MoE訓練中的通訊瓶頸,並實現了近乎完全的計算-通訊重疊。這顯著提高了我們的訓練效率並降低了訓練成本,使我們可以進一步擴大模型規模而無需額外開銷。 在經濟成本僅為2.664M H800 GPU小時的情況下,我們完成了DeepSeek-V3在14.8Ttokens上的預訓練,並產生了目前最強的開源基礎模型。後續的培訓階段只需要0.1M GPU小時即可完成。 後訓練:從DeepSeek-R1中進行知識蒸餾 我們介紹了一種創新的方法,從長鏈推理模型中提取推理能力,並將其引入標準的大型語言模型(LLM),特別是DeepSeek-V3。我們的管道優雅地整合了驗證和反思模式的R1進入DeepSeek-V3並顯著提高了其推理性能。同時,我們還保持了輸出風格和長度對DeepSeek-V3的控制。 Knowledge: (1)在教育基準MMLU、MMLU-Pro和GPQA上,DeepSeek-V3優於所有其他開源模型,在MMLU中達到88.5分,在MMLU-Pro中達到75.9分,在GPQA中達到59.1分。其性能與領先閉源模型如GPT-4o和Claude-Sonnet-3.5相當,並縮小了該領域開源和閉源模型之間的差距。 (2)對於事實性基準,DeepSeek-V3 在SimpleQA 和中文版的SimpleQA 上均表現出優於其他開源模型的優勢。雖然它在英語事實知識(SimpleQA)方面落後於GPT-4o和Claude-Sonnet-3.5 ,但在中文事實知識(Chinese SimpleQA)方面卻超越這些模型,凸顯其在中國事實知識方面的優勢。 Code, Math, and Reasoning:: (1)DeepSeek-V3在所有非長CoT開源和閉源模型中,其在與數學相關的基準測試上達到了最先進的性能。值得注意的是,在特定的基準測試如MATH-500上甚至超過了o1-preview,這表明了它強大的數學推理能力。 (2)在編碼相關任務上,DeepSeek-V3成為LiveCodeBench等編碼競賽基準測試中的最佳模型,並鞏固了其在這個領域的領先地位。對於工程相關任務而言,儘管DeepSeek-V3的表現略低於Claude-Sonnet-3.5,但它仍然遠遠領先於其他所有模型,展示了其在各種技術基準上的競爭力。 在本文的剩餘部分,首先我們詳細介紹了我們的DeepSeek-V3模型架構(第2節)。隨後,我們介紹我們的基礎設施,包括計算叢集、訓練框架、FP8 訓練支援、推理部署策略以及對未來的硬體設計建議。接下來,我們描述了預訓練過程,包括資料集建構、超參數設定、長上下文擴展技術、相關評估和一些討論(第4節)。然後,我們討論了後處理訓練的努力,包括監督微調 (SFT) 和強化學習 (RL),相應的評估和討論(第5節)。最後,我們總結了這項工作,並討論了 DeepSeek-V3 的現有侷限性並提出了未來研究的方向(第6節)。
首先,我們介紹DeepSeek-V3的基本架構,該架構由Multi-head Latent Attention (MLA)(DeepSeek-AI,2024c)實現高效推理和DeepSeekMoE (Dai等,2024) 實現經濟訓練。然後,我們提出一個Multi-Token Prediction (MTP)的訓練目標,我們在評估基準上觀察到它能夠提升整體性能。對於其他未明確提及的小細節,DeepSeek-V3遵循了DeepSeek-V2 的設定(DeepSeek-AI,2024c)。
DeepSeek-V3的基本架構仍然在Transformer(Vaswani等人,2017年)框架內。為了實現高效的推理和經濟的訓練,DeepSeek-V3也採用了MLA和DeepSeekMoE,這些技術已經在DeepSeek-V2中得到了徹底驗證。與DeepSeek-V2相比,唯一的例外是我們在其中引入了auxiliary-loss-free的負載平衡策略(Wang 等人,2024 年 a)用於緩解 DeepSeekMoE 在確保負載平衡的努力中引起的性能下降。圖 2 顯示了 DeepSeek-V3 的基本架構,並且我們將在本節簡要回顧 MLA 和 DeepSeekMoE 的細節。
在注意力方面,DeepSeek-V3 採用了 MLA 架構。設表示嵌入維度,表示注意力頭的數量,表示每個頭的維度,表示在給定注意力層中第個 token 的注意力輸入。
MLA 的核心是對注意力鍵和值進行低秩聯合壓縮,以減少推理過程中的鍵值(KV)快取:
其中,是鍵和值的壓縮潛在向量,表示 KV 壓縮維度,表示下投影矩陣,、分別是鍵和值的上投影矩陣,是用於生成攜帶旋轉位置嵌入(RoPE)的解耦鍵的矩陣,RoPE 表示應用 RoPE 矩陣的操作,表示連接。
需要注意的是,對於 MLA,在生成過程中只需要快取藍色框內的向量(即和),這在保持與標準多頭注意力(MHA)相當性能的同時,顯著減少了 KV 快取。
對於注意力查詢,我們也進行低秩壓縮,這可以減少訓練過程中的啟動記憶體:
其中,是查詢的壓縮潛在向量,表示查詢壓縮維度,、分別是查詢的下投影和上投影矩陣,是用於生成攜帶 RoPE 的解耦查詢的矩陣。
最終,注意力查詢、鍵和值組合起來產生最終的注意力輸出:
其中表示輸出的project matrix。
對於前饋網路(FFNs),DeepSeek-V3採用DeepSeekMoE架構(Dai等人,2024)。與傳統的MoE架構(如GShard(Lepikhin等人,2021))相比,DeepSeekMoE使用更細粒度的專家,並將部分專家隔離為共享專家。設表示第個token的FFN輸入,我們按如下方式計算FFN輸出:
其中,和分別表示共享專家和路由專家的數量;和分別表示第個共享專家和第個路由專家;表示被啟動的路由專家的數量;是第個專家的門控值;是token與專家的親和度;是第個路由專家的質心向量;表示從第個token與所有路由專家計算出的親和度分數中選取個最高分組成的集合。與DeepSeek-V2略有不同,DeepSeek-V3使用sigmoid函數計算親和度分數,並對所有選定的親和度分數進行歸一化以生成門控值。
對於MoE模型,專家負載不均衡會導致路由崩潰(Shazeer等人,2017),並在專家平行的場景中降低計算效率。傳統的解決方案通常依賴輔助損失(Fedus等人,2021;Lepikhin等人,2021)來避免負載不均衡。然而,過大的輔助損失會損害模型性能(Wang等人,2024a)。為了在負載平衡和模型性能之間取得更好的權衡,我們首創了一種無輔助損失的負載平衡策略(Wang等人,2024a)以確保負載平衡。具體來說,我們為每個專家引入一個偏差項,並將其加入到相應的親和度分數中,以確定top-路由:
需注意 ,偏差項僅用於路由。與FFN輸出相乘的門控值仍然由原始親和度分數得出。在訓練過程中,我們持續監控每個訓練步中整個批次的專家負載。在每一步結束時,如果某個專家過載,我們將其對應的偏差項減小;如果負載不足,則將偏差項增加,其中是一個稱為偏差更新速度的超參數。通過這種動態調整,DeepSeek-V3在訓練過程中保持了均衡的專家負載,並且比通過純輔助損失來促進負載平衡的模型表現更好。
儘管DeepSeek-V3主要依靠無輔助損失策略來實現負載平衡,但為了防止單個序列內出現極端不平衡的情況,我們還採用了互補的sequence-wise平衡損失:
其中,平衡因子是一個超參數,對於DeepSeek-V3會被賦予一個極小的值;表示指示函數;表示序列中的token數量。sequence-wise平衡損失促使每個序列上的專家負載達到平衡。
與DeepSeek-V2使用的裝置限制路由類似,DeepSeek-V3也採用受限路由機制來限制訓練期間的通訊成本。簡而言之,我們確保每個token最多被傳送到個節點,這些節點是根據每個節點上分佈的專家的最高個親和度分數之和來選擇的。在這種約束下,我們的MoE訓練框架幾乎可以實現計算 - 通訊的完全重疊。
由於有效的負載平衡策略,DeepSeek-V3在整個訓練過程中保持了良好的負載平衡。因此,DeepSeek-V3在訓練期間不會丟棄任何token。此外,我們還實施了特定的部署策略以確保推理負載平衡,所以DeepSeek-V3在推理期間也不會丟棄token。
受Gloeckle等人(2024)的啟發,我們為DeepSeek-V3研究並設定了Multi-Token Prediction (MTP)目標,該目標將預測範圍擴展到每個位置的多個未來tokens。一方面,MTP目標使訓練訊號更加密集,可能提高資料效率。另一方面,MTP可能使模型能夠預先規劃其表示,以便更好地預測未來tokens。圖3展示了我們的MTP實現方式。與Gloeckle等人(2024)使用獨立輸出頭平行預測個額外tokens不同,我們順序預測額外tokens,並在每個預測深度保持完整的因果鏈。我們在本節介紹MTP實現的詳細資訊。
具體而言,我們的MTP實現使用個順序模組來預測個額外tokens。第個MTP模組由一個共享嵌入層、一個共享輸出頭、一個Transformer塊和一個投影矩陣組成。對於第個輸入tokens,在第個預測深度,我們首先通過線性投影將第個tokens在第深度的表示與第個tokens的嵌入相結合:
其中,表示拼接。特別地,當時,指的是主模型給出的表示。需注意,每個MTP模組的嵌入層與主模型共享。組合後的作為第深度的Transformer塊的輸入,以產生當前深度的輸出表示:
其中,表示輸入序列長度,表示切片操作(包含左右邊界)。最後,以為輸入,共享輸出頭將計算第個額外預測tokens的機率分佈,其中是詞彙表大小:
輸出頭將表示線性對應到對數機率,隨後應用Softmax函數來計算第個額外tokens的預測機率。同樣,每個MTP模組的輸出頭與主模型共享。我們保持預測因果鏈的原則與EAGLE(Li等人,2024b)相似,但其主要目標是推測解碼(Leviathan等人,2023;Xia等人,2023),而我們利用MTP來改進訓練。
對於每個預測深度,我們計算交叉熵損失:
其中,表示輸入序列長度,表示第個位置的真實tokens,表示第個MTP模組給出的的相應預測機率。最後,我們計算所有深度的MTP損失的平均值,並乘以一個加權因子,以獲得整體的MTP損失,它作為DeepSeek-V3的額外訓練目標:
我們的MTP策略主要旨在提高主模型的性能,因此在推理過程中,我們可以直接丟棄MTP模組,主模型能夠獨立正常運行。此外,我們還可以將這些MTP模組用於推測解碼,以進一步提高生成速度。
DeepSeek-V3在一個配備2048個NVIDIA H800 GPU的叢集上進行訓練。H800叢集中的每個節點包含8個通過NVLink和NVSwitch在節點內部連接的GPU。在不同節點之間,使用InfiniBand(IB)互連來促進通訊。
圖4:一對單獨的前向和後向塊的重疊策略(Transformer塊的邊界未對齊)。橙色表示前向,綠色表示“輸入的反向”,藍色表示“權重的反向”,紫色表示PP通訊,紅色表示屏障。全對全通訊和PP通訊都可以完全隱藏。
DeepSeek-V3的訓練由HAI-LLM框架支援,這是一個由我們的工程師全新打造的高效且輕量級的訓練框架。總體而言,DeepSeek-V3應用了16-way Pipeline Parallelism(PP) (Qi等人,2023a)、跨8個節點的64-way Expert Parallelism(EP) (Lepikhin等人,2021)以及ZeRO-1 Data Parallelism(DP) (Rajbhandari等人,2020)。 為了便於DeepSeek-V3的高效訓練,我們實施了細緻的工程最佳化。
首先,我們設計了DualPipe演算法以實現高效的流水線平行。與現有的PP方法相比,DualPipe的pipeline bubbles更少。更重要的是,它在前向和後向過程中重疊了計算和通訊階段,從而解決了跨節點專家平行帶來的高通訊開銷挑戰。 其次,我們開發了高效的跨節點全對全通訊核心,以充分利用IB和NVLink的頻寬,並節省專用於通訊的流式多處理器(SM)。 最後,我們對訓練期間的記憶體佔用進行了細緻最佳化,從而使我們能夠在不使用昂貴的張量平行(TP)的情況下訓練DeepSeek-V3。 對於DeepSeek-V3,跨節點專家平行引入的通訊開銷導致計算與通訊的比例約為1:1,效率較低。為應對這一挑戰,我們設計了一種創新的流水線平行演算法,稱為DualPipe,它不僅通過有效地重疊前向和後向計算 - 通訊階段來加速模型訓練,還減少了pipeline bubbles。 DualPipe的關鍵思想是在一對單獨的前向和後向塊內重疊計算和通訊。具體而言,我們將每個塊劃分為四個元件:attention
、all-to-all dispatch
、MLP和all-to-all combine
。特別地,
對於後向塊,attention
和MLP
都進一步分為兩部分, 即輸入的反向和權重的反向,就像在ZeroBubble(Qi等人,2023b)中一樣。 此外,我們還有一個PP通訊元件。如圖4所示,對於一對前向和後向塊,我們重新排列這些元件,並手動調整GPU SM用於通訊與計算的比例。 在這種重疊策略中,我們可以確保在執行過程中全對全通訊和PP通訊都能完全隱藏。 鑑於這種高效的重疊策略,完整的DualPipe調度如圖5所示。它採用雙向流水線調度,從流水線的兩端同時饋入微批次,並且大部分通訊可以完全重疊。這種重疊還確保了,隨著模型進一步擴展,只要我們保持恆定的計算與通訊比例,我們仍然可以在節點間使用細粒度的專家,同時實現近乎零的全對全通訊開銷。
圖5:8個PP等級和20個微批次在兩個方向上的DualPipe調度示例。反向方向的微批次與正向方向的微批次對稱,為簡化圖示,我們省略了它們的批次ID。由共享黑色邊框包圍的兩個儲存格具有相互重疊的計算和通訊。
表2:不同流水線平行方法的pipeline bubbles和記憶體使用情況比較。表示前向塊的執行時間,表示完整後向塊的執行時間,表示“權重的反向”塊的執行時間,表示兩個相互重疊的前向和後向塊的執行時間。
此外,即使在沒有高通訊負擔的更一般場景中,DualPipe仍然具有效率優勢。在表2中,我們總結了不同PP方法的pipeline bubbles和記憶體使用情況。如表所示,與ZB1P(Qi等人,2023b)和1F1B(Harlap等人,2018)相比,DualPipe顯著減少了pipeline bubbles,同時僅將峰值啟動記憶體增加了倍。儘管DualPipe需要保留兩份模型參數,但由於我們在訓練期間使用較大的EP大小,這並不會顯著增加記憶體消耗。與Chimera(Li和Hoefler,2021)相比,DualPipe僅要求流水線階段和微批次能被2整除,而不要求微批次能被流水線階段整除。此外,對於DualPipe,氣泡和啟動記憶體都不會隨著微批次數量的增加而增加。
為了確保DualPipe有足夠的計算性能,我們定製了高效的跨節點全對全通訊核心(包括調度和合併dispatching and combining
),以節省專用於通訊的SM數量。這些核心的實現與MoE門控演算法和我們叢集的網路拓撲協同設計。具體而言,在我們的叢集中,跨節點GPU通過IB完全互連,節點內通訊通過NVLink處理。NVLink提供160 GB/s的頻寬,大約是IB(50 GB/s)的3.2倍。為了有效利用IB和NVLink的不同頻寬,我們將每個tokens最多調度到4個節點,從而減少IB流量。對於每個tokens,在做出路由決策時,它將首先通過IB傳輸到目標節點上具有相同節點內索引的GPU。一旦到達目標節點,我們將努力確保它能立即通過NVLink轉發到託管其目標專家的特定GPU,而不會被隨後到達的tokens阻塞。通過這種方式,通過IB和NVLink的通訊完全重疊,每個tokens在每個節點上平均可以高效地選擇3.2個專家,而不會產生NVLink的額外開銷。這意味著,儘管DeepSeek-V3在實際中僅選擇8個路由專家,但在保持相同通訊成本的情況下,這個數量最多可以擴展到13個專家(4個節點×3.2個專家/節點)。總體而言,在這樣的通訊策略下,僅需20個SM就足以充分利用IB和NVLink的頻寬。 詳細來說,我們採用warp specialization技術(Bauer等人,2014),並將20個SM劃分為10個通訊通道。在調度過程中:
(1)IB傳送 (2)IB到NVLink的轉發 (3)NVLink接收由各自的warp處理。分配給每個通訊任務的warp數量根據所有SM上的實際工作量動態調整。 類似地,在合併過程中,
(1)NVLink傳送 (2)NVLink到IB的轉發和累加 (3)IB接收和累加也由動態調整的warp處理。 此外,調度和合併核心都與計算流重疊,因此我們還考慮了它們對其他SM計算核心的影響。具體而言,我們採用定製的PTX(平行執行緒執行)指令,並自動調整通訊塊大小,這顯著減少了L2快取的使用以及對其他SM的干擾。 為了減少訓練期間的記憶體佔用,我們採用了以下技術。
RMSNorm和MLA上投影的重新計算 :我們在反向傳播期間重新計算所有RMSNorm操作和MLA上投影,從而無需持久儲存它們的輸出啟動。通過極小的開銷,這種策略顯著減少了儲存啟動所需的記憶體。CPU中的指數移動平均 :在訓練期間,我們保留模型參數的指數移動平均(EMA),以便在學習率衰減後對模型性能進行早期估計。EMA參數儲存在CPU記憶體中,並在每個訓練步後非同步更新。這種方法使我們能夠維護EMA參數,而不會產生額外的記憶體或時間開銷。多tokens預測的共享嵌入和輸出頭 :借助DualPipe策略,我們將模型的最淺層(包括嵌入層embedding layer
)和最深層(包括輸出頭output head
)部署在同一PP rank上。這種安排使得MTP模組和主模型之間能夠物理共享共享嵌入和輸出頭的參數和梯度。這種物理共享機制進一步提高了我們的記憶體效率。受近期低精度訓練進展(Dettmers等人,2022;Noune等人,2022;Peng等人,2023b)的啟發,我們提出了一種利用FP8資料格式訓練DeepSeek-V3的細粒度混合精度框架。雖然低精度訓練前景廣闊,但它常常受到啟動、權重和梯度中的異常值的限制(Fishman等人,2024;He等人;Sun等人,2024)。儘管在推理量化方面取得了重大進展(Frantar等人,2022;Xiao等人,2023),但在大規模語言模型預訓練中成功應用低精度技術的研究相對較少(Fishman等人,2024)。
為了應對這一挑戰並有效擴展FP8格式的動態範圍,我們引入了一種細粒度量化策略:
具有個元素的分塊分組或具有個元素的塊級分組 。在我們提高精度的累加過程中,相關的反量化開銷在很大程度上得到緩解,這對於實現精準的FP8通用矩陣乘法(GEMM)至關重要。 此外,為了進一步減少MoE訓練中的記憶體和通訊開銷,我們以FP8格式快取和調度啟動,同時以BF16格式儲存低精度最佳化器狀態。 我們在兩個與DeepSeek-V2-Lite和DeepSeek-V2規模相似的模型上驗證了所提出的FP8混合精度框架,訓練了大約1兆個tokens(更多細節見附錄B.1)。值得注意的是,與BF16基線相比,我們的FP8訓練模型的相對損失誤差始終保持在0.25%以下,處於訓練隨機性可接受的範圍內。
基於低精度訓練中廣泛採用的技術(Kalamkar等人,2019;Narang等人,2017),我們提出了一種用於FP8訓練的混合精度框架。在這個框架中,大多數計算密集型操作以FP8精度進行,而一些關鍵操作則戰略性地保持其原始資料格式,以平衡訓練效率和數值穩定性。整體框架如圖6所示。
首先,為了加速模型訓練,大多數核心計算核心,即GEMM操作,以FP8精度實現。這些GEMM操作接受FP8張量作為輸入,並產生BF16或FP32格式的輸出。如圖6所示 與線性層相關的三個GEMM操作,即Linear operator, namely Fprop (forward pass), Dgrad (activation backward pass), and Wgrad (weight backward pass),均以FP8執行。這種設計理論上比原始的BF16方法快兩倍。 此外,FP8的Wgrad GEMM允許以FP8格式儲存啟動,以供反向傳播使用。這顯著減少了記憶體消耗。 儘管FP8格式具有效率優勢,但某些操作由於對低精度計算敏感,仍然需要更高的精度。
此外,一些低成本操作也可以在對整體訓練成本影響可忽略不計的情況下使用更高的精度。 因此,經過仔細研究,我們對以下元件保持原始精度(例如BF16或FP32):嵌入模組、輸出頭、MoE門控模組、歸一化操作和注意力操作。這些對高精度的針對性保留確保了DeepSeek-V3訓練動態的穩定性。 為了進一步保證數值穩定性,我們以更高的精度儲存主權重、權重梯度和最佳化器狀態。雖然這些高精度元件會帶來一些記憶體開銷,但通過在我們的分佈式訓練系統中跨多個DP等級進行高效分片,它們的影響可以最小化。 基於我們的FP8混合精度框架,我們引入了幾種策略來提高低精度訓練的精準性,重點關注量化方法和乘法過程。
細粒度量化 :在低精度訓練框架中,由於FP8格式的動態範圍有限(受其減少的指數位限制),溢出和下溢是常見的挑戰。作為標準做法,通過將輸入張量的最大絕對值縮放到FP8格式的最大可表示值,使輸入分佈與FP8格式的可表示範圍對齊(Narang等人,2017)。這種方法使得低精度訓練對啟動異常值高度敏感,這可能嚴重降低量化精度。為瞭解決這個問題,我們提出了一種細粒度量化方法,在更細的粒度上應用縮放。如圖7(a)所示,(1)對於啟動,我們以的tile為基礎對元素進行分組和縮放(即每個tokens每128個通道); (2)對於權重,我們以的塊為基礎對元素進行分組和縮放(即每128個輸入通道每128個輸出通道)。 這種方法確保量化過程能夠通過根據較小的元素組調整縮放因子,更好地適應異常值。在附錄B.2中,我們進一步討論了像權重量化一樣對啟動進行塊級分組和縮放時的訓練不穩定性。 我們方法中的一個關鍵修改是在GEMM操作的內維度上引入每組縮放因子。標準的FP8 GEMM不直接支援此功能。 然而,結合我們精確的FP32累加策略,可以高效地實現。值得注意的是,我們的細粒度量化策略與微縮放格式(Rouhani等人,2023b)的思想高度一致,而NVIDIA下一代GPU(Blackwell系列)的Tensor Core已宣佈支援具有更細量化粒度的微縮放格式(NVIDIA,2024a)。我們希望我們的設計能夠為未來的工作提供參考,以跟上最新的GPU架構。 提高累加精度 :低精度GEMM操作經常受到下溢問題的困擾,其精準性在很大程度上取決於高精度累加,這通常以FP32精度進行(Kalamkar等人,2019;Narang等人,2017)。然而,我們觀察到NVIDIA H800 GPU上FP8 GEMM的累加精度僅限於保留大約14位,這明顯低於FP32累加精度。當內維度較大時,這個問題會更加明顯(Wortsman等人,2023),這在大規模模型訓練中是典型的場景,此時批次大小和模型寬度會增加。以兩個隨機矩陣的GEMM操作()為例,在我們的初步測試中,Tensor Core中有限的累加精度導致最大相對誤差接近2%。儘管存在這些問題,有限的累加精度仍然是一些FP8框架的默認選項(NVIDIA,2024b),嚴重限制了訓練精準性。 為瞭解決這個問題,我們採用提升到CUDA Core以獲得更高精度的策略(Thakkar等人,2023)。該過程如圖7(b)所示。具體而言,在Tensor Core上執行矩陣乘法累加(MMA)時,中間結果使用有限的位寬進行累加。一旦達到的間隔,這些部分結果將被覆制到CUDA Core上的FP32暫存器中,在那裡進行全精度FP32累加。如前所述,我們的細粒度量化沿內維度應用每組縮放因子。這些縮放因子可以在CUDA Core上作為反量化過程高效地相乘,且額外計算成本最小。 值得注意的是,這種修改降低了單個warp組的WGMMA(warp組級矩陣乘法累加)指令發出率。然而,在H800架構中,通常會同時執行兩個WGMMA:當一個warp組執行提升操作時,另一個warp組能夠執行MMA操作。這種設計使得兩個操作可以重疊,保持了Tensor Core的高利用率。根據我們的實驗,設定個元素(相當於4個WGMMA)是能夠顯著提高精度而不引入大量開銷的最小累加間隔。 尾數優先於指數 :與先前工作採用的混合FP8格式(NVIDIA,2024b;Peng等人,2023b;Sun等人,2019b)不同,他們在Fprop中使用E4M3(4位指數和3位尾數),在Dgrad和Wgrad中使用E5M2(5位指數和2位尾數),我們在所有張量上採用E4M3格式以獲得更高的精度。我們將這種方法的可行性歸因於我們的細粒度量化策略,即分塊和塊級縮放。通過對較小的元素組進行操作,我們的方法有效地在這些分組元素之間共享指數位,減輕了有限動態範圍的影響。線上量化 :在基於張量的量化框架(NVIDIA,2024b;Peng等人,2023b)中採用延遲量化,該方法保留先前迭代中的最大絕對值歷史,以推斷當前值。為了確保準確的縮放並簡化框架,我們為每個的啟動tile或的權重塊線上計算最大絕對值。基於此,我們推匯出縮放因子,然後將啟動或權重線上量化為FP8格式。結合我們的FP8訓練框架,我們通過將快取的啟動值和最佳化器狀態壓縮為低精度格式,進一步降低記憶體消耗和通訊開銷。
低精度最佳化器狀態 :我們採用BF16資料格式而非FP32來跟蹤AdamW(Loshchilov和Hutter,2017)最佳化器中的一階和二階矩,且不會導致可觀測的性能下降。不過,最佳化器儲存的主權重以及用於批次大小累積的梯度仍保留為FP32,以確保整個訓練過程中的數值穩定性。低精度啟動值 :如圖6所示,Wgrad操作以FP8執行。為減少記憶體消耗,自然的選擇是在Linear算子的反向傳播中以FP8格式快取啟動值。然而,對於一些算子,為實現低成本的高精度訓練,我們採取了特殊考慮:注意力算子之後的Linear算子的輸入 :這些啟動值也用於注意力算子的反向傳播,因此對精度較為敏感。我們為這些啟動值專門採用定製的E5M6資料格式。此外,在反向傳播中,這些啟動值將從1x128的量化切片轉換為128x1的切片。為避免引入額外的量化誤差,所有縮放因子均進行舍入縮放,即2的整數次冪。MoE中SwiGLU算子的輸入 :為進一步降低記憶體成本,我們快取SwiGLU算子的輸入,並在反向傳播中重新計算其輸出。這些啟動值同樣以FP8格式儲存,並採用我們的細粒度量化方法,在記憶體效率和計算精度之間取得平衡。低精度通訊 :通訊頻寬是MoE模型訓練中的關鍵瓶頸。為緩解這一挑戰,我們在MoE上投影之前將啟動值量化為FP8,然後應用調度元件,這與MoE上投影中的FP8正向傳播相容。與注意力算子之後的Linear算子的輸入類似,此啟動值的縮放因子為2的整數次冪。類似的策略也應用於MoE下投影之前的啟動梯度。對於正向和反向合併元件,我們將它們保留為BF16,以在訓練流程的關鍵部分保持訓練精度。我們將DeepSeek-V3部署在H800叢集上,該叢集中每個節點內的GPU通過NVLink互連,叢集內所有GPU通過IB實現全互連。為同時確保線上服務的服務等級目標(SLO)和高吞吐量,我們採用了將預填充和解碼階段分離的部署策略。
預填充階段的最小部署單元由4個節點和32個GPU組成。注意力部分採用4路張量平行(TP4)與序列平行(SP),並結合8路資料平行(DP8)。其較小的TP大小為4,限制了TP通訊的開銷。對於MoE部分,我們使用32路專家平行(EP32),這確保每個專家能夠處理足夠大的批次大小,從而提高計算效率。對於MoE的全對全通訊,我們採用與訓練時相同的方法:首先通過IB在節點間傳輸tokens,然後通過NVLink在節點內的GPU之間進行轉發。特別地,對於淺層的密集型MLP,我們使用1路張量平行以節省TP通訊開銷。
為了在MoE部分的不同專家之間實現負載平衡,我們需要確保每個GPU處理的tokens數量大致相同。為此,我們引入了冗餘專家的部署策略,即複製高負載專家並進行冗餘部署。高負載專家是根據線上部署期間收集的統計資訊檢測出來的,並會定期(例如每10分鐘)進行調整。在確定冗餘專家集合後,我們會根據觀察到的負載情況,在節點內的GPU之間仔細重新安排專家,力求在不增加跨節點全對全通訊開銷的情況下,儘可能平衡GPU之間的負載。對於DeepSeek-V3的部署,我們在預填充階段設定了32個冗餘專家。對於每個GPU,除了原本承載的8個專家外,還會額外承載一個冗餘專家。
此外,在預填充階段,為了提高吞吐量並隱藏全對全通訊和TP通訊的開銷,我們同時處理兩個計算工作量相似的微批次,將一個微批次的注意力和MoE計算與另一個微批次的調度和合併操作重疊。 最後,我們正在探索專家的動態冗餘策略,即每個GPU承載更多的專家(例如16個專家),但在每次推理步驟中僅啟動9個。在每一層的全對全操作開始之前,我們即時計算全域最優路由方案。鑑於預填充階段的大量計算,計算此路由方案的開銷幾乎可以忽略不計。
在解碼過程中,我們將共享專家視為路由專家。從這個角度來看,每個tokens在路由過程中會選擇9個專家,其中共享專家被視為總是會被選中的高負載專家。解碼階段的最小部署單元由40個節點和320個GPU組成。注意力部分採用TP4與SP,並結合DP80,而MoE部分使用EP320。對於MoE部分,每個GPU僅承載一個專家,64個GPU負責承載冗餘專家和共享專家。調度和合併部分的全對全通訊通過IB直接進行點對點傳輸,以實現低延遲。此外,我們利用IBGDA(NVIDIA,2022)技術進一步減少延遲並提高通訊效率。
與預填充類似,我們會在一定時間間隔內根據線上服務中專家負載的統計資訊定期確定冗餘專家集合。然而,由於每個GPU僅承載一個專家,我們無需重新安排專家。我們也在探索解碼階段的動態冗餘策略。不過,這需要對計算全域最優路由方案的演算法進行更細緻的最佳化,並與調度核心融合以減少開銷。
此外,為了提高吞吐量並隱藏全對全通訊的開銷,我們也在探索在解碼階段同時處理兩個計算工作量相似的微批次。與預填充不同,解碼階段注意力計算消耗的時間佔比較大。因此,我們將一個微批次的注意力計算與另一個微批次的調度+MoE+合併操作重疊。在解碼階段,每個專家的批次大小相對較小(通常在256個tokens以內),瓶頸在於記憶體訪問而非計算。由於MoE部分只需要載入一個專家的參數,記憶體訪問開銷極小,因此使用較少的SM不會顯著影響整體性能。因此,為避免影響注意力部分的計算速度,我們可以僅為調度+MoE+合併操作分配一小部分SM。
基於我們在全對全通訊和FP8訓練方案方面的實踐,我們向AI硬體供應商提出以下晶片設計建議。
在DeepSeek-V3中,我們實現了計算和通訊的重疊,以便在計算過程中隱藏通訊延遲。與序列的計算和通訊方式相比,這顯著降低了對通訊頻寬的依賴。然而,當前的通訊實現依賴昂貴的SM(例如,我們在H800 GPU的132個SM中分配20個用於此目的),這將限制計算吞吐量。此外,使用SM進行通訊會導致顯著的效率低下,因為張量核心將完全閒置。 目前,SM在全對全通訊中主要執行以下任務:
在IB(InfiniBand)和NVLink域之間轉發資料,同時將同一節點內多個GPU的IB流量從單個GPU進行聚合。 在RDMA緩衝區(已註冊的GPU記憶體區域)和輸入/輸出緩衝區之間傳輸資料。 執行全對全合併的歸約操作。 在通過IB和NVLink域向多個專家傳輸分塊資料時,管理細粒度的記憶體佈局。 我們期望未來的供應商能夠開發出將這些通訊任務從寶貴的計算單元SM中解除安裝的硬體,該硬體可作為GPU協處理器或類似NVIDIA SHARP(Graham等人,2016)的網路協處理器。此外,為降低應用程式程式設計的複雜性,我們希望這種硬體能夠從計算單元的角度統一IB(橫向擴展)和NVLink(縱向擴展)網路。有了這個統一的介面,計算單元可以通過基於簡單原語提交通訊請求,輕鬆地在整個IB - NVLink統一域中完成讀取、寫入、多播和歸約等操作。
提高Tensor Core中的FP8 GEMM累加精度 :在當前NVIDIA Hopper架構的Tensor Core實現中,FP8 GEMM(通用矩陣乘法)採用定點累加,在加法之前根據最大指數對尾數乘積進行右移對齊。我們的實驗表明,在符號填充右移後,它僅使用每個尾數乘積的最高14位,並截斷超出此範圍的位。然而,例如,要從32次FP8×FP8乘法的累加中獲得精確的FP32結果,至少需要34位的精度。因此,我們建議未來的晶片設計增加Tensor Core中的累加精度,以支援全精度累加,或者根據訓練和推理演算法的精度要求選擇合適的累加位寬。這種方法可確保在保持計算效率的同時,誤差保持在可接受的範圍內。支援分塊和塊級量化 :當前的GPU僅支援按張量進行量化,缺乏對像我們的分塊和塊級量化這樣的細粒度量化的原生支援。在當前的實現中,當達到間隔時,部分結果將從Tensor Core複製到CUDA核心,乘以縮放因子,並加入到CUDA核心上的FP32暫存器中。儘管結合我們精確的FP32累加策略,反量化開銷已顯著降低,但Tensor Core和CUDA核心之間頻繁的資料移動仍然限制了計算效率。因此,我們建議未來的晶片支援細粒度量化,使Tensor Core能夠接收縮放因子並執行帶組縮放的MMA操作。這樣,整個部分和累加與反量化過程可以直接在Tensor Core內部完成,直到產生最終結果,避免了頻繁的資料移動。支援線上量化 :儘管線上量化在我們的研究中被證明是有效的,但當前的實現難以有效地支援它。在現有過程中,我們需要從HBM(高頻寬記憶體)讀取128個BF16啟動值(前一次計算的輸出)進行量化,量化後的FP8值隨後被寫回HBM,之後又需要再次讀取用於MMA操作。為解決這種低效率問題,我們建議未來的晶片將FP8轉換和TMA(張量記憶體加速器)訪問整合到單個融合操作中,以便在啟動值從全域記憶體傳輸到共用記憶體的過程中完成量化,避免頻繁的記憶體讀寫。我們還建議支援warp級轉換指令以加速,這將進一步促進層歸一化和FP8轉換的更好融合。或者,可以採用近記憶體計算方法,將計算邏輯放置在HBM附近。在這種情況下,BF16元素在從HBM讀入GPU時可以直接轉換為FP8,大約減少50%的片外記憶體訪問。支援轉置GEMM操作 :當前的架構使得將矩陣轉置與GEMM操作融合變得繁瑣。在我們的工作流程中,前向傳播中的啟動值被量化為1x128的FP8切片並儲存。在反向傳播中,矩陣需要被讀出、反量化、轉置、重新量化為128x1的切片,並儲存在HBM中。為減少記憶體操作,我們建議未來的晶片能夠在MMA操作之前直接從共用記憶體進行矩陣的轉置讀取,以滿足訓練和推理所需的精度。結合FP8格式轉換和TMA訪問的融合,這一增強將顯著簡化量化工作流程。與DeepSeek-V2相比,我們通過提高數學和程式設計樣本的比例來最佳化預訓練語料庫,同時將多語言覆蓋範圍擴展到英語和中文之外。此外,我們對資料處理管道進行了最佳化,在保持語料庫多樣性的同時儘量減少冗餘 。受Ding等人(2024)的啟發,我們採用文件打包方法來保證資料的完整性,但在訓練過程中不採用跨樣本注意力掩碼。最終,DeepSeek-V3的訓練語料庫包含14.8T高品質且多樣化的token,這些token由我們的分詞器生成。 在DeepSeekCoder-V2(DeepSeek-AI,2024a)的訓練過程中,我們觀察到“Fill-in-Middle(FIM)”策略在使模型能夠根據上下文線索精準預測中間文字的同時,不會損害其下一個token的預測能力。與DeepSeekCoder-V2一致,我們在DeepSeek-V3的預訓練中也採用了FIM策略。具體而言,我們使用“Prefix-Suffix-Middle(PSM)”框架將資料建構為如下結構:
<|fim_begin|> 𝑓pre<|fim_hole|> 𝑓suf<|fim_end|> 𝑓middle<|eos_token|>。
這個結構在文件層面作為預打包過程的一部分被應用,FIM策略的應用率為0.1,與PSM框架一致。
DeepSeek-V3的分詞器採用字節級BPE(Shibata等人,1999),詞彙表擴展到128K個token。我們對預分詞器和分詞器的訓練資料進行了修改,以最佳化多語言壓縮效率。此外,與DeepSeek-V2相比,新的預分詞器引入了結合標點和分行符號的token。然而,當模型處理沒有結尾分行符號的多行提示時,特別是在少樣本評估提示中,這個技巧可能會引入token邊界偏差(Lundberg,2023)。為瞭解決這個問題,我們在訓練過程中隨機拆分一定比例的此類組合token,使模型接觸到更廣泛的特殊情況,從而減輕這種偏差。
模型超參數 :我們將:注意力頭(attention heads)數設定為128, 每個head的維度設定為128。 Transformer layers設定為61, 隱藏維度(hidden dimension)設定為7168。 所有可學習參數均以0.006的標準差進行隨機初始化。 在MLA中,我們將 KV壓縮維度設定為512, query壓縮維度設定為1536。 對於解耦的查詢和鍵,我們將每個head的維度設定為64。 除了前3層,我們將所有的FFN層取代為MoE層。每個MoE層包含1個共享專家和256個路由專家,每個專家的中間隱藏維度為2048。 在路由專家中,每個token會啟動8個專家,並且確保每個token最多被傳送到4個節點。 multi-token預測深度設定為1,即除了準確預測下一個token外,每個token還將預測一個額外的token。 與DeepSeek-V2一樣,DeepSeek-V3也在壓縮後的潛在向量之後使用額外的RMSNorm層,並在寬度瓶頸處乘以額外的縮放因子。 在這種組態下,DeepSeek-V3總共有671B參數,每個token會啟動37B參數。 訓練超參數 :我們採用在前469B個token的訓練中,批次大小從3072逐漸增加到15360, 在剩餘的訓練中保持15360。我們利用流水線平行將模型的不同層部署在不同的GPU上,對於每一層,路由專家將均勻地部署在屬於8個節點的64個GPU上。 然後,在模型消耗10T訓練token之前,保持的恆定學習率。 隨後,在4.3T個token上,學習率按照餘弦衰減曲線逐漸衰減至。 在訓練最後500B個token時,前333B個token保持的學習率,在剩餘的167B個token中,學習率切換為。 AdamW最佳化器(Loshchilov和Hutter,2017),超參數設定為,,權重衰減為0.1。 預訓練時,我們將最大序列長度設定為4K,並在14.8T個token上對DeepSeek-V3進行預訓練。 對於學習率調度(learning rate scheduling),在前2K步中,學習率從0線性增加到。 梯度裁剪范數設定為1.0。 我們採用批次大小調度策略: 對於節點限制路由,每個token最多被傳送到4個節點(即)。對於無輔助損失的負載平衡,在前14.3T個token的訓練中,我們將偏差更新速度設定為0.001,在剩餘的500B個token的訓練中設定為0.0。對於平衡損失,我們將設定為0.0001,只是為了避免單個序列內出現極端不平衡的情況。MTP損失權重在前10T個token的訓練中設定為0.3,在剩餘的4.8T個token的訓練中設定為0.1。 我們採用與DeepSeek-V2(DeepSeek-AI,2024c)類似的方法,使DeepSeek-V3具備長上下文能力。在預訓練階段之後,我們使用YaRN(Peng等人,2023a)進行上下文擴展,並執行兩個額外的訓練階段,每個階段包含1000步,以逐步將上下文窗口從4K擴展到32K,然後再擴展到128K。YaRN的組態與DeepSeek-V2中使用的一致,僅應用於解耦的共享鍵。兩個階段的超參數保持相同,縮放因子,,,且。在第一階段,序列長度設定為32K,批次大小為1920。在第二階段,序列長度增加到128K,批次大小減少到480。兩個階段的學習率均設定為,與預訓練階段的最終學習率相匹配。
通過這兩個階段的擴展訓練,DeepSeek-V3能夠處理長度高達128K的輸入,同時保持強大的性能。圖8表明,經過監督微調後,DeepSeek-V3在“Needle In A HayStack”(NIAH)測試中取得了顯著的性能,在高達128K的上下文窗口長度上展現出一致的穩健性。
圖8:在“Needle In A HayStack”(NIAH)測試中的評估結果。DeepSeek-V3在高達128K的所有上下文窗口長度上都表現良好。
DeepSeek-V3的基礎模型在一個以英語和中文為主的多語言語料庫上進行預訓練,因此我們主要在一系列英語、中文以及多語言基準上評估其性能。我們的評估基於整合在我們的HAI-LLM框架中的內部評估框架。考慮的基準分類如下,其中帶下劃線的基準是中文的,雙下劃線的基準是多語言的:
多學科選擇題資料集包括MMLU(Hendrycks等人,2020)、MMLU-Redux(Gema等人,2024)、MMLU-Pro(Wang等人,2024b)、MMMLU(OpenAI,2024b)、C-Eval(Huang等人,2023)和CMMLU(Li等人,2023)。 語言理解和推理資料集包括HellaSwag(Zellers等人,2019)、PIQA(Bisk等人,2020)、ARC(Clark等人,2018)和BigBench Hard(BBH)(Suzgun等人,2022)。 閉卷問答資料集包括TriviaQA(Joshi等人,2017)和NaturalQuestions(Kwiatkowski等人,2019)。 閱讀理解資料集包括RACE(Lai等人,2017)、DROP(Dua等人,2019)、C3(Sun等人,2019a)和CMRC(Cui等人,2019)。 指代消解資料集包括CLUEWSC(Xu等人,2020)和WinoGrande(Sakaguchi等人,2019)。 語言建模資料集包括Pile(Gao等人,2020)。 中文理解和文化資料集包括CCPM(Li等人,2021)。 數學資料集包括GSM8K(Cobbe等人,2021)、MATH(Hendrycks等人,2021)、MGSM(Shi等人,2023)和CMath(Wei等人,2023)。 程式碼資料集包括HumanEval(Chen等人,2021)、LiveCodeBench-Base(0801-1101)(Jain等人,2024)、MBPP(Austin等人,2021)和CRUXEval(Gu等人,2024)。 標準化考試包括AGIEval(Zhong等人,2023)。需要注意的是,AGIEval同時包含英語和中文子集。 按照我們之前的工作(DeepSeek-AI,2024b,c),對於包括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,我們進行基於語言建模的評估,並使用每字節位數(Bits-Per-Byte,BPB)作為指標,以確保在使用不同分詞器的模型之間進行公平比較。
DeepSeek-AI,2024c,是我們之前發佈的模型)、Qwen2.5 72B基礎模型(出自Qwen,2024b)以及LLaMA-3.1 405B基礎模型(來自AI@Meta,2024b )。利用我們的內部評估框架對所有這些模型展開評估,而且保證評估設定完全一致。需要注意的是,由於我們的評估框架在過去幾個月有所變動,DeepSeek-V2基礎模型的性能跟之前報告的結果稍有不同。總體來講,DeepSeek-V3基礎模型在性能方面全方位超越了DeepSeek-V2基礎模型與Qwen2.5 72B基礎模型,並且在大多數基準測試裡比LLaMA-3.1 405B基礎模型表現更優,基本上算是最強的開源模型了。
從更詳細的視角來看,我們把DeepSeek-V3基礎模型與其他開源基礎模型逐個比較。其一,和DeepSeek-V2基礎模型相比,得益於在模型架構上的改良、模型規模的擴大、訓練資料量的增多以及資料質量的提升,DeepSeek-V3基礎模型不出所料地獲得了顯著更優的性能表現。其二,相較於當下頂尖的中文開源模型Qwen2.5 72B基礎模型,儘管DeepSeek-V3基礎模型的啟動參數僅有它的一半,但在英語、多語言、程式碼以及數學相關的基準測試中,DeepSeek-V3都展現出了極大優勢。在中文基準測試裡,除了中文多學科選擇題任務CMMLU之外,DeepSeek-V3基礎模型的成績也比Qwen2.5 72B基礎模型要好。其三,與有著11倍啟動參數的最大開源模型LLaMA-3.1 405B基礎模型相比,DeepSeek-V3基礎模型在多語言、程式碼以及數學的基準測試中性能更為突出。在英語和中文語言類的基準測試裡,DeepSeek-V3基礎模型有著頗具競爭力或者更優異的表現,特別是在BBH、MMLU系列、DROP、C-Eval、CMMLU以及CCPM這些測試當中表現亮眼。
由於採用了高效的架構以及全方位的工程最佳化手段,DeepSeek-V3達成了極高的訓練效率。在我們的訓練框架與基礎設施條件下,訓練每一兆個tokens,DeepSeek-V3僅需180K H800 GPU小時,這相較於訓練72B或者405B的密集型模型,成本要低得多。
表3:DeepSeek-V3基礎模型與其他代表性開源基礎模型的比較。所有模型均在我們的內部框架中進行評估,並採用相同的評估設定。得分差距不超過0.3的被認為處於同一水平。DeepSeek-V3基礎模型在大多數基準測試中表現最佳,尤其是在數學和程式碼任務上。
在表3中,我們把DeepSeek-V3的基礎模型與當下一些最先進的開源基礎模型進行了比較,其中包括DeepSeek-V2基礎模型(來自
為評估MTP策略的有效性,我們開展了消融實驗,對比加入MTP模組前後模型的性能。在表4中,我們在兩種不同規模的模型上實施消融實驗:小型模型,總參數為15.7B,在1.33T tokens上訓練;大型模型,總參數為228.7B,在540B tokens上訓練。
在基線模型的基礎上,我們保持訓練資料以及模型的其他架構不變,僅僅加入1-depth的MTP模組來訓練對比模型。在訓練完成之後,我們在多個評估基準上對比基線模型與加入MTP模組的模型的性能,這些基準包括Pile-test、BBH、MMLU、DROP、TriviaQA、NaturalQuestions、HumanEval、MBPP、GSM8K以及MATH等。
特別要指出的是,MTP模組在推理時可以被直接丟棄,這使得對比模型在推理成本上完全相同,從而能夠純粹地評估MTP策略給模型訓練帶來的性能提升效果。實驗結果彙總於表4,清晰地顯示出MTP策略在大多數評估基準上都能持續提升模型性能。
為評估無輔助損失的負載平衡策略的有效性,我們開展了消融實驗,對比採用傳統輔助損失策略與我們所提出的無輔助損失策略的模型性能。與多tokens預測的消融實驗類似,我們在兩種不同規模的模型上實施該實驗:小型模型,總參數為15.7B,在1.33T tokens上訓練;大型模型,總參數為228.7B,在578B tokens上訓練。
基線模型單純依賴輔助損失來鼓勵負載平衡,並採用sigmoid門控函數與top-K親和歸一化。控制輔助損失強度的超參數與DeepSeek-V2-Lite和DeepSeek-V2相同。在此基礎上,我們移除輔助損失,並引入無輔助損失的負載平衡策略來訓練對比模型。
訓練完成後,我們在多個評估基準上測試對比模型的性能,這些基準包括Pile-test、BBH、MMLU、DROP、TriviaQA、NaturalQuestions、HumanEval、MBPP、GSM8K以及MATH等。實驗結果表明,無輔助損失的負載平衡策略在多數評估基準上能取得比傳統基於輔助損失的方法更好的模型性能,驗證了該策略在平衡專家負載、提升模型性能方面的優勢。
無輔助損失平衡策略和sequence-wise輔助損失之間的關鍵區別在於它們的平衡範圍:前者是batch-wise的,而後者是sequence-wise的。與sequence-wise輔助損失相比,batch-wise平衡施加的約束更加靈活,因為它並不要求每個序列內部實現域內平衡。這種靈活性使專家能夠更好地在不同領域實現專業化。為了驗證這一點,我們記錄並分析了基於16B輔助損失的基線模型和16B無輔助損失模型在Pile測試集不同領域上的專家負載情況。如圖9所示,不出所料,無輔助損失模型展現出了更強的專家專業化模式。
為了進一步探究這種靈活性與模型性能優勢之間的關聯,我們額外設計並驗證了一種batch-wise輔助損失,它鼓勵在每個訓練批次上實現負載平衡,而非在每個序列上。實驗結果表明,當達到相似的batch-wise負載平衡水平時,batch-wise輔助損失也能實現與無輔助損失方法相似的模型性能。具體而言,在我們對1B MoE模型進行的實驗中,驗證損失分別為:使用sequence-wise輔助損失時為2.258,使用無輔助損失方法時為2.253,使用batch-wise輔助損失時為2.253。在3B MoE模型上我們也觀察到了類似的結果:使用sequence-wise輔助損失的模型驗證損失為2.085,而使用無輔助損失方法或batch-wise輔助損失的模型驗證損失均為2.080。
此外,儘管batch-wise負載平衡方法展現出一致的性能優勢,但它們在效率方面也面臨兩個潛在挑戰:(1)某些序列或小批次內的負載不均衡;(2)推理過程中因領域轉移導致的負載不均衡。我們使用大規模專家平行和資料平行的訓練框架自然地解決了第一個挑戰,這保證了每個微批次的規模較大。對於第二個挑戰,我們還設計並實現了一個帶有冗餘專家部署的高效推理框架(如3.4節所述)來克服它。
我們精心整理了指令微調資料集,其中包含來自多個領域的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基礎模型進行兩個輪次的微調,採用餘弦衰減學習率調度,從開始,逐漸降至。在訓練過程中,每個單獨的序列由多個樣本打包而成。然而,我們採用樣本掩碼策略,以確保這些示例相互獨立且不可見。我們在RL過程中採用了基於規則的Reward Model(RM)和基於模型的RM。
基於規則的RM :對於可以使用特定規則驗證的問題,我們採用基於規則的獎勵系統來確定反饋。例如,某些數學問題有確定的結果,我們要求模型以指定格式(例如放在框內)給出最終答案,這樣我們就可以應用規則來驗證答案的正確性。同樣,對於LeetCode問題,我們可以利用編譯器根據測試用例生成反饋。只要有可能,利用基於規則的驗證可以確保更高的可靠性,因為這種方法不易被操縱或利用。基於模型的RM :對於具有自由格式真實答案的問題,我們依靠Reward Model來確定回答是否與預期的真實答案匹配。相反,對於沒有明確真實答案的問題,如涉及創意寫作的問題,Reward Model的任務是根據問題和相應的回答作為輸入提供反饋。Reward Model基於DeepSeek-V3的SFT檢查點進行訓練。為了提高其可靠性,我們建構的偏好資料不僅提供最終獎勵,還包括得出獎勵的推理過程。這種方法有助於降低在特定任務中獎勵被操縱的風險。與DeepSeek-V2(DeepSeek-AI,2024c)類似,我們採用組相對策略最佳化(GRPO)(Shao等人,2024),該方法摒棄了通常與策略模型大小相同的評論家模型,而是從組得分中估計基線。具體來說,對於每個問題,GRPO從舊策略模型中採樣一組輸出,然後通過最大化以下目標來最佳化策略模型:
其中,、為相關參數,是優勢,由每組輸出對應的獎勵得出:
在RL過程中,我們納入了來自不同領域的提示,如編碼、數學、寫作、角色扮演和問答。這種方法不僅使模型更符合人類偏好,還提高了在基準測試中的性能,特別是在可用SFT資料有限的場景中。
評估基準 :除了用於基礎模型測試的基準外,我們還在IFEval(Zhou等人,2023)、FRAMES(Krishna等人,2024)、LongBench v2(Bai等人,2024)、GPQA(Rein等人,2023)、SimpleQA(OpenAI,2024c)、CSimpleQA(He等人,2024)、SWE-Bench Verified(OpenAI,2024d)、Aider 1、LiveCodeBench(Jain等人,2024)(2024年8月至11月的問題)、Codeforces 2、中國國家高中數學奧林匹克競賽(CNMO 2024)3和2024年美國數學邀請賽(AIME 2024)(MAA,2024)上對指令模型進行了進一步評估。對比基線 :我們對聊天模型與幾個強大的基線進行了全面評估,包括DeepSeek-V2-0506、DeepSeek-V2.5-0905、Qwen2.5 72B Instruct、LLaMA-3.1 405B Instruct、Claude-Sonnet-3.5-1022和GPT-4o-0513。對於DeepSeek-V2模型系列,我們選擇了最具代表性的變體進行比較。對於閉源模型,通過它們各自的API進行評估。詳細評估組態 :對於包括MMLU、DROP、GPQA和SimpleQA在內的標準基準,我們採用了simple-evals框架4中的評估提示。對於MMLU-Redux,我們在零樣本設定下採用Zero-Eval提示格式(Lin,2024)。對於其他資料集,我們遵循其原始評估協議,使用資料集建立者提供的默認提示。對於程式碼和數學基準,HumanEval-Mul資料集總共包含8種主流程式語言(Python、Java、Cpp、C#、JavaScript、TypeScript、PHP和Bash)。我們使用思維鏈(CoT)和非CoT方法在LiveCodeBench上評估模型性能,該資料收集於2024年8月至11月。Codeforces資料集使用參賽者百分比進行衡量。SWE-Bench Verified使用無代理框架(Xia等人,2024)進行評估。我們使用“diff”格式評估與Aider相關的基準。對於數學評估,AIME和CNMO 2024在溫度為0.7的情況下進行評估,結果取16次運行的平均值,而MATH-500採用貪心解碼。我們允許所有模型在每個基準上最多輸出8192個tokens。
表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(一個更具挑戰性的教育知識基準)上表現出色,與Claude-Sonnet 3.5不相上下。在MMLU-Redux(MMLU的改進版本,帶有修正標籤)上,DeepSeek-V3超越了其他模型。此外,在GPQA-Diamond(一個博士水平的評估測試平台)上,DeepSeek-V3取得了顯著的成績,僅次於Claude 3.5 Sonnet,並且在很大程度上超過了所有其他競爭對手。 在長上下文理解基準測試(如DROP、LongBench v2和FRAMES)中,DeepSeek-V3繼續展現出其頂級模型的地位。它在DROP的3-shot設定中取得了令人印象深刻的91.6 F1分數,超過了該類別中的所有其他模型。在FRAMES(一個需要在100k token上下文上進行問答的基準)上,DeepSeek-V3緊隨GPT-4o之後,同時在很大程度上超過了所有其他模型。這表明DeepSeek-V3在處理極長上下文任務方面具有強大的能力。DeepSeek-V3的長上下文能力在LongBench v2上也得到了進一步驗證,該資料集在DeepSeek V3發佈前幾周才發佈,而DeepSeek-V3在該資料集上表現最佳。在事實性知識基準測試SimpleQA上,DeepSeek-V3落後於GPT-4o和Claude-Sonnet,這主要是由於其設計重點和資源分配。DeepSeek-V3將更多的訓練tokens用於學習中文知識,這使得它在C-SimpleQA上表現出色。在指令遵循基準測試中,DeepSeek-V3顯著優於其前身DeepSeek-V2系列,這突出了它在理解和遵循使用者定義格式約束方面的能力有所提高。程式碼和數學基準測試 :編碼對於大語言模型來說是一項具有挑戰性且實際的任務,涵蓋了像SWE-Bench-Verified和Aider這樣的工程任務,以及像HumanEval和LiveCodeBench這樣的演算法任務。在工程任務中,DeepSeek-V3落後於Claude-Sonnet-3.5-1022,但明顯優於開源模型。開放原始碼的DeepSeek-V3有望推動與編碼相關的工程任務的發展。通過提供對其強大能力的訪問,DeepSeek-V3可以在軟體工程和演算法開發等領域推動創新和改進,使開發者和研究人員能夠突破開源模型在編碼任務中的限制。在演算法任務中,DeepSeek-V3表現出色,在HumanEval-Mul和LiveCodeBench等基準測試中優於所有基線模型。這一成功可歸因於其先進的知識蒸餾技術,該技術有效地增強了它在演算法任務中的程式碼生成和問題解決能力。 在數學基準測試中,DeepSeek-V3表現出色,顯著超越基線模型,並為非o1-like模型樹立了新的標竿。具體來說,在AIME、MATH-500和CNMO 2024上,DeepSeek-V3的絕對得分比第二好的模型Qwen2.5 72B高出約10%,對於如此具有挑戰性的基準測試來說,這是一個相當大的差距。這種卓越的能力凸顯了從DeepSeek-R1進行知識蒸餾的有效性,事實證明,這種蒸餾對非o1-like模型非常有益。中文基準測試 :Qwen和DeepSeek是兩個對中文和英文都有強大支援的代表性模型系列。在事實性基準測試中文SimpleQA上,儘管Qwen2.5是在更大的語料庫(18T tokens)上進行訓練的,比DeepSeek-V3的14.8T預訓練tokens多20%,但DeepSeek-V3比Qwen2.5-72B高出16.4分。 在C-Eval(一個代表中文教育知識評估的基準)和CLUEWSC(中文Winograd模式挑戰)上,DeepSeek-V3和Qwen2.5-72B表現出相似的性能水平,這表明兩個模型在具有挑戰性的中文推理和教育任務中都進行了良好的最佳化。除了標準基準測試外,我們還使用大語言模型作為評判者,對我們的模型在開放式生成任務上進行評估,結果如表7所示。具體來說,我們遵循AlpacaEval 2.0(Dubois等人,2024)和Arena-Hard(Li等人,2024a)的原始組態,它們利用GPT-4-Turbo-1106作為評判者進行兩兩比較。在Arena-Hard上,DeepSeek-V3與基線GPT-4-0314相比,贏得率超過86%,與Claude-Sonnet-3.5-1022等頂級模型表現相當。這凸顯了DeepSeek-V3強大的能力,特別是在處理複雜提示(包括編碼和偵錯任務)方面。此外,DeepSeek-V3取得了突破性的里程碑,成為第一個在Arena-Hard基準測試上得分超過85%的開源模型。這一成就顯著縮小了開源模型和閉源模型之間的性能差距,為開源模型在具有挑戰性的領域中所能達到的水平樹立了新的標準。 同樣,DeepSeek-V3在AlpacaEval 2.0上表現出色,優於閉源和開源模型。這表明它在寫作任務和處理簡單問答場景方面具有出色的能力。值得注意的是,它比DeepSeek-V2.5-0905高出20%,這突出了在處理簡單任務方面的顯著改進,並展示了其改進的有效性。
我們將DeepSeek-V3的評判能力與最先進的模型(即GPT-4o和Claude-3.5)進行了比較。表8展示了這些模型在RewardBench(Lambert等人,2024)中的性能。DeepSeek-V3的性能與GPT-4o-0806和Claude-3.5-Sonnet-1022的最佳版本相當,同時超過了其他版本。此外,DeepSeek-V3的評判能力也可以通過投票技術得到增強。因此,我們採用DeepSeek-V3並結合投票,為開放式問題提供自我反饋,從而提高對齊過程的有效性和穩健性。
我們基於DeepSeek-V2.5對來自DeepSeek-R1的知識蒸餾的貢獻進行了消融實驗。基線模型在短思維鏈資料上進行訓練,而其競爭模型使用上述專家檢查點生成的資料。 表9展示了蒸餾資料的有效性,在LiveCodeBench和MATH-500基準測試中都顯示出顯著的改進。我們的實驗揭示了一個有趣的權衡:知識蒸餾導致了更好的性能,但也大幅增加了平均響應長度。為了在模型精準性和計算效率之間保持平衡,我們為DeepSeek-V3在知識蒸餾過程中精心選擇了最佳設定。 我們的研究表明,從推理模型進行知識蒸餾為訓練後最佳化提供了一個有前途的方向。雖然我們目前的工作主要集中在從數學和編碼領域進行資料蒸餾,但這種方法在更廣泛的任務領域中具有潛在的應用價值。在這些特定領域中所展示的有效性表明,長思維鏈蒸餾對於在其他需要複雜推理的認知任務中提升模型性能可能是有價值的。在不同領域進一步探索這種方法仍然是未來研究的一個重要方向。
獎勵在強化學習中起著關鍵作用,引導最佳化過程。在通過外部工具進行驗證較為直接的領域,如一些編碼或數學場景中,強化學習表現出卓越的效果。然而,在更一般的場景中,通過硬編碼建構反饋機制是不切實際的。在開發DeepSeek-V3的過程中,對於這些更廣泛的場景,我們採用了憲法AI方法(Bai等人,2022),利用DeepSeek-V3自身的投票評估結果作為反饋源。這種方法產生了顯著的對齊效果,在主觀評估中顯著提高了DeepSeek-V3的性能。通過整合額外的憲法輸入,DeepSeek-V3可以朝著符合憲法的方向進行最佳化。我們相信,這種將補充資訊與大語言模型相結合作為反饋源的範式至關重要。大語言模型作為一個通用處理器,能夠將來自不同場景的非結構化資訊轉化為獎勵,最終促進大語言模型的自我改進。除了自我獎勵之外,我們還致力於探索其他通用且可擴展的獎勵方法,以持續提升模型在一般場景中的能力。
DeepSeek-V3通過MTP技術預測接下來的兩個tokens,而非僅僅預測下一個tokens。結合推測解碼框架(Leviathan等人,2023;Xia等人,2023),該技術可顯著加快模型的解碼速度。由此引出一個很自然的問題:額外預測的tokens的接受率如何?根據我們的評估,在各種生成主題中,對第二個tokens預測的接受率在85%到90%之間,表現出較高的穩定性。如此高的接受率使得DeepSeek-V3的解碼速度顯著提升,每秒可處理tokens數(TPS)達到原來的1.8倍 。
在本文中,我們介紹了DeepSeek-V3,這是一個大型混合專家(MoE)語言模型,總參數達6710億,每個tokens啟動370億參數,在14.8兆個tokens上進行訓練。除了採用多頭潛在注意力(MLA)和DeepSeekMoE架構外,它還首創了無輔助損失的負載平衡策略,並設定了多tokens預測訓練目標,以提升性能。得益於FP8訓練支援和精細的工程最佳化,DeepSeek-V3的訓練成本較低。在訓練後最佳化階段,我們成功地從DeepSeek-R1系列模型中蒸餾出推理能力。綜合評估表明,DeepSeek-V3已成為目前最強的開源模型,其性能可與GPT-4o和Claude-3.5-Sonnet等領先的閉源模型相媲美。儘管性能強大,但它的訓練成本依然經濟,包括預訓練、上下文長度擴展和訓練後最佳化在內,整個訓練過程僅需278.8萬H800 GPU小時。
儘管DeepSeek-V3性能出色且成本效益高,但我們也認識到它存在一些侷限性,特別是在部署方面。首先,為確保高效推理,DeepSeek-V3推薦的部署單元相對較大,這可能給小型團隊帶來負擔。其次,雖然我們為DeepSeek-V3設計的部署策略已使其端到端生成速度達到DeepSeek-V2的兩倍以上,但仍有進一步提升的空間。幸運的是,隨著更先進硬體的發展,這些侷限性有望自然得到解決。
DeepSeek始終堅持長期主義的開源模型路線,旨在穩步接近通用人工智慧(AGI)的最終目標。未來,我們計畫在以下幾個方向進行重點研究:
我們將持續研究和改進模型架構,進一步提高訓練和推理效率,努力實現對無限上下文長度的高效支援。此外,我們將嘗試突破Transformer架構的限制,從而拓展其建模能力的邊界。 我們會不斷迭代訓練資料的數量和質量,並探索納入額外的訓練訊號源,旨在推動資料在更全面的維度上進行擴展。 我們將持續探索和迭代模型的深度思考能力,通過拓展推理長度和深度,提升其智能水平和問題解決能力。 我們將探索更全面、多維度的模型評估方法,以防止在研究過程中出現過度最佳化固定基準測試的傾向,這種傾向可能會對模型能力產生誤導,並影響我們的基礎評估。
我們通過在不同規模的兩個基線模型上對比FP8混合精度框架與BF16訓練,來驗證FP8混合精度框架的有效性。在小規模上,我們在1.33T個tokens上訓練一個總參數約為160億的基線MoE模型。在大規模上,我們在約0.9T個tokens上訓練一個總參數約為2300億的基線MoE模型。我們在圖10中展示了訓練曲線,結果表明,通過我們的高精度累加和細粒度量化策略,相對誤差可保持在0.25%以下。
儘管我們的分塊細粒度量化有效地減輕了由特徵異常值引入的誤差,但它在啟動量化時需要不同的分組方式,即前向傳播時為1×128,反向傳播時為128×1 。啟動梯度也需要類似的處理過程。一種簡單直接的策略是像對模型權重進行量化那樣,對每128×128個元素進行塊級量化。這樣,在反向傳播時只需要進行轉置操作。因此,我們進行了一項實驗,將與Dgrad相關的所有張量都以塊級方式進行量化。結果顯示,計算啟動梯度並以鏈式方式反向傳播到淺層的Dgrad操作對精度非常敏感。具體而言,對啟動梯度進行塊級量化會導致在總參數約為160億、在約3000億個tokens上訓練的MoE模型出現發散現象。我們推測這種敏感性是由於啟動梯度在tokens之間極不平衡,從而產生與tokens相關的異常值(Xi等人,2023)。這些異常值無法通過塊級量化方法有效處理。
我們記錄了基於16B輔助損失的基線模型和無輔助損失模型在Pile測試集上的專家負載情況。如圖10所示,無輔助損失模型在所有層中往往具有更強的專家專業化程度。
(此處有多張圖的詳細說明,圖中展示了不同層、不同領域(維基百科英文部分、Github、離散數學)下基於輔助損失模型和無輔助損失模型的相對專家負載情況,相對專家負載指實際專家負載與理論均衡專家負載的比值。例如)
圖10(a)(Layers1 - 7) :展示了第1 - 7層中,在維基百科英文部分、Github和離散數學這三個領域下,基於輔助損失模型和無輔助損失模型的相對專家負載。相對專家負載的範圍從0到10 ,無輔助損失模型在這些層和領域中展現出了與基於輔助損失模型不同的專家負載分佈,且表現出更強的專家專業化模式。圖10(b)(Layers 7 - 13) :呈現了第7 - 13層在相同三個領域的相對專家負載情況。同樣,無輔助損失模型在這些層的專家專業化模式更為明顯,其相對專家負載的分佈與基於輔助損失模型存在差異。圖10(c)(Layers 13 - 19) :展示第13 - 19層的情況,進一步表明無輔助損失模型在不同層和領域上專家負載的分佈特徵,體現出其在這些層上更強的專家專業化趨勢。圖10(d)(Layers 19 - 25) :針對第19 - 25層,對比了兩種模型在不同領域的相對專家負載,再次突出無輔助損失模型在專家專業化方面的特點。圖10(e)(Layers 25 - 27) :最後展示第25 - 27層的相對專家負載,從不同層和領域維度持續驗證無輔助損失模型在專家專業化模式上相較於基於輔助損失模型具有更明顯的特點。無輔助損失模型在Pile測試集的不同層和領域上,相較於基於輔助損失的模型,展現出了更強的專家專業化模式。 (鈔智能)