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