模型架构 进阶

Router

别名:路由门 / Routing Network / MoE Router

MoE 中为每个 token 打分并选出 top-k 专家的网络,决定哪些专家被激活。

更新于 2026/11/08
MoE路由稀疏激活

一句话定义

Router 是 MoE 里的门控网络:它给每个 token 对每个专家打分,选出 top-k 个专家,并输出路由权重。它决定“这个 token 走哪几个专家”。

为什么需要它

MoE 的总参数可以很大,但每个 token 只能算少数专家,否则计算量会失控。Router 就是做这个稀疏选择:把 token 分配给最合适的专家,同时尽量让专家负载均衡。

怎么工作

  1. 对 token 表示做线性变换,得到每个专家的分数。
  2. 用 softmax 或类似归一化得到权重。
  3. 选 top-k(常见 k=1 或 2)个专家。
  4. 专家输出按路由权重加权求和。
  5. 训练时加负载均衡损失或容量约束,避免所有 token 挤向同一专家。

路由分数通常来自 token 的隐状态;top-k 之外的专家不参与前向。推理时路由是动态的,同一个 token 在不同上下文可能走不同专家。top-k 的 k 是超参数,通常按任务和算力调;k=2 比 k=1 多一倍专家计算。

Router:为每个 token 选择 top-k 专家

关键取舍

  • k 越大,计算越多、表达越强;k 越小越省。
  • 容量因子限制每个专家处理的 token 数,超出部分要丢弃或绕过。
  • 路由可能塌缩:少数专家吃掉大部分 token,训练会退化。监控路由熵能提前发现塌缩。
  • 专家分布在不同设备时,all-to-all 通信会成为瓶颈。

常见误区

  • Router 不是专家本身:它只负责打分和分配。
  • 不是所有 token 都走所有专家;否则就退化成稠密模型。
  • top-k 的权重通常要归一化;不归一化会影响输出尺度。

用在哪里

  • MoE 语言模型、稀疏 FFN、专家并行训练。
  • 监控专家利用率、路由熵和负载均衡。
  • 调 k、容量因子和辅助损失时,先看路由分布。

相关概念