资讯动态

Qwen3-Next-80B-A3B-Instruct 在 AMCT 中的 MoE 混合注意力量化适配实战

发布时间:2026/9/18 19:39:06 来源:尧图企业网站定制
Qwen3-Next-80B-A3B-Instruct 在 AMCT 中的 MoE 混合注意力量化适配实战【免费下载链接】amctAMCT是CANN提供的昇腾AI处理器亲和的模型压缩工具仓。项目地址: https://gitcode.com/cann/amct本文基于 CANN/amct 仓库casebook中 Qwen3-Next-80B-A3B-Instruct 的适配个案系统讲解这一「block 内混合 linear_attention full_attention、checkpoint 展开而运行期 packed expert」的 MoE 大模型在 AMCT LLM 量化链路上的结构认知、源码级适配要点、关键陷阱与精度结论。读完本文你将掌握如何为同类「混合 attention MoE」结构模型制定attn-linear moe直转量化方案并学会排查 causal mask 路由与 expert 布局这两类最容易翻车的通用问题。一、模型结构与适配定位Qwen3-Next-80B-A3B-Instruct 属于 Qwen 系列中结构最复杂的分支之一48 层 decoderblock 内部混合linear_attention与full_attention对应 config 的layer_types字段同时是MoE 模型num_experts0并在运行时使用packed experts权重以gate_up_proj/down_proj打包张量形式参与计算而在transformers5.3.0环境下 checkpoint 磁盘存储却是逐 expert 展开的mlp.experts.i.{gate_proj,up_proj,down_proj}.weight。存储布局与运行时布局不一致是本次适配最重要的前提认知。触发信号configlayer_types同时含linear_attention与full_attentionnum_experts0。命中后应同时阅读 L2 · 混合 attention 类 MoE 类 与 L1 · 跨网络通用。参考与差异attention 路由参考qwen3.5-3.6混合 attentionMoE 重组参考qwen3-moepacked expert差异点集中在transformers5.3.0下 experts 的 packed/展开布局以及 layer0 是linear_attention带来的 mask 传递问题。相关个案见 qwen3.5-3.6、qwen3-moe 与 Qwen 系列总览。二、适配骨架复用什么、新增什么Qwen3Next 的 adapter 遵循 AMCT LLM 适配的统一范式复用BaseModel的 blockwise 前向、PtqUnitattn/moe/mlp 单元与QuantLinear量化线性层新增四类模型专属组件QuantQwen3NextAttn、QuantQwen3NextMLP、QuantPackedExperts源码中为QuantGatedExperts与PackedExpertView源码中为GatedExpertView外加 causal mask 路由与 expert 重组逻辑。2.1 Adapter 注册与量化目标校验adapter 通过MODEL_REGISTRY注册qwen3_next.pynameqwen3_next、taskllm、familyqwen。值得注意的一点是parse_quant_mode()会在quant_target含mlp时直接抛出ValueError(Qwen3-next is a moe model and does not support quant_targetmlp.)——因为 MoE 模型的专家权重需要走moe目标而不是普通mlp这是结构差异在 API 层的第一道护栏。2.2 Expert 重组磁盘展开 → 运行时 packedload_layer_weight()在加载每层 state_dict 后调用pack_gated_expert_weights(state_dict, expert_prefixmlp.experts)完成重组并丢弃linear_attn.rotary_emb.inv_freq这类非参数缓存qwen3_next.py。pack_gated_expert_weights的实现位于 moe_common.py用正则mlp.experts.i.(gate_proj|up_proj|down_proj).weight匹配展开的逐 expert 权重把同一 expert 的gate_proj与up_proj沿特征维拼接为gate_up_projdown_proj保持独立从而得到运行期 MoE 模块期望的 packed 张量。在量化 block 构建阶段build_quant_blockfind_moe_module定位 MoE 模块后先用is_packed_experts()校验该函数判断模块是否已具备gate_up_proj与down_proj两个属性moe_common.py确认 packed 布局后才用QuantGatedExperts包裹 routed expertsgroupmoe.routed而shared_expert则被包装为QuantQwen3NextMLPgroupmoe.shared并使用build_no_algo_args跳过 PTQ——shared expert 是密集激活路径直接量化即可qwen3_next.py。2.3 混合 attention 路由两种量化 wrapperapply_quant_attn()依据decoder_layer.layer_type分流qwen3_next.pylinear_attention层 →QuantQwen3NextLinearAttn继承官方Qwen3NextGatedDeltaNetquant_module.py量化in_proj_qkvz、in_proj_ba、out_proj三组投影保留conv1d、dt_bias、A_log、norm等线性 attention 特有结构核心计算走chunk_gated_delta_rulefull_attention层 →QuantQwen3NextAttn继承官方Qwen3NextAttentionquant_module.py量化q/k/v/o四组投影并保留q_norm/k_norm与 gate 分支attention 计算复用共享的scaled_dot_product_attentionhelper以attn_maskNone, is_causalTrue方式让 helper 自行构造因果 mask。两者均通过ensure_bit_policy从quant_args.bit_policy[attn-linear]读取各投影位宽并支持structure目标LWC/LAC 等结构变换算法注入input_transform/out_transform。三、关键陷阱两条通用坑L1/L2本案中不存在 Qwen3Next 专属、不可迁移的 L3 坑两条坑均为同类网络复用经验已上抽到 L1/L2 经验库3.1 混合 attention 的 causal mask 路由L2 · 混合 attention 类现象BF16 PPL 低得离谱像「模型看到了后文」。根因do_embedding_forward()只捕获 layer0 的 mask而 layer0 是linear_attention捕获到None后续full_attention层复用时即丢失 causal mask。处理adapter 内分别维护linear_attention_mask与full_attention_mask后者用create_causal_mask(...)显式构造wrapper 在显式传 mask 时保持is_causalFalseQuantQwen3NextAttn.forward中attn_maskNone, is_causalTrue正是该策略的落地形态。追加注意不同 attention 形态不能套同一条量化路径linear_attentionkernel 未就绪时可先保持 BF16但仍可量化其投影 Linear。详见 L2 · 混合 attention 类。3.2 Expert 布局 packed vs 展开L2 · MoE 类现象state_dict key / expert 权重形状与运行时模块不一致。处理先确认transformers版本布局随版本可能变化本案基线为transformers5.3.0再在 adapter 内重组为 packedgate_up_proj/down_proj对应pack_gated_expert_weightsQuantGatedExperts。详见 L2 · MoE 类。四、适配验证结论三步闭环通过BF16 blockwise baseline → 关闭量化等价验证 → 最小 PTQ smoke 全链路走通。关闭量化后attn(3/23/47 层) 与 BF16 对齐moe(0/23/47 层) 存在 BF16 级微漂可接受。layer0/shared_expert的最小 PTQ smoke 已打通可用于验证 packed expert 路径的参数产出与加载。代码层面单元测试 test_qwen3_next_quant_module.py 使用 tiny confighidden_size64、2 层、linear_conv_kernel_dim4等分别覆盖QuantQwen3NextAttn/QuantQwen3NextMLP/QuantQwen3NextLinearAttn的构建与前向可作为理解各 wrapper 结构与参数来源的最小范例。五、适配建议下次同系列/同结构先参考本案 qwen3.5-3.6混合 attention 路由 Qwen 系列 README。先做什么先把transformers5.3.0当作基线再判定 expert 结构packed 还是展开与 mask 路由方式BF16 PPL 一旦离谱第一件事查 blockwise 的 mask/pos 传递链。不建议混合 attention 家族默认「一套 mask 打到底」也不建议把linear/fullattention 混为同一条量化路径一把梭。量化起步建议遵循通用纪律先关闭量化bits16验 wrapper 与 BF16 等价再直转先整网再缩 block/unitdelta ≤ 0.2为默认接受阈值。六、精度速查表ppl 口径seq_len4096Wikitext blockwise。MXFP 双值为两次评测口径 a/b。数据类型量化配置量化算法pplmmluBF16无无5.448385.4INTA4w4: moe, attn-linear无561.4258INTA8w4: moe, attn-linear无6.0114INTMOE A8W8无85.5MXFPA4w4: moe, attn-linear无6.123/5.901MXFPA8w4: moe, attn-linear无5.7337/5.609MXFPA8w8: moe, attn-linear无5.451结论要点首推attn-linear moe的 A8W8 INT 直转方案MoE 侧 A8W8 INT 下 mmlu 85.5与 BF16 的 85.4 基本持平无需 PTQ 即可达标符合delta ≤ 0.2的接受阈值与 Qwen3-MoE30B/235B的attnmoeW8A8 直转结论一致。A4W4 对混合 attention MoE 是重灾区INT A4w4 下 ppl 高达 561.4258相比 BF16 5.4483 完全不可用MXFP A4w4 也明显退化6.123/5.901A8W4 回到可用区间INT 6.0114 / MXFP 5.7337/5.609。MXFP A8W8 最接近 BF16ppl 5.451是所有量化组合中退化最小的方案。结合 qwen3-moe 与 L2 · MoE 类 的经验还需注意MoE per-expert 动态量化在 prefill 下平均路由M_eff≈seq*topk/experts偏小单 expert 的动态量化头开销可能超过 BF16 matmul 收益MoE 性能结论必须以 infer 侧 packedMoEGMM实测为准而 attention 投影路径通常收益正常。七、小结Qwen3-Next-80B-A3B-Instruct 是 AMCT Qwen 系列中「混合 attention MoE packed expert」三重结构叠加的代表个案。其适配经验的核心可沉淀为三点以 checkpoint 为唯一事实源确认 expert 布局与真实层数为 linear/full 两种 attention 分别维护 causal mask 并路由到不同量化 wrapperattn-linear moe的 A8W8 直转作为首轮量化起点。这三条经验同时适用于后续任何同结构模型的接入参考 casebook 三层经验库 的组织方式L1 跨网络通用 → L2 结构家族 → L3 模型个案。【免费下载链接】amctAMCT是CANN提供的昇腾AI处理器亲和的模型压缩工具仓。项目地址: https://gitcode.com/cann/amct创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价