一句话定义
Router 是 MoE 里的门控网络:它给每个 token 对每个专家打分,选出 top-k 个专家,并输出路由权重。它决定“这个 token 走哪几个专家”。
为什么需要它
MoE 的总参数可以很大,但每个 token 只能算少数专家,否则计算量会失控。Router 就是做这个稀疏选择:把 token 分配给最合适的专家,同时尽量让专家负载均衡。
怎么工作
- 对 token 表示做线性变换,得到每个专家的分数。
- 用 softmax 或类似归一化得到权重。
- 选 top-k(常见 k=1 或 2)个专家。
- 专家输出按路由权重加权求和。
- 训练时加负载均衡损失或容量约束,避免所有 token 挤向同一专家。
路由分数通常来自 token 的隐状态;top-k 之外的专家不参与前向。推理时路由是动态的,同一个 token 在不同上下文可能走不同专家。top-k 的 k 是超参数,通常按任务和算力调;k=2 比 k=1 多一倍专家计算。
关键取舍
- k 越大,计算越多、表达越强;k 越小越省。
- 容量因子限制每个专家处理的 token 数,超出部分要丢弃或绕过。
- 路由可能塌缩:少数专家吃掉大部分 token,训练会退化。监控路由熵能提前发现塌缩。
- 专家分布在不同设备时,all-to-all 通信会成为瓶颈。
常见误区
- Router 不是专家本身:它只负责打分和分配。
- 不是所有 token 都走所有专家;否则就退化成稠密模型。
- top-k 的权重通常要归一化;不归一化会影响输出尺度。
用在哪里
- MoE 语言模型、稀疏 FFN、专家并行训练。
- 监控专家利用率、路由熵和负载均衡。
- 调 k、容量因子和辅助损失时,先看路由分布。
相关概念
- MoE:Router 所属的结构。
- Dense 与 Sparse 模型:稀疏激活的整体取舍。
- FFN:专家网络的基础结构。