ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Qwen3-Next 架构拆解:长上下文 + 高稀疏 MoE + 混合注意力如何协同工作

Qwen3-Next 架构拆解:长上下文 + 高稀疏 MoE + 混合注意力如何协同工作 1. 为什么 Qwen3-Next 值得单独拆一遍架构Qwen3-Next 是 Qwen 团队在 Qwen3 之后推出的一代新架构核心卖点可以浓缩成一句话用 80B 总参数、3B 激活参数在长上下文任务上对标甚至超过 235B 级别的旗舰模型。它适合谁适合已经跑过 Qwen3-32B 或 Qwen3-30B-A3B、想搞清楚“为什么激活参数少了 10 倍性能反而更强”的开发者也适合正在做长文档问答、长代码库理解、Agent 多轮记忆的工程同学。它最容易被误解的地方在于很多人第一眼看到“80B-A3B”会以为只是又一个 MoE 换皮。实际上 Qwen3-Next 把三件事绑在一起做协同设计——长上下文、高稀疏 MoE、混合注意力。单独看每一项都不新鲜但三者互相制约上下文拉长会让标准 Attention 的 O(n²) 成本爆炸于是需要线性注意力分担线性注意力召回弱于是需要保留少量全注意力层兜底MoE 稀疏度拉高会让专家负载失衡于是需要共享专家和全局负载均衡来稳住训练。这篇文章就按这个协同逻辑给你一套可复制的配置骨架和验证步骤让你在自己的推理环境里复现核心行为。2. 前置准备推理环境与 TaoToken 接入在本地复现 Qwen3-Next 之前先把两件事分清楚一是模型权重和推理框架二是调用入口。权重侧你需要 Hugging Face 上的Qwen/Qwen3-Next-80B-A3B-Instruct框架侧推荐 SGLang 或 vLLM因为当前 Transformers 主线还不支持 MTP多 Token 预测而 MTP 正是 Qwen3-Next 推理加速的关键。如果你不想一上来就扛 80B 权重的显存开销可以先用 API 方式验证行为再决定是否本地部署。TaoToken 提供统一的模型调用入口官网是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 端点是 https://taotoken.net/api 。接入前先去控制台创建密钥地址是 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite 密钥管理页在 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 。想先对话感受一下长上下文表现可以直接用模型对话页 https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_contentmodel_chatutm_campaignrewrite 。注意API 端点不要加 UTM 参数只有 deep link 才带utm_source、utm_content、utm_campaignrewrite。这一点在写配置时很容易搞混。环境依赖上Python 建议 3.10 以上CUDA 12.1SGLang 和 vLLM 都从主分支装因为 Qwen3-Next 的 NEXTN 投机解码支持是较新合入的。下面给一套最小可跑的骨架。# 建议在独立虚拟环境里操作 python -m venv qwen3next source qwen3next/bin/activate # SGLang推荐MTP 支持更完整 pip install sglang[all] githttps://github.com/sgl-project/sglang.gitmain#subdirectorypython # 或者 vLLM pip install githttps://github.com/vllm-project/vllm.git3. 可复制配置混合注意力 高稀疏 MoE MTP 骨架3.1 混合注意力 3:1 的配置含义Qwen3-Next 的注意力层不是清一色标准 Attention而是按 3:1 比例混排约 75% 的层用 Gated DeltaNet线性注意力路线负责高效长序列建模25% 的层用 Gated Attention保留强召回能力头维 256局部 RoPE带输出门控。这个比例不是随便定的实验结论是混合架构优于纯 Attention 也优于纯线性。你在推理时不需要手动改层结构权重里已经固化。但你要理解它带来的两个行为特征第一长上下文 prefill 阶段吞吐提升明显因为大部分层是线性复杂度第二需要精确召回的任务比如从 200K 文档里找某个具体数字依赖那 25% 的全注意力层所以上下文不是越长越好超过训练长度后要配合 YaRN 缩放。3.2 高稀疏 MoE 的参数骨架MoE 部分是 512 个专家、每 token 激活 10 个路由专家 1 个共享专家稀疏度约 3.7%。对比 Qwen3-MoE 的 128 专家激活 8 个6.25%Qwen3-Next 是“总参大幅上升、激活微增、共享专家兜底”的思路。{ num_experts: 512, num_experts_per_tok: 10, shared_expert: 1, moe_intermediate_size: 按权重 config 读取, router_aux_loss_coef: 全局负载均衡损失系数, norm_topk_prob: true }关键点在于共享专家它不参与路由竞争所有 token 都会经过作用是稳定训练并提供通用能力兜底。全局负载均衡损失则防止某些专家“躺平”不被激活。你在推理时看不到这些但如果做微调这两个参数直接决定训练是否发散。3.3 SGLang 启动命令含 MTPSGLANG_ALLOW_OVERWRITE_LONGER_CONTEXT_LEN1 \ python -m sglang.launch_server \ --model-path Qwen/Qwen3-Next-80B-A3B-Instruct \ --port 30000 \ --tp-size 4 \ --context-length 262144 \ --speculative-algo NEXTN \ --speculative-num-steps 3--speculative-algo NEXTN就是启用原生 MTP--speculative-num-steps 3控制投机步数。--tp-size 4表示 4 卡张量并行80B 权重按你的显存调整。3.4 vLLM 启动命令VLLM_ALLOW_LONG_MAX_MODEL_LEN1 \ vllm serve Qwen/Qwen3-Next-80B-A3B-Instruct \ --port 8000 \ --tensor-parallel-size 4 \ --max-model-len 262144 \ --speculative-config {method:qwen3_next_mtp,num_speculative_tokens:2}vLLM 的投机配置用 JSON 字符串方法名是qwen3_next_mtp。两个框架都要求你显式允许超长上下文否则会被默认长度截断。3.5 超过 256K 时启用 YaRN原生支持到 262144再往上要开 YaRN 缩放。改config.json{ rope_scaling: { rope_type: yarn, factor: 4.0, original_max_position_embeddings: 262144 } }或者启动参数直接传--rope-scaling {rope_type:yarn,factor:4.0,original_max_position_embeddings:262144} \ --max-model-len 1010000注意YaRN 只在需要超长上下文时开短文本场景开了反而影响性能。4. 验证请求确认混合注意力与 MTP 真的生效配置跑起来后别急着上业务先用几个请求确认核心行为。第一步确认服务健康curl http://localhost:30000/health第二步发一个长上下文请求观察 prefill 吞吐。构造一个约 100K token 的输入对比 4K 输入的耗时。如果混合注意力生效长输入的吞吐衰减应该远小于标准 Attention 模型。import requests, time url http://localhost:30000/v1/chat/completions long_text ... # 约 100K token 的文档 payload { model: Qwen/Qwen3-Next-80B-A3B-Instruct, messages: [{role: user, content: long_text \n请总结上文}], max_tokens: 256 } t0 time.time() r requests.post(url, jsonpayload).json() print(耗时, time.time() - t0) print(r[choices][0][message][content][:200])第三步验证 MTP 是否启用。SGLang 启动日志里会打印 speculative 相关行vLLM 则在启动时输出speculative_config。你也可以对比开/关 MTP 时的 decode 速度开启后 decode 吞吐应有明显提升。第四步验证长上下文召回。给一段 200K 文档在中间埋一个具体数字问模型这个数字是多少。这一步检验的是那 25% Gated Attention 层的召回能力如果答不出来说明 YaRN 没配对或上下文被截断。5. 本篇常见错排查报错一context length exceeds或输出被截断。原因是没设SGLANG_ALLOW_OVERWRITE_LONGER_CONTEXT_LEN1或VLLM_ALLOW_LONG_MAX_MODEL_LEN1框架默认按模型原始长度限制。补上环境变量并确认--context-length/--max-model-len一致。报错二MTP 不生效日志里没有 NEXTN。检查 SGLang 是否从主分支安装旧版本没有 NEXTN 支持。vLLM 侧确认--speculative-config的 method 拼写为qwen3_next_mtp不是mtp或nextn。报错三显存不够80B 权重加载失败。80B 总参即使只激活 3B权重仍要全部驻留显存。4 卡 tp-size 4 是常见起点显存紧张时考虑量化或改用 API 方式验证。报错四长上下文召回差。先确认是否超过 262144 且未开 YaRN再确认输入没有被 tokenizer 静默截断。混合注意力不是万能超长且需要精确召回时YaRN 因子和original_max_position_embeddings要匹配。报错五API 调用 401。检查密钥是否从 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 正确复制请求头格式是否为Authorization: Bearer key。接入细节可对照文档 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 。6. 继续深入从验证到长期编码与 Agent把上面的骨架跑通后你基本能复现 Qwen3-Next 的三个核心行为长上下文 prefill 吞吐、高稀疏 MoE 的激活效率、MTP 带来的 decode 加速。接下来如果要做长期编码或 Agent 场景重点会转向多轮记忆管理和工具调用模板Qwen-Agent 内置了工具调用解析器可以直接对接本地 vLLM 的 OpenAI 兼容端点。如果你更想先把模型行为验证清楚再决定部署方式用模型对话页 https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_contentmodel_chatutm_campaignrewrite 试几轮长文档问答是最省事的路径。而如果你打算把 Qwen3-Next 接进日常编码工作流、跑长期的 Agent 任务Coding Plan 更适合入口在 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 。密钥和接入配置统一在控制台 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite 管理API 端点固定用 https://taotoken.net/api 不要加多余参数。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进