本文中,我们将探讨DeepSeek如何在文本生成方面再次实现平衡——即在效率与质量之间找到平衡点。
背景
为了理解DeepSeek的多词预测,我们首先来仔细看看LLM是如何生成文本的。
下一个词预测
LLM通常采用自回归的方法来生成文本,即给定一系列先前的词,新的词将以逐个词的方式生成,通过预测最可能的下一个词。
例如,给定文本“The cat sat”,它将被标记为如下一系列词:
"The cat sat" -> ["The", "cat", "sat"]
每个词都有一个与其在词汇表中索引相对应的词ID,并且会通过使用这个索引在嵌入矩阵中查找,被映射到一个稠密向量。在大多数情况下,会向这个稠密向量添加一个位置嵌入,以形成将被大型语言模型(LLM)接收的嵌入。
Emb("The") = vector("The") + PositionalEncoding(1)
Emb("cat") = vector("cat") + PositionalEncoding(2)
Emb("sat") = vector("sat") + PositionalEncoding(3)
在通过大型语言模型(LLM)中的Transformer层之后,最后一层通常是一个线性投影,将每个嵌入向量映射回词汇表空间,然后通过一个Softmax函数输出词汇表上的概率分布。在我们这里的简单示例中,概率最高的词可能是:
P("on") = 0.7
P("under") = 0.3
...
因此,模型会选择最可能的词“on”,所以生成的文本将是:
"The cat sat on"
这个逐个词的过程将持续进行,直到达到最大长度或遇到EOS(句子结束)词。由于它在每一步只生成一个词,因此通常被称为下一个词预测,并且可以更正式地描述为:
其中
从建模的角度来看,下一个词预测听起来非常自然,但它有一些局限性:
为了缓解这些局限性,提出了多词预测。
先前的多词预测方法
作者将下一个词预测扩展为多词预测机制:
其中,给定相同的输入序列,模型将通过单次正向传播生成从x_{t+1}到x_{t+n}的n个词。
需要注意的是,这并不意味着在单个Softmax产生的概率基础上同时选择n个词,因为Softmax不支持从单个概率分布中同时选择n个词。
这是因为Softmax是为分类分布设计的,它建模的是多个互斥选择中一个单一离散事件的概率。因此,Softmax在每个时间步只能生成一个词,要预测多个词,我们需要多个Softmax层,每个层专门用于生成一个单独的词。
出于这个原因,上述多词预测损失将首先被分解为一系列单词预测操作头,然后每个单词预测头将运行一个单独的Softmax来选择相应的词。
更具体地说,引入了一个中间潜在表示z_{t:1}来表示大型语言模型(LLM)中的隐藏表示,如下面的方程中所示:
这将输入序列x_{t:1}与输出序列解耦,使模型能够通过单次正向传播将x_{t:1}编码为z_{t:1},并在后续的所有生成过程中重复使用它。
之后,x_{t+n:t+1}和z_{t:1}之间的条件概率被进一步分解为n个独立的单步条件概率,每个都代表一个单词生成步骤,如蓝色高亮部分所示:
这一过程根据以下公式实现:
这也如下图所示,其中:
现在,让我们更深入地了解这个架构,特别是共享组件和独立组件背后的设计选择:
使用独立输出头将n个词的生成过程解耦,使它们彼此独立。一方面,这实现了并行词生成,并可能提高训练效率。然而,独立生成词可能导致输出不连贯或不一致。此外,模型可能遭受模式崩溃,即倾向于生成通用、频繁的词,而不是细微差别的响应,从而降低了输出的多样性和丰富性。
DeepSeek的多词预测
如前所述,多词预测方法独立生成n个词,这可能导致输出不连贯,甚至模式崩溃。为了解决这个问题,DeepSeek通过保持每个词预测的完整因果链来实现其多词预测,如下图所示:
上图展示了三个生成步骤,分别称为主模型、MTP模块1和MTP模块2。
主模型的架构与我们在[3]中看到的非常相似,也包含三个主要构建块:
然而,从MTP模块1开始,差异就变得明显了,因为Transformer块的输入依赖于前一个词的表示。
更具体地说,第i个词的Transformer输入按以下方式获得:
其中:
在MTP模块之间引入依赖关系打破了[3]中的并行性,但也实现了更连贯的文本生成,使其更适合对话和推理等场景。
多词预测主要用于DeepSeek模型的训练,其中对每个MTP模块应用交叉熵损失,如下所示:
其中,t_{i}表示第i个位置的真实词,而p^{k}_{i}[t_i]是由第k个MTP模块给出的t_i的预测概率。
然后,将所有MTP损失的组合用作额外的训练目标:
在推理阶段,所有的MTP模块将被丢弃,仅使用主模型进行词预测。
推测解码
推测是一种旨在通过“先草拟后验证”范式加快自回归生成过程的技术[4, 5]:首先并行生成多个候选词,然后使用原始自回归(AR)模型对这些词进行验证或修正,如下图所示:
更具体地说,推测解码包括两个阶段:
由于草拟的词可以被接受或拒绝,因此实际的加速效果主要取决于接受率:
换句话说,更高的接受率可以带来更大的加速。
评估
作者评估了他们的多词预测策略对训练和推理阶段的影响。
对训练性能的影响
为了评估他们的多词预测策略是否有利于模型训练,作者对两个不同规模的混合专家(MoE)模型进行了实验:
在两个模型上,他们比较了原始模型与增加了额外MTP模块的变体之间的性能,同时保持其他设置不变。在这个实验中,MTP模块在推理时被简单地丢弃,因此推理时间没有差异。
根据上表中的结果,在两种设置下,添加MTP都能在多个任务上带来整体更好的性能,证明了所提出的MTP策略的有效性。
对推理效率的影响
如前所述,在推理时,我们不必完全丢弃MTP模块,还可以将其与推测解码相结合来加快推理过程。
作者通过实验使用MTP技术预测接下来的两个词,并将其与推测解码相结合,观察到第二个词预测的接受率大约在85%到90%之间,这表明他们的MTP策略的生成质量始终可靠。
更重要的是,如此高的接受率使得将MTP与推测解码相结合在推理时实现了1.8倍的加速,这是以每秒处理的词数(TPS)来衡量的。
总结
本文探讨了DeepSeek的另一项关键架构创新——多词预测,突出了其在文本生成中平衡效率与质量的方法。
所有这些架构创新构成了DeepSeek模型的基础,使它们既高效又强大:
关键要点: