這兩天,DeepSeek-V3 低調(diào)發(fā)布,,在國(guó)際上狠狠秀了一波肌肉:只用了 500 多萬(wàn)美金的成本,,帶來(lái)了不輸 Claude 3.5 的成績(jī),并開(kāi)源,! 下面,,讓我們以更加系統(tǒng)的方式,來(lái)看看這次的 DeepSeek-V3,,是這么煉成的,。本文將從性能、架構(gòu),、工程,、預(yù)訓(xùn)練和后訓(xùn)練五個(gè)緯度來(lái)拆解 V3,所用到的圖表,、數(shù)據(jù)源于技術(shù)報(bào)告:《DeepSeek-V3 Technical Report》,。 公眾號(hào)后臺(tái)回復(fù):DSV3,,獲得詳細(xì)報(bào)告,?!?/p> 性能DeepSeek-V3 的性能優(yōu)勢(shì),在各項(xiàng)基準(zhǔn)測(cè)試中得到了充分驗(yàn)證,?!?/p> 如圖,DeepSeek-V3 在 MMLU-Pro,、GPQA-Diamond,、MATH 500、AIME 2024,、Codeforces (Percentile) 和 SWE-bench Verified 等涵蓋知識(shí)理解,、邏輯推理、數(shù)學(xué)能力,、代碼生成以及軟件工程能力等多個(gè)維度的權(quán)威測(cè)試集上,,均展現(xiàn)出了領(lǐng)先或極具競(jìng)爭(zhēng)力的性能。特別是在 MATH 500 和 AIME 2024 這類(lèi)考察高級(jí)數(shù)學(xué)推理能力的測(cè)試中,,DeepSeek-V3 的表現(xiàn)尤為突出,,大幅超越其他模型?!?/p> 在與 DeepSeek-V2-Base,、Qwen2.5 72B Base 和 LLaMA-3.1 405B Base 等開(kāi)源基礎(chǔ)模型的對(duì)比中,DeepSeek-V3-Base 在 BBH,、MMLU 系列,、DROP、HumanEval,、MBPP,、LiveCodeBench-Base、GSM8K,、MATH,、MGSM、CMath 等幾乎所有任務(wù)上均取得最佳成績(jī),?!?/p> 經(jīng)過(guò)指令微調(diào)后,DeepSeek-V3 的性能進(jìn)一步提升,。在與包括 GPT-4o,、Claude-3.5-Sonnet 在內(nèi)的多個(gè)頂尖模型的對(duì)比中,DeepSeek-V3 在 MMLU,、MMLU-Redux,、DROP、GPQA-Diamond、HumanEval-Mul,、LiveCodeBench,、Codeforces、AIME 2024,、MATH-500,、CNMO 2024、CLUEWSC 等任務(wù)上,,均展現(xiàn)出與其相當(dāng)甚至更優(yōu)的性能?!?/p> 并且,,這么棒的數(shù)據(jù),總成本只需要約 550 萬(wàn)美金:如果是租 H800 來(lái)搞這個(gè)(但我們都知道,,DeepSeek 背后的幻方,,最不缺的就是卡) 架構(gòu)DeepSeek-V3 的這次發(fā)布,伴隨三項(xiàng)創(chuàng)新:Multi-head Latent Attention (MLA),、DeepSeekMoE 架構(gòu)以及無(wú)額外損耗的負(fù)載均衡策略,。 Multi-head Latent Attention (MLA):高效處理長(zhǎng)文本MLA 通過(guò)將 Key (K) 和 Value (V) 聯(lián)合映射至低維潛空間向量 (cKV),顯著降低了 KV Cache 的大小,,從而提升了長(zhǎng)文本推理的效率,。DeepSeek-V3 中 MLA 的 KV 壓縮維度 (dc) 設(shè)置為 512,Query 壓縮維度 (d') 設(shè)置為 1536,,解耦 Key 的頭維度 (dr) 設(shè)置為 64,。這種設(shè)計(jì)在保證模型性能的同時(shí),大幅減少了顯存占用和計(jì)算開(kāi)銷(xiāo),?!?/p> DeepSeekMoE 架構(gòu):稀疏激活,高效擴(kuò)展DeepSeek-V3 采用的 DeepSeekMoE 架構(gòu),,通過(guò)細(xì)粒度專(zhuān)家,、共享專(zhuān)家和 Top-K 路由策略,實(shí)現(xiàn)了模型容量的高效擴(kuò)展,。每個(gè) MoE 層包含 1 個(gè)共享專(zhuān)家和 256 個(gè)路由專(zhuān)家,,每個(gè) Token 選擇 8 個(gè)路由專(zhuān)家,最多路由至 4 個(gè)節(jié)點(diǎn),。這種稀疏激活的機(jī)制,,使得 DeepSeek-V3 能夠在不顯著增加計(jì)算成本的情況下,擁有龐大的模型容量,?!?/p> 無(wú)額外損耗的負(fù)載均衡:MoE 的關(guān)鍵優(yōu)化DeepSeek-V3 提出了一種創(chuàng)新的無(wú)額外損耗負(fù)載均衡策略,通過(guò)引入并動(dòng)態(tài)調(diào)整可學(xué)習(xí)的偏置項(xiàng) (Bias Term) 來(lái)影響路由決策,,避免了傳統(tǒng)輔助損失對(duì)模型性能的負(fù)面影響,。該策略的偏置項(xiàng)更新速度 (γ) 在預(yù)訓(xùn)練的前 14.3T 個(gè) Token 中設(shè)置為 0.001,,剩余 500B 個(gè) Token 中設(shè)置為 0.0;序列級(jí)平衡損失因子 (α) 設(shè)置為 0.0001,?!?/p> 以上圖(報(bào)告第 28 頁(yè),圖9)中的數(shù)據(jù)為例,,使用了該策略的訓(xùn)練模型在不同領(lǐng)域的專(zhuān)家負(fù)載情況,,相比于添加了額外負(fù)載損失(Aux-Loss-Based)的模型,分工更為明確,,這表明該策略能更好地釋放MoE的潛力,。 工程DeepSeek-V3 的這次發(fā)布,,伴隨多項(xiàng)工程優(yōu)化貫穿了流水線并行,、通信優(yōu)化、內(nèi)存管理和低精度訓(xùn)練等多個(gè)方面,?!?/p> DualPipe 流水線并行:雙向奔赴,消弭氣泡DeepSeek-V3 采用了一種名為 DualPipe 的創(chuàng)新流水線并行策略,。與傳統(tǒng)的單向流水線 (如 1F1B) 不同,,DualPipe 采用雙向流水線設(shè)計(jì),即同時(shí)從流水線的兩端饋送 micro-batch,。這種設(shè)計(jì)可以顯著減少流水線氣泡 (Pipeline Bubble),,提高 GPU 利用率?!?/p> 此外,,DualPipe 還將每個(gè) micro-batch 進(jìn)一步劃分為更小的 chunk,并對(duì)每個(gè) chunk 的計(jì)算和通信進(jìn)行精細(xì)的調(diào)度,。通過(guò)巧妙地編排計(jì)算和通信的順序,,實(shí)現(xiàn)了兩者的高度重疊?!?/p> 單個(gè) forward 和 backward chunk 的重疊策略(原報(bào)告第 12頁(yè)),。 如圖,如何將一個(gè) chunk 劃分為 attention,、all-to-all dispatch,、MLP 和 all-to-all combine 等四個(gè)組成部分,并通過(guò)精細(xì)的調(diào)度策略,,使得計(jì)算和通信可以高度重疊,。其中,橙色表示 forward,綠色表示 'backward for input',,藍(lán)色表示 'backward for weights',,紫色表示 PP communication,紅色表示 barriers,?!?/p> 8 個(gè) PP rank 和 20 個(gè) micro-batch 的 DualPipe 調(diào)度示例(原報(bào)告第 13頁(yè))。通過(guò)在 8 個(gè) PP rank 上,,20 個(gè) micro-batch 的 DualPipe 調(diào)度情況,,可以看到,通過(guò)雙向流水線的設(shè)計(jì),,以及計(jì)算和通信的重疊,,流水線氣泡被顯著減少,GPU 利用率得到了極大提升,。 DualPipe 在流水線氣泡數(shù)量和激活內(nèi)存開(kāi)銷(xiāo)方面均優(yōu)于 1F1B 和 ZeroBubble 等現(xiàn)有方法,。(原報(bào)告第 13頁(yè)) 通信優(yōu)化:多管齊下,,突破瓶頸跨節(jié)點(diǎn) MoE 訓(xùn)練的一大挑戰(zhàn)是巨大的通信開(kāi)銷(xiāo)。DeepSeek-V3 通過(guò)一系列精細(xì)的優(yōu)化策略,,有效地緩解了這一瓶頸,。
內(nèi)存管理:精打細(xì)算,,極致利用DeepSeek-V3 在內(nèi)存管理方面也做到了極致,通過(guò)多種策略最大程度地減少了內(nèi)存占用?!?/p>
FP8 低精度訓(xùn)練:精度與效率的平衡DeepSeek-V3 通過(guò) FP8 混合精度訓(xùn)練,,在保證模型精度的同時(shí),,大幅降低顯存占用并提升訓(xùn)練速度?!?/p>
預(yù)訓(xùn)練DeepSeek-V3 的訓(xùn)練策略涵蓋了數(shù)據(jù)構(gòu)建,、分詞其,、超參數(shù)設(shè)置、長(zhǎng)上下文擴(kuò)展和多 Token 預(yù)測(cè)等多個(gè)方面,?!?/p> 數(shù)據(jù)構(gòu)建DeepSeek-V3 的預(yù)訓(xùn)練語(yǔ)料庫(kù)規(guī)模達(dá)到了 14.8 萬(wàn)億 Token,這些數(shù)據(jù)經(jīng)過(guò)了嚴(yán)格的篩選和清洗,,以確保其高質(zhì)量和多樣性,。相比于前代模型 DeepSeek-V2,新模型的數(shù)據(jù)構(gòu)建策略更加精細(xì),。首先,,大幅提升了數(shù)學(xué)和編程相關(guān)數(shù)據(jù)在整體數(shù)據(jù)中的占比,這直接增強(qiáng)了模型在相關(guān)領(lǐng)域的推理能力,,使其在 MATH 500,、AIME 2024 等數(shù)學(xué)基準(zhǔn)測(cè)試和 HumanEval、LiveCodeBench 等代碼基準(zhǔn)測(cè)試中表現(xiàn)突出,。其次,,進(jìn)一步擴(kuò)展了多語(yǔ)言數(shù)據(jù)的覆蓋范圍,超越了傳統(tǒng)的英語(yǔ)和中文,,提升了模型的多語(yǔ)言處理能力,。 為了保證數(shù)據(jù)質(zhì)量,,DeepSeek 開(kāi)發(fā)了一套完善的數(shù)據(jù)處理流程,著重于最小化數(shù)據(jù)冗余,,同時(shí)保留數(shù)據(jù)的多樣性,。此外,他們還借鑒了近期研究 (https:///abs/2404.10830,,Ding et al., 2024) 中提出的文檔級(jí)打包 (Document Packing) 方法,,將多個(gè)文檔拼接成一個(gè)訓(xùn)練樣本,避免了傳統(tǒng)方法中由于截?cái)鄬?dǎo)致的上下文信息丟失,,確保模型能夠?qū)W習(xí)到更完整的語(yǔ)義信息,。 針對(duì)代碼數(shù)據(jù),,DeepSeek-V3 借鑒了 DeepSeekCoder-V2 中采用的 Fill-in-Middle (FIM) 策略,,以 0.1 的比例將代碼數(shù)據(jù)構(gòu)造成 <|fim_begin|> pre<|fim_hole|> suf<|fim_end|> middle<|eos_token|> 的形式。這種策略通過(guò)“填空”的方式,,迫使模型學(xué)習(xí)代碼的上下文關(guān)系,,從而提升代碼生成和補(bǔ)全的準(zhǔn)確性?!?/p> 分詞器與詞表:兼顧效率與準(zhǔn)確性DeepSeek-V3 采用了基于字節(jié)級(jí) BPE (Byte-level BPE) 的分詞器,,并構(gòu)建了一個(gè)包含 128K 個(gè) token 的詞表,。為了優(yōu)化多語(yǔ)言的壓縮效率,DeepSeek 對(duì)預(yù)分詞器 (Pretokenizer) 和訓(xùn)練數(shù)據(jù)進(jìn)行了專(zhuān)門(mén)的調(diào)整,?!?/p> 與 DeepSeek-V2 相比,新的預(yù)分詞器引入了將標(biāo)點(diǎn)符號(hào)和換行符組合成新 token 的機(jī)制,。這種方法可以提高壓縮率,,但也可能在處理不帶換行符的多行輸入 (例如 few-shot 學(xué)習(xí)的 prompt) 時(shí)引入 token 邊界偏差 (Token Boundary Bias) (Lundberg, 2023)。為了減輕這種偏差,,DeepSeek-V3 在訓(xùn)練過(guò)程中以一定概率隨機(jī)地將這些組合 token 拆分開(kāi)來(lái),,從而讓模型能夠適應(yīng)更多樣化的輸入形式,提升了模型的魯棒性,?!。ㄏ聢D來(lái)自 Token Boundary Bias 的原文) 模型配置與超參數(shù)DeepSeek-V3 的模型配置和訓(xùn)練超參數(shù)都經(jīng)過(guò)了精心的設(shè)計(jì)和調(diào)優(yōu),,以最大化模型的性能和訓(xùn)練效率,。
DeepSeek-V3 的 Transformer 層數(shù)設(shè)置為 61 層,,隱藏層維度為 7168,。所有可學(xué)習(xí)參數(shù)均采用標(biāo)準(zhǔn)差為 0.006 的隨機(jī)初始化。在 MLA 結(jié)構(gòu)中,,注意力頭的數(shù)量 (nh) 設(shè)置為 128,,每個(gè)注意力頭的維度 (dh) 為 128,KV 壓縮維度 (dc) 為 512,,Query 壓縮維度 (d') 為 1536,,解耦的 Key 頭的維度 (dr) 為 64。除了前三層之外,,其余的 FFN 層均替換為 MoE 層,。每個(gè) MoE 層包含 1 個(gè)共享專(zhuān)家和 256 個(gè)路由專(zhuān)家,每個(gè)專(zhuān)家的中間隱藏層維度為 2048,。每個(gè) Token 會(huì)被路由到 8 個(gè)專(zhuān)家,,并且最多會(huì)被路由到 4 個(gè)節(jié)點(diǎn)。多 Token 預(yù)測(cè)的深度 (D) 設(shè)置為 1,,即除了預(yù)測(cè)當(dāng)前 Token 之外,,還會(huì)額外預(yù)測(cè)下一個(gè) Token。此外,,DeepSeek-V3 還在壓縮的潛變量之后添加了額外的 RMSNorm 層,,并在寬度瓶頸處乘以了額外的縮放因子?!?/p>
DeepSeek-V3 采用了 AdamW 優(yōu)化器,,β1 設(shè)置為 0.9,,β2 設(shè)置為 0.95,權(quán)重衰減系數(shù) (weight_decay) 設(shè)置為 0.1,。最大序列長(zhǎng)度設(shè)置為 4K,。學(xué)習(xí)率方面,采用了組合式的調(diào)度策略:在前 2K 步,,學(xué)習(xí)率從 0 線性增加到 2.2 × 10^-4,;然后保持 2.2 × 10^-4 的學(xué)習(xí)率直到模型處理完 10T 個(gè) Token;接下來(lái),,在 4.3T 個(gè) Token 的過(guò)程中,,學(xué)習(xí)率按照余弦曲線 (Cosine Decay) 逐漸衰減至 2.2 × 10^-5;在最后的 500B 個(gè) Token 中,,學(xué)習(xí)率先保持 2.2 × 10^-5 不變 (333B 個(gè) Token),,然后切換到一個(gè)更小的常數(shù)學(xué)習(xí)率 7.3 × 10^-6 (167B 個(gè) Token)。梯度裁剪的范數(shù)設(shè)置為 1.0,。Batch Size 方面,,采用了動(dòng)態(tài)調(diào)整的策略,在前 469B 個(gè) Token 的訓(xùn)練過(guò)程中,,Batch Size 從 3072 逐漸增加到 15360,,并在之后的訓(xùn)練中保持 15360 不變?!?/p> 為了實(shí)現(xiàn) MoE 架構(gòu)中的負(fù)載均衡,,DeepSeek-V3 采用了無(wú)額外損耗的負(fù)載均衡策略,并將偏置項(xiàng)的更新速度 (γ) 在預(yù)訓(xùn)練的前 14.3T 個(gè) Token 中設(shè)置為 0.001,,在剩余的 500B 個(gè) Token 中設(shè)置為 0.0,。序列級(jí)平衡損失因子 (α) 設(shè)置為 0.0001,以避免單個(gè)序列內(nèi)的極端不平衡,。多 Token 預(yù)測(cè) (MTP) 損失的權(quán)重 (λ) 在前 10T 個(gè) Token 中設(shè)置為 0.3,在剩余的 4.8T 個(gè) Token 中設(shè)置為 0.1,?!?/p> 長(zhǎng)上下文擴(kuò)展與多 Token 預(yù)測(cè):錦上添花為了使 DeepSeek-V3 具備處理長(zhǎng)文本的能力,DeepSeek 采用了兩階段的訓(xùn)練策略,,將模型的上下文窗口從 4K 逐步擴(kuò)展到 128K,。他們采用了 YaRN (Peng et al., 2023a) 技術(shù),并將其應(yīng)用于解耦的共享 Key (k),。在長(zhǎng)上下文擴(kuò)展階段,,DeepSeek-V3 的超參數(shù)保持不變:scale 設(shè)置為 40,β 設(shè)置為 1,,ρ 設(shè)置為 32,,縮放因子設(shè)置為 0.1 ln n + 1,。
上圖(報(bào)告第 23 頁(yè)) 的 'Needle In A Haystack' (NIAH) 測(cè)試結(jié)果清晰地展示了 DeepSeek-V3 在處理長(zhǎng)文本方面的卓越能力,。 此外,,DeepSeek-V3 還采用了多 Token 預(yù)測(cè) (MTP) 策略 (2.2 節(jié),第 10 頁(yè)),,要求模型在每個(gè)位置預(yù)測(cè)未來(lái)的多個(gè) Token,,而不僅僅是下一個(gè) Token。圖 3 (第 10 頁(yè)) 詳細(xì)展示了 MTP 的實(shí)現(xiàn)方式,。 這種策略增強(qiáng)了模型的預(yù)見(jiàn)能力,,并提供了更豐富的訓(xùn)練信號(hào),從而提升了訓(xùn)練效率,。表 4 (第 26 頁(yè)) 的消融實(shí)驗(yàn)結(jié)果證明了 MTP 策略的有效性,。 后訓(xùn)練DeepSeek-V3 的后訓(xùn)練 (Post-Training) 階段,包括有監(jiān)督微調(diào) (Supervised Fine-Tuning, SFT) 和強(qiáng)化學(xué)習(xí) (Reinforcement Learning, RL) 兩個(gè)步驟,?!?/p> 有監(jiān)督微調(diào) (SFT)SFT 階段,DeepSeek-V3 在一個(gè)包含 1.5M 指令-響應(yīng)對(duì)的高質(zhì)量數(shù)據(jù)集上進(jìn)行了微調(diào),。該數(shù)據(jù)集涵蓋了多種任務(wù)類(lèi)型和領(lǐng)域,,并采用了不同的數(shù)據(jù)構(gòu)建策略,以最大程度地激發(fā)模型的潛能,?!?/p> 數(shù)據(jù)構(gòu)建策略
訓(xùn)練細(xì)節(jié)
強(qiáng)化學(xué)習(xí) (RL)為了使 DeepSeek-V3 更好地對(duì)齊人類(lèi)偏好,,DeepSeek 采用了強(qiáng)化學(xué)習(xí) (RL) 技術(shù),,并構(gòu)建了基于規(guī)則的獎(jiǎng)勵(lì)模型 (Rule-Based RM) 和基于模型的獎(jiǎng)勵(lì)模型 (Model-Based RM) 相結(jié)合的獎(jiǎng)勵(lì)機(jī)制,。
作為獎(jiǎng)勵(lì)模型,,在 RewardBench 上的表現(xiàn)上,,DeepSeek 多個(gè)方面超越或持平 GPT-4o 和 Claude-3.5-sonnet?!?/p> RL 過(guò)程中,,DeepSeek-V3 采用了 Group Relative Policy Optimization (GRPO) 算法 (原報(bào)告第 30 頁(yè)) 。與傳統(tǒng)的 PPO 算法不同,,GRPO 不需要一個(gè)單獨(dú)的 Critic 模型來(lái)估計(jì) Value 函數(shù),,而是通過(guò)比較一組樣本的獎(jiǎng)勵(lì)來(lái)估計(jì) Advantage。具體流程如下:
數(shù)據(jù)配比在后訓(xùn)練過(guò)程中,DeepSeek-V3 整合了多種類(lèi)型的數(shù)據(jù),,數(shù)據(jù)來(lái)源和配比如下:
以及... |
|
來(lái)自: 長(zhǎng)沙7喜 > 《智能技術(shù)》