一、模型架構

1.1 高效的模型架構設計:多頭潛在注意力 MLA 和 DeepSeekMoE 架構

1. 多頭潛在注意力 MLA:MLA(Multi – head Latent Attention)架構與標準的MHA(Multi – head Attention)架構相比,核心是對注意力鍵和值進行低秩聯合壓縮,減少了推理時的 Key – Value(KV)緩存,減少了推理內存占用,提升了推理效率,該架構對訓練過程無直接幫助,不是本文分析的重點。

2. DeepSeekMoE 架構:核心是采用了更細粒度的專家分配策略,每個MoE層有1個共享專家和256個路由專家(共有58個MoE層14906個專家),每個輸入Token可以激活8個路由專家,該架構可以有效利用計算資源,實現高效訓練,其與標準MoE架構存在以下不同點:

a)專家構成:標準MoE架構的類型和分工較為寬泛,一般不會特別強調共享專家的設置,各個專家相對獨立的處理不同輸入數據,在處理不同類型數據特征時,專家間一般缺少專門設計的協作和共享機制;而 DeepSeekMoE 架構中的共享專家可對不同輸入數據中的共性特征進行處理,在不同類型的輸入數據間實現共性特征的知識共享,以便減少模型參數冗余,而路由專家則負責處理具有特定模式或特征的數據,提高模型對不同數據的適應性和處理能力。

b)專家分配:標準MoE架構的專家分配策略相對比較粗放,門控網絡根據輸入數據進行專家選擇時,對于一些復雜數據特征的區分不夠精準,不能很好地將數據分配到最能處理該特征的專家;而 DeepSeekMoE 架構采用了更細粒度的專家分配策略,門控網絡能夠更精準地分析輸入數據的特征,將其分配到最合適的專家,提升模型對于復雜數據的處理能力。

c)專家激活:標準MoE架構對于輸入數據激活的專家數量沒有固定標準,在某些情況下輸入數據可能會激活過多非必要的專家,導致計算資源的浪費;而 DeepSeekMoE 架構明確了每個輸入 Token 激活8個路由專家,在保證模型處理效果的同時,避免了過度激活專家帶來的計算資源浪費,提高了計算效率、降低了計算成本;在具體實現方式上,共享專家會對每個輸入 Token 進行處理,以便提取通用的基本特征,而路由專家會根據輸入 Token 的特征而決定是否被激活參與計算。

1.2 創新的負載均衡策略:無輔助損失負載均衡和序列級負載均衡

1. 基本概念:在MoE大模型訓練過程中,輸入數據會根據一定的路由規則分配到不同的專家模型進行處理,這個過程中可能會出現負載不均衡的情況,即某些專家被頻繁調用,而另一些專家則很少被使用,這會導致訓練效率和模型性能下降;

業界通常采用的負載均衡策略為引入專門的輔助損失函數來強制平衡專家之間的負載,例如通過懲罰專家之間的負載差異來促使模型均勻地使用各個專家,額外引入的損失函數往往會導致模型復雜度增加、訓練不穩定、發生與原本訓練目標不一致等問題;

除了上述基于單 Token 的負載不均問題外,一個輸入序列中的 Token 在專家間的分配情況也容易出現負載不均,即同一序列中的多個 Token 可能會集中分配給某些專家。

2. 優化方法:DeepSeek-V3 采用無輔助損失負載均衡技術,通過直接在路由機制中融入負載均衡邏輯,避免了引入輔助損失函數,實現了僅通過對路由決策動態調整就實現專家負載均衡的效果;同時訓練過程輔以序列級負載均衡策略,確保了每個序列內的專家負載均衡。

a)無輔助損失負載均衡:DeepSeek-V3 為每個專家引入了一個可學習的偏置項,在訓練過程中它會隨著專家負載情況進行動態更新,當門控網絡計算輸入 Token 與各專家的匹配得分時,該偏置項會動態調整每個專家的匹配得分,基于得分和對各專家利用率的實時監測(例如在一定時間窗口內專家處理的 Token 數量、計算資源占用時長等),動態調整路由策略,將輸入 Token 實時分配給負載較低的專家,這種方法不僅負載均衡效果好,而且避免了引入輔助損失函數帶來的衍生問題。

