DeepSeek-R1關鍵創新技術再總結 原創
本文詳細介紹 DeepSeek 模型中的一些創新技術,包括對 Transformer 架構的改進(如 MLA、MOE)、Multi-Token Prediction 提高訓練效率、算法、框架和硬件的協同設計、Group Relative Policy Optimization (GRPO) 強化學習算法,以及結合監督微調和強化學習的迭代訓練方法。這些技術不僅提高了模型的性能,還顯著降低了訓練成本。記錄供參考。
1. MLA多頭潛在注意力
Transformer架構的注意力機制是實現高效自然語言處理的關鍵組件。Multi-Head Latent Attention(MLA)是DeepSeek模型中用于改進標準多頭注意力(Multi-Head Attention, MHA)的一種創新技術。
1.1 標準多頭注意力
每個頭的計算過程如下:
1.2 低秩鍵值聯合壓縮
1.3 解耦旋轉位置嵌入
MLA通過引入低秩矩陣和解耦RoPE,減少了KV緩存的大小,同時保持了甚至優于標準MHA的性能。這種改進使得MLA在處理長上下文時更具效率。
2 MOE(混合專家系統)
?MoE是一種用于提高模型參數規模和計算效率的架構設計。在深度學習中,特別是在大語言模型中,MoE 通過將模型的前饋網絡 FFN層替換為專家網絡來實現這一目標。
在 MoE 架構中,模型的 FFN 層被替換為多個專家網絡(experts),這些專家網絡在結構上與標準的 FFN 相同。輸入的每個 token 被路由到一個或多個專家進行處理。這種路由機制通常通過一個門控函數來實現,該函數決定每個 token 應該分配給哪些專家。
transformer vs MOE
2.1 細粒度專家分割
在傳統的 MoE 架構中,整個 FFN 層被看作是一個整體,并被分割為若干個專家。細粒度專家分割在此基礎上進一步細化,將 FFN 層分割為更小的子模塊,每個子模塊對應一個專家。這種分割方式可以表示為:
- 如果傳統 MoE 中每個 FFN 層有N個專家,每個 token 激活K個專家。
- 在細粒度 MoE 中,每個 FFN 層被分割為m個更小的專家,這樣每個 token 將激活mK個專家。
這種細粒度分割策略提高了激活專家的組合靈活性,使得模型能夠更好地適應不同的輸入特征。
2.2 共享專家隔離
共享專家隔離是一種優化策略,旨在減少不同專家之間的參數冗余。在 MoE 中,一些專家被指定為共享專家,這些專家負責捕捉跨不同上下文的通用知識。
- 設定Ks個專家作為共享專家。
- 每個 token 在被路由到其特定的專家之外,還會被分配到這些共享專家。
為了保持計算成本的恒定,總路由專家數Nr減少為mN-Ks ,每個 token 激活的路由專家數減少為mK-Ks 。
2.3 負載均衡
在 MoE 中,自動學習的路由策略可能會導致負載不均衡的問題,即某些專家總是被選擇而其他專家則未被充分利用。為了解決這個問題,引入了負載均衡的輔助損失函數:
- 專家級別的負載均衡損失函數通過監控每個專家的激活次數和親和度來調整路由策略,以確保專家的均勻使用。
- 設備級別和通信負載均衡用于確保在不同設備上的計算和通信負載均衡。
負載均衡的目標是使每個專家的激活次數盡可能均勻,以避免某些專家過載而其他專家閑置。
2.4 輔助損失函數
負載均衡的輔助損失函數通常包括專家級別的平衡損失,其形式化定義如下:
通過最小化這個損失函數,可以促使專家的激活次數和親和度更加均勻分布。
小結
MOE 通過將模型的 FFN 層替換為多個專家網絡,并通過細粒度分割和共享專家隔離來提高模型的參數規模和計算效率。負載均衡策略則確保了專家的均勻使用,避免了資源浪費。
3 MTP
在 MTP 中,模型不僅預測下一個詞,而是預測一系列連續的詞。對于輸入序列中的每個詞,模型會預測一個因果鏈上的多個后續詞。這種方法通過在訓練過程中增加更多的預測目標來提高模型的樣本利用率。
3.1 實現細節
MTP 的實現通常涉及以下幾個步驟:
- 多階段預測:在每個訓練步驟中,模型會生成一個因果鏈,預測多個后續詞。這個過程可以通過在模型中添加多個預測頭來實現,每個預測頭負責預測不同深度的后續詞。
- 共享嵌入層和輸出頭:在每個深度的預測中,使用共享的嵌入層和輸出頭來處理輸入和生成輸出。這樣可以減少模型的參數量并提高計算效率。
- 獨立變換器塊和線性投影層:每個深度的預測還包括一個獨立的變換器塊和一個線性投影層。輸入到線性投影層的信號是當前深度的嵌入和前一深度的輸出嵌入的拼接。
- 損失函數:MTP 的訓練目標是最大化多階段的交叉熵損失。具體來說,損失函數是每個深度的交叉熵損失的平均值:
3.2 挑戰
- 計算開銷:由于需要預測多個后續詞,MTP 引入了額外的計算開銷,導致訓練時間增加。
- 復雜性:MTP 的實現比傳統的單詞預測更為復雜,需要仔細設計模型結構和訓練策略。
4 算法、框架和硬件的聯合設計
在深度學習模型的開發和訓練中,算法、框架和硬件的協同設計對于提高訓練效率和模型性能至關重要。DeepSeek 模型在這方面進行了多項創新,特別是在算法和硬件優化方面。
4.1 DualPipe
DualPipe 是一種創新的管道并行算法,旨在減少跨節點專家并行性引入的通信開銷。在大型模型訓練中,通常需要在多個 GPU 或節點之間分配計算任務,這會導致大量的通信開銷。DualPipe 通過重疊計算和通信來減少這種開銷。
實現細節
- 管道劃分:DualPipe 將每個計算塊劃分為四個部分,其中反向計算塊進一步劃分為輸入和權重兩部分。這種劃分有助于減少管道氣泡(pipeline bubbles),即計算和通信之間的空閑時間。
- 雙向調度:DualPipe 采用雙向管道調度,從管道的兩端同時提供數據。這種策略可以進一步提高計算和通信的效率。
- 通信隱藏:通過將一部分 GPU SMs(流處理器)專門用于通信,DualPipe 可以確保在執行期間通信完全隱藏,從而實現接近零的全對全通信開銷。
- 內存消耗:DualPipe 需要保留兩個模型參數的副本,導致額外的內存消耗。盡管如此,研究表明這種開銷是可以接受的,因為計算和通信效率的提升彌補了這一點。
改進
最近的研究表明,DualPipe 的雙向部分是不必要的,并可以通過“減半”程序來移除,從而進一步減少內存消耗。
4.2 FP8 混合精度訓練
混合精度訓練是一種在保持模型性能的同時提高訓練效率的技術,可以在不犧牲性能的情況下減少計算資源的使用。DeepSeek 使用 FP8 精度來實現高效的訓練。
實現細節
- 精度選擇:FP8 是一種低精度格式,用于加速計算。然而,由于某些操作對低精度計算敏感,DeepSeek 在嵌入模塊、輸出頭、MoE 門控模塊、歸一化操作和注意力操作中保持了原始精度。
- 量化策略:為了擴展 FP8 格式的動態范圍,DeepSeek 采用了一種細粒度的量化策略。具體來說,使用 tile-wise 或 block-wise 分組來處理數據,其中Nc是通道大小,在 DeepSeek 中設置為 128。
- 高精度積累:為了確保計算的準確性,DeepSeek 在低精度 GEMM 操作中使用高精度積累。具體來說,通過定期將中間結果復制到 CUDA 核心的 FP32 寄存器中進行全精度 FP32 積累。
5 GRPO
先來簡單看下PPO和GRPO的區別:
- PPO:通過獎勵和一個“評判者”模型(critic 模型)評估每個行為的“好壞”(價值),然后小步調整策略,確保改進穩定。
- GRPO:通過讓模型自己生成一組結果(比如回答或行為),比較它們的相對質量(優勢),然后優化策略。它的特點是不需要額外的“評判者”模型(critic 模型),直接用組內比較來改進。
5.1. GRPO目標函數的數學原理
GRPO的目標函數如下:
這個函數看起來復雜,但我們可以將其拆解為幾個關鍵部分,逐一分析其作用和意義。GRPO的目標函數由兩大部分組成:策略梯度更新項和KL散度正則化項。我們分別分析它們的作用。
策略梯度更新項
策略梯度部分是目標函數的主要成分,形式為:
核心思想
概率比
剪切操作
這限制了策略更新的幅度,防止單次更新偏離舊策略太遠。
最小值操作
這種設計類似于PPO算法,通過剪切和最小值操作增強訓練穩定性。
平均操作
這些平均和期望操作使目標函數能夠泛化到不同的狀態和軌跡。
KL散度正則化項
GRPO算法的整體工作流程
GRPO是一種基于組獎勵的策略優化算法,其工作流程可以分為以下幾個步驟:
整個流程通過迭代優化實現:從輸入問題到生成響應,再到獎勵分配和優勢計算,最后更新策略,形成一個閉環。
6 訓練后:對基礎模型進行強化學習
在深度學習模型中,訓練后的強化學習(RL)階段通常用于進一步提升模型的性能,特別是在生成任務中。DeepSeek 模型在這一階段采用了多種策略來優化其表現。
6.1 純強化學習(Pure Reinforcement Learning)
純強化學習是指在沒有監督微調(SFT)數據的情況下,直接對基礎模型進行強化學習。DeepSeek-R1-Zero 是通過這種方式訓練的模型。
實現細節
- 基礎模型:DeepSeek-R1-Zero 基于 DeepSeek-V3-Base 模型進行訓練。該模型沒有使用任何 SFT 數據,完全通過強化學習進行優化。
- GRPO 算法:DeepSeek-R1-Zero 使用 Group Relative Policy Optimization (GRPO) 算法進行訓練。GRPO 通過直接估計優勢函數來簡化 PPO 的實現,從而提高訓練效率。
- 獎勵函數:模型使用兩種類型的獎勵函數: ?準確性獎勵:評估模型響應的正確性。 ?格式獎勵:強制模型在其思考過程中使用特定的標簽(如?
?<think>?
? 和??</think>?
?),以提高可讀性和邏輯性。 - 訓練模板:設計了一個訓練模板來指導模型遵循特定的格式,先生成推理過程,然后給出最終答案。
挑戰:純強化學習雖然能夠提高模型的性能,但也面臨一些挑戰,如生成內容的可讀性和語言一致性。這些問題通常需要通過進一步的訓練和優化來解決。
6.2 強化學習與冷啟動
DeepSeek-R1 采用了一種迭代訓練方法,結合了監督微調和強化學習來優化模型性能。
實現細節
- 冷啟動階段:為了緩解 RL 訓練初期的不穩定性,DeepSeek-R1 收集了數千個長鏈推理(Chain-of-Thought, CoT)示例來微調 DeepSeek-V3-Base 模型。這為后續的強化學習提供了堅實的基礎。
- 推理導向的 RL:在冷啟動數據上微調后,模型進行與 DeepSeek-R1-Zero 相同的 RL 訓練過程。為了提高語言一致性,引入了一個額外的獎勵來衡量 CoT 中目標詞的比例。
- 拒絕采樣和 SFT:在這一階段,模型的目標是提高其在寫作、角色扮演等通用任務上的表現。通過拒絕采樣從檢查點收集約 600k 的推理相關訓練樣本,并保留正確的響應。此外,還收集了約 200k 的非推理訓練樣本。
- RL 對齊:這一階段的目的是更好地對齊模型與人類偏好,提高其有用性和無害性,同時改進推理能力。有用性基于響應的效用和相關性進行評估,而無害性則通過評估整個響應來減少潛在風險、偏見或有害內容。
通過這種迭代訓練方法,DeepSeek-R1 能夠在保持高準確性的同時,提高生成內容的質量和多樣性。
公眾號大模型自然語言處理 作者:余俊暉
原文鏈接:??https://mp.weixin.qq.com/s/QnFpaG4253PrWwejFCbp_g??
