☰
mHC+MLA+MTP 是什么?拆开给 Agent 用的百亿 MoE
2026/10/10 21:11:09 网站建设 项目流程

mHC+MLA+MTP 是什么?拆开给 Agent 用的百亿 MoE

【免费下载链接】Xing4.0-29B-A4BXing4.0-29B-A4B 是中电信人工智能科技有限公司研发的星辰语义大模型系列(原 TeleChat)新一代模型。模型总参数量 29B,激活参数仅 4B,原生支持 256K 上下文,可扩展至 512K,是国内首个基于国产算力与国产框架完成训练、面向复杂工程任务深度优化的百亿参数大模型。项目地址: https://ai.gitcode.com/XingChen-AGI/Xing4.0-29B-A4B

当"29B 总参数、4B 激活、原生 256K 上下文"这些数字同时出现在一张参数表上时,大多数人的第一反应是"又一个取巧的 MoE"。但 Xing4.0-29B-A4B 真正值得拆解的,是它在这组数字背后堆叠的三项架构设计——mHC(多头超连接)、MLA(多头潜变量注意力)、MTP(多 token 预测)。这三者分别回答了一个 Agent 大模型最核心的三个问题:深层稀疏网络怎么训练才稳、长上下文放得下、解码快不快。本文直接从仓库源码出发,把这套为 Agent 而生的百亿 MoE 拆开看。

先看懂 A4B:29B 的参数,为什么每 token 只激活 4B

一切从 config.json 的 MoE 字段说起:

"n_routed_experts": 64, "num_experts_per_tok": 4, "n_shared_experts": 1, "moe_intermediate_size": 1024, "intermediate_size": 9216, "first_k_dense_replace": 2, "routed_scaling_factor": 2.0, "topk_method": "noaux_tc", "scoring_func": "sigmoid"

40 层 Transformer 中,除前 2 层保留稠密 FFN(中间维 9216)外,其余 38 层全部替换为 MoE:每层 64 个路由专家(中间维仅 1024)+ 1 个共享专家,每个 token 激活 top-4 个路由专家。moe_intermediate_size=1024仅为稠密层 9216 的约九分之一——这正是 4B 激活参数的核心来源:专家小而多,稀疏激活,容量靠"多"堆出来,算力靠"稀"省下来。

路由逻辑在 modeling_xing4_0.py 的Xing4_0TopkRouter中清晰可见:sigmoid 打分 + top-4 选取 + 权重归一化 + 2.0 缩放因子,并带一个可学习的e_score_correction_bias作负载均衡补偿。前 2 层稠密的设计则保证了底层特征提取的稳定性。

社区报道中反复出现的"4-bit 量化后约 15GB 显存、RTX 4090 可跑",正是这一结构的直接红利:权重虽大,但推理时每步真正参与计算的是 4 个专家 + 1 个共享专家,配合量化后单卡部署成为可能。

MLA:256K 上下文的"内存革命"

原生 256K、可扩展 512K,这是 Xing4.0-29B-A4B 最激进的规格之一。而支撑它的,是 modeling_xing4_0.py 中Xing4_0Attention完整实现的 MLA(Multi-head Latent Attention):

self.q_lora_rank = config.q_lora_rank # 768 self.kv_lora_rank = config.kv_lora_rank # 512 self.qk_rope_head_dim = config.qk_rope_head_dim # 64 self.qk_nope_head_dim = config.qk_nope_head_dim # 128 self.v_head_dim = config.v_head_dim # 128 self.kv_a_proj_with_mqa = nn.Linear(config.hidden_size, self.kv_lora_rank + self.qk_rope_head_dim) self.kv_b_proj = nn.Linear(self.kv_lora_rank, self.num_heads * (self.qk_nope_head_dim + self.v_head_dim))

关键在 KV cache 的压缩方式:每层的 key/value 不再按 32 个注意力头完整存储,而是先用kv_a_proj_with_mqa压进512 维的潜变量 + 64 维 RoPE 分量,计算注意力时再由kv_b_proj从潜变量实时展开出完整的 key 与 value。缓存里只放压缩后的潜变量,等价于把传统 MHA 每 token 上万维的 KV 存储压到约 512 + 32×64 维,是数量级的削减——这正是 256K 上下文在消费级硬件上"放得下"的底层原因。num_key_value_heads=32意味着这里没有走 GQA 路线,MLA 本身就是它的压缩手段。

配套的位置编码同样为长上下文服务:rope_scaling采用 YaRN 方案,从原始 4096 位置以 64 倍因子外推到 262144(256K),并配合yarn_get_mscale的注意力缩放校正,避免外推时注意力分数失真。

mHC:给 40 层 × 64 专家加装"信息高速公路"

mHC(multi-head HyperConnection)是仓库中最独特、也最容易被忽略的模块。在Xing4_0Model.forward中,输入一开始就被复制成 4 条并行流:

hidden_states = inputs_embeds.unsqueeze(2).expand(-1, -1, self.config.hc_mult, -1).contiguous()

hc_mult=4意味着整个 40 层网络内部并行维护4 条 hidden stream。每个Xing4_0DecoderLayer在注意力与 FFN 前后各挂一组Xing4_0HyperConnection(权重名attn_hc/ffn_hc,见 model.safetensors.index.json),由它决定四条流如何混合:

  • pre/post:sigmoid 门控,分别控制流入注意力的信号与放大系数;
  • comb:一个 4×4 的混合矩阵,经20 次 Sinkhorn 迭代归一化为近似双随机矩阵(代码中hc_sinkhorn_iters=20),负责跨流的信息再分配;
  • 输入流经collapsed = (pre * streams).sum()合并后进入注意力/FFN,输出再按post * output + comb * hidden_states回写各流。

相比传统残差连接,mHC 把"单线残差"升级为"可学习的多流混合网络":深层网络的信息不仅沿主干流动,还能在四条并行流之间按 token 动态调配。对 MoE 这种"40 层 × 每层 64 专家"的宽深结构而言,这种显式的信息旁路有效缓解了深层堆叠的梯度衰减与路由不稳定问题。README 中提及的"训练吞吐相对开箱即用提升约 96%",正是围绕 mHC 的算子融合、细粒度 MoE 通信优化等一系列昇腾侧联合优化的结果。

MTP:藏在第 40 层的"额外监督"与解码加速器

MTP(Multi-Token Prediction)在配置里只占一行:

"num_nextn_predict_layers": 1

但它的物理存在感很强——model.safetensors.index.json 里赫然出现了model.layers.40.*的整组权重:eh_proj、enorm、hnorm、embed_tokens以及完整的mlp.experts结构。这是一个独立的"第 40 层"MTP 模块,与主干 40 层并列。而 modeling_xing4_0.py 中这一行说明了一切:

_keys_to_ignore_on_load_unexpected = [r"model\.layers\.40.*"]

即:Transformers 推理路径默认不执行 MTP 模块,它的权重只为训练保留。原理上,MTP 层以当前 token 的 hidden state 为输入,借助相邻 token 的 embedding 预测下一个位置之外的更多未来 token——本质是给主干语言建模头增加一条并行的"多步预测监督"信号,在训练阶段提升样本效率与 token 级表示质量;推理阶段,这条旁路又可被投机解码(speculative decoding)类框架利用,用一次前向换来多个候选 token 的验证,显著摊薄自回归解码的延迟。社区实测报道中"兼容 vLLM、SGLang、KTransformers 推理"的说法,与这份 MTP 权重的存在互相印证。

三件套如何收敛于"Agent"

把 MLA、mHC、MTP 拼起来看,会发现每一环都精准对应 Agent 场景的痛点:MLA 解决多轮工具调用下 KV cache 的爆炸式增长,mHC 保证长程推理链路的稳定,MTP 压低逐 token 自回归的开销。而真正把它们拧在一起的,是仓库里一套完整的 Agent 协议实现。

chat_template.jinja 定义了完整的工具调用范式:<tool_call>+<param_key>/<param_value>的结构化函数调用格式、<tool_response>/<_observation>的观察回填、以及<think>/</think>推理链标记(可通过enable_thinking开关按场景裁剪)。对应的特殊 token 在 tokenizer_config.json 中一一注册。这份模板意味着模型在训练时就是"带着工具在思考"的,而不是部署后硬套一层函数调用 JSON。

评测结果也验证了这套架构的方向。README 的 Benchmark 表中,Xing4.0-29B-A4B 在 SWE-bench Verified 拿到 75.00(Gemma4-26B-A4B 为 53.00、Qwen3.6-35B-A3B 为 76.00)、Terminal-Bench 2.1 拿到 57.50(两者分别为 30.00 / 51.50)、Claw-Eval 76.55、DeepresearchBII 60.80——在 Agent 专项上以 4B 激活参数对飙甚至反超同量级对手。社区报道亦提到其 SuperCLUE 智能体评测得分 93.52。推理侧,README 给出的推荐参数也按场景区分:复杂推理用 temperature 1.0,coding/agent 任务降到 0.8 以压制发散。

再往外看,这并非一个只能在昇腾上运行的"孤岛模型":训练端基于昇腾 910C 与 MindSpore/MindFormers 原生完成,沐曦股份也已基于自研 MXMACA 软件栈完成 Day 0 适配,推理端兼容 vLLM、SGLang、KTransformers,并对接 OpenCode、Claude Code、OpenClaw、Hermes 等 Agent 框架。一个"国产算力训练、多硬件部署、Agent 原生协议"的闭环,才是 mHC+MLA+MTP 这套组合的真正落点。

回到标题的问题:mHC、MLA、MTP 是什么?它们不是营销缩写,而是三份可逐行验证的源码设计——MLA 管"放得下"(KV 压缩),mHC 管"学得稳"(多流超连接),MTP 管"跑得快"(多 token 预测)。三者叠加在一个 29B/4B 激活的稀疏模型上,最终服务的是同一个目标:让百亿参数的 Agent 模型,跑进消费级显卡,也跑进真实的生产链路。

【免费下载链接】Xing4.0-29B-A4BXing4.0-29B-A4B 是中电信人工智能科技有限公司研发的星辰语义大模型系列(原 TeleChat)新一代模型。模型总参数量 29B,激活参数仅 4B,原生支持 256K 上下文,可扩展至 512K,是国内首个基于国产算力与国产框架完成训练、面向复杂工程任务深度优化的百亿参数大模型。项目地址: https://ai.gitcode.com/XingChen-AGI/Xing4.0-29B-A4B

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询