b)序列級負載均衡:DeepSeek-V3 額外增加了一個序列級負載均衡損失函數,對序列中的每個 Token 進行精細化的分析和處理,根據 Token 在序列中的位置、上下文信息等更合理地分配到各個專家(而不是僅僅基于單個 Token 的特征進行獨立分配),通過這種負載均衡方案,兼顧了 Token 之間的關聯性和序列的整體結構。


1.3 多令牌預測(MTP) 訓練目標:提高訓練效率和推理速度

1. 基本概念:MTP 的全稱是 Multi – Token Prediction(多令牌預測),與之對應的是 DeepSeek-V3 發布之前業界普遍使用的單令牌預測(Single – Token Prediction,STP),STP 一次僅預測一個Token,而 MTP 可同時預測多個 Token,這一方案在訓練階段可以提升數據訓練效率,在推理階段可以實現顯著加速。

2. 實現方案:如 DeepSeek 論文中所展示的 MTP 架構所示,MTP 由一個主模型(Main Model)以及多個 MTP 模塊(MTP Module 1、MTP Module 2 等)構成,主模型負責基礎的下一個 Token 預測任務,MTP 模塊則用于預測多個未來 Token,它們共同協作完成多Token 預測訓練。

a)輸入 Token 與輸出 Token:如圖左下方的t1、t2、t3、t4等,是模型的輸入序列;如圖上方的t2、t3、t4、t5是模型預測需要匹配的真實 Token 序列,不同部分對應不同的預測任務。

b)主模型(Main Model)與 MTP 模塊:輸入 Token 先經過嵌入層轉換為向量表示,然后分別在 Main Model 和 MTP 內部進行計算,基于與目標 Token 計算得到的 Loss,指導模型更新訓練參數。

c)共享機制:嵌入層(Embedding Layer)和輸出頭(Output Head)在主模型和 MTP 模塊之間共享,這種共享機制確保了模型在不同預測任務中的參數一致性,同時減少了參數數量,提高了訓練效率。

3. 核心價值:MTP 不僅在推理時能夠顯著加速生成速度(據稱生成速度可提升 1.8 倍),對于高效訓練同樣很有價值。

a)實現高效訓練:由于一次可預測多個 Token,在相同數據量的情況下,相比 STP 架構,模型可以學習到更多的信息,從而提升了數據的利用效率,使得訓練更加高效。

b)提升訓練效果:模型可以基于對多個 Token 的預測,更合理地調整自身參數,學習到更豐富的語言模式和語義信息,有助于模型在訓練中更好地收斂,提升訓練效果。

二、并行策略

2.1 高效的并行策略設計:大量使用 EP、不再使用 TP

1. 并行策略總結:DeepSeek-V3 的訓練由 HAI-LLM 框架(DeepSeek 自研訓練框架)支持,采用了16路流水線并行(PP),跨越8個節點的64路專家并行(EP),以及 ZeRO-1 數據并行(DP),實現了充分利用計算資源,提高訓練效率,減少訓練時間和成本。其中 PP 和 DP 將在本節后邊兩個要點進行分析,此處重點分析其為何沒有使用 TP。

2. 使用 EP 而不是 TP:在 DeepSeek-V3 訓練中,優先使用 EP 而沒有使用 TP 的原因核心有以下幾個方面:

a)模型結構適配性:MoE 模型由多個專家網絡和一個門控網絡組成,EP 正好與這種結構相匹配,它可以將不同的專家分配到不同的計算單元上并行計算,讓模型同時處理多個不同的任務或數據特征,提高模型的處理能力和訓練效率;TP 通常用于處理大型張量的計算,不能很好地對應 MoE 模型的結構特點。

b)通信成本考慮在 EP 中不同專家之間的通信相對較少,主要的通信開銷在于門控網絡與專家網絡之間的信息交互,以及在進行模型參數更新等操作時的一些全局通信;TP 需要在多個設備之間頻繁地進行張量的切分、合并等操作,通信量會隨著模型規模和數據量的增加而顯著增加,降低訓練效率。

c)計算資源利用率:MoE 模型中的不同專家可能具有不同的計算復雜度和數據需求,EP 可以根據各個專家的特點靈活地分配計算資源,使不同性能的計算單元都能得到充分利用;TP 的資源分配方式相對單一,對于不同專家的多樣性計算需求支持不佳。

2.2 Dualpipe 流水線并行策略:雙流并行計算優化與雙向流水線調度優化

1.雙流并行計算優化

