DeepSeek核心算法解析:如何打造比肩ChatGPT的國產大模型

注:此文章內容均節選自充電了么創始人,CEO兼CTO陳敬雷老師的新書《自然語言處理原理與實戰》(人工智能科學與技術叢書)【陳敬雷編著】【清華大學出版社】

文章目錄

  • DeepSeek大模型技術系列一
    • DeepSeek核心算法解析:如何打造比肩ChatGPT的國產大模型
      • 更多技術內容
  • 總結

DeepSeek大模型技術系列一

DeepSeek核心算法解析:如何打造比肩ChatGPT的國產大模型

DeepSeek核心算法解析:如何打造比肩ChatGPT的國產大模型DeepSeek-AI
摘要
我們推出 DeepSeek-V3,這是一款強大的混合專家(MoE)語言模型,總參數達 6710 億,每個 token 激活 370 億參數。為實現高效推理和經濟高效的訓練,DeepSeek-V3 采用多頭潛在注意力(MLA)和 DeepSeekMoE 架構,這些架構在 DeepSeek-V2 中已得到充分驗證。此外,DeepSeek-V3 首創了無輔助損失的負載均衡策略,并設置了多 token 預測訓練目標,以提升性能。我們在 14.8 萬億多樣且高質量的 token 上對 DeepSeek-V3 進行預訓練,隨后通過監督微調(Supervised Fine-Tuning)和強化學習(Reinforcement Learning)階段充分發揮其能力。綜合評估顯示,DeepSeek-V3 性能優于其他開源模型,與領先的閉源模型相當。盡管性能卓越,但 DeepSeek-V3 的完整訓練僅需 278.8 萬個 H800 GPU 小時,訓練過程也非常穩定,在整個訓練過程中未出現任何不可恢復的損失峰值,也無需進行回滾操作。模型檢查點可在https://github.com/deepseek-ai/DeepSeek-V3獲取。
目錄
1.引言 - 4
2.架構 - 6
2.1 基本架構 - 6
2.1.1 多頭潛在注意力 - 7
2.1.2 采用無輔助損失負載均衡的 DeepSeekMoE - 8
2.2 多 token 預測 - 10
1.基礎設施 - 11
3.1 計算集群 - 11
3.2 訓練框架 - 12
3.2.1 DualPipe 與計算通信重疊 - 12
3.2.2 跨節點全對全通信的高效實現 - 13
3.2.3 極低的內存占用與最小開銷 - 14
3.3 FP8 訓練 - 14
3.3.1 混合精度框架 - 15
3.3.2 量化與乘法的精度提升 - 16
3.3.3 低精度存儲與通信 - 18
3.4 推理與部署 - 18
3.4.1 預填充 - 19
3.4.2 解碼 - 19
3.5 硬件設計建議 - 20
3.5.1 通信硬件 - 20
3.5.2 計算硬件 - 20
2.預訓練 - 22
4.1 數據構建 - 22
4.2 超參數 - 22
4.3 長上下文擴展 - 23
4.4 評估 - 24
4.4.1 評估基準 - 24
4.4.2 評估結果 - 25
4.5 討論 - 26
4.5.1 多 token 預測的消融研究 - 26
4.5.2 無輔助損失平衡策略的消融研究 - 27
4.5.3 批量負載平衡與序列負載平衡 - 27
3.后訓練 - 28
5.1 監督微調 - 28
5.2 強化學習 - 28
5.2.1 獎勵模型 - 29
5.2.2 組相對策略優化 - 30
5.3 評估 - 30
5.3.1 評估設置 - 30
5.3.2 標準評估 - 32
5.3.3 開放評估 - 33
5.3.4 DeepSeek-V3 作為生成式獎勵模型 - 33
5.4 討論 - 34
5.4.1 從 DeepSeek-R1 蒸餾知識 - 34
5.4.2 自獎勵 - 34
5.4.3 多 token 預測評估 - 35
4.結論、局限性與未來方向 - 35
A. 貢獻與致謝 - 45
B. 低精度訓練的消融研究 - 47
B.1 FP8 與 BF16 訓練對比 - 47
B.2 關于塊量化的討論 - 47
C. 基于 160 億參數有輔助損失和無輔助損失模型的專家專業化模式 - 48

  1. 引言
    近年來,大語言模型(LLMs)迅速迭代發展(Anthropic, 2024; Google, 2024; OpenAI, 2024a),與通用人工智能(AGI)的差距逐漸縮小。除了閉源模型,包括 DeepSeek 系列(DeepSeek-AI, 2024a,b,c; Guo 等人,2024)、LLaMA 系列(AI@Meta, 2024a,b; Touvron 等人,2023a,b)、Qwen 系列(Qwen, 2023, 2024a,b)和 Mistral 系列(Jiang 等人,2023; Mistral, 2024)在內的開源模型也在不斷進步,努力縮小與閉源模型的差距。為進一步拓展開源模型的能力邊界,我們擴大模型規模,推出了具有 6710 億參數的大型混合專家(MoE)模型 DeepSeek-V3,每個 token 激活 370 億參數。

我們以前瞻性的視角,始終追求強大的模型性能和經濟的成本。因此,在架構方面,DeepSeek-V3 仍采用多頭潛在注意力(MLA)(DeepSeek-AI, 2024c)實現高效推理,采用 DeepSeekMoE(Dai 等人,2024)進行經濟高效的訓練。這兩種架構在 DeepSeek-V2 中已得到驗證,證明它們能夠在實現高效訓練和推理的同時,保持強大的模型性能。除了基本架構,我們還實施了兩種額外策略來進一步提升模型能力。首先,DeepSeek-V3 首創了無輔助損失的負載均衡策略(Wang 等人,2024a),旨在最小化因鼓勵負載均衡而對模型性能產生的不利影響。其次,DeepSeek-V3 采用多 token 預測訓練目標,我們發現這可以提高模型在評估基準上的整體性能。
為實現高效訓練,我們支持 FP8 混合精度訓練,并對訓練框架進行全面優化。低精度訓練已成為高效訓練的一種有前景的解決方案(Dettmers 等人,2022; Kalamkar 等人,2019; Narang 等人,2017; Peng 等人,2023b),其發展與硬件能力的提升密切相關(Luo 等人,2024; Micikevicius 等人,2022; Rouhani 等人,2023a)。在本研究中,我們引入了 FP8 混合精度訓練框架,并首次在超大規模模型上驗證了其有效性。通過支持 FP8 計算和存儲,我們實現了訓練加速和 GPU 內存占用的減少。在訓練框架方面,我們設計了 DualPipe 算法實現高效的流水線并行,該算法減少了流水線氣泡,并通過計算 - 通信重疊在訓練過程中隱藏了大部分通信開銷。這種重疊確保了隨著模型規模的進一步擴大,只要我們保持恒定的計算與通信比率,就可以在跨節點使用細粒度專家的同時,實現近乎為零的全對全通信開銷。此外,我們還開發了高效的跨節點全對全通信內核,以充分利用 InfiniBand(IB)和 NVLink 帶寬。我們還精心優化了內存占用,使得在不使用昂貴的張量并行的情況下也能訓練 DeepSeek-V3。綜合這些努力,我們實現了高訓練效率。
在預訓練階段,我們使用 14.8 萬億高質量且多樣的 token 對 DeepSeek-V3 進行訓練。預訓練過程非常穩定,在整個訓練過程中,我們沒有遇到任何不可恢復的損失峰值,也無需回滾。接下來,我們對 DeepSeek-V3 進行了兩個階段的上下文長度擴展。在第一階段,最大上下文長度擴展到 32K,在第二階段,進一步擴展到 128K。之后,我們對 DeepSeek-V3 的基礎模型進行后訓練,包括監督微調(SFT)和強化學習(RL),使其符合人類偏好并進一步釋放其潛力。在后訓練階段,我們從 DeepSeekR1 系列模型中提取推理能力,同時仔細平衡模型準確性和生成長度。

訓練成本 預訓練 上下文擴展 后訓練 總計
H800 GPU 小時數 266.4 萬 11.9 萬 0.5 萬 278.8 萬
美元成本 532.8 萬美元 23.8 萬美元 1 萬美元 557.6 萬美元

表 1 DeepSeek-V3 的訓練成本(假設 H800 的租用價格為每 GPU 小時 2 美元)
我們在一系列綜合基準上對 DeepSeek-V3 進行評估。盡管訓練成本經濟,但綜合評估顯示,DeepSeek-V3 基礎模型已成為目前最強的開源基礎模型,特別是在代碼和數學領域。其聊天版本在一系列標準和開放基準上也優于其他開源模型,性能與領先的閉源模型(如 GPT-4o 和 Claude-3.5-Sonnet)相當。

最后,我們再次強調 DeepSeek-V3 經濟的訓練成本,總結在表 1 中,這是通過我們對算法、框架和硬件的優化協同設計實現的。在預訓練階段,訓練 DeepSeek-V3 每萬億 token 僅需 18 萬 H800 GPU 小時,即在擁有 2048 個 H800 GPU 的集群上訓練 3.7 天。因此,我們的預訓練階段在不到兩個月的時間內完成,耗費 266.4 萬 GPU 小時。結合上下文長度擴展的 11.9 萬 GPU 小時和后訓練的 0.5 萬 GPU 小時,DeepSeek-V3 的完整訓練僅需 278.8 萬 GPU 小時。假設 H800 GPU 的租用價格為每 GPU 小時 2 美元,我們的總訓練成本僅為 557.6 萬美元。需要注意的是,上述成本僅包括 DeepSeek-V3 的官方訓練成本,不包括與架構、算法或數據的前期研究和消融實驗相關的成本。
我們的主要貢獻包括:
架構:創新的負載均衡策略和訓練目標
?在 DeepSeek-V2 高效架構的基礎上,我們首創了無輔助損失的負載均衡策略,最小化了因鼓勵負載均衡而導致的性能下降。
?我們研究了多 token 預測(MTP)目標,并證明其對模型性能有益。它還可用于推測解碼以加速推理。
預訓練:追求極致訓練效率
?我們設計了 FP8 混合精度訓練框架,并首次在超大規模模型上驗證了 FP8 訓練的可行性和有效性。
?通過算法、框架和硬件的協同設計,我們克服了跨節點 MoE 訓練中的通信瓶頸,實現了近乎完全的計算 - 通信重疊。這顯著提高了我們的訓練效率,降低了訓練成本,使我們能夠在不增加額外開銷的情況下進一步擴大模型規模。以僅 266.4 萬 H800 GPU 小時的經濟成本,我們完成了在 14.8 萬億 token 上對 DeepSeek-V3 的預訓練,生成了目前最強的開源基礎模型。預訓練后的后續訓練階段僅需 10 萬 GPU 小時。
后訓練:從 DeepSeek-R1 進行知識蒸餾
我們引入了一種創新方法,將長思維鏈(CoT)模型(具體為 DeepSeek R1 系列模型之一)的推理能力蒸餾到標準大語言模型中,特別是 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-Sonnet-3.5 等領先的閉源模型相當,縮小了開源和閉源模型在該領域的差距。(2)在事實性基準上,DeepSeek-V3 在 SimpleQA 和 Chinese SimpleQA 上均展示了開源模型中的卓越性能。雖然在英語事實知識(SimpleQA)方面落后于 GPT-4o 和 Claude-Sonnet-3.5,但在中文事實知識(Chinese SimpleQA)方面超過了這些模型,凸顯了其在中文事實知識方面的優勢。
?代碼、數學和推理:(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 節)。
2. 架構
我們首先介紹 DeepSeek-V3 的基本架構,其特點是采用多頭潛在注意力(MLA)(DeepSeek-AI, 2024c)實現高效推理,采用 DeepSeekMoE(Dai 等人,2024)進行經濟高效的訓練。然后,我們提出多 token 預測(MTP)訓練目標,我們發現這可以提高模型在評估基準上的整體性能。對于未明確提及的其他細節,DeepSeek-V3 遵循 DeepSeek-V2(DeepSeek-AI, 2024c)的設置。
2.1 基本架構
DeepSeek-V3 的基本架構仍基于 Transformer(Vaswani 等人,2017)框架。為實現高效推理和經濟高效的訓練,DeepSeek-V3 還采用了經 DeepSeek-V2 充分驗證的 MLA 和 DeepSeekMoE。與 DeepSeek-V2 不同的是,我們為 DeepSeekMoE 引入了無輔助損失的負載均衡策略(Wang 等人,2024a),以減輕為確保負載均衡而對模型性能造成的影響。圖 2 展示了 DeepSeek-V3 的基本架構,我們將在本節簡要回顧 MLA 和 DeepSeekMoE 的細節。
在這里插入圖片描述

