最近在huggingface/transformers的 pr 中看到来自Qwen3和Qwen3MoE的请求。原文:https://github.com/huggingface/transformers/pull/36878
浏览代码可以看到这次的更新有: 看来本次针对更新的都是一些小参数的模型,比较期待有一个 30-40B 的 MoE 与传统 MoE 的差异特性: 路由策略: 传统MoE采用全局路由,即所有专家参与计算。Qwen3Moe采用稀疏路由,仅Top-K个专家参与计算。 负载均衡: 传统MoE没有显式优化,容易出现专家坍塌。Qwen3Moe集成load_balancing_loss,以惩罚不均衡的情况。 计算复杂度: 传统MoE的计算复杂度为O(N×E),其中N为序列长度,E为专家数。Qwen3Moe的计算复杂度为O(N×K),其中K为Top-K参数。 动态适应性: 传统MoE使用固定频率的RoPE。Qwen3Moe动态调整RoPE频率,属于动态类型。
与 Qwen2.5 的比较特性: RoPE类型: Qwen-2.5仅支持静态RoPE。Qwen3Moe支持dynamic、yarn、llama3等多种类型。 稀疏层调度: Qwen-2.5未明确支持。Qwen3Moe通过mlp_only_layers和sparse_step实现灵活控制。 注意力后端: Qwen-2.5仅基础实现。Qwen3Moe集成Flash Attention 2和SDPA加速。 生成缓存管理: Qwen-2.5使用传统KV缓存。Qwen3Moe支持滑动窗口缓存(sliding_window)。 MoE实现: Qwen-2.5未使用MoE。Qwen3Moe实现稀疏MoE + 负载均衡损失。
Qwen3Moe 的优势特性: 动态 RoPE:支持多种缩放策略,适配长序列和不同硬件。 稀疏 MoE:通过 Top-K 路由和负载均衡损-失,提升模型容量与训练稳定性。 高效注意力:集成 Flash Attention 2 和 SDPA,优化生成速度。 模块化设计:继承并扩展 Llama/Mistral 组件,提升代码可维护性。 生成优化:滑动窗口缓存和动态 KV 更新,降低解码内存占用。
总结目前在小参数模型中,个人总体使用感觉来说,qwen模型是首选,特别是此次将要更新的Qwen3-15B-A2B,15B 总参数量的稀疏 MoE 模型,实际激活参数量为 2B,所以要求的硬件设备资源更低,速度可以更快 |