a)基本概念:如 DeepSeek 在論文中所述,在訓練過程中包含前向傳遞、反向傳遞兩個階段,具體包括計算流和通信流兩個流。

  1. 前向傳遞:通常按順序執行ATTN(計算流)、DISPATCH(通信流)、MLP(計算流)、COMBINE(通信流)操作。

ii. 反向傳遞:需要執行COMBINE(通信流)、MLP_B(計算流)、MLP_W(計算流)、DISPATCH(通信流)、ATTN_B(計算流)、ATTN_W(計算流)操作:

b)優化方法:此處的雙流并行,指的是計算流和通信流,雙流并行即在大模型訓練的反向傳遞階段,將原本存在先后順序的更新當前層權重(即MLP_B)和將梯度繼續傳遞到前一層(即MLP_W)這兩個操作,拆分成兩個獨立且并行的流,同時通過細致的設計,讓訓練的 barrier 剛好停在兩個流任務完成的時候,而不需要通信流或者是計算流進行等待,提高計算效率

2. 雙向流水線調度優化

a)基本概念:PP并行方法中,訓練過程經常容易出現氣泡(即GPU閑置),核心原因是在PP并行中不同的計算階段可能具有不同的計算復雜度和執行時間,導致計算快的階段需要等待計算慢的階段完成后才能繼續進行下一輪計算,同時不同階段之間需要進行數據通信來傳遞中間結果,可能會受到網絡帶寬等影響導致數據傳輸延遲,如下圖所示,其中有以下一些關鍵信息。

i.顏色:藍色代表前向傳播,綠色代表反向傳播,灰色代表空閑狀態(即氣泡)。

ii.數字:表示不同的微批次(Micro – batch),圖中不同GPU上的數字序列,反映了各個微批次在不同GPU上的計算順序和時間分布。

b)優化方法:傳統的單向流水線通常是按照固定順序,從流水線起始端依次進行微批次(micro – batch)處理;而DeepSeek-V3在訓練過程中采用了雙向流水線調度設計,即同時從兩端進行微批次(micro – batch)處理,減少流水線氣泡,另外DeepSeek將每個 micro – batch 進一步劃分為更小的塊(chunk),并對計算和通信進行精細調度,實現兩者的高度重疊,提高 GPU 利用率。

iii.起始端:在PP并行中,通常將設備編號較小的一端視為起始端,即圖中的 Device 0。

iv.末端:設備編號較大的一端為末端,也就是圖中的 Device 7,在雙向流水線中,Device 7 等設備也會在合適的時機啟動計算任務,且與起始端的計算任務相互配合,并非只是被動等待起始端計算完成后才開始工作


2.3 ZeRO-1(DP) 數據并行策略:降低內存占用,加速模型訓練

1. 基本概念ZeRO(Zero Redundancy Optimizer)即零冗余優化器,是由微軟提出的一種旨在減少分布式訓練中內存使用的技術框架;ZeRO-1(DP)結合了零冗余優化器的思想和數據并行策略。

2. 工作原理:在傳統的數據并行中,每個設備都保存完整的優化器狀態(如梯度、參數等),這會導致內存冗余;而 ZeRO-1 會將優化器狀態劃分到不同的設備上,每個設備只保存一部分優化器狀態,在反向傳播計算完成后,各個設備會交換自己所負責的參數的梯度信息,然后根據這些梯度更新各自保存的部分優化器狀態和模型參數;通過這種方式,雖然每個設備只保存了部分信息,但最終所有設備上的模型參數會保持一致。

3. 核心價值

a)降低內存占用:ZeRO-1(DP) 數據并行策略顯著降低了單個 GPU 的內存占用,讓模型能夠在有限的顯存中進行訓練。

b)加速模型訓練:首先由于內存占用降低,模型可以處理更大的批量數據,提高了計算資源的利用率,從而加快訓練速度;另外ZeRO-1 通過在不同GPU之間共享一部分狀態變量,減少了 GPU 之間的通信開銷,進一步提升了整體訓練效率。

三、通信優化

3.1 Moe 路由的All2All優化設計:網絡拓撲優化與資源分配優化

1. 基本概念:在MoE大模型訓練中,需要將訓練數據按照數據類型或特征分配給最合適的專家模型進行處理,此時常用到兩種數據路由方案,一種是All to All通信方案,另一種是基于 Magetron 實現的All Reduce和Reduce Scatter通信方案,其優缺點大致如下:

