參考:【論文學習】DeepSeek-V3 全文翻譯
在人工智能領域,語言模型的發展日新月異。從早期的簡單模型到如今擁有數千億參數的巨無霸模型,技術的進步令人矚目。然而,隨著模型規模的不斷擴大,訓練成本和推理效率成為了擺在研究者面前的兩道難題。DeepSeek-V3,這個擁有671B(6710億)參數的大型混合專家(MoE)語言模型,卻以其高效的訓練和卓越的性能,成為了開源模型中的佼佼者。今天,就讓我們一起走進DeepSeek-V3的世界,探索它是如何在保持高精度的同時,將訓練成本降低到GPT的十分之一。
一、DeepSeek-V3的架構創新
DeepSeek-V3的架構設計是其高效訓練和推理的基礎。它采用了多頭潛在注意力(MLA)和DeepSeekMoE架構,這兩種技術在DeepSeek-V2中已經得到了充分驗證。MLA通過低秩聯合壓縮注意力的鍵(Key)和值(Value),減少了推理時的KV緩存和訓練時的激活內存。而DeepSeekMoE則通過細粒度的專家并行,隔離一些共享專家,提高了模型的計算效率和性能。
1. 多頭潛在注意力(MLA)
MLA的核心在于對注意力機制的優化。傳統的多頭注意力機制在處理大規模數據時,會消耗大量的內存和計算資源。而MLA通過低秩聯合壓縮,將注意力的鍵和值進行壓縮,減少了KV緩存的大小。同時,對注意力查詢(Query)也進行了類似的低秩壓縮,進一步降低了訓練時的激活內存。這種壓縮策略在顯著減少內存占用的同時,保持了與標準多頭注意力相當的性能。
2. DeepSeekMoE架構
DeepSeekMoE架構是DeepSeek-V3的另一個重要創新。它采用了細粒度的專家并行,將輸入數據通過共享專家和路由專家進行處理。路由專家的選擇基于Top-K選擇機制,確保每個token都能被發送到最合適的專家進行處理。這種設計不僅提高了計算效率,還使得模型能夠更好地利用專家的多樣性,從而提升整體性能。
3. 無輔助損失的負載均衡策略
為了進一步提高訓練效率,DeepSeek-V3引入了一種無輔助損失的負載均衡策略。傳統的負載均衡方法通常需要引入輔助損失來鼓勵負載均衡,但這可能會對模型性能產生不利影響。DeepSeek-V3通過動態調整每個專家的偏置項,實現了負載均衡,同時避免了因負載均衡導致的性能下降。這種策略不僅提高了訓練效率,還保持了模型的高性能。
二、訓練框架的優化
DeepSeek-V3 的訓練由 HAI-LLM 框架支持,這是一個由工程師從零開始打造的高效輕量級訓練框架。
1. DualPipe算法
DeepSeek-V3采用了DualPipe算法,這是一種創新的流水線并行算法。它通過重疊正向和反向的計算-通信階段,減少了流水線氣泡,提高了訓練效率。具體來說,DualPipe將每個塊劃分為四個部分:注意力機制、全到全分發(dispatch)、MLP和全到全合并(combine)。通過重新排列這些部分,并手動調整GPU SMs用于通信與計算的比例,DualPipe確保了在執行過程中全到全和PP通信都可以被完全隱藏。這種高效的重疊策略使得DeepSeek-V3在訓練過程中能夠充分利用計算資源,顯著提高了訓練效率。
2. 高效的跨節點全到全通信內核
為了進一步提高通信效率,DeepSeek-V3開發了高效的跨節點全到全通信內核。這些內核充分利用了InfiniBand(IB)和NVLink的帶寬,減少了通信開銷。通過定制的通信內核,DeepSeek-V3節省了用于通信的流處理器(SMs),提高了通信效率。這種優化使得DeepSeek-V3在跨節點通信時能夠保持高效的訓練速度,進一步降低了訓練成本。
3. 內存優化
DeepSeek-V3在內存優化方面也做了大量工作。通過重新計算RMSNorm操作和MLA上投影,DeepSeek-V3減少了存儲激活值所需的內存。此外,它還采用了指數移動平均值(EMA)來存儲模型參數,進一步降低了內存占用。這些內存優化措施使得DeepSeek-V3能夠在不使用昂貴的張量并行(TP)的情況下進行訓練,顯著降低了訓練成本。
三、FP8混合精度訓練
DeepSeek-V3采用了FP8混合精度訓練框架,這是其高效訓練的另一個關鍵因素。FP8混合精度訓練通過使用FP8數據格式進行大多數計算密集型操作,顯著提高了訓練速度并減少了內存消耗。
1. 混合精度框架
在FP8混合精度框架中,大多數核心計算內核,如GEMM操作,以FP8精度實現。這些操作接受FP8張量作為輸入,并產生BF16或FP32的輸出。通過這種方式,DeepSeek-V3的計算速度比原始的BF16方法翻倍,同時顯著減少了內存消耗。
2. 細粒度量化
為了提高低精度訓練的準確性,DeepSeek-V3采用了細粒度量化策略。它按1×128的瓦片或128×128的塊進行分組和縮放,以適應異常值,提高量化精度。這種細粒度量化方法能夠更好地適應激活值和權重的分布,減少了量化誤差,提高了訓練精度。
3. 增加累加精度
DeepSeek-V3還通過將累加提升到CUDA Cores,提高了FP8 GEMM的累加精度。通過這種方式,它能夠保留更高的精度,減少了下溢問題,提高了訓練的穩定性。
四、數據和超參數優化
除了架構和訓練框架的優化,DeepSeek-V3在數據和超參數方面也進行了精心設計。
1. 數據構建
DeepSeek-V3的預訓練語料庫包含14.8萬億個高質量且多樣化的token。通過增加數學和編程樣本的比例,擴展多語言覆蓋范圍,優化了預訓練語料庫。此外,它的數據處理流程經過改進,以減少冗余,同時保持語料庫的多樣性。這種高質量的數據為DeepSeek-V3的訓練提供了堅實的基礎。
2. 超參數設置
DeepSeek-V3的超參數設置也非常精細。它采用了AdamW優化器,并設置了合適的學習率調度和批量大小調度。通過精心設計的學習率調度,DeepSeek-V3在訓練過程中保持了穩定的學習速度,提高了訓練效率。同時,批量大小的逐步增加也使得訓練過程更加高效。
五、后訓練優化
在后訓練階段,DeepSeek-V3通過監督微調(SFT)和強化學習(RL)進一步提升了模型的性能。
1. 監督微調(SFT)
DeepSeek-V3使用了精心策劃的指令調優數據集,涵蓋多個領域,共包含150萬個實例。通過兩輪微調,DeepSeek-V3在特定任務上的表現得到了顯著提升。這種微調策略使得DeepSeek-V3能夠更好地理解并遵循用戶定義的格式約束,提高了模型的實用性。
2. 強化學習(RL)
在強化學習階段,DeepSeek-V3使用了基于規則的獎勵模型和基于模型的獎勵模型。通過Group Relative Policy Optimization(GRPO),DeepSeek-V3優化了策略模型,進一步提升了模型的性能。這種強化學習策略使得DeepSeek-V3在復雜任務中表現出色,接近甚至超過了領先的閉源模型。
六、DeepSeek-V3的訓練成本與性能
通過上述一系列優化措施,DeepSeek-V3不僅在性能上達到了領先水平,還在訓練成本上實現了顯著降低。DeepSeek-V3的完整訓練僅需278.8萬H800 GPU小時,而其預訓練階段每萬億個token僅需180K H800 GPU小時。這種高效的訓練成本使得DeepSeek-V3成為了目前最強的開源模型之一,其性能與領先的閉源模型相當,甚至在某些領域超過了這些模型。
七、總結
DeepSeek-V3的成功之路充滿了創新和優化。從架構設計到訓練框架,從數據處理到后訓練優化,DeepSeek-V3在每一個環節都進行了精心設計和優化。通過多頭潛在注意力(MLA)、DeepSeekMoE架構、無輔助損失的負載均衡策略、FP8混合精度訓練等技術,DeepSeek-V3不僅提高了訓練效率,還保持了高精度的性能。它的成功為開源語言模型的發展提供了寶貴的經驗,也為未來AI技術的發展指明了方向。