一文搞懂DeepSeek核心技术-MTP(Multi-Token Prediction)

大家好,我是皮先生!!

本文将深入剖析DeepSeek模型核心技术-MTP(Multi-Token Prediction)的工作原理、技术创新,希望对大家的理解有帮助。

目录

MTP

MTP 预测的优势

1.训练过程

2.推理维度

3.缓解短视预测问题

MTP实现细节

结论

参考资料


MTP

当前主流采用自回归的大模型都是单 token 预测,即根据当前上文预测下一个最可能的 token。每次token生成需要频繁与访存交互,从而因为访存效率形成训练或推理的瓶颈。

而 MTP 的核心思想是让模型一次性预测多个 token,以提升模型的训练效率、生成质量和推理速度。因此,模型不仅要学习预测下一个 token 的能力,还需要同时具备预测下 n 个token的能力。

训练阶段:使训练信号更加密集,可能会提高数据效率;还使模型预先规划,以便更好地预测未来的Token。

推理阶段:主要目的是提升主模型的性能,因此在推理时可以直接移除MTP模块,主模型能够独立且正常运行。

MTP 预测的优势

1.训练过程

在训练过程中,MTP 的训练目标函数同时考虑了多个 token 的估计准确性,因此被认为可以捕捉 token 间的依赖关系,从而提升模型效果。

2.推理维度

这种方式在推理角度的好处也显而易见,一次性生成多个 tokens,减少自回归生成的步数,达到推理加速效果。

3.缓解短视预测问题

  • 传统单步预测容易导致模型过度关注局部模式(如语法而非语义)。
  • MTP通过强制模型同时优化多个位置的预测,鼓励其建立全局性的文本理解,这在技术报告提及的“性能超越其他开源模型”中起到关键作用。

MTP实现细节

如上图所示,用 D 个顺序的模块,预测 D 个 tokens。每个 MTP 模块的具体结构:

  • 输入 token 首先接入一层共享的 embedding layer
  • 对于第 i 个 token 和第 k 个预测深度
    • 我们首先将第 k-1 层的隐层输入{​{h}_{i}^{k-1}}\in {​{R}^{d}}做归一化处理RMSNorm({​{h}_{i}^{k-1}})
    • 再对第 i+k 位置的 token embedding:Emb({​{t}_{i+k}})\in {​{R}^{d}}做归一化处理:{​{h}_{i}^{k}}=RMSNorm(Emb({​{t}_{i+k}}))
    • 将上述两个结果 concat 后,通过注意力矩阵{​{M}_{k}}\in {​{R}^{d\times 2d}}做一层线性变换得到{​{h}_{i}^{'k}}\in {​{R}^{d}}
    • (当 k=1 时,{​{h}_{i}^{k-1}}对应 main model 的隐层表征)
  • 再将{​{h}_{i}^{'k}}输入 Transformer 层,获得第 k 个预测深度的输出:{​{h}_{i}^{k}}
  • 最后将{​{h}_{i}^{k}}通过一个各 Module 共享的映射OutHead\in {​{R}^{V\times d}}变换,再经过 softmax() 处理,计算词汇 V 维度的输出概率。

MTP训练目标:计算所有深度的 MTP 损失的平均值,并乘以加权因子𝜆,得出总体 MTP 损失,作为 DeepSeek-V3 的额外训练目标。

DeepSeek V3 论文中报告了使用 MTP 模块的效果。他们在推理过程中,不使用 MTP 模块,只在训练过程中利用该模块约束模型的优化。

结论

MTP 的核心思想是让模型一次性预测多个 token,以提升模型的训练效率、生成质量和推理速度。模型不仅要学习预测下一个 token 的能力,还需要同时具备预测下 n 个token的能力。

参考资料

 DeepSeek-V3:https://arxiv.org/pdf/2412.19437

### DeepSeekToken预测(MTP)实现与问题 DeepSeek作为一种先进的自然语言处理模型,在执行多Token预测(Multi-Token Prediction, MTP)时涉及复杂的机制。MTP允许模型一次性预测多个后续token,而不是逐个预测下一个token。 在技术细节方面,为了支持MTP功能,通常会调整Transformer架构中的解码器部分。具体来说: - **并行化计算**:通过修改自回归过程来允许多个位置的同时预测[^1]。 ```python def mtp_forward(self, input_ids): # 假设input_ids形状为(batch_size, seq_len) predictions = self.decoder(input_ids) # (batch_size, seq_len, vocab_size) # 对于MTP,这里可以返回最后n个时间步的预测分布 n_tokens_ahead = 3 # 预测接下来的三个tokens return predictions[:, -n_tokens_ahead:, :] ``` - **损失函数设计**:针对MTP特性定制化的训练目标有助于提高整体性能。这可能涉及到引入额外项以惩罚不连贯或多义性的序列生成。 对于可能出现的问题及其解决方案如下: - **上下文依赖性不足**:当尝试预测较远距离外的token时,可能会遇到捕捉长期依赖关系困难的情况。可以通过增加模型层数或采用更高效的注意力机制缓解此现象。 - **过拟合风险增大**:由于增加了参数量以及改变了原有的单步预测模式,容易造成模型过度适应训练集而泛化能力下降。建议使用更强正则化手段如Dropout,并适当减少学习率衰减速率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值