Qwen MoE 架构怎么工作?从稀疏激活到部署的完整路径
2026/9/4 15:26:43 网站建设 项目流程

Qwen MoE 架构怎么工作?从稀疏激活到部署的完整路径

【免费下载链接】Qwen1.5Qwen3 is the large language model series developed by Qwen team, Alibaba Cloud.项目地址: https://gitcode.com/GitHub_Trending/qw/Qwen1.5

当你要跑一个 235B 的大模型,却发现它塞不进显卡,而小模型又压不住复杂推理时,Qwen 的混合专家(Mixture of Experts, MoE)架构给出了折中:模型存下大参数,但每个 token 只激活其中一小部分。本文把 MoE 的路由原理和参数命名讲清楚,带你跑通 Qwen3 的本地推理与服务部署,不涉及训练与偏好对齐。

它到底解决了什么

想象两个场景。一是你只有一台单卡机器,想部署大模型;二是线上服务要扛住高并发,但显存和算力都紧张。密集(Dense)模型的问题在于:参数量多大,每个 token 就要算多大,模型越大越贵。

MoE 的思路是把「存储知识」和「计算量」解耦。以 Qwen3 为例,它提供两个 MoE 型号:30B-A3B235B-A22B。前者总共 30B 参数,但每个 token 只激活 3B;后者总共 235B,每个 token 激活 22B。

维度密集模型(30B 级)MoE(30B-A3B)
每 token 激活参数30B(全部)3B
知识存储总量30B30B
单位推理计算量基准约 1/10

同样的知识容量下,MoE 把每个 token 的计算量压到密集模型的约十分之一;而单卡 96GB(H20)就能在 BF16 下跑30B-A3B,这点来自项目自带的速度基准。

拆解 Qwen MoE 架构的五步路由原理

MoE 的核心不在「专家」本身,而在「谁来选专家」。下面按一个 token 的前向过程分五步走。

第一步:特征提取。输入文本先经 BPE 分词切成 token 序列,再过词嵌入层和 Transformer 编码器,得到该位置的隐藏状态向量。Qwen 的词汇表约 151,646 个 token。

第二步:门控打分。一个轻量门控网络(Gating Network)读取隐藏状态,对每个专家输出一个选择分数,判断「这个问题该交给谁」。

第三步:Top-K 选择。只挑分数最高的 K 个专家(常见 K=2),其余专家本次不激活——这正是计算量被省下来的关键。

第四步:专家前向。被选中的专家各自做前向计算,专家内部结构与普通 FFN 子网类似,但各专家参数相互独立。

第五步:加权合并。把选中专家的输出按第二步的分数加权求和,再经残差连接送回主干,得到该位置的最终表示。

这里要强调命名规则,它直接暴露了激活量:A前的数字是总存储参数,A后是每个 token 激活的参数,所以235B-A22B意味着存了 235B 知识、每 token 只算 22B。

从零上手

先用最轻量的方式跑通本地推理。下面这条命令启动一个 OpenAI 兼容服务并加载Qwen3-8B(密集版,适合单卡验证流程):

vllm serve Qwen/Qwen3-8B --port 8000 --enable-reasoning --reasoning-parser qwen3

它做的事是:加载模型、在 8000 端口起一个 OpenAI 兼容 API,并开启思考模式解析。启动成功后访问http://localhost:8000/v1,即可用 OpenAI SDK 发请求,思考内容会从reasoning_content字段返回。

如果要跑 MoE 型号,把模型名换成Qwen/Qwen3-30B-A3B-Instruct-2507即可。支持的主要框架及最低版本如下:

框架用途最低版本
Transformers本地推理/微调>=4.51.0
vLLM高吞吐部署>=0.9.0
SGLang高吞吐部署>=0.4.6.post1
llama.cpp端侧推理>=b5401
Ollama本地运行v0.9.0
mlx-lmApple Silicon>=0.24.0

关键细节与注意事项

  1. ⚠️ 思考模式下别用贪心解码。现象:temperature=0或贪心采样时,思考模型输出质量下降甚至无限重复。原因:贪心采样不适合思考类模型。解决:思考模式用temperature=0.6top_p=0.95top_k=20,非思考模式用temperature=0.7top_p=0.8(见 快速上手)。

  2. ⚠️ 上下文设太大直接 OOM。现象:vLLM/SGLang 启动时报显存不足。原因:--max-model-len超过了显存承载。解决:按显存下调,235B-A22B的 BF16 需 8 卡、FP8 需 4 卡(见 速度基准)。

  3. MoE 量化在内核上不一定支持。现象:Transformers 下30B-A3B的 GPTQ-INT4 无法运行,标注 "MoE Kernel Unsupported"。原因:MoE 量化内核缺失。解决:改用 vLLM/SGLang,或直接用 BF16/FP8。

  4. Ollama 默认上下文太小。现象:对话生成异常、被截断。原因:默认num_ctx仅 2048 且允许无限生成。解决:手动设置num_ctxnum_predict(见 README)。

下一步

MoE 让「存得大、算得小」成为可能,这也是 Qwen 能把大模型塞进单卡的关键。🚀 熟悉这套路由逻辑后,你可以顺着官方文档继续深挖:快速上手指南 覆盖从本地推理到 OpenAI 兼容 API 的完整调用,速度基准 给出各型号在不同量化下的吞吐与显存,vLLM 部署 则讲解高并发场景下的服务化配置。

【免费下载链接】Qwen1.5Qwen3 is the large language model series developed by Qwen team, Alibaba Cloud.项目地址: https://gitcode.com/GitHub_Trending/qw/Qwen1.5

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

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

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

立即咨询