继续介绍DeepSeek最近发布的关于V3的论文【Insights into DeepSeek-V3: Scaling Challenges and Reflections on Hardware for AI Architectures】,且依然会结合年初的论文 【DeepSeek-V3 Technical Report】 一起。

下面DeepSeek-V3的这张架构图,前两篇文章已经分别介绍了 偏底层MLAMoE,剩下最后的一块内容就是 偏头部MTP 了。
在这里插入图片描述

MTP

MTP(Multi-Token Prediction)多token预测,与之相对应的就是普通LLM的NTP(Next-Token Prediction),很显然MTP尝试解决的问题是一次性的预测多个token。

还是那就老话,“不是所有的牛奶都是特仑苏”,在深入 DeepSeek MTP 前,先来看看 普通的 MTP

它的思想很简单,先看下 训练阶段,下面这张图从下往上看:

在这里插入图片描述

  1. 首先,input token t 1 t_1 t1 通过 embedding 后送入了 Transformer block,就和正常 LLM 的 NTP 一样
  2. 但注意这里只到 倒数第二层,并非最终的输出层;且这一部分,所有输出头 共享
  3. 假设预测 next 3 个token
  4. 那么,首先会有一个 main head,它的定位和正常 LLM 的 NTP 的输出头一样,输出 t 2 t_2 t2 下一个 token,也是准确率最高的 head
  5. 同时,倒数第二层也会把数据传入 另外两个 MTP Head,去预测 t 3 、 t 4 t3、t4 t3t4
  6. 这3个输出头,共享参数,在训练的时候都参与loss计算,只不过 main head 的权重最大

再来看 推理阶段

  1. 同样的,对于输入 “恒电的饭菜”,去预测下3个token在这里插入图片描述
  2. 但由于预测的越远,预测的越不准,所以需要通过 验证 确保符合预期
  3. 首先, t 2 t2 t2 也就是下一个 token (“真”字)准确率最高,可以直接采纳
  4. 然后,看 t 3 t3 t3 的 token(“好”字),在这里插入图片描述 也可以采纳
  5. 最后,看 t 4 t4 t4 的 token(“吃”字),在这里插入图片描述,个人表示完全无法接受 😃
  6. 所以此时,虽然预测了next 3 token,但通过 验证 只采纳了 next 2 ,也就是输出为 “恒电的饭菜真好”
  7. 然后再作为输入,进入下一轮 MTP 递归,继续生成 next 3 token,继续 验证,直到 EOS

DeepSeek MTP

普通的 MTP 的主要问题在于:多头相互间是独立预测的,准确率低,严重依赖后期验证。

DeepSeek MTP 的解法是:给每个头传入额外的信息,帮助它们进行预测。

在这里插入图片描述

论文中的原图不太容易理解,可以看我的这张图(再和上面普通MTP对比着看):

在这里插入图片描述

  1. 首先,和普通MTP最大的不同是,input token t 1 t1 t1 会经过 main head 这个头的完整的 transformer block 输出 token t 2 t2 t2,而不是只到共享的 − 1 -1 1 倒数第二层,再经过最后一层
  2. 经过完整 transformer block 输出 token t 2 t2 t2 的特征,会作为 mtp head 的一分部输入
  3. 再结合 token t 2 t2 t2 本身经过 embedding 后 的输入
  4. 进入一个线性层,进行 降维,然后进入 这个 mtp head 自己的 transformer block 进行 t 3 t3 t3 的预测
  5. 同样的,MTP head 的预测结果,也参与 loss 计算

所以,通过 传入上一个head用于预测的特征,可以 帮助下一个head去预测下一个token,预测的会更准确。

同时,对于 DeepSeek MTP 首先需要强调一点的是,DeepSeek MTP 只用于 训练阶段 去提高 main model 的性能,所以在 推理阶段,完全舍弃掉了 MTP

DeepSeek-V3 Technical Report

图:DeepSeek-V3 Technical Report


以上,介绍了普通 MTP,以及 DeepSeek MTP ,下一篇继续介绍另外一块重要内容 FP8混合精度训练

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