保存时间:2026/4/2 19:21:44
num_nextn_predict_layers字段定义,在 DeepSeek V3 中此值设为 1,即只有 1 个额外的 MTP 模块。embed_tokens与主模型权重的嵌入层共享参数,能有效减少参数数量和内存占用,提升训练和推理效率。enorm和hnorm是 RMSNorm 参数,在投机解码时用于归一化处理,保证数值稳定性,对提高解码准确性和效率意义重大。eh_proj负责对归一化结果进行降维投影,优化数据表示,降低计算复杂度。额外的 Transformer 隐藏层(model.layers.61.self_attn和mlp )结构与主模型隐藏层相同,利用 Transformer 架构强大的特征提取能力,提升 MTP 模块对输入数据的处理能力。shared_head与主模型权重的输出头共享参数,确保预测结果与主模型输出格式一致,且减少参数总量,提高模型训练和推理效率。embed_tokens与主模型权重的嵌入层共享参数,在减少参数数量、降低内存占用和提升训练推理效率方面作用显著。embed_tokens不与主模型嵌入层共享参数,就需单独为其创建一套嵌入参数。以词汇表规模为V,嵌入维度为d为例,独立嵌入层参数数量是V×d 。共享参数后,MTP 模块无需重复创建,直接使用主模型嵌入层参数,参数总量未因 MTP 模块增加,降低了模型复杂度,减少训练所需计算资源,加速模型收敛。embed_tokens共享主模型嵌入层参数,内存里只需保存一份嵌入参数,而非多份。这对大规模模型意义重大,DeepSeek V3 这类参数众多的模型,内存占用是关键问题,共享参数可节省内存空间,避免内存不足问题,使模型能处理更大批量数据或在资源受限环境运行。embedded tokens(嵌入令牌)是非常关键的部分,它与模型处理用户输入的过程紧密相关,和qkv的线性变换矩阵参数也有特定联系。embedded tokens的本质:embedded tokens是将输入的离散令牌(token)转换为连续向量表示的参数。在语言模型里,输入的文本被分词成一个个 token,这些 token 是离散的符号,无法直接被模型处理。embedded tokens就是嵌入层的参数,它将每个 token 映射到一个低维、连续的向量空间,让模型能够理解和处理。在处理 “Hello, world!” 这句话时,“Hello” 和 “world” 会被分词成不同的 token,嵌入层利用embedded tokens参数将它们分别转换为对应的向量表示,这些向量包含了词汇的语义和句法信息。从计算图角度看,embedded tokens是输入层到隐藏层之间的一个关键转换节点。输入的 token 序列作为嵌入层的输入,与embedded tokens参数进行运算(通常是简单的查找操作,根据 token 的索引在嵌入矩阵中找到对应的向量),输出对应的嵌入向量,进入后续的模型层。embedded tokens本身就是一种权重参数。在模型训练过程中,这些参数会和其他权重参数一样,通过反向传播算法进行优化。模型在训练时会调整embedded tokens的值,让模型更好地学习词汇的表示,提升在各种任务上的性能。随着训练的进行,embedded tokens会逐渐调整,使得相似语义的 token 在向量空间中的距离更近,提高模型对语义的理解能力。qkv线性变换矩阵的关系:qkv线性变换矩阵用于将嵌入向量分别转换为查询(query)、键(key)和值(value)向量,为注意力机制提供输入。embedded tokens的输出是qkv线性变换矩阵的输入之一。嵌入层将 token 转换为嵌入向量后,这些向量会输入到qkv线性变换矩阵进行线性变换。它们是模型处理输入的不同阶段。embedded tokens负责将离散的输入转换为连续向量表示,qkv线性变换矩阵则在注意力机制的框架下,对这些向量进行进一步变换和处理,以计算注意力分数,确定模型对不同位置信息的关注程度。embedded tokens是将用户输入(prompt)转化为嵌入表示时使用的权重,它是一个矩阵。假设词汇表大小为V,嵌入维度为d,那么embedded tokens就是一个V×d的矩阵。当模型处理用户输入的token时,会根据token的索引在这个矩阵中查找对应的d维向量,从而将每个token转化为嵌入向量。embedded tokens并非单纯的代码传递问题,虽然在代码实现上需要确保参数传递的正确性,但更重要的是其背后的模型设计理念。在模型架构层面,共享embedded tokens意味着MTP模块和主模型使用同一套将token映射为向量的规则。这不仅减少了参数数量和内存占用,更使得模型在训练和推理时能够从统一的词汇表示空间中获取信息。embedded tokens使得MTP模块能够快速利用主模型学习到的词汇表示,无需重新学习或加载额外的嵌入参数,提升了推理速度和效率。 embed_tokens与主模型嵌入层共享参数,这些 token 会被转化为嵌入向量。假设输入序列为[t1,t2,⋯,tn],经过嵌入层后得到嵌入向量序列[e1,e2,⋯,en]。 预测过程中,MTP 模块会依据当前 token 的嵌入向量,结合前一深度的信息(首次预测时,前一深度信息来自主模型),通过投影矩阵Mk进行线性投影。将投影后的向量输入 Transformer 块进行特征提取和变换,得到新的表示向量。最后,共享输出头会根据这些向量计算预测概率,得到对后续多个 token 的预测结果。如果设置预测深度D=1,模型会在预测当前 token 的同时,预测下一个 token。embed_tokens参数矩阵)进行查找操作,输出嵌入向量。这些嵌入向量一部分进入主模型,另一部分进入 MTP 模块。在 MTP 模块内,嵌入向量先与前一深度信息(如果存在)通过投影矩阵Mk进行线性组合,得到新向量。新向量进入 Transformer 块,经过多头注意力机制和多层感知机等组件处理后,输出到共享输出头。共享输出头将其映射为预测概率分布,完成多令牌预测。 虽然缺少具体代码,但从理论上了解其推理流程和计算图结构,有助于理解 MTP 模块在 DeepSeek-V3 中的作用机制,为相关研究和开发提供思路。embedded token输出嵌入向量后,一部分确实走正常的 Transformer 流程,用于常规的下一个 token 预测。与此同时,另一部分嵌入向量进入 MTP 模块。进入 MTP 模块的嵌入向量会与前一深度信息(首次预测时,前一深度信息来自主模型)通过投影矩阵Mk进行线性组合得到新向量,这一步是为了融合当前 token 信息与前一深度的上下文信息。新向量进入 Transformer 块,利用 Transformer 强大的特征提取能力,对融合后的信息进行深度处理,捕捉更丰富的语义和依赖关系。这个过程并非简单的并行预测下一个 token。MTP 模块预测的是额外的未来 token(在 DeepSeek V3 中多预测一个) ,而且 MTP 模块预测过程中,各层之间是顺序执行的,但整体与主模型的预测流程有一定的并行性。