【免费下载链接】Ling-3.0-tiny-base-midtrain项目地址https://ai.gitcode.com/hf_mirrors/inclusionAI/Ling-3.0-tiny-base-midtrain点击查看免费下载Ling-3.0-tiny-base-midtrain 是 inclusionAI 开源的 Ling-3.0 系列中训练检查点内置 MTPMulti-Token Prediction多 Token 预测层。本文带你从num_nextn_predict_layers参数出发用少量代码读懂它的结构、前向逻辑与损失计算5 分钟搞懂 MTP 层到底在预测下一个的下一个 Token。什么是 MTP一次预测多个 Token普通语言模型每前向一次只预测下一个Token而 MTP 让模型同时预测未来多个 Token训练时主模型 MTP 层各自输出预测头同时接受梯度监督模型被迫提前看清更远的上下文推理时MTP 层的输出可被采样框架当作投机草稿验证通过即一次吐出多个 Token显著提升生成速度这也是 DeepSeek、Ling 等新一代模型普遍采用 MTP 的原因。在 Ling-3.0-tiny 中MTP 层被设计为追加在主模型最后的独立 Transformer 层而不是嵌入每层之间这种尾部附加层结构实现简单、权重独立。num_nextn_predict_layers在哪里定义、取什么值核心参数只有两个全部记录在 config.json 中num_nextn_predict_layers: 1, mtp_loss_scaling_factor: 0num_nextn_predict_layers: 1—— 本模型挂载1 层 MTP 层mtp_loss_scaling_factor: 0—— MTP 损失系数为 0即最终 loss 不叠加 MTP 损失检查点当前以主损失训练。参数的默认值与赋值逻辑在 configuration_bailing_moe_v3.pynum_nextn_predict_layers0, mtp_loss_scaling_factor0,默认值为 0意味着 MTP 是可选开关配置为 0 时模型退化为标准自回归模型不实例化任何 MTP 层。模型结构24 个主层 1 个 MTP 层config.json中num_hidden_layers为 24加上 1 层 MTP模型共实例化25 个解码层。关键构建代码在 modeling_bailing_moe_v3.pyfor layer_idx in range(config.num_hidden_layers config.num_nextn_predict_layers): layer_cls BailingMoeV3DecoderLayer if layer_idx config.num_hidden_layers else BailingMoeV3MTPLayer self.layers.append(layer_cls(config, layer_idx))逻辑非常直白索引 0~23 → 标准BailingMoeV3DecoderLayer混合注意力 MoE索引 24 →BailingMoeV3MTPLayer专门的 MTP 层。这一点可以从权重索引文件中直接验证model.safetensors.index.json 中存在model.layers.24.eh_proj.weight等专属键名而普通层没有eh_proj它就是 MTP 层的身份证。前向时主层与 MTP 层在 modeling_bailing_moe_v3.py 被切开layers self.layers[: -self.num_nextn_predict_layers] if self.num_nextn_predict_layers 0 else self.layers mtp_layers self.layers[-self.num_nextn_predict_layers :] if self.num_nextn_predict_layers 0 else NoneBailingMoeV3MTPLayer 内部下一个 Token 如何被喂进去MTP 层要预测下一个的下一个 Token它必须提前知道下一个 Token 是什么。做法见 modeling_bailing_moe_v3.pyinput_ids, _ roll_tensor(input_ids, shifts-1, dims-1) inputs_embeds self.word_embeddings(input_ids)roll_tensormodeling_bailing_moe_v3.py把序列左移一位位置 t 拿到的是 t1 的 Token 嵌入。随后进入 MTP 层主体modeling_bailing_moe_v3.py数据流如下归一化enorm处理下一个 Token 嵌入hnorm处理主模型输出 hidden states拼接投影eh_proj把两者沿最后一维拼接2×hidden_size → hidden_size相当于告诉 MTP 层你站在下一个 Token 的位置但继承了主模型的全部记忆注意力 MoE过一遍 MLA 注意力与稀疏 MoE结构与普通解码层同源输出得到 MTP hidden states交给共享的lm_head产出词表 logits。 注意训练时下一个 Token来自数据集真值而推理时 MTP 只能使用模型自己刚预测出的 Token这正是 MTP 作为投机解码草稿的来源。MTP 损失mtp_loss_scaling_factor 如何生效MTP 损失的计算在 modeling_bailing_moe_v3.pyif self.num_nextn_predict_layers 0: ... mtp_loss self.loss_function(mtp_logits_, shift_labels_mtp.to(...), self.config.vocab_size) loss self.mtp_loss_scaling_factor * mtp_loss要点标签同样左移roll_tensor(shift_labels_mtp, shifts-1, fill_value-100)-100填充保证移位产生的无效位置不贡献损失权重可缩放mtp_loss_scaling_factor控制 MTP 损失在总损失中的占比。本检查点该值为 0说明 MTP 结构已就位并随主损失联合训练结构权重但不单独施加 MTP 监督也方便推理框架直接启用 MTP 投机解码。新手速查关键文件与入口内容位置模型超参数含 MTP 开关config.json参数默认值定义configuration_bailing_moe_v3.py25 层构建逻辑modeling_bailing_moe_v3.pyMTP 层类定义modeling_bailing_moe_v3.py主层/MTP 层切分与前向modeling_bailing_moe_v3.pyMTP logits 与损失modeling_bailing_moe_v3.py权重清单验证 layer 24model.safetensors.index.json模型分片权重model-00001-of-00002.safetensors、model-00002-of-00002.safetensors项目介绍与加载示例README.md总结3 句话读懂 MTP 层num_nextn_predict_layers1让模型在 24 个主层之后追加 1 个BailingMoeV3MTPLayer共 25 层MTP 层通过roll_tensor拿到左移一个位置的 Token 嵌入经eh_proj与主模型 hidden states 融合后完成一次完整的注意力 MoE 计算预测下一个的下一个 TokenMTP 损失由mtp_loss_scaling_factor加权本检查点为 0结构随时可用为推理阶段的多 Token 加速打好基础。⚡理解了这个参数你就能在加载模型时自行开关 MTP 层也能看懂 Ling-3.0 系列尾部附加层式的多 Token 预测设计。赞分享【免费下载链接】Ling-3.0-tiny-base-midtrain项目地址https://ai.gitcode.com/hf_mirrors/inclusionAI/Ling-3.0-tiny-base-midtrain点击查看免费下载相关推荐Ling-3.0-tiny-base-midtrain vs Ling-3.0-tiny-base-30T vs Merged训练阶段检查点怎么选才对Ling 3.0 tiny base midtrain vs Ling 3.0 tiny base 30T vs Merged训练阶段检查点怎么选才对 Lin为什么 Ling-3.0-tiny-base-midtrain 用 WSM 检查点合并替代学习率衰减Ling-3.0 训练流水线深度解析为什么 Ling 3.0 tiny base midtrain 用 WSM 检查点合并替代学习率衰减Ling 3.0 训练流水线深度解析 Ling 3.0 tLing-3.0-tiny-base-midtrain config.json 逐参数详解MoE、注意力与长上下文核心超参数全解读Ling 3.0 tiny base midtrain config.json 逐参数详解MoE、注意力与长上下文核心超参数全解读 如果你正在研究 Ling创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考