a)All to All通信:在數據傳輸時,根據實際傳輸的數據量來開辟相應大小的顯存空間;這種方案的優勢是顯存開銷小,劣勢是由于是點對點通信、通信效率相對較低。

b)All Reduce和Reduce Scatter通信:這種方案首先是將所有數據路由至每一張GPU,然后通過掩碼篩選出每個專家模型真正需要的數據,再進行求和、求最大值等規約操作,并將數據重新合理分配至每一張GPU;這種方案的優勢是通信效率較高,劣勢是顯存開銷比較大。


2. 實現方案:在 DeepSeek-V3 的實際訓練中,選擇了All to All的通信方案,為了解決All to All在通信效率方面存在的劣勢,采用了眾多通信優化手段,比較核心的有以下幾個方面。

a)限制路由范圍:限制每個訓練 token 最多只能被調度到 4 臺GPU服務器,減少跨節點間的 IB 流量,規避了節點過多時訓練 Token 隨意路由導致的通信擁塞問題。

b)網絡拓撲優化:DeepSeek-V3 的訓練集群應該采用了多軌組網方案(其并未正式公布,從其他渠道了解信息猜測得到),確保服務器收發數據時,可以在不同節點的同號卡之間實現最少跳數的互聯,所以在數據路由策略上,DeepSeek-V3 會通過IB網絡將數據從源端服務器傳輸至目標服務器相同卡號的GPU上,然后基于 NVLink 轉發至托管目標專家的特定GPU,實現高效機內和機間通信,最大化利用高速互聯網絡帶寬。

c)資源分配優化:當期望訓練流與通信流同時工作并達到重疊狀態時(如二.2所述),就容易出現GPU SM資源(SM即流多處理器,H800有132個SM)的爭搶,DeepSeek-V3 通過使用定制化的 PTX(即網絡上宣稱繞過CUDA的語言),對GPU的132個SM進行了改造,專門劃分出20個SM用于處理服務器間通信任務,并根據訓練流和通信流的具體特點和需求,對指令執行進行優化,例如分配指令優先級、調整指令執行順序等,減少 SM 資源分配和 L2 緩存搶占現象的發生。

d)動態資源調整:DeepSeek-V3 采用了自動調整的資源分配策略,能夠根據訓練流和通信流在不同時刻的資源需求動態地分配 SM 和 L2 緩存資源,系統能夠通過為每個專家引入的偏置項,根據每個專家的歷史利用率情況,動態地調整其接收新任務的概率,即無輔助損失負載均衡策略。

四、顯存優化

4.1 FP8 低精度訓練:混合訓練框架和精細量化策略

1. 混合精度訓練框架:在 DeepSeek-V3 的訓練中,對于占據大量計算量的 GEMM(通用矩陣乘法)操作,采用 FP8 精度執行,FP8 數據類型具有較低的內存占用和更快的計算速度,所以可以顯著提升計算效率、降低顯存開銷;同時為了確保訓練的穩定性,對于少數對精度要求比較高的關鍵操作,如嵌入模塊(將輸入 Token 轉換為向量表示)、注意力操作等,仍保持高精度(BF16/FP32)計算

2. 精細量化策略:FP8 雖然在訓練速度和顯存占用方面優勢明顯,但是由于需要采取措施對訓練數據、模型參數、中間激活值進行量化操作,容易在訓練過程中出現因量化誤差導致的模型發散等問題,影響訓練穩定性和模型性能,DeepSeek-V3 在訓練過程中采用了分塊量化、塊級量化、高精度累加三種精細量化策略解決這個問題。

a)分塊量化:數據劃分粒度相對較細,將數據劃分為多個小,然后對每個小塊分別進行量化操作,這種方式能更精細地適應數據的局部特征,減少量化誤差。

b)塊級量化:數據劃分粒度相對較粗,對更大的塊進行統一量化處理,這種方式更關注數據的整體特征和分布情況,通過對較大塊的數據采用相同的量化參數進行量化,可以簡化量化計算過程,降低計算復雜度。

c)高精度累加:在一些關鍵計算步驟中,雖然中間計算過程使用了 FP8 精度以提高計算效率,但在進行累加等操作時,會將 FP8 數據轉換為更高精度的數據類型(BF16/FP32)進行累加,然后再根據需要轉換回 FP8 精度進行后續計算,這種機制可以有效控制量化誤差的積累。

4.2 選擇重計算:間隔重計算和選擇性重計算優化