圖 2 DeepSeek-V3 基本架構示意圖。遵循 DeepSeek-V2,我們采用 MLA 和 DeepSeekMoE 實現高效推理和經濟高效的訓練
2.1.1 多頭潛在注意力
對于注意力機制,DeepSeek-V3 采用 MLA 架構。設表示嵌入維度,表示注意力頭數,表示每個頭的維度,表示給定注意力層中第個 token 的注意力輸入。MLA 的核心是對注意力鍵值進行低秩聯合壓縮,以減少推理時的鍵值(KV)緩存:

其中是鍵值的壓縮潛在向量;表示 KV 壓縮維度;表示下投影矩陣;、分別是鍵值的上投影矩陣;是用于生成攜帶旋轉位置嵌入(RoPE)(Su 等人,2024)的解耦鍵的矩陣;RoPE 表示應用 RoPE 矩陣的操作;表示拼接。需要注意的是,對于 MLA,在生成過程中僅需緩存藍色框中的向量(即和),這顯著減少了 KV 緩存,同時保持與標準多頭注意力(MHA)(Vaswani 等人,2017)相當的性能。
對于注意力查詢,我們也進行低秩壓縮,這可以減少訓練期間的激活內存:
其中是查詢的壓縮潛在向量;表示查詢壓縮維度;、$W^{U Q
、分別是查詢的下投影和上投影矩陣;是用于生成攜帶 RoPE 的解耦查詢的矩陣。
最終,注意力查詢()、鍵()和值()相結合,產生最終的注意力輸出:
其中表示輸出投影矩陣。
2.1.2 采用無輔助損失負載均衡的 DeepSeekMoE

?DeepSeekMoE 基本架構:對于前饋網絡(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)來確保負載均衡。具體來說,我們為每個專家引入一個偏差項,并將其添加到相應的親和度分數中,以確定前路由:
否則
注意,偏差項僅用于路由。與 FFN 輸出相乘的門控值仍由原始親和度分數導出。在訓練過程中,我們持續監控每個訓練步驟中整個批次的專家負載。在每個步驟結束時,如果相應專家負載過高,我們將偏差項減小;如果負載過低,則將其增大,其中是一個稱為偏差更新速度的超參數。通過動態調整,DeepSeek-V3 在訓練過程中保持專家負載平衡,并且比僅通過輔助損失鼓勵負載均衡的模型表現更好。
?互補的序列級輔助損失:雖然 DeepSeek-V3 主要依靠無輔助損失策略來實現負載平衡,但為了防止單個序列內出現極端不平衡,我們還采用了互補的序列級平衡損失:

𝟙

其中平衡因子是一個超參數,對于 DeepSeek-V3,其取值極小;𝟙表示指示函數;表示序列中的 token 數量。序列級平衡損失鼓勵每個序列上的專家負載保持平衡。
在這里插入圖片描述

?圖 3 多 token 預測(MTP)實現示意圖。我們在每個深度保持每個 token 預測的完整因果鏈
?節點限制路由:與 DeepSeek-V2 使用的設備限制路由類似,DeepSeek-V3 也采用受限路由機制來限制訓練期間的通信成本。簡而言之,我們確保每個 token 最多被發送到個節點,這些節點根據分布在每個節點上的專家的最高個親和度分數之和來選擇。在這種約束下,我們的 MoE 訓練框架幾乎可以實現完全的計算 - 通信重疊。
?無 token 丟棄:由于有效的負載均衡策略,DeepSeek-V3 在整個訓練過程中保持良好的負載平衡。因此,DeepSeek-V3 在訓練過程中不會丟棄任何 token。此外,我們還實施了特定的部署策略來確保推理負載平衡,所以 DeepSeek-V3 在推理過程中也不會丟棄 token。
2.2 多 token 預測
受 Gloeckle 等人(2024)的啟發,我們為 DeepSeek-V3 研究并設置了多 token 預測(MTP)目標,將預測范圍擴展到每個位置的多個未來 token。一方面,MTP 目標使訓練信號更密集,可能提高數據效率。另一方面,MTP 可能使模型能夠預先規劃其表示,以便更好地預測未來 token。圖 3 展示了我們的 MTP 實現。與 Gloeckle 等人(2024)使用獨立輸出頭并行預測個額外 token 不同,我們順序預測額外 token,并在每個預測深度保持完整的因果鏈。我們在本節介紹 MTP 實現的詳細信息。

?MTP 模塊:具體來說,我們的 MTP 實現使用個順序模塊來預測個額外 token。第個 MTP 模塊由一個共享嵌入層、一個共享輸出頭、一個 Transformer 塊和一個投影矩陣組成。對于第個輸入 token ,在第個預測深度,我們首先將第深度的第個 token 的表示與第個 token 的嵌入通過線性投影組合:

其中表示拼接。特別地,當時,指的是主模型給出的表示。需要注意的是,每個 MTP 模塊的嵌入層與主模型共享。組合后的作為第深度的 Transformer 塊的輸入,以產生當前深度的輸出表示:

其中表示輸入序列長度,表示切片操作(包括左右邊界)。最后,以為輸入,共享輸出頭將計算第個額外預測 token 的概率分布,其中是詞匯表大小:

輸出頭將表示線性映射到 logits,然后應用 Softmax 函數計算第個額外 token 的預測概率。此外,每個 MTP 模塊的輸出頭也與主模型共享。我們保持預測因果鏈的原則與 EAGLE(Li 等人,2024b)類似,但 EAGLE 的主要目標是推測解碼(Leviathan 等人,2023;Xia 等人,2023),而我們利用 MTP 來改進訓練。
?MTP 訓練目標:對于每個預測深度,我們計算交叉熵損失:

其中表示輸入序列長度,表示第個位置的真實 token,表示由第個 MTP 模塊給出的的相應預測概率。最后,我們計算所有深度的 MTP 損失的平均值,并乘以加權因子,得到整體的 MTP 損失,作為 DeepSeek-V3 的額外訓練目標:
?MTP 在推理中的應用:我們的 MTP 策略主要旨在提高主模型的性能,因此在推理時,我們可以直接丟棄 MTP 模塊,主模型可以獨立正常運行。此外,我們還可以將這些 MTP 模塊用于推測解碼,以進一步提高生成速度。
3. 基礎設施
3.1 計算集群
DeepSeek-V3 在一個配備 2048 個 NVIDIA H800 GPU 的集群上進行訓練。H800 集群中的每個節點包含 8 個通過 NVLink 和 NVSwitch 在節點內部連接的 GPU。在不同節點之間,使用 InfiniBand(IB)互連來促進通信。
在這里插入圖片描述

圖 4 單個前向和后向塊對的重疊策略(Transformer 塊的邊界未對齊)。橙色表示前向,綠色表示 “輸入的反向”,藍色表示 “權重的反向”,紫色表示 PP 通信,紅色表示屏障。全對全通信和 PP 通信都可以完全隱藏
3.2 訓練框架
DeepSeek-V3 的訓練由 HAI-LLM 框架支持,這是一個由我們的工程師全新開發的高效輕量級訓練框架。總體而言,DeepSeek-V3 應用 16 路流水線并行(PP)(Qi 等人,2023a)、跨 8 個節點的 64 路專家并行(EP)(Lepikhin 等人,2021)和 ZeRO-1 數據并行(DP)(Rajbhandari 等人,2020)。
為便于 DeepSeek-V3 的高效訓練,我們進行了細致的工程優化。首先,我們設計了 DualPipe 算法實現高效的流水線并行。與現有 PP 方法相比,DualPipe 的流水線氣泡更少。更重要的是,它在正向和反向過程中重疊了計算和通信階段,從而解決了跨節點專家并行帶來的高通信開銷問題。其次,我們開發了高效的跨節點全對全通信內核,以充分利用 IB 和 NVLink 帶寬,并節省用于通信的流式多處理器(SM)。最后,我們精心優化了訓練期間的內存占用,從而使我們能夠在不使用昂貴的張量并行(TP)的情況下訓練 DeepSeek-V3。
3.2.1 DualPipe 與計算通信重疊
對于 DeepSeek-V3,跨節點專家并行帶來的通信開銷導致計算與通信比率約為 1:1,效率較低。為應對這一挑戰,我們設計了一種創新的流水線并行算法 DualPipe,它不僅通過有效重疊正向和反向計算 - 通信階段加速模型訓練,還減少了流水線氣泡。
DualPipe 的關鍵思想是在單個前向和后向塊對中重疊計算和通信。具體來說,我們將每個塊分為四個部分:注意力、全對全分發、MLP 和全對全合并。特別地,對于后向塊,注意力和 MLP 都進一步分為兩個部分:輸入的反向和權重的反向,類似于 ZeroBubble(Qi 等人,2023b)。此外,我們還有一個 PP 通信部分。如圖 4 所示,對于一對前向和后向塊,我們重新排列這些部分,并手動調整用于通信和計算的 GPU SM 比率。在這種重疊策略中,我們可以確保在執行過程中全對全通信和 PP 通信都能完全隱藏。鑒于這種高效的重疊策略,完整的 DualPipe 調度如圖 5 所示。它采用雙向流水線調度,從流水線的兩端同時輸入微批次,并且大部分通信可以完全重疊。這種重疊還確保了隨著模型進一步擴展,只要我們保持恒定的計算與通信比率,就可以在跨節點使用細粒度專家的同時,實現近乎為零的全對全通信開銷。
在這里插入圖片描述

表 2 不同流水線并行方法的流水線氣泡和內存使用情況比較。表示前向塊的執行時間,表示完整后向塊的執行時間,表示 “權重的反向” 塊的執行時間,表示兩個相互重疊的前向和后向塊的執行時間

此外,即使在通信負擔不重的更一般場景中,DualPipe 仍然具有效率優勢。在表 2 中,我們總結了不同 PP 方法的流水線氣泡和內存使用情況。如表所示,與 ZB1P(Qi 等人,2023b)和 1F1B(Harlap 等人,2018)相比,DualPipe 顯著減少了流水線氣泡,同時僅將峰值
激活內存增加了倍。雖然 DualPipe 需要保留兩份模型參數,但由于我們在訓練期間使用了較大的 EP 規模,這并不會顯著增加內存消耗。與 Chimera(Li 和 Hoefler,2021)相比,DualPipe 只要求流水線階段數和微批次數量能被 2 整除,而不要求微批次數量能被流水線階段數整除。此外,對于 DualPipe,隨著微批次數量的增加,氣泡和激活內存都不會增加。
3.2.2 跨節點全對全通信的高效實現
為確保 DualPipe 有足夠的計算性能,我們定制了高效的跨節點全對全通信內核(包括分發和合并),以節省用于通信的 SM 數量。這些內核的實現是與 MoE 門控算法以及我們集群的網絡拓撲共同設計的。具體而言,在我們的集群中,跨節點的 GPU 通過 IB 完全互連,而節點內的通信則通過 NVLink 處理。NVLink 提供的帶寬為 160GB/s,大約是 IB(50GB/s)的 3.2 倍。為有效利用 IB 和 NVLink 的不同帶寬,我們將每個 token 最多分配到 4 個節點,從而減少 IB 流量。對于每個 token,在做出路由決策后,它將首先通過 IB 傳輸到目標節點上具有相同節點內索引的 GPU。一旦到達目標節點,我們會確保它能立即通過 NVLink 轉發到承載目標專家的特定 GPU,而不會被后續到達的 token 阻塞。通過這種方式,IB 和 NVLink 的通信得以完全重疊,并且每個 token 在每個節點上平均可以高效地選擇 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 的干擾。
3.2.3 極低的內存占用與最小開銷
為減少訓練期間的內存占用,我們采用了以下技術:
?RMSNorm 和 MLA 上投影的重計算:在反向傳播過程中,我們對所有 RMSNorm 操作和 MLA 上投影進行重計算,從而無需持久存儲它們的輸出激活。通過極小的開銷,該策略顯著減少了存儲激活所需的內存。
?CPU 中的指數移動平均:在訓練過程中,我們保存模型參數的指數移動平均(EMA),以便在學習率衰減后對模型性能進行早期估計。EMA 參數存儲在 CPU 內存中,并在每個訓練步驟后異步更新。這種方法使我們能夠在不產生額外內存或時間開銷的情況下維護 EMA 參數。
?多 token 預測的共享嵌入和輸出頭:通過 DualPipe 策略,我們將模型的淺層(包括嵌入層)和深層(包括輸出頭)部署在相同的 PP 等級上。這種安排使得 MTP 模塊和主模型之間能夠在物理上共享嵌入和輸出頭的參數和梯度。這種物理共享機制進一步提高了我們的內存效率。
3.3 FP8 訓練
受近期低精度訓練進展(Dettmers 等人,2022;Noune 等人,2022;Peng 等人,2023b)的啟發,我們提出了一種使用 FP8 數據格式訓練 DeepSeek-V3 的細粒度混合精度框架。雖然低精度訓練前景廣闊,但它常常受到激活、權重和梯度中的異常值的限制(Fishman 等人,2024;He 等人;Sun 等人,2024)。盡管在推理量化方面已經取得了顯著進展(Frantar 等人,2022;Xiao 等人,2023),但在大規模語言模型的訓練中,成功應用低精度技術的研究相對較少(Fishman 等人,2024)。為應對這一挑戰并有效擴展 FP8 格式的動態范圍,我們引入了一種細粒度量化策略:具有個元素的 tile-wise 分組或具有個元素的 block-wise 分組。在我們提高精度的累加過程中,相關的反量化開銷在很大程度上得到了緩解,這對于實現準確的 FP8 通用矩陣乘法(GEMM)至關重要。此外,為進一步減少 MoE 訓練中的內存和通信開銷,我們以 FP8 格式緩存和分發激活,同時以 BF16 格式存儲低精度優化器狀態。我們在兩個與 DeepSeek-V2-Lite 和 DeepSeek-V2 規模相似的模型上驗證了所提出的 FP8 混合精度框架,訓練了約 1 萬億個 token(更多細節見附錄 B.1)。值得注意的是,與 BF16 基線相比,我們的 FP8 訓練模型的相對損失誤差始終保持在 0.25% 以下,這一水平完全在訓練隨機性的可接受范圍內。
3.3.1 混合精度框架
基于在低精度訓練中廣泛采用的技術(Kalamkar 等人,2019;Narang 等人,2017),我們提出了一種用于 FP8 訓練的混合精度框架。在這個框架中,大多數計算密集型操作以 FP8 精度執行,而一些關鍵操作則戰略性地保持其原始數據格式,以平衡訓練效率和數值穩定性。整體框架如圖 6 所示。
在這里插入圖片描述

圖 6 采用 FP8 數據格式的整體混合精度框架。為清晰起見,僅展示了線性算子

首先,為加速模型訓練,大多數核心計算內核(即 GEMM 操作)以 FP8 精度實現。這些 GEMM 操作接受 FP8 張量作為輸入,并生成 BF16 或 FP32 格式的輸出。如圖 6 所示,與線性算子相關的三個 GEMM 操作,即前向傳播(Fprop)、激活反向傳播(Dgrad)和權重反向傳播(Wgrad),均以 FP8 精度執行。從理論上講,這種設計使計算速度比原始的 BF16 方法提高了一倍。此外,FP8 的 Wgrad GEMM 操作允許以 FP8 格式存儲激活,以供反向傳播使用,這顯著降低了內存消耗。

盡管 FP8 格式具有效率優勢,但某些算子由于對低精度計算敏感,仍然需要更高的精度。此外,一些低成本算子也可以使用更高的精度,而對整體訓練成本的影響可忽略不計。因此,經過仔細研究,我們對以下組件保持原始精度(例如 BF16 或 FP32):嵌入模塊、輸出頭、MoE 門控模塊、歸一化算子和注意力算子。這些有針對性的高精度保留確保了 DeepSeek-V3 訓練過程的穩定性。為進一步保證數值穩定性,我們以更高的精度存儲主權重、權重梯度和優化器狀態。雖然這些高精度組件會帶來一些內存開銷,但通過在我們的分布式訓練系統中跨多個 DP 等級進行高效分片,其影響可以最小化。
3.3.2 量化與乘法的精度提升
基于我們的 FP8 混合精度框架,我們引入了幾種策略來提高低精度訓練的準確性,重點關注量化方法和乘法過程。
?細粒度量化:在低精度訓練框架中,由于 FP8 格式的動態范圍有限(受其減少的指數位限制),溢出和下溢是常見問題。作為一種標準做法,通過將輸入張量的最大絕對值縮放到 FP8 的最大可表示值,使輸入分布與 FP8 格式的可表示范圍對齊(Narang 等人,2017)。這種方法使低精度訓練對激活異常值高度敏感,會嚴重降低量化精度。為解決這個問題,我們提出了一種細粒度量化方法,在更細的粒度上應用縮放。如圖 7(a)所示,(1)對于激活,我們以的 tile 為單位對元素進行分組和縮放(即每個 token 每 128 個通道);(2)對于權重,我們以的塊為單位對元素進行分組和縮放(即每 128 個輸入通道每 128 個輸出通道)。這種方法確保量化過程能夠根據較小的元素組調整縮放,從而更好地適應異常值。在附錄 B.2 中,我們進一步討論了如果像權重量化那樣對激活進行塊級分組和縮放時,訓練的不穩定性問題。
在這里插入圖片描述

?圖 7 (a)我們提出一種細粒度量化方法來減輕由特征異常值引起的量化誤差;為簡化說明,僅展示了 Fprop。(b)結合我們的量化策略,通過每隔個元素的 MMA 提升到 CUDA 核心進行高精度累加,提高 FP8 GEMM 的精度
我們方法的一個關鍵改進是在 GEMM 操作的內維度上引入了每組縮放因子。標準的 FP8 GEMM 并不直接支持此功能,但結合我們精確的 FP32 累加策略,可以高效地實現。
值得注意的是,我們的細粒度量化策略與微縮放格式(Rouhani 等人,2023b)的思想高度一致,而 NVIDIA 下一代 GPU(Blackwell 系列)的張量核心已宣布支持具有更細量化粒度的微縮放格式(NVIDIA,2024a)。我們希望我們的設計能夠為未來的工作提供參考,以跟上最新的 GPU 架構發展。
?提高累加精度:低精度 GEMM 操作經常受到下溢問題的困擾,其準確性在很大程度上依賴于高精度累加,通常以 FP32 精度進行(Kalamkar 等人,2019;Narang 等人,2017)。然而,我們觀察到 NVIDIA H800 GPU 上 FP8 GEMM 的累加精度僅限于保留約 14 位,這明顯低于 FP32 累加精度。當內維度較大時(Wortsman 等人,2023),這個問題會更加突出,這是大規模模型訓練中增加批量大小和模型寬度時的典型場景。以兩個的隨機矩陣的 GEMM 操作為例,在我們的初步測試中,張量核心有限的累加精度導致最大相對誤差接近 2%。盡管存在這些問題,但有限的累加精度在一些 FP8 框架中仍是默認選項(NVIDIA,2024b),嚴重限制了訓練精度。
為解決這個問題,我們采用提升到 CUDA 核心以獲得更高精度的策略(Thakkar 等人,2023)。過程如圖 7(b)所示。具體來說,在張量核心執行 MMA(矩陣乘累加)時,中間結果使用有限的位寬進行累加。一旦達到的間隔,這些部分結果將被復制到 CUDA 核心的 FP32 寄存器中,在那里進行全精度的 FP32 累加。如前所述,我們的細粒度量化沿內維度應用每組縮放因子。這些縮放因子可以在 CUDA 核心上作為反量化過程高效地相乘,且額外計算成本極小。

值得注意的是,這種修改降低了單個 warp 組的 WGMMA(warp 組級矩陣乘累加)指令發射率。然而,在 H800 架構中,通常可以同時執行兩個 WGMMA:當一個 warp 組執行提升操作時,另一個 warp 組能夠執行 MMA 操作。這種設計使兩個操作能夠重疊,保持張量核心的高利用率。根據我們的實驗,將設置為 128 個元素(相當于 4 個 WGMMA)是能夠顯著提高精度且不會引入大量開銷的最小累加間隔。
?尾數優先于指數:與先前工作(NVIDIA,2024b;Peng 等人,2023b;Sun 等人,2019b)采用的混合 FP8 格式(在前向傳播中使用 E4M3(4 位指數和 3 位尾數),在 Dgrad 和 Wgrad 中使用 E5M2(5 位指數和 2 位尾數))不同,我們在所有張量上都采用 E4M3 格式以獲得更高的精度。我們將這種方法的可行性歸因于我們的細粒度量化策略,即 tile 和 block 級縮放。通過對較小的元素組進行操作,我們的方法有效地在這些分組元素之間共享指數位,減輕了有限動態范圍的影響。
?在線量化:在張量級量化框架(NVIDIA,2024b;Peng 等人,2023b)中采用延遲量化,它通過保留先前迭代中的最大絕對值歷史來推斷當前值。為確保準確的縮放并簡化框架,我們為每個的激活 tile 或的權重塊在線計算最大絕對值。基于此,我們導出縮放因子,然后在線將激活或權重量化為 FP8 格式。
3.3.3 低精度存儲與通信
結合我們的 FP8 訓練框架,我們通過將緩存的激活和優化器狀態壓縮為低精度格式,進一步降低內存消耗和通信開銷。
?低精度優化器狀態:我們采用 BF16 數據格式而不是 FP32 來跟蹤 AdamW(Loshchilov 和 Hutter,2017)優化器中的一階和二階矩,且不會導致可觀察到的性能下降。然而,優化器存儲的主權重和用于批量大小累加的梯度仍保留為 FP32,以確保整個訓練過程中的數值穩定性。
?低精度激活:如圖 6 所示,Wgrad 操作以 FP8 精度執行。為減少內存消耗,自然的選擇是以 FP8 格式緩存激活,以供線性算子的反向傳播使用。然而,對于一些算子,為實現低成本的高精度訓練,我們進行了特殊考慮:
?注意力算子之后線性層的輸入:這些激活也用于注意力算子的反向傳播,因此對精度敏感。我們專門為這些激活采用定制的 E5M6 數據格式。此外,在反向傳播中,這些激活將從的量化 tile 轉換為的 tile。為避免引入額外的量化誤差,所有縮放因子均進行舍入縮放,即 2 的整數次冪。
?MoE 中 SwiGLU 算子的輸入:為進一步降低內存成本,我們緩存 SwiGLU 算子的輸入,并在反向傳播中重新計算其輸出。這些激活也使用我們的細粒度量化方法存儲為 FP8,在內存效率和計算精度之間取得平衡。
?低精度通信:通信帶寬是 MoE 模型訓練中的關鍵瓶頸。為緩解這一挑戰,我們在 MoE 上投影之前將激活量化為 FP8,然后應用分發組件,這與 MoE 上投影中的 FP8 前向傳播兼容。與注意力算子之后線性層的輸入類似,這種激活的縮放因子為 2 的整數次冪。在 MoE 下投影之前的激活梯度也采用類似策略。對于前向和后向合并組件,我們將其保留為 BF16,以在訓練流程的關鍵部分保持訓練精度。
3.4 推理與部署
我們在 H800 集群上部署 DeepSeek-V3,集群內每個節點的 GPU 通過 NVLink 互連,整個集群的所有 GPU 通過 IB 完全互連。為同時確保在線服務的服務級別目標(SLO)和高吞吐量,我們采用以下將預填充和解碼階段分離的部署策略。
3.4.1 預填充
預填充階段的最小部署單元由 4 個節點和 32 個 GPU 組成。注意力部分采用 4 路張量并行(TP4)與序列并行(SP)相結合,并結合 8 路數據并行(DP8)。其較小的 TP 大小 4 限制了 TP 通信的開銷。對于 MoE 部分,我們使用 32 路專家并行(EP32),這確保每個專家處理足夠大的批次大小,從而提高計算效率。對于 MoE 的全對全通信,我們使用與訓練相同的方法:首先通過 IB 在節點間傳輸 token,然后通過 NVLink 在節點內的 GPU 之間轉發。特別地,對于淺層的密集 MLP,我們使用 1 路張量并行以節省 TP 通信。
為實現 MoE 部分不同專家之間的負載均衡,我們需要確保每個 GPU 處理的 token 數量大致相同。為此,我們引入了冗余專家的部署策略,即復制高負載專家并進行冗余部署。高負載專家是根據在線部署期間收集的統計信息檢測出來的,并定期(例如每 10 分鐘)進行調整。在確定冗余專家集之后,我們根據觀察到的負載在節點內的 GPU 之間仔細重新安排專家,力求在不增加跨節點全對全通信開銷的情況下盡可能平衡 GPU 之間的負載。對于 DeepSeek-V3 的部署,我們為預填充階段設置了 32 個冗余專家。對于每個 GPU,除了其原本承載的 8 個專家外,還將承載一個額外的冗余專家。
此外,在預填充階段,為提高吞吐量并隱藏全對全通信和 TP 通信的開銷,我們同時處理兩個計算工作量相似的微批次,將一個微批次的注意力和 MoE 操作與另一個微批次的分發和合并操作重疊。
最后,我們正在探索一種專家動態冗余策略,即每個 GPU 承載更多專家(例如 16 個專家),但在每次推理步驟中僅激活 9 個。在每一層的全對全操作開始之前,我們實時計算全局最優路由方案。鑒于預填充階段涉及大量計算,計算此路由方案的開銷幾乎可以忽略不計。
3.4.2 解碼
在解碼過程中,我們將共享專家視為路由專家。從這個角度來看,每個 token 在路由時會選擇 9 個專家,其中共享專家被視為高負載專家,始終會被選中。解碼階段的最小部署單元由 40 個節點和 320 個 GPU 組成。注意力部分采用 TP4 與 SP 相結合,并結合 DP80,而 MoE 部分使用 EP320。對于 MoE 部分,每個 GPU 僅承載一個專家,64 個 GPU 負責承載冗余專家和共享專家。分發和合并部分的全對全通信通過 IB 直接點對點傳輸來實現低延遲。此外,我們利用 IBGDA(NVIDIA,2022)技術進一步降低延遲并提高通信效率。
與預填充類似,我們根據在線服務中統計的專家負載,在特定間隔內定期確定冗余專家集。然而,由于每個 GPU 僅承載一個專家,我們無需重新安排專家。我們也在探索解碼階段的動態冗余策略。不過,這需要更仔細地優化計算全局最優路由方案的算法,并將其與分發內核融合以降低開銷。
此外,為提高吞吐量并隱藏全對全通信的開銷,我們也在探索在解碼階段同時處理兩個計算工作量相似的微批次。與預填充不同,解碼階段注意力消耗的時間占比更大。因此,我們將一個微批次的注意力與另一個微批次的分發 + MoE + 合并操作重疊。在解碼階段,每個專家的批次大小相對較小(通常在 256 個 token 以內),瓶頸在于內存訪問而非計算。由于 MoE 部分僅需加載一個專家的參數,內存訪問開銷極小,因此使用較少的 SM 不會顯著影響整體性能。所以,為避免影響注意力部分的計算速度,我們可以僅為分發 + MoE + 合并分配一小部分 SM。
3.5 硬件設計建議
基于我們對全對全通信和 FP8 訓練方案的實現,我們向 AI 硬件供應商提出以下芯片設計建議。
3.5.1 通信硬件
在 DeepSeek-V3 中,我們通過計算與通信重疊來在計算過程中隱藏通信延遲,這與串行計算和通信相比,顯著降低了對通信帶寬的依賴。然而,當前的通信實現依賴于昂貴的 SM(例如,我們在 H800 GPU 的 132 個 SM 中分配 20 個用于此目的),這會限制計算吞吐量。此外,使用 SM 進行通信會導致效率低下,因為張量核心會完全未被充分利用。
目前,SM 在全對全通信中主要執行以下任務:
?在 IB(InfiniBand)和 NVLink 域之間轉發數據,同時聚合從單個 GPU 發往同一節點內多個 GPU 的 IB 流量。
?在 RDMA 緩沖區(已注冊的 GPU 內存區域)和輸入 / 輸出緩沖區之間傳輸數據。
?執行全對全合并的歸約操作。
?在通過 IB 和 NVLink 域將分塊數據傳輸到多個專家的過程中,管理細粒度的內存布局。
我們期望未來的供應商開發能夠將這些通信任務從寶貴的計算單元 SM 中卸載的硬件,例如作為 GPU 協處理器或類似 NVIDIA SHARP(Graham 等人,2016)的網絡協處理器。此外,為降低應用程序編程的復雜性,我們希望這種硬件從計算單元的角度統一 IB(橫向擴展)和 NVLink(縱向擴展)網絡。有了這個統一的接口,計算單元可以通過基于簡單原語提交通信請求,輕松地在整個 IB-NVLink 統一域中完成讀取、寫入、多播和歸約等操作。
3.5.2 計算硬件
?提高張量核心中 FP8 GEMM 的累加精度:在當前 NVIDIA Hopper 架構的張量核心實現中,FP8 GEMM(通用矩陣乘法)采用定點累加,在加法之前根據最大指數對尾數乘積進行右移對齊。我們的實驗表明,它在符號填充右移后僅使用每個尾數乘積的最高 14 位,并截斷超過此范圍的位。然而,例如,為了從 32 次 FP8×FP8 乘法的累加中獲得精確的 FP32 結果,至少需要 34 位精度。因此,我們建議未來的芯片設計提高張量核心中的累加精度,以支持全精度累加,或者根據訓練和推理算法的精度要求選擇合適的累加位寬。這種方法可確保誤差保持在可接受的范圍內,同時維持計算效率。
?支持 tile 和 block 級量化:當前的 GPU 僅支持張量級量化,缺乏對像我們的 tile 和 block 級量化這樣的細粒度量化的原生支持。在當前的實現中,當達到間隔時,部分結果需要從張量核心復制到 CUDA 核心,與縮放因子相乘,然后加到 CUDA 核心的 FP32 寄存器中。盡管結合我們精確的 FP32 累加策略,反量化開銷顯著降低,但張量核心和 CUDA 核心之間頻繁的數據移動仍然限制了計算效率。因此,我們建議未來的芯片通過使張量核心能夠接收縮放因子并實現帶分組縮放的 MMA 來支持細粒度量化。這樣,整個部分和累加與反量化過程可以直接在張量核心內完成,直到產生最終結果,避免頻繁的數據移動。
?支持在線量化:盡管在線量化在我們的研究中顯示出有效性,但當前的實現難以有效支持它。在現有過程中,我們需要從 HBM(高帶寬內存)讀取 128 個 BF16 激活值(前一次計算的輸出)進行量化,量化后的 FP8 值再寫回 HBM,之后又要再次讀取用于 MMA。為解決這種低效率問題,我們建議未來的芯片將 FP8 轉換和 TMA(張量內存加速器)訪問集成到單個融合操作中,以便在激活從全局內存傳輸到共享內存的過程中完成量化,避免頻繁的內存讀寫。我們還建議支持 warp 級轉換指令以加速,這進一步有助于更好地融合層歸一化和 FP8 轉換。或者,可以采用近內存計算方法,將計算邏輯放置在靠近 HBM 的位置。在這種情況下,BF16 元素在從 HBM 讀取到 GPU 時可以直接轉換為 FP8,從而將片外內存訪問減少約 50%。
?支持轉置 GEMM 操作:當前的架構使得將矩陣轉置與 GEMM 操作融合變得繁瑣。在我們的工作流程中,前向傳播中的激活被量化為的 FP8 tile 并存儲。在反向傳播中,需要讀取矩陣、反量化、轉置、重新量化為的 tile,然后存儲在 HBM 中。為減少內存操作,我們建議未來的芯片對于訓練和推理所需的精度,能夠在 MMA 操作之前直接從共享內存中進行矩陣的轉置讀取。結合 FP8 格式轉換和 TMA 訪問的融合,這一增強將顯著簡化量化工作流程。
4. 預訓練
4.1 數據構建
與 DeepSeek-V2 相比,我們優化了預訓練語料庫,提高了數學和編程樣本的比例,同時將多語言覆蓋范圍擴展到英語和中文之外。我們還改進了數據處理流程,在保持語料庫多樣性的同時盡量減少冗余。受 Ding 等人(2024)的啟發,我們采用文檔打包方法來保證數據完整性,但在訓練過程中不采用跨樣本注意力掩碼。最終,DeepSeek-V3 的訓練語料庫包含 14.8 萬億經過我們分詞器處理的高質量且多樣的 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,使模型接觸到更廣泛的特殊情況,從而減輕這種偏差。
4.2 超參數
?模型超參數:我們將 Transformer 層數設置為 61,隱藏層維度設置為 7168。所有可學習參數均以標準差 0.006 進行隨機初始化。在 MLA 中,我們將注意力頭數設置為 128,每個頭的維度設置為 128。KV 壓縮維度設置為 512,查詢壓縮維度設置為 1536。對于解耦的查詢和鍵,我們將每個頭的維度設置為 64。除前三層外,我們用 MoE 層替換所有 FFN 層。每個 MoE 層由 1 個共享專家和 256 個路由專家組成,每個專家的中間隱藏層維度為 2048。在路由專家中,每個 token 會激活 8 個專家,并且每個 token 最多被發送到 4 個節點。多 token 預測深度設置為 1,即除了準確預測下一個 token 外,每個 token 還將預測一個額外的 token。與 DeepSeek-V2 一樣,DeepSeek-V3 在壓縮后的潛在向量后也采用了額外的 RMSNorm 層,并在寬度瓶頸處乘以額外的縮放因子。在這種配置下,DeepSeek-V3 總參數達到 6710 億,每個 token 激活 370 億參數。
?訓練超參數:我們采用 AdamW 優化器(Loshchilov 和 Hutter,2017),超參數設置為,,權重衰減為 0.1。在預訓練期間,我們將最大序列長度設置為 4K,并在 14.8 萬億個 token 上對 DeepSeek-V3 進行預訓練。在學習率調度方面,在最初的 2K 步中,我們將學習率從 0 線性增加到。然后,在模型消耗 10 萬億個訓練 token 之前,保持的恒定學習率。隨后,在 4.3 萬億個 token 的訓練過程中,我們按照余弦衰減曲線將學習率逐漸衰減到。在訓練最后 500 億個 token 時,前 333 億個 token 保持的恒定學習率,剩余 167 億個 token 切換到的恒定學習率。梯度裁剪范數設置為 1.0。我們采用批次大小調度策略,在訓練前 469 億個 token 時,批次大小從 3072 逐漸增加到 15360,在剩余訓練過程中保持 15360 不變。我們利用流水線并行將模型的不同層部署在不同的 GPU 上,對于每一層,路由專家將均勻部署在屬于 8 個節點的 64 個 GPU 上。對于節點限制路由,每個 token 最多被發送到 4 個節點(即)。對于無輔助損失的負載均衡,在前 14.3 萬億個 token 的訓練中,我們將偏差更新速度設置為 0.001,在剩余 500 億個 token 的訓練中設置為 0.0。對于平衡損失,我們將設置為 0.0001,只是為了避免單個序列內出現極端不平衡。MTP 損失權重在前 10 萬億個 token 的訓練中設置為 0.3,在剩余 4.8 萬億個 token 的訓練中設置為 0.1。
在這里插入圖片描述

?圖 8 “大海撈針”(NIAH)測試的評估結果。DeepSeek-V3 在長達 128K 的所有上下文窗口長度上均表現良好
4.3 長上下文擴展
我們采用與 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 在 “大海撈針”(NIAH)測試中取得了顯著的成績,在長達 128K 的上下文窗口長度上始終保持穩健的性能。
4.4 評估
4.4.1 評估基準
DeepSeek-V3 的基礎模型在以英語和中文為主的多語言語料庫上進行預訓練,因此我們主要在英語、中文以及多語言基準上評估其性能。我們的評估基于集成在 HAI-LLM 框架中的內部評估框架。考慮的基準分類如下,其中下劃線標注的基準為中文基準,雙下劃線標注的基準為多語言基準:
?多學科多選數據集:包括 MMLU(Hendrycks 等人,2020)、MMLURedux(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-V2 基礎版	Qwen2.5 72B 基礎版	LLaMA-3.1 405B 基礎版	DeepSeek-V3 基礎版
架構		MoE	密集型	密集型	MoE
激活參數數量		210 億	720 億	4050 億	370 億

英語 總參數數量 1 2360 億 720 億 4050 億 6710 億
Pile-test(BPB) 0.606 0.638 0.542 0.548
BBH(EM) 3 次射擊 78.8 79.8 82.9 87.5
MMLU(EM) 5 次射擊 78.4 85.0 84.4 87.1
MMLU-Redux(EM) 5 次射擊 75.6 83.2 81.3 86.2
MMLU-Pro(EM) 5 次射擊 51.4 58.3 52.8 64.4
DROP(F1) 3 次射擊 80.4 80.6 86.0 89.0
ARC-Easy(EM) 25 次射擊 97.6 98.4 98.4 98.9
ARC-Challenge(EM) 25 次射擊 92.2 94.5 95.3 95.3
HellaSwag(EM) 10 次射擊 87.1 84.8 89.2 88.9
PIQA(EM) 0 次射擊 83.9 82.6 85.9 84.7
WinoGrande(EM) 5 次射擊 86.3 82.3 85.2 84.9
RACE-Middle(EM) 5 次射擊 73.1 68.1 74.2 67.1
RACE-High(EM) 5 次射擊 52.6 50.3 56.8 51.3
TriviaQA(EM) 5 次射擊 80.0 71.9 82.7 82.9
NaturalQuestions(EM) 5 次射擊 38.6 33.2 41.5 40.0
AGIEval(EM) 0 次射擊 57.5 75.8 60.6 79.6
代碼 HumanEval(通過率 @1) 0 次射擊 43.3 53.0 54.9 65.2
MBPP(通過率 @1) 3 次射擊 65.0 72.6 68.4 75.4
LiveCodeBench-Base(通過率 @1) 3 次射擊 11.6 12.9 15.5 19.4
CRUXEval-I(EM) 2 次射擊 52.5 59.1 58.5 67.3
CRUXEval-O(EM) 2 次射擊 49.8 59.9 59.9 69.8
數學 GSM8K(EM) 8 次射擊 81.6 88.3 83.5 89.3
MATH(EM) 4 次射擊 43.4 54.4 49.0 61.6
MGSM(EM) 8 次射擊 63.6 76.2 69.9 79.8
CMath(EM) 3 次射擊 78.7 84.5 77.3 90.7
中文 CLUEWSC(EM) 5 次射擊 82.0 82.5 83.0 82.7
C-Eval(EM) 5 次射擊 81.4 89.2 72.5 90.1
CMMLU(EM) 5 次射擊 84.0 89.5 73.7 88.8
CMRC(EM) 1 次射擊 77.4 75.8 76.0 76.3
C3(EM) 0 次射擊 77.4 76.7 79.7 78.6
CCPM(EM) 0 次射擊 93.0 88.5 78.6 92.0
多語言 MMMLU - 非英語(EM) 5 次射擊 64.0 74.8 73.8 79.4

表 3 DeepSeek-V3 基礎版與其他代表性開源基礎模型的比較。所有模型均在我們的內部框架中進行評估,并共享相同的評估設置。得分差距不超過 0.3 的被認為處于同一水平。DeepSeek-V3 基礎版在大多數基準上取得了最佳性能,尤其是在數學和代碼任務上
4.4.2 評估結果
在表 3 中,我們將 DeepSeek-V3 的基礎模型與當前最先進的開源基礎模型進行比較,包括 DeepSeek-V2 基礎版(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 基礎版與其他開源基礎模型逐一進行比較。(1)與 DeepSeek-V2 基礎版相比,由于我們在模型架構上的改進、模型規模和訓練 token 數量的增加以及數據質量的提升,DeepSeek-V3 基礎版如預期般取得了顯著更好的性能。(2)與目前最先進的中文開源模型 Qwen2.5 72B 基礎版相比,DeepSeek-V3 基礎版的激活參數僅為其一半,但在英語、多語言、代碼和數學基準上也展現出顯著優勢。在中文基準方面,除了中文多學科多選任務 CMMLU 外,DeepSeek-V3 基礎版的表現也優于 Qwen2.5 72B。(3)與擁有 11 倍激活參數的最大開源模型 LLaMA-3.1 405B 基礎版相比,DeepSeek-V3 基礎版在多語言、代碼和數學基準上也表現得更好。在英語和中文語言基準上,DeepSeek-V3 基礎版表現出有競爭力或更優的性能,在 BBH、MMLU 系列、DROP、C-Eval、CMMLU 和 CCPM 等基準上表現尤為突出。
由于我們采用了高效的架構和全面的工程優化,DeepSeek-V3 實現了極高的訓練效率。在我們的訓練框架和基礎設施下,訓練 DeepSeek-V3 每萬億 token 僅需 18 萬 H800 GPU 小時,這比訓練 720 億或 4050 億參數的密集型模型成本低得多。

基準(指標) 射擊次數 小型 MoE 基線 小型 MoE+MTP 大型 MoE 基線 大型 MoE+MTP
推理時激活參數數量(億) 24 24 209 209
推理時總參數數量(億) 157 157 2287 2287
訓練 token 數量(萬億) 1.33 1.33 0.54 0.54
Pile-test(BPB) 0.729 0.729 0.658 0.657
BBH(EM) 3 次射擊 39.0 41.4 70.0 70.7
MMLU(EM) 5 次射擊 50.0 53.3 67.5 66.6
DROP(F1) 1 次射擊 39.2 41.3 68.5 70.6
TriviaQA(EM) 5 次射擊 56.9 57.7 67.0 67.3
NaturalQuestions(EM) 5 次射擊 22.7 22.3 27.2 28.5
HumanEval(通過率 @1) 0 次射擊 20.7 26.8 44.5 53.7
MBPP(通過率 @1) 3 次射擊 35.8 36.8 61.6 62.2
GSM8K(EM) 8 次射擊 25.4 31.4 72.3 74.0
MATH(EM) 4 次射擊 10.7 12.6 38.6 39.8

表 4 MTP 策略的消融實驗結果。MTP 策略在大多數評估基準上持續提升模型性能
4.5 討論
4.5.1 多 token 預測的消融研究
在表 4 中,我們展示了 MTP 策略的消融實驗結果。具體來說,我們在兩個不同規模的基線模型上驗證了 MTP 策略。在小規模上,我們在 1.33 萬億 token 上訓練了一個總參數為 157 億的基線 MoE 模型。在大規模上,我們在 540 億 token 上訓練了一個總參數為 2287 億的基線 MoE 模型。在這些模型的基礎上,保持訓練數據和其他架構不變,我們為它們添加一個深度為 1 的 MTP 模塊,并訓練兩個采用 MTP 策略的模型進行比較。需要注意的是,在推理時,我們直接丟棄 MTP 模塊,因此比較的模型推理成本完全相同。從表中可以看出,MTP 策略在大多數評估基準上持續提升了模型性能。

基準(指標) 射擊次數 基于輔助損失的小型 MoE 無輔助損失的小型 MoE 基于輔助損失的大型 MoE 無輔助損失的大型 MoE
激活參數數量(億) 24 24 209 209
總參數數量(億) 157 157 2287 2287
訓練 token 數量(萬億) 1.33 1.33 0.578 0.578
Pile-test(BPB) 0.727 0.724 0.656 0.652
BBH(EM) 3 次射擊 37.3 39.3 66.7 67.9
MMLU(EM) 5 次射擊 51.0 51.8 68.3 67.2
DROP(F1) 1 次射擊 38.1 39.0 67.1 67.1
TriviaQA(EM) 5 次射擊 58.3 58.5 66.7 67.7
NaturalQuestions(EM) 5 次射擊 23.2 23.4 27.1 28.1
HumanEval(通過率 @1) 0 次射擊 22.0 22.6 40.2 46.3
MBPP(通過率 @1) 3 次射擊 36.6 35.8 59.2 61.2
GSM8K(EM) 8 次射擊 27.1 29.6 70.7 74.5
MATH(EM) 4 次射擊 10.9 11.1 37.2 39.6

表 5 無輔助損失平衡策略的消融實驗結果。與純粹基于輔助損失的方法相比,無輔助損失策略在大多數評估基準上持續實現更好的模型性能
4.5.2 無輔助損失平衡策略的消融研究
在表 5 中,我們展示了無輔助損失平衡策略的消融實驗結果。我們在兩個不同規模的基線模型上驗證了該策略。在小規模上,我們在 1.33 萬億 token 上訓練了一個總參數為 157 億的基線 MoE 模型。在大規模上,我們在 578 億 token 上訓練了一個總參數為 2287 億的基線 MoE 模型。這兩個基線模型都純粹使用輔助損失來鼓勵負載平衡,并使用帶有 top-K 親和度歸一化的 sigmoid 門控函數。它們控制輔助損失強度的超參數分別與 DeepSeek-V2-Lite 和 DeepSeek-V2 相同。在這兩個基線模型的基礎上,保持訓練數據和其他架構不變,我們移除所有輔助損失并引入無輔助損失平衡策略進行比較。從表中可以看出,無輔助損失策略在大多數評估基準上持續實現了更好的模型性能。
4.5.3 批量負載平衡與序列負載平衡
無輔助損失平衡和序列級輔助損失的關鍵區別在于它們的平衡范圍:批量級與序列級。與序列級輔助損失相比,批量級平衡施加了更靈活的約束,因為它不對每個序列強制進行域內平衡。這種靈活性使專家能夠更好地在不同領域進行專業化。為了驗證這一點,我們記錄并分析了一個 160 億參數基于輔助損失的基線模型和一個 160 億參數無輔助損失模型在 Pile 測試集不同領域上的專家負載。如圖 9 所示,我們觀察到無輔助損失模型如預期般展示出更大的專家專業化模式。
在這里插入圖片描述

圖 9 基于輔助損失和無輔助損失模型在 Pile 測試集三個領域上的專家負載。無輔助損失模型比基于輔助損失的模型展示出更大的專家專業化模式。相對專家負載表示實際專家負載與理論平衡專家負載的比率。由于空間限制,我們僅展示兩層的結果作為示例,所有層的結果見附錄 C
為了進一步研究這種靈活性與模型性能優勢之間的相關性,我們額外設計并驗證了一種批量級輔助損失,該損失鼓勵在每個訓練批次上進行負載平衡,而不是在每個序列上。實驗結果表明,當實現相似程度的批量級負載平衡時,批量級輔助損失也能實現與無輔助損失方法相似的模型性能。具體來說,在我們對 10 億參數 MoE 模型的實驗中,驗證損失分別為:使用序列級輔助損失時為 2.258,使用無輔助損失方法時為 2.253,使用批量級輔助損失時為 2.253。在 30 億參數 MoE 模型上我們也觀察到了類似的結果:使用序列級輔助損失的模型驗證損失為 2.085,使用無輔助損失方法或批量級輔助損失的模型驗證損失均為 2.080。
此外,盡管批量級負載平衡方法表現出一致的性能優勢,但它們在效率方面也面臨兩個潛在挑戰:(1)某些序列或小批次內的負載不平衡;(2)推理期間由于領域轉移導致的負載不平衡。第一個挑戰可以通過我們使用大規模專家并行和數據并行的訓練框架自然解決,該框架保證了每個微批次的大小足夠大。對于第二個挑戰,我們也設計并實現了一種帶有冗余專家部署的高效推理框架(如 3.4 節所述)來克服它。
5. 后訓練
5.1 監督微調
我們精心整理了指令調整數據集,包含 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 基礎模型進行兩輪微調,采用余弦退火學習率調度,從開始,逐漸降至 。在訓練過程中,每個單獨的序列由多個樣本打包而成。然而,我們采用樣本掩碼策略,以確保這些示例相互隔離且不可見。
5.2 強化學習
5.2.1 獎勵模型

我們在 RL 過程中采用基于規則的獎勵模型(RM)和基于模型的 RM。
?基于規則的 RM:對于可以使用特定規則驗證的問題,我們采用基于規則的獎勵系統來確定反饋。例如,某些數學問題有確定的結果,我們要求模型以指定格式(如框內)給出最終答案,以便應用規則驗證其正確性。同樣,對于 LeetCode 問題,我們可以利用編譯器根據測試用例生成反饋。只要有可能,我們就利用基于規則的驗證,以確保更高的可靠性,因為這種方法不易被操縱或利用。
?基于模型的 RM:對于具有自由格式標準答案的問題,我們依靠獎勵模型來確定回答是否符合預期的標準答案。相反,對于沒有明確標準答案的問題,如涉及創意寫作的問題,獎勵模型根據問題和相應答案作為輸入提供反饋。獎勵模型從 DeepSeek-V3 SFT 檢查點進行訓練。為增強其可靠性,我們構建偏好數據,不僅提供最終獎勵,還包括得出獎勵的思維鏈。這種方法有助于降低特定任務中獎勵作弊的風險。
5.2.2 組相對策略優化
與 DeepSeek-V2(DeepSeek-AI, 2024c)類似,我們采用組相對策略優化(GRPO)(Shao 等人,2024),它摒棄了通常與策略模型大小相同的評論家模型,而是從組分數中估計基線。具體來說,對于每個問題,GRPO 從舊策略模型中采樣一組輸出,然后通過最大化以下目標來優化策略模型:
其中、是相關參數,是優勢,由每組輸出對應的獎勵得出:
我們在 RL 過程中納入來自不同領域(如編碼、數學、寫作、角色扮演和問答)的提示。這種方法不僅使模型更符合人類偏好,還提升了在基準測試中的性能,特別是在可用 SFT 數據有限的場景中。
5.3 評估
5.3.1 評估設置
?評估基準:除了用于基礎模型測試的基準外,我們還在 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)和非思維鏈方法評估模型在 LiveCodeBench 上的性能,其中數據收集于 2024 年 8 月至 11 月。Codeforces 數據集通過參賽者的百分比進行衡量。SWE-Bench verified 使用無代理框架(Xia 等人,2024)進行評估。我們使用 “diff” 格式評估與 Aider 相關的基準。對于數學評估,AIME 和 CNMO 2024 在溫度為 0.7 的情況下進行評估,結果取 16 次運行的平均值,而 MATH-500 采用貪心解碼。我們允許所有模型在每個基準上最多輸出 8192 個 token。

基準(指標)DeepSeek-V2-0506DeepSeek-V2.5-0905Qwen2.5 72B-InstLLaMA-3.1 405B-InstClaude-3.5-Sonnet-1022GPT-4o-0513DeepSeek-V3
架構MoEMoE密集型密集型--MoE
激活參數數量210 億210 億720 億4050 億--370 億
總參數數量2360 億2360 億720 億4050 億--6710 億
英語MMLU(EM)78.280.685.388.688.387.288.5
MMLU-Redux(EM)77.980.385.686.288.988.089.1
MMLU-Pro(EM)58.566.271.673.378.072.675.9
DROP(3-shot F1)83.087.876.788.788.383.791.6
IF-Eval(Prompt Strict)57.780.684.186.086.584.386.1
GPQA-Diamond(Pass@1)35.341.349.051.165.049.959.1
SimpleQA(Correct)9.010.29.117.128.438.224.9
FRAMES(Acc)66.965.469.870.072.580.573.3
LongBench v2(Acc)31.635.439.436.141.048.148.7
代碼HumanEval-Mul(Pass@1)69.377.477.377.281.780.582.6
LiveCodeBench(Pass@1-Cor)18.829.231.128.436.333.440.5
LiveCodeBench(Pass@1)20.328.428.730.132.834.237.6
Codeforces(Percentile)17.535.624.825.320.323.651.6
SWE Verified(Resolved)22.623.824.550.838.842.0
Aider-Edit(Acc)60.371.665.463.984.272.979.7
Aider-Polyglot(Acc)18.27.65.845.316.049.6
數學AIME 2024(Pass@1)4.616.723.323.316.09.339.2
MATH-500(EM)56.374.780.073.878.374.690.2
CNMO 2024(Pass@1)2.810.815.96.813.110.843.2
中文C-Eval(EM)89.990.491.484.785.487.990.9
CLUEWSC(EM)78.679.586.161.576.776.086.5
C-SimpleQA(Correct)48.554.148.450.451.359.364.8
表 6 DeepSeek-V3 與其他代表性聊天模型的比較。所有模型均在輸出長度限制為 8K 的配置下進行評估。包含少于 1000 個樣本的基準使用不同溫度設置進行多次測試,以得出可靠的最終結果。DeepSeek-V3 是性能最佳的開源模型,并且與前沿閉源模型相比也具有競爭力
5.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(一個更具挑戰性的教育知識基準)上表現出色,與 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 發布前幾周發布的數據集)上的最佳性能進一步得到驗證。在事實知識基準 SimpleQA 上,DeepSeek-V3 落后于 GPT-4o 和 Claude-Sonnet,這主要是由于其設計重點和資源分配。DeepSeek-V3 將更多訓練 token 用于學習中文知識,因此在 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 類模型樹立了新的最先進水平。具體來說,在 AIME、MATH-500 和 CNMO 2024 上,DeepSeek-V3 的絕對得分比第二好的模型 Qwen2.5 72B 高出約 10%,對于如此具有挑戰性的基準而言,這是一個巨大的差距。這一卓越能力突出了從 DeepSeek-R1 蒸餾知識的有效性,已證明這對非 o1 類模型非常有益。

模型 Arena-Hard AlpacaEval 2.0
DeepSeek-V2.5-0905 76.2 50.5
Qwen2.5-72B-Instruct 81.2 49.1
LLaMA-3.1 405B 69.3 40.5
GPT-4o-0513 80.4 51.1
Claude-Sonnet-3.5-1022 85.2 52.0
DeepSeek-V3 85.5 70.0

表 7 英文開放式對話評估。對于 AlpacaEval 2.0,我們使用長度控制勝率作為指標
5.3.3 開放評估
除了標準基準測試,我們還使用大語言模型作為評判者,對模型在開放式生成任務上進行評估,結果見表 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%,這突出了它在處理簡單任務方面的顯著改進,也展示了其改進的有效性。
5.3.4 DeepSeek-V3 作為生成式獎勵模型
我們將 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 結合投票,為開放式問題提供自我反饋,從而提高對齊過程的有效性和穩健性。

模型 Chat Chat-Hard Safety Reasoning Average
GPT-4o-0513 96.6 70.4 86.7 84.9 84.7
GPT-4o-0806 96.1 76.1 88.1 86.6 86.7
GPT-4o-1120 95.8 71.3 86.2 85.2 84.6
Claude-3.5-sonnet-0620 96.4 74.0 81.6 84.7 84.2
Claude-3.5-sonnet-1022 96.4 79.7 91.1 87.6 88.7
DeepSeek-V3 96.9 79.8 87.0 84.3 87.0
DeepSeek-V3(maj@6) 96.9 82.6 89.5 89.2 89.6

表 8 GPT-4o、Claude-3.5-sonnet 和 DeepSeek-V3 在 RewardBench 上的性能

模型 LiveCodeBench-CoT MATH-500
Pass@1 Length Pass@1 Length
DeepSeek-V2.5 Baseline 31.1 718 74.6 769
DeepSeek-V2.5 +R1 Distill 37.4 783 83.2 1510

表 9 從 DeepSeek-R1 蒸餾知識的貢獻。LiveCodeBench 和 MATH-500 的評估設置與表 6 相同
5.4 討論
5.4.1 從 DeepSeek-R1 蒸餾知識
我們基于 DeepSeek-V2.5 對從 DeepSeek-R1 蒸餾知識的貢獻進行了消融研究。基線模型在短思維鏈(CoT)數據上進行訓練,而其競爭模型使用上述專家檢查點生成的數據。
表 9 展示了蒸餾數據的有效性,在 LiveCodeBench 和 MATH-500 基準測試中都顯示出顯著的改進。我們的實驗揭示了一個有趣的權衡:蒸餾帶來了更好的性能,但也大幅增加了平均響應長度。為了在模型準確性和計算效率之間保持平衡,我們為 DeepSeek-V3 精心選擇了蒸餾的最佳設置。
我們的研究表明,從推理模型中進行知識蒸餾為后訓練優化提供了一個有前景的方向。雖然我們目前的工作主要集中在從數學和編碼領域蒸餾數據,但這種方法在各種任務領域具有更廣泛的應用潛力。在這些特定領域展示的有效性表明,長思維鏈蒸餾對于提高其他需要復雜推理的認知任務的模型性能可能是有價值的。進一步探索這種方法在不同領域的應用仍然是未來研究的一個重要方向。
5.4.2 自獎勵
獎勵在強化學習中起著關鍵作用,指導優化過程。在可以通過外部工具輕松驗證的領域,如某些編碼或數學場景中,強化學習表現出卓越的效果。然而,在更一般的場景中,構建有效的反饋機制具有挑戰性。自獎勵是一種有潛力的解決方案,它使模型能夠根據自己的輸出評估獎勵。在 DeepSeek-V3 中,我們探索了使用模型自身的預測作為獎勵信號的一部分。初步實驗表明,這種方法在某些任務中可以提高模型的性能,但也面臨著一些問題,如獎勵信號的一致性和穩定性。未來的研究需要更深入地探討如何設計有效的自獎勵策略,以提高模型在各種場景下的性能。
5.4.3 多 token 預測評估
盡管多 token 預測(MTP)在訓練過程中顯示出提高模型性能的潛力,但在評估方面仍存在挑戰。傳統的評估指標(如準確率、F1 值等)可能無法充分捕捉 MTP 對模型能力的影響。例如,MTP 可能使模型生成更連貫和準確的長文本,但這些改進可能不會直接反映在標準評估指標中。此外,MTP 的訓練目標與實際應用中的推理場景之間存在差異,這也給評估帶來了困難。我們需要開發新的評估方法,能夠更好地衡量 MTP 對模型性能的影響,特別是在長文本生成和復雜任務處理方面。這將有助于更準確地評估模型的能力,并指導未來的模型改進。
6. 結論、局限性和未來方向

DeepSeek-V3 是一個強大的混合專家語言模型,在多個基準測試中取得了優異的成績,展示了其在知識、代碼、數學和推理等領域的卓越能力。通過創新的架構設計(如無輔助損失的負載均衡策略和多 token 預測訓練目標)、高效的訓練框架(支持 FP8 混合精度訓練和優化的通信機制)以及精心策劃的訓練數據,我們實現了強大的模型性能和經濟高效的訓練過程。DeepSeek-V3 不僅在開源模型中表現最佳,而且與前沿閉源模型相比也具有競爭力。
然而,DeepSeek-V3 仍然存在一些局限性。在模型性能方面,盡管它在許多任務中表現出色,但在處理某些復雜或特定領域的問題時,仍有改進的空間。例如,在一些需要深入領域知識和專業推理的任務中,模型的表現可能不盡如人意。此外,雖然我們在訓練效率方面取得了顯著進展,但進一步提高訓練和推理效率仍然是一個重要的目標,特別是在處理大規模數據和長上下文時。
在模型架構方面,雖然 Transformer 架構在大語言模型中取得了巨大成功,但它也存在一些固有的局限性,如計算復雜度隨序列長度增加而增加。突破 Transformer 架構的限制,探索新的架構設計,對于提升模型的能力至關重要。
在數據方面,盡管我們使用了大量高質量的訓練數據,但數據的質量和多樣性仍有提升的空間。探索更多樣化的數據來源和更有效的數據增強技術,將有助于進一步提高模型的泛化能力和性能。
未來,我們計劃從以下幾個方向繼續推進研究:
?持續提高模型的性能,特別是在復雜任務和特定領域中的表現。我們將探索更先進的訓練方法和架構改進,以增強模型的推理能力和知識理解能力。例如,研究如何更好地整合外部知識源,使模型能夠處理更專業和復雜的問題。
?進一步提高訓練和推理效率。我們將探索新的硬件加速技術和算法優化,以減少訓練時間和資源消耗。同時,我們將努力提高模型對長上下文的處理能力,實現更高效的無限上下文長度支持。
?突破 Transformer 架構的限制,探索新的模型架構。這可能包括研究基于不同原理的架構設計,或者對 Transformer 進行創新性的改進,以克服其當前的局限性,提升模型的建模能力。
?不斷迭代訓練數據的數量和質量,探索引入額外的訓練信號源。我們將嘗試從更多樣化的領域收集數據,并開發更有效的數據處理和增強技術,以推動數據在更全面的維度上進行擴展。
?持續探索和迭代模型的深度思考能力,通過擴展推理長度和深度來提高其智能水平和問題解決能力。例如,研究如何讓模型進行更深入的推理和更復雜的邏輯思考,以應對更具挑戰性的任務。
?探索更全面和多維的模型評估方法,避免在研究過程中過度優化固定的基準測試集。這將有助于更準確地評估模型的能力,避免對模型性能產生誤導性的評價,確保我們對模型的基礎評估更加可靠。
通過不斷努力解決這些問題并探索新的方向,我們相信能夠進一步提升大語言模型的能力,為人工智能的發展做出更大的貢獻。

更多技術內容

更多技術內容可參見
《自然語言處理原理與實戰》(人工智能科學與技術叢書)【陳敬雷編著】【清華大學出版社】書籍。
更多的技術交流和探討也歡迎加我個人微信chenjinglei66。

總結

此文章有對應的配套新書教材和視頻:

【配套新書教材】
《自然語言處理原理與實戰》(人工智能科學與技術叢書)【陳敬雷編著】【清華大學出版社】
新書特色:本書從自然語言處理基礎開始,逐步深入各種NLP熱點前沿技術,使用了Java和Python兩門語言精心編排了大量代碼實例,契合公司實際工作場景技能,側重實戰。
全書共分為19章,詳細講解中文分詞、詞性標注、命名實體識別、依存句法分析、語義角色標注、文本相似度算法、語義相似度計算、詞頻-逆文檔頻率(TF-IDF)、條件隨機場、新詞發現與短語提取、搜索引擎Solr Cloud和Elasticsearch、Word2vec詞向量模型、文本分類、文本聚類、關鍵詞提取和文本摘要、自然語言模型(Language Model)、分布式深度學習實戰等內容,同時配套完整實戰項目,例如對話機器人實戰、搜索引擎項目實戰、推薦算法系統實戰。
本書理論聯系實踐,深入淺出,知識點全面,通過閱讀本書,讀者不僅可以理解自然語言處理的知識,還能通過實戰項目案例更好地將理論融入實際工作中。
《分布式機器學習實戰》(人工智能科學與技術叢書)【陳敬雷編著】【清華大學出版社】
新書特色:深入淺出,逐步講解分布式機器學習的框架及應用配套個性化推薦算法系統、人臉識別、對話機器人等實戰項目。

【配套視頻】

推薦系統/智能問答/人臉識別實戰 視頻教程【陳敬雷】
視頻特色:把目前互聯網熱門、前沿的項目實戰匯聚一堂,通過真實的項目實戰課程,讓你快速成為算法總監、架構師、技術負責人!包含了推薦系統、智能問答、人臉識別等前沿的精品課程,下面分別介紹各個實戰項目:
1、推薦算法系統實戰
聽完此課,可以實現一個完整的推薦系統!下面我們就從推薦系統的整體架構以及各個子系統的實現給大家深度解密來自一線大型互聯網公司重量級的實戰產品項目!
2、智能問答/對話機器人實戰
由淺入深的給大家詳細講解對話機器人項目的原理以及代碼實現、并在公司服務器上演示如何實際操作和部署的全過程!
3、人臉識別實戰
從人臉識別原理、人臉識別應用場景、人臉檢測與對齊、人臉識別比對、人臉年齡識別、人臉性別識別幾個方向,從理論到源碼實戰、再到服務器操作給大家深度講解!

自然語言處理NLP原理與實戰 視頻教程【陳敬雷】
視頻特色:《自然語言處理NLP原理與實戰》包含了互聯網公司前沿的熱門算法的核心原理,以及源碼級別的應用操作實戰,直接講解自然語言處理的核心精髓部分,自然語言處理從業者或者轉行自然語言處理者必聽視頻!

人工智能《分布式機器學習實戰》 視頻教程【陳敬雷】
視頻特色:視頻核心內容有互聯網公司大數據和人工智能、大數據算法系統架構、大數據基礎、Python編程、Java編程、Scala編程、Docker容器、Mahout分布式機器學習平臺、Spark分布式機器學習平臺、分布式深度學習框架和神經網絡算法、自然語言處理算法、工業級完整系統實戰(推薦算法系統實戰、人臉識別實戰、對話機器人實戰)。

上一篇:自然語言處理系列六十八》搜索引擎項目實戰》搜索引擎系統架構設計
下一篇:自然語言處理系列七十》搜索引擎項目實戰》搜索Query意圖識別和智能糾錯

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/70087.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/70087.shtml
英文地址,請注明出處:http://en.pswp.cn/web/70087.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

arm 入坑筆記

1.開發環境&#xff08;IDE&#xff09;使用keil_5 (keil_mdk) 2.兩個手冊需要關注&#xff1a;用戶手冊&#xff08;編程需要&#xff09;&#xff0c;數據手冊&#xff08;硬件&#xff09; 3.32bit地址空間&#xff1a;0~2^324GB尋址空間及&#xff08;0-FFFF_FFFF&#x…

弱監督語義分割學習計劃(0)-計劃制定

經過與deepseek的一番討論和交流&#xff0c;DeepSeek為我設計了一個30天高強度學習計劃&#xff0c;重點聚焦弱監督/無監督語義分割在野外場景的應用&#xff0c;結合理論與實踐&#xff0c;并最終導向可落地的開源項目。以下是詳細計劃&#xff1a; 總體策略 優先級排序&…

vscode遠程報錯:Remote host key has changed,...

重裝了Ubuntu系統之后&#xff0c;由20.04改為22.04&#xff0c;再用vscode遠程&#xff0c;就出現了以上報錯。 親測有效的辦法 gedit ~/.ssh/known_hosts 打開這個配置文件 刪掉與之匹配的那一行&#xff0c;不知道刪哪一行的話&#xff0c;就打開第一行這個 /.ssh/confi…

Python - 爬蟲利器 - BeautifulSoup4常用 API

文章目錄 前言BeautifulSoup4 簡介主要特點&#xff1a;安裝方式: 常用 API1. 創建 BeautifulSoup 對象2. 查找標簽find(): 返回匹配的第一個元素find_all(): 返回所有匹配的元素列表select_one() & select(): CSS 選擇器 3. 訪問標簽內容text 屬性: 獲取標簽內純文本get_t…

DeepSeek驅動下的數據倉庫范式轉移:技術解耦、認知重構與治理演進

DeepSeek驅動下的數據倉庫范式轉移&#xff1a;技術解耦、認知重構與治理演進 ——基于多場景實證的架構革命研究 一、技術解耦&#xff1a;自動化編程范式的演進 1.1 語義驅動的ETL生成機制 在金融風控場景中&#xff0c;DeepSeek通過動態語法樹解析&#xff08;Dynamic Syn…

代碼隨想錄算法訓練營day38(補0206)

如果求組合數就是外層for循環遍歷物品&#xff0c;內層for遍歷背包。 如果求排列數就是外層for遍歷背包&#xff0c;內層for循環遍歷物品。 1.零錢兌換 題目 322. 零錢兌換 給你一個整數數組 coins &#xff0c;表示不同面額的硬幣&#xff1b;以及一個整數 amount &#xff0c…

golang channel底層實現?

底層數據實現 type hchan struct { qcount uint // 當前隊列中的元素數量 dataqsiz uint // 環形隊列的大小 buf unsafe.Pointer // 指向環形隊列的指針 elemsize uint16 // 元素大小 closed uint32 // chan…

圖的最小生成樹算法: Prim算法和Kruskal算法(C++)

上一節我們學習了最短路徑算法, 這一節來學習最小生成樹. 最小生成樹(Minimum Spanning Tree, MST)算法是圖論中的一種重要算法, 主要用于在加權無向圖中找到一棵生成樹, 使得這棵樹包含圖中的所有頂點, 并且所有邊的權重之和最小. 這樣的樹被稱為最小生成樹. 最小生成樹廣泛應…

矩陣系統源碼搭建的數據管理開發功能解析,支持OEM

一、引言 在矩陣系統中&#xff0c;數據猶如血液&#xff0c;貫穿整個系統的運行。高效的數據管理開發功能是確保矩陣系統穩定、可靠運行的關鍵&#xff0c;它涵蓋了數據的存儲、處理、安全等多個方面。本文將深入探討矩陣系統源碼搭建過程中數據管理功能的開發要點。 二、數據…

DeepSeek 助力 Vue 開發:打造絲滑的日期選擇器(Date Picker),未使用第三方插件

前言&#xff1a;哈嘍&#xff0c;大家好&#xff0c;今天給大家分享一篇文章&#xff01;并提供具體代碼幫助大家深入理解&#xff0c;徹底掌握&#xff01;創作不易&#xff0c;如果能幫助到大家或者給大家一些靈感和啟發&#xff0c;歡迎收藏關注哦 &#x1f495; 目錄 Deep…

操作系統知識點2

1.P&#xff0c;V操作可以實現進程同步&#xff0c;進程互斥&#xff0c;進程的前驅關系 2.先來先服務調度算法是不可搶占的算法 3.UNIX操作系統中&#xff0c;對文件系統中空閑區的管理通常采用成組鏈接法 4.對于FAT32文件系統&#xff0c;它采用的是鏈接結構 5.不同的I/O…

【個人開發】deepspeed+Llama-factory 本地數據多卡Lora微調【完整教程】

文章目錄 1.背景2.微調方式2.1 關鍵環境版本信息2.2 步驟2.2.1 下載llama-factory2.2.2 準備數據集2.2.3 微調模式2.2.3.1 zero-1微調2.2.3.2 zero-2微調2.2.3.3 zero-3微調2.2.3.4 單卡Lora微調 2.2.4 實驗2.2.4.1 實驗1&#xff1a;多GPU微調-zero12.2.4.2 實驗2&#xff1a;…

iOS 中使用 FFmpeg 進行音視頻處理

在 iOS 中使用 FFmpeg 進行音視頻處理,通常需要將 FFmpeg 的功能集成到項目中。由于 FFmpeg 是一個 C 庫,直接在 iOS 中使用需要進行一些配置和封裝。 1. 在 iOS 項目中集成 FFmpeg 方法 1:使用 FFmpeg 預編譯庫 下載 FFmpeg iOS 預編譯庫: 可以從以下項目中獲取預編譯的 …

Elasticsearch:將 Ollama 與推理 API 結合使用

作者&#xff1a;來自 Elastic Jeffrey Rengifo Ollama API 與 OpenAI API 兼容&#xff0c;因此將 Ollama 與 Elasticsearch 集成非常容易。 在本文中&#xff0c;我們將學習如何使用 Ollama 將本地模型連接到 Elasticsearch 推理模型&#xff0c;然后使用 Playground 向文檔提…

openGauss 3.0 數據庫在線實訓課程18:學習視圖管理

前提 我正在參加21天養成好習慣| 第二屆openGauss每日一練活動 課程詳見&#xff1a;openGauss 3.0.0數據庫在線實訓課程 學習目標 掌握openGauss視圖的管理&#xff1a;創建視圖、刪除視圖、查詢視圖的信息、修改視圖的信息。 課程作業 1.創建表&#xff0c;創建普通視圖…

騰訊云大模型知識引擎×DeepSeek賦能文旅

騰訊云大模型知識引擎DeepSeek賦能文旅 ——以合肥文旅為例的技術革新與實踐路徑 一、技術底座&#xff1a;知識引擎與DeepSeek的融合邏輯 騰訊云大模型知識引擎與DeepSeek模型的結合&#xff0c;本質上是**“知識庫檢索增強生成&#xff08;RAG&#xff09;實時聯網能力”**…

利用SkinMagic美化MFC應用界面

MFC(Microsoft Foundation Class)應用程序的界面設計風格通常比較保守,而且雖然MFC框架的控件功能強大且易于集成,但視覺效果較為樸素,缺乏現代感。尤其是MFC應用程序的設計往往以功能實現為核心,界面設計可能顯得較為簡潔甚至略顯呆板,用戶體驗可能不如現代應用程序流暢…

qt QOpenGLTexture詳解

1. 概述 QOpenGLTexture 是 Qt5 提供的一個類&#xff0c;用于表示和管理 OpenGL 紋理。它封裝了 OpenGL 紋理的創建、分配存儲、綁定和設置像素數據等操作&#xff0c;簡化了 OpenGL 紋理的使用。 2. 重要函數 構造函數&#xff1a; QOpenGLTexture(const QImage &image,…

nlp|微調大語言模型初探索(2),訓練自己的聊天機器人

前言 上篇文章記錄了具體的微調語言大模型步驟&#xff0c;以及在微調過程中可能遇見的各種報錯&#xff0c;美中不足的是只是基于開源數據集的微調&#xff0c;今天來記錄一下怎么基于自己的數據集去微調大語言模型&#xff0c;訓練自己的智能機器人&#xff01;&#xff01;&…

Java 大視界 -- 量子計算時代 Java 大數據的潛在變革與應對策略(88)

&#x1f496;親愛的朋友們&#xff0c;熱烈歡迎來到 青云交的博客&#xff01;能與諸位在此相逢&#xff0c;我倍感榮幸。在這飛速更迭的時代&#xff0c;我們都渴望一方心靈凈土&#xff0c;而 我的博客 正是這樣溫暖的所在。這里為你呈上趣味與實用兼具的知識&#xff0c;也…