↓推薦關注↓
導讀
一、關於DeepSeek公司及其大模型
1.1 公司概況

1.2 模型能力


1.3訓推成本


1、預訓練階段,每萬億的Token 訓練V3使用2048個H800GPU叢集,只需要180K 個H800 GPU小時,大概3.7天(180000/2048/24)
2、整個預訓練總耗時2664K GPU小時(不到2個月),加上 上下文擴充套件和後訓練,總耗時大概2788KGPU耗時。
3、按照H800 每小時2美元租賃,總的訓練成本不超過600W美元

二、DeepSeek訓推核心技術
2.1 DeepSeek-V3模型網路架構
DeepSeekV3 整體預訓練用了14.8萬億的高質量Token,並且在後期做了SFT和RL,模型引數量達到671B,但是每個Token僅啟用37B引數。為了做到高效的推理和訓練,DeepSeekV3自研了MLA注意力機制和無輔助損失負載均衡策略的MoE架構。
從技術報告中看出,是經典的Transformer架構,比較亮眼的就是前饋網路使用的DeepSeekMoE架構、Attention機制使用MLA架構,其實這兩個在DeepSeekV2模型已經被驗證使用過。
與DeepSeek-V2相比,V3額外引入了一種無輔助損失的負載均衡策略,用於DeepSeekMoE,以減輕因需要保證Expert負載均衡而導致的效能下降。

2.1.1 DeepSeekMoE
●稀疏 MoE 層: 這些層代替了傳統 Transformer 模型中的前饋網路 (FFN) 層。MoE 層包含若干“專家”(例如 8 個),每個專家本身是一個獨立的神經網路。在實際應用中,這些專家通常是前饋網路 (FFN),但它們也可以是更復雜的網路結構,甚至可以是 MoE 層本身,從而形成層級式的 MoE 結構。
●門控網路或路由: 這個部分用於決定哪些Token被髮送到哪個專家。Token的路由方式是 MoE 使用中的一個關鍵點,因為路由器由學習的引數組成,並且與網路的其他部分一同進行預訓練。



,並將其新增到相應的親和力分數

中以確定top-K路由,具體來說:如果其對應的專家過載,我們將偏差項減少γ;如果其對應的專家負載不足,我們將偏差項增加γ,其中γ是一個稱為偏差更新速度的超引數。
門控網路本質上就是一個softmax疊加一個分類網路,那麼輔助loss往往就是新增一個懲罰項,對輸出過大的 logits 進行懲罰,鼓勵模型生成更加適度的 logits 值,防止模型生成過於極端的輸出。
2.1.2 MLA 多頭潛在注意力
大模型推理過程KV Cache機制一般是限制推理效率的一大瓶頸,而標準的Transformer 架構裡面的MHA架構會產出非常多的KV Cache,為了減少對應的KV Cache業界實踐過很多方案,例如PagedAttention、多查詢注意力(MQA)和分組查詢注意力(GQA),但是效能相比原生的MHA有一定差距。

DeepSeek-V2,提出一種創新的注意力機制:多頭潛在注意力(MLA)。
相比MQA的KV共用和GQA的KV分組,MLA的核心是注意力鍵和值的低秩聯合壓縮,以減少推理過程中的鍵值(KV)快取。相比MHA具有更好的效能,但需要的 KV 快取量要少得多。

低秩矩陣是指其秩(rank)遠小於其行數和列數的矩陣。
假設我們有一個矩陣,其實際結構允許它被分解為兩個較小的矩陣的乘積。這種情況通常意味著原矩陣是低秩的。
假設我們有一個4×5
的矩陣A
,這個矩陣可以透過兩個更小的矩陣的乘積來表示,比如一個4×2
的矩陣B
和一個2×5
的矩陣C
。這意味著原始矩陣A
的資訊可以透過這兩個較小的矩陣來捕捉,表明A
是一個低秩矩陣。



這裡的

表示第t個Token的輸入,

表示KV的向下投影矩陣,將

做降維壓縮表示,實際得到

就是要快取的KV壓縮隱向量;

和

是向上做升維的投影矩陣,將Token的壓縮隱向量

復原為原始KV矩陣;

MLA 模組架構圖
具體的Attention計算推導過程可以參考:MLA的推導細節
2.2 訓練推理核心技術

DeepSeek-V3在一個配備了2048個NVIDIA H800 GPU的叢集上進行訓練,使用的是自研的HAI-LLM框架,框架實現了四種並行訓練方式:ZeRO 支援的資料並行、流水線並行、張量切片模型並行和序列並行。
這種並行能力支援不同工作負載的需求,可以支援數萬億規模的超大模型並擴充套件到數千個 GPU,同時還自研了一些配套的高效能運算元haiscale,可以幫助 HAI-LLM 極大最佳化大模型訓練的視訊記憶體效率和計算效率。
i.通訊計算重疊最佳化
DeepSeek-V3應用了16路流水線並行(PP),跨越8個節點的64路專家並行(EP),以及ZeRO-1資料並行(DP)。
與現有的流水線並行方法相比,DualPipe的流水線氣泡更少。同時重疊了前向和後向過程中的計算和通訊階段,解決了跨節點專家並行引入的沉重通訊開銷的挑戰。
DualPipe的關鍵思想是重疊一對單獨的前向和後向塊中的計算和通訊:將每個塊劃分為四個元件:注意力、all-all排程、MLP和all-all組合
例如,假設我們有兩個計算塊,A和B:
1.在塊A進行前向傳播計算時,可以同時進行塊B的後向傳播通訊過程。
2.當塊A完成前向傳播計算後,開始它的通訊過程;而塊B則開始它的前向傳播計算。


●計算通訊重疊
在深度學習大規模分散式訓練過程中,通訊的速度往往落後於計算的速度,如何在通訊的gap期間內並行做一些計算就是高效能計算和通訊重疊,是實現高效訓練的關鍵因素。
●流水線並行氣泡問題
一些大的模型會採用流水線並行策略,將模型的不同層放在不同的GPU上,但是不同層之間有依賴關係,後面層需要等前面的計算完才能開始計算,會導致GPU在一段時間是閒置的,如下圖所示:
在排程過程中,(1) IB 傳送,(2) IB 到 NVLink 轉發,以及 (3) NVLink 接收分別由各自的 warp 處理。分配給每個通訊任務的 warp 數會根據所有 SM 上的實際工作負載動態調整。
在合併過程中,(1) NVLink 傳送,(2) NVLink 到 IB 的轉發和累積,以及 (3) IB 接收和累積也由動態調整的 warp 處理。
DSV3採用了1個共享專家和256個路由專家的MoE架構,每個token會啟用8個路由專家。
2.2.3 用於FP8訓練的混合精度框架
對啟用,在token維度採用group-wise的量化(1*128);對權重,採用128* 128的block-wise量化

在 TensorCore 上執行矩陣 MMA(矩陣乘法累加)操作時,每當累加達到一個間隔時,這些部分結果會被傳輸到 CUDA Cores 上的 FP32 暫存器中,並在那裡進行FP32 精度的累加計算。

2.2.4 MTP的訓練目標
DeepSeekV3訓練過程設定了多Token預測的目標,從技術報告的消融實驗看出,確實提高了模型在大多數評估基準上的效能,而且MTP模組還可以用於推理加速。

2.2.5 推理部署方案
DeepSeek-V3 整體引數量達到了671B,如此多的引數量,我們看下他的一個部署方案:
推理部署採用了預填充(Prefilling)和解碼(Decoding)分離的策略,確保了線上服務的高吞吐量和低延遲。透過冗餘專家部署和動態路由策略,模型在推理時保持了高效的負載均衡。
整套部署方案下來基本是跨機分散式推理。
2.2.5.1 Prefill 階段
這個階段簡單說就是並行處理使用者的Prompt,將其轉為KV Cache。
預填充階段的最小部署單元由4個節點組成,每個節點配備32個GPU。注意力部分採用4路張量並行(TP4)和序列並行(SP),並結合8路資料並行(DP8)。其較小的TP規模(4路)限制了TP通訊的開銷。對於MoE部分,我們使用32路專家並行(EP32)
2.2.5.2 Decoder 階段
這個階段就是做自迴歸的每個Token的輸出。
解碼階段的最小部署單元由40個節點和320個GPU組成。注意力部分採用TP4和SP,結合DP80,而MoE部分使用EP320。對於MoE部分,每個GPU只承載一個專家,64個GPU負責承載冗餘專家和共享專家
總結:為什麼DeepSeekV3訓練成本這麼低?
三、為什麼是DeepSeek?
在矽谷,類似DeepSeek這樣的AI創新並不少有,只是這次是一家中國公司做出了這個動作,相比傳統的‘美國創新、中國應用’的模式顯得格外的讓人興奮。
1、大模型是一個知識密集型產業,如何組織高密度人才?顯然DeepSeek做到了
2、大模型技術沒有魔法,更多時候就是考驗基本功和驅動力
3、不以商業化為第一要義,很多時候能輕裝上陣
四、一些個人思考
1、長遠來看,後續可能會有專門的適配Transformer架構的晶片,就像為卷積設計了ASIC晶片
2、多Token預測、MoE架構可能很長一段時間都是大模型訓推架構熱門研究方向
3、在國內做AI,應用始終會比基礎研究有市場,更有話語權,但是基礎創新和海外的代際差距會越來越小
4、大模型訓練和推理,軟硬體是一個協同的生態,DeepSeek的出現將會促進AI全行業的更加快速且低成本的迭代
5、時間比較倉促,很多技術細節問題值得學習深究,有錯誤的地方勿噴~
參考資料
線上閱讀:https://talk.gitee.com/report/china-open-source-2024-annual-report.pdf