1. 基本概念在訓練過程中,需要占用大量的顯存來存儲模型參數、中間結果等數據,當模型參數規模較大或者訓練數據量較多時,可能會出現顯存不夠用的情況;所以業界會采用重計算優化方法,即在前向傳播時不保存上述的中間結果數據,而是在反向傳播需要的時候重新計算它們,大大減少中間結果所占用的顯存空間。

2. 實現方案比較粗暴的實現方案是完全重計算,這種方案因為計算量較大,會大幅增加訓練全過程時間,所以業界一直在探索更為高效的選擇重計算方案,DeepSeek-V3 在訓練過程中主要應用了間隔重計算和選擇性重計算兩種優化手段。

a)間隔重計算:即“隔一層重計算一次” ,在反向傳播中對一半層的輸入輸出進行重計算,另一半層按照傳統方式保存中間結果數據。

b)選擇性重計算:大模型每一層的計算,通常由類似 RMSkernel 的計算強度較弱的部分(包含平方、求和、開方等計算操作,用于穩定訓練過程、加速模型收斂)和計算強度較強的 GEMM 矩陣乘法部分組成,他們雖然都會產生中間結果,但是計算成本差異較大;通常 RMSkernel 的計算時間占比小、但單位計算的顯存占用大,而GEMM的計算時間占比大、但單位計算的顯存占用小;所以選擇性重計算方法重點是針對 RMSkernel 相關的部分算子進行重計算,獲得最大的性價比。

4.3 EMA顯存優化:異步處理與顯存卸載優化

1. 基本概念EMA是指數移動平均(Exponential Moving Average),它對于模型訓練過程中每一步更新得到的參數,計算指數加權平均值,得到一組新的參數,用于監測訓練方向,避免噪聲對于模型參數更新的影響,以得到更加穩定、泛化能力更強的參數;由于EMA需要額外維護一組參數,所以會占用一定的顯存空間。

2.實現方案:DeepSeek-V3 在訓練過程中采用了異步處理和顯存卸載方法,優化了EMA的顯存占用。

a)異步處理:由于EMA的計算過程并不需要訓練過程中實時產生的數據,所以可以獨立于前向傳播和反向傳播而開展,DeepSeek采用異步處理方式,讓EMA計算過程與訓練過程并行開展。

b)顯存卸載:基于上述異步處理的基礎,可以將EMA計算從GPU顯存卸載至CPU,即在每一輪訓練結束后,將模型參數傳遞給CPU,在 CPU 上計算 EMA 參數,然后將更新后的 EMA 參數存儲在 CPU 內存中,減少GPU的顯存占用。

4.4 頭尾參數共享:embedding 層和 lm_head 層共享參數的優化策略

1. 基本概念:embedding層位于模型首端,核心作用是把離散的 Token 轉換為連續的向量表示,實現這一轉換依靠的是一個可學習的權重矩陣,其大小為 vocab_size * hidden_size(詞表大小 * 每個 Token 對應的嵌入向量的維度);lm_head 層位于模型的末端,將模型輸出的嵌入向量重新映射回 Token 的概率分布,以便計算損失函數,其實現方式同樣是依賴一個大小為 vocab_size * hidden_size 的權重矩陣。

2.實現方案:頭尾參數共享,指的是讓 embedding 層和 lm_head 層使用同一個權重矩陣,這種優化方案由于減少了參數存儲量,與之相關的梯度、優化器狀態和參數備份等占用的顯存也會相應減少,且共用的權重矩陣有助于模型學習到更穩定和通用的 Token 表示,從而提高模型的性能和泛化能力。

五、總結

通過上述對 DeepSeek-V3 高效訓練關鍵技術的分析,我們能夠看出,DeepSeek-V3 之所以能夠利用5%的算力訓練出對標 GPT-4o 的先進模型,與其創新性的模型架構設計、高效的并行策略選擇以及對集群通信和顯存的極致優化密不可分,高效訓練方法的表象是需要更少規模的算力,但其本質是對算法創新和極致集群性能的更高要求,所以 DeepSeek-V3 的先進經驗對于 AI Infra 絕不是利空,反而隨著精細化的高效訓練方法被業界普遍采用,基于先進芯片選型、先進架構搭建的 AI Infra 的重要性會越發凸顯,持續學習。

文章轉載自: DeepSeek-V3 高效訓練關鍵技術分析

上一篇:

MuselandAI用戶評測與創新探索

下一篇:

一文徹底講透GPT架構及推理原理
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費