「DeepSeek-V3 技術(shù)解析」:多詞元預(yù)測(cè)技術(shù)(Multi-Token Prediction, MTP) 原創(chuàng)
編者按: 在實(shí)時(shí)人工智能應(yīng)用場(chǎng)景中,大語言模型的推理速度直接影響用戶體驗(yàn)。傳統(tǒng)模型通過逐詞元預(yù)測(cè)(next-token prediction)生成文本,每次僅預(yù)測(cè)一個(gè)詞元的方式導(dǎo)致長文本生成耗時(shí)較長。這種延遲在對(duì)話系統(tǒng)和內(nèi)容創(chuàng)作平臺(tái)中尤為明顯,已成為阻礙用戶沉浸體驗(yàn)的主要障礙。
本文深入探討了 DeepSeek-V3 模型的多詞元預(yù)測(cè)技術(shù)(Multi-Token Prediction, MTP)。與現(xiàn)有方法(如獨(dú)立預(yù)測(cè)多個(gè)詞元導(dǎo)致邏輯斷裂)不同,DeepSeek 創(chuàng)新性地通過模塊間的表征依賴關(guān)系,在訓(xùn)練時(shí)保持詞元預(yù)測(cè)的完整因果鏈,從而生成高質(zhì)量連貫文本。此外,該技術(shù)可與推測(cè)解碼(speculative decoding)結(jié)合,在推理時(shí),MTP module 并行生成草稿詞元,main model 通過單次前向傳播驗(yàn)證并修正,憑借 85%-90% 的高接受率實(shí)現(xiàn) 1.8 倍的推理加速。
作者 | Shirley Li
編譯 | 岳揚(yáng)
這是 DeepSeek-V3 系列的第四篇文章,將解釋 DeepSeek [1,2]模型的最后一個(gè)重要架構(gòu)創(chuàng)新:多詞元預(yù)測(cè)(multi-token prediction)。
在前幾篇文章中,我們闡述了 DeepSeek 如何通過巧妙的設(shè)計(jì),在矛盾的優(yōu)化目標(biāo)之間找到折中方案,既不過度偏向某一目標(biāo),又能保持整體效果:
- 多頭潛在注意力(Multi-head Latent Attention)在解碼過程中優(yōu)化內(nèi)存效率,同時(shí)保持模型性能。
- DeepSeekMoE 在混合專家模型(MoE)架構(gòu)中平衡 knowledge sharing 與 expert specialization。
- 無輔助損失函數(shù)的負(fù)載均衡(Auxiliary-Loss-Free Load Balancing)在不影響主要訓(xùn)練目標(biāo)的情況下實(shí)現(xiàn)有效的負(fù)載均衡。
本文將探討 DeepSeek 如何在文本生成的效率與質(zhì)量之間實(shí)現(xiàn)又一重要平衡。
本文目錄:
- 技術(shù)背景:介紹大語言模型解碼過程的基本原理,特別是 next-token prediction 機(jī)制及其局限性。同時(shí)回顧多詞元預(yù)測(cè)(MTP)的相關(guān)研究,探討其設(shè)計(jì)選擇與優(yōu)劣。
- DeepSeek 的多詞元預(yù)測(cè):解釋其工作原理,并重點(diǎn)討論與先前研究不同的設(shè)計(jì)選擇。此外還將介紹如何將 DeepSeek 的 MTP 策略與推測(cè)解碼(speculative decoding)結(jié)合以加快推理速度。
- 評(píng)估:分析 MTP 對(duì)訓(xùn)練性能和推理效率的雙重影響。
- 總結(jié)
- 參考文獻(xiàn)
01 技術(shù)背景
要理解 DeepSeek 的多詞元預(yù)測(cè)(multi-token prediction),我們首先需要仔細(xì)了解大語言模型(LLMs)如何生成文本。
1.1 Next-Token Prediction
LLMs 通常通過自回歸(autoregressive)的方式生成文本,即在給定歷史 tokens 序列的前提下,通過逐 token 預(yù)測(cè)下一個(gè)最可能的 token 來生成文本。
例如,給定文本 "The cat sat",其分詞結(jié)果可能為:
"The cat sat"->["The","cat","sat"]
每個(gè) token 都有一個(gè)與它在詞匯表中的索引相對(duì)應(yīng)的 token id,并將通過該索引在嵌入矩陣(embedding matrix)中查詢對(duì)應(yīng)的稠密向量,并與位置編碼(positional encoding)相加后輸入模型:
Emb("The") = vector("The") + PositionalEncoding(1)
Emb("cat") = vector("cat") + PositionalEncoding(2)
Emb("sat") = vector("sat") + PositionalEncoding(3)
經(jīng)過 LLM 的 Transformer 層處理后,最后一層通過線性投影將嵌入向量映射回詞匯表空間,再通過 Softmax 輸出詞匯的概率分布。以上述簡(jiǎn)單示例為例,最高概率的 token 可能是:
P("on") = 0.7
P("under") = 0.3
...
因此,模型會(huì)選擇最有可能的 token "on",生成結(jié)果變?yōu)椋?/p>
"The cat sat on"
這一逐詞元生成的過程將持續(xù)至達(dá)到最大生成長度或遇到終止符(EOS)為止。 由于每一步僅生成單個(gè) token,該機(jī)制被稱為 next-token prediction,其定義為:
其中:
- t 表示第 t 個(gè)時(shí)間步
- x_{t:1} 表示歷史詞元序列 x_1 至 x_t3
- x_{t+1} 是未來的下一個(gè)詞元(token)
從建模的角度看,Next-token prediction 似乎很自然,但存在以下局限:
- 無法并行化:需按序列逐詞元處理,無法并行計(jì)算。
- 計(jì)算效率低:每次預(yù)測(cè)都需要一次完整的前向傳播,導(dǎo)致訓(xùn)練和推理效率低下(尤其是實(shí)時(shí)長文本生成場(chǎng)景)。
為解決這些問題,多詞元預(yù)測(cè)(multi-token prediction) 應(yīng)運(yùn)而生。
1.2 先前的多詞元預(yù)測(cè)方法
在文獻(xiàn)[3]中,作者將 next-token prediction 擴(kuò)展為一種多詞元預(yù)測(cè)機(jī)制:
其中,給定相同的輸入序列,模型將通過單次前向傳播生成從 x_{t+1} 到 x_{t+n} 的 n 個(gè) tokens。
請(qǐng)注意,這并不意味著在單個(gè) Softmax 輸出的概率分布上同時(shí)選擇 n 個(gè) tokens,因?yàn)?Softmax 不支持從單個(gè)概率分布中同時(shí)選擇多個(gè) tokens。
這是因?yàn)?Softmax 是為分類分布(categorical distributions)設(shè)計(jì)的,其建模的是多個(gè)互斥選項(xiàng)中單個(gè)離散事件的概率。因此,Softmax 在每個(gè)時(shí)間步(time step)只能生成單個(gè) token,要預(yù)測(cè)多個(gè) tokens 需要多個(gè) Softmax 層,每層專門負(fù)責(zé)生成獨(dú)立的 token。
因此,上述多詞元預(yù)測(cè)的損失函數(shù)將首先被分解為多個(gè)單詞元(token)預(yù)測(cè)操作頭,然后每個(gè)單詞元(token)預(yù)測(cè)頭會(huì)運(yùn)行獨(dú)立的 Softmax 來選擇對(duì)應(yīng)詞元。
更具體地說,我們引入了中間潛在表征(intermediate latent representation)z_{t:1} 來表示大語言模型中的隱藏表征,如下列公式所示:
作者根據(jù)文獻(xiàn) [3] 中的公式創(chuàng)建的圖像
這種方式將輸入序列 x_{t:1} 與輸出序列解耦,使模型能夠通過單次前向傳播將 x_{t:1} 編碼為 z_{t:1},并在后續(xù)所有生成過程中重復(fù)使用該表征。
隨后,x_{t+n:t+1} 與 z_{t:1} 之間的條件概率會(huì)被進(jìn)一步分解為 n 個(gè)獨(dú)立的單步條件概率(如用藍(lán)色標(biāo)注的內(nèi)容所示),每個(gè)條件概率代表一個(gè)單詞元生成步驟:
作者根據(jù)文獻(xiàn) [3] 中的公式創(chuàng)建的圖像
在文獻(xiàn)[3]中,這一過程通過以下公式實(shí)現(xiàn):
作者根據(jù)文獻(xiàn) [3] 中的公式創(chuàng)建的圖像
其架構(gòu)如下圖所示,包含:
- 一個(gè)共享的 Transformer f_s,通過單次前向傳播將 x_{t:1} 編碼為 z_{t:1}。
- n 個(gè)獨(dú)立的輸出頭 f_{h_i}(以 Transformer 層實(shí)現(xiàn)),將中間隱藏表征 z_{t:1} 映射到 x_{t+i}。特別是,第一個(gè)頭(當(dāng) i==1 時(shí))的輸出可視為下一詞元預(yù)測(cè)頭。
- 一個(gè)共享的解嵌入矩陣 f_u,用于將 x 映射到詞表大小的維度,最后通過應(yīng)用 Softmax 獲得各個(gè)詞元的概率。
圖 1. 文獻(xiàn)[3]中的多詞元預(yù)測(cè)架構(gòu)。該圖來自文獻(xiàn)[3]
現(xiàn)在,讓我們來深入了解這一架構(gòu),特別是共享組件與獨(dú)立組件背后的設(shè)計(jì)考量:
- 共享的 f_s:如前文所述,這種方式只需單次前向傳播即可獲得 z_{t:1},從而生成 n 個(gè)詞元,相比傳統(tǒng)的 next-token prediction 具有更高的計(jì)算效率。
- 共享的解嵌入矩陣 f_u:由于解嵌入矩陣非常大,維度數(shù)量為 d×V(d 為隱藏層維度,V 為詞表大小,通常為 5 萬~ 20 萬),共享參數(shù)能大大減少參數(shù)量且對(duì)性能的影響有限。
- 獨(dú)立的輸出頭:這是這一架構(gòu)中唯一獨(dú)立的部分。如前文所述,每個(gè)詞元都需要一個(gè)獨(dú)立 Softmax,因此無法共享所有組件。
使用獨(dú)立的輸出頭能夠使得 n 個(gè)詞元的生成過程相互解耦。一方面,這種設(shè)計(jì)支持并行生成詞元,可以提升訓(xùn)練效率;但另一方面,獨(dú)立生成詞元可能導(dǎo)致輸出缺乏連貫性或一致性。此外,模型可能會(huì)出現(xiàn)模式奔潰(mode collapse),傾向于生成通用的、高頻的詞匯,而非細(xì)致的響應(yīng),從而降低輸出的多樣性和豐富性。
在下一節(jié),我們將看到 DeepSeek 的多詞元預(yù)測(cè)技術(shù)如何解決這個(gè)問題。
02 DeepSeek 的多詞元預(yù)測(cè)技術(shù)
如前文所述,文獻(xiàn)[3]中的多詞元預(yù)測(cè)方法會(huì)獨(dú)立生成 n 個(gè)詞元,可能導(dǎo)致輸出不連貫甚至模式崩潰(mode collapse)。 為了解決這個(gè)問題,DeepSeek 通過保持每個(gè)詞元預(yù)測(cè)的完整因果鏈來實(shí)現(xiàn)多詞元預(yù)測(cè),如下圖所示:
圖 2. DeepSeek 中的多詞元預(yù)測(cè)架構(gòu)。圖片來自文獻(xiàn)[2]
上圖展示了三個(gè)生成步驟,分別稱為 main model、MTP module 1 和 MTP module 2。
main model 的架構(gòu)與我們?cè)谖墨I(xiàn)[3]中看到的架構(gòu)高度相似,同樣包含三個(gè)核心組件:
- 一個(gè)共享的嵌入層(embedding layer)
- 一個(gè)獨(dú)立的 Transformer block
- 一個(gè)共享的線性輸出頭(shared linear output head),其功能類似于文獻(xiàn)[3]中的解嵌入矩陣(unembedding matrix)
但從 MTP module 1 開始,差異就變得明顯了:因?yàn)?Transformer block 的輸入依賴于前一個(gè)詞元的表征。
更具體地說,第 i 個(gè) token 的 Transformer 輸入如下:
其中:
- k 是 MTP module 的索引。
- h^{k-1}_{i} 是來自上一步的表征。
- Emb(t_{i+k}) 是第 (i+k) 個(gè)詞元(token)的嵌入層輸出。
- RMSNorm 算子對(duì)兩個(gè)表征向量進(jìn)行歸一化處理,使它們的數(shù)值更具可比性,并允許將它們拼接起來。隨后通過拼接算子[·;·]生成 2d 維度的表征。
- 最終通過線性投影矩陣 M_k 將維度從 2d 映射回 d,供 Transformer block 使用。
在 MTP modules 間引入依賴關(guān)系破壞了文獻(xiàn)[3]中的并行性,但也使文本生成更加連貫,更適合對(duì)話和推理等場(chǎng)景。
DeepSeek 模型中,多詞元預(yù)測(cè)主要用于訓(xùn)練階段,每個(gè) MTP module 均應(yīng)用交叉熵?fù)p失函數(shù),如下圖所示:
其中 t_{i} 表示第 i 個(gè)位置的真實(shí)詞元(ground-truth token),而 p^{k}_{i}[t_i] 則是第 k 個(gè) MTP module 對(duì) t_i 的預(yù)測(cè)概率。
然后,所有 MTP module 的損失值會(huì)被整合為一個(gè)額外附加的訓(xùn)練目標(biāo):
在推理階段,所有 MTP module 都會(huì)被丟棄,僅保留 main model 進(jìn)行詞元預(yù)測(cè)。但文獻(xiàn)[2]的作者也提到他們的 MTP 技術(shù)可與推測(cè)解碼(speculative decoding)結(jié)合,以加快推理速度。
那么,這是如何實(shí)現(xiàn)的呢?
2.1 推測(cè)解碼(speculative decoding)
推測(cè)解碼(speculative decoding)是一種通過先打草稿后驗(yàn)證的范式加速自回歸生成過程的技術(shù)[4, 5]:首先并行生成多個(gè)候選詞元,然后用原始自回歸(AR)模型驗(yàn)證或修正這些詞元,如下圖所示:
圖 3. 推測(cè)解碼技術(shù)的先打草稿后驗(yàn)證流程。圖片來自文獻(xiàn)[5]
具體而言,推測(cè)解碼包含兩個(gè)階段:
- 并行生成草稿(Parallel drafting):不再使用原始 AR 模型逐詞元(token)生成,而是通過推測(cè)解碼并行生成候選詞元。
- 批量進(jìn)行驗(yàn)證(Batch verification):通過單次前向傳播,用原始 AR 模型驗(yàn)證草稿詞元,并根據(jù)需要接受或修正它們。
由于草稿詞元可能被接受,也可能被拒絕,因此實(shí)際的加速效果主要取決于接受率:
- 理想情況下,所有草稿詞元(K 個(gè))均被接受,模型可通過單次前向傳播前進(jìn) K 步,實(shí)現(xiàn) K 倍加速。
- 如果部分草稿詞元被拒絕,生成過程仍然可以從部分加速效果中收益,因?yàn)閮H需重新生成被拒絕的詞元,而非整個(gè)序列。
換言之,更高的接受率可帶來更明顯的加速效果。下一節(jié)我們將深入探討 DeepSeek 如何在推理中應(yīng)用此技術(shù)。
03 Evaluation
在文獻(xiàn)[2]中,作者評(píng)估了其多詞元預(yù)測(cè)策略對(duì)訓(xùn)練和推理階段的影響。
3.1 訓(xùn)練性能影響
為驗(yàn)證多詞元預(yù)測(cè)策略是否能提升模型訓(xùn)練效果,文獻(xiàn)[2]的作者在兩個(gè)不同規(guī)模的 MoE 模型上進(jìn)行了實(shí)驗(yàn):
- 15.7B 的較小規(guī)模模型(激活參數(shù) 2.4B,下表中用藍(lán)色標(biāo)注)
- 228.7B 的較大規(guī)模模型(激活參數(shù) 20.9B,下表中用綠色標(biāo)注)
圖 4. 多詞元預(yù)測(cè)對(duì)訓(xùn)練性能的影響。作者基于文獻(xiàn)[2]中的表格繪制
在這兩種模型上,作者對(duì)比了原始模型與添加 MTP module 的變體模型的性能(其余配置保持一致)。在本實(shí)驗(yàn)中,MTP module 在推理時(shí)被完全丟棄,因此推理時(shí)間無差異。
根據(jù)上表結(jié)果,兩種規(guī)模的模型加入 MTP module 后,在多項(xiàng)任務(wù)上均表現(xiàn)更優(yōu),證明了該策略的有效性。
3.2 推理效率影響
如前文所述,MTP module 在推理階段可與推測(cè)解碼(speculative decoding)結(jié)合,以加速推理過程,而非在推理時(shí)完全丟棄它們。
在文獻(xiàn) [2] 中,作者嘗試通過 MTP 技術(shù)預(yù)測(cè)未來的 2 個(gè)詞元(token),并將其與推測(cè)解碼相結(jié)合,結(jié)果發(fā)現(xiàn)第二個(gè)詞元預(yù)測(cè)的接受率約為 85%~90%,這表明其 MTP 策略的生成質(zhì)量穩(wěn)定可靠。
更重要的是,憑借高接受率,MTP 與推測(cè)解碼相結(jié)合可實(shí)現(xiàn)每秒生成詞元數(shù)(TPS)1.8 倍的推理加速。
04 Summary
本文探討了 DeepSeek 的另一項(xiàng)關(guān)鍵架構(gòu)創(chuàng)新——多詞元預(yù)測(cè)(multi-token prediction),解析其如何在文本生成中平衡生成效率與生成質(zhì)量。
MTP 和以下這些架構(gòu)創(chuàng)新共同構(gòu)成了 DeepSeek 模型的基礎(chǔ),使其既高效又強(qiáng)大:
- 多頭潛在注意力(Multi-head Latent Attention)在解碼過程中優(yōu)化內(nèi)存效率,同時(shí)保持模型性能。
- DeepSeekMoE 在混合專家模型(MoE)架構(gòu)中平衡 knowledge sharing 與 expert specialization。
- 無輔助損失函數(shù)的負(fù)載均衡(Auxiliary-Loss-Free Load Balancing)在不影響主要訓(xùn)練目標(biāo)的情況下實(shí)現(xiàn)有效的負(fù)載均衡。
核心啟示:
- 大語言模型的訓(xùn)練仍存在諸多未決問題,新技術(shù)的引入常伴隨非預(yù)期的副作用
- 要應(yīng)對(duì)這些挑戰(zhàn),既需要對(duì)現(xiàn)象進(jìn)行透徹分析,也需要對(duì)內(nèi)部機(jī)制有深刻理解。
- 解決方案不必復(fù)雜 —— 簡(jiǎn)單的策略有時(shí)能帶來驚人的效果
至此,我們已完成對(duì) DeepSeek 架構(gòu)創(chuàng)新的探討。下一篇文章將深入其訓(xùn)練策略,解析預(yù)訓(xùn)練、微調(diào)與對(duì)齊階段的關(guān)鍵設(shè)計(jì)選擇。
參考文獻(xiàn)
[1] DeepSeek(??https://www.deepseek.com/)??
[2] DeepSeek-V3 Technical Report(??https://github.com/deepseek-ai/DeepSeek-V3/blob/main/DeepSeek_V3.pdf)??
[3] Better & Faster Large Language Models via Multi-token Prediction(??https://arxiv.org/abs/2404.19737)??
[4] Fast Inference from Transformers via Speculative Decoding(??https://arxiv.org/pdf/2211.17192)??
[5] Speculative Decoding: Exploiting Speculative Execution for Accelerating Seq2seq Generation(??https://arxiv.org/pdf/2203.16487)??
Thanks for reading!
Hope you have enjoyed and learned new things from this blog!
About the author
Shirley Li
I am a Machine Learning Engineer working on building multi-modality models to solve real-world problems.
END
本期互動(dòng)內(nèi)容 ??
?你在使用 AI 工具時(shí),最在意的是響應(yīng)速度還是輸出質(zhì)量?為什么?
原文鏈接:
