趋近智
稀疏专家混合模型的架构,特别是那些采用 Top-K 路由的模型,通常为每个专家分配一个固定的处理容量,记作 C。这个容量代表了专家在给定计算步骤(通常是分布式训练中的一个微批次)内可以处理的最大令牌数量。这种固定容量对于在设备之间维持可预测的计算负载和内存使用是必不可少的,尤其是在专家跨不同处理器并行化的大规模分布式设置中。
然而,由门控网络驱动的路由机制并不固有地保证分配给任何单个专家的令牌数量会严格遵守这个容量 C。门控网络根据习得的亲和性选择每个令牌的“最佳”专家。由于输入数据的变化以及路由器学习机制的动态性,某些专家被分配的令牌数量超过其指定容量是很常见的,特别是当负载均衡未能完美实现时。
分配给已达到其容量 C 的专家的令牌被称为“丢弃令牌”。
当令牌因容量限制被其分配的专家丢弃时,它有效地绕过了 MoE 层旨在为其提供的专业计算。处理这些丢弃令牌的最常用方法很简单:它们的输入表示未经改变地通过 MoE 层。
考虑一个执行残差更新的 MoE 层:
y=x+MoE(x)对于成功路由并由专家 j 处理的令牌 xi,其输出为:
yi=xi+gi⋅专家j(xi)其中 gi 是门控权重。
然而,如果令牌 xk 被分配给专家 j,但专家 j 已达到其容量 C,则令牌 xk 被丢弃。在这种标准的直通方法中,其输出计算实际上变为:
yk=xk+0MoE 的贡献为零,因为该令牌从未进入该层的专家计算流程。
这会带来几个负面影响:
处理丢弃令牌主要涉及预防过度丢弃的策略,而不是事后处理它们的复杂机制。
专家容量 C 是一个重要的超参数。它需要足够大以容纳路由过程中固有的合理程度的不均衡性,但又不能太大,以至于在专家未充分利用时导致过度计算浪费(填充)。
容量通常根据每个专家的理想均匀负载来设置,并乘以一个容量因子。如果 N 是正在处理的令牌数量(例如,在专家并行化中每个设备处理的令牌数量),而 E 是本地可用的专家数量,则理想负载为 N/E。容量随后设置为:
容量因子的常见取值范围是 1.0 到 2.0。
选择涉及计算效率与最小化因丢弃令牌造成的信息损失之间的权衡。它通常需要根据训练初期观察到的丢弃率进行调整。
如前一部分所述,辅助损失项 Laux 是鼓励路由器均匀分配令牌的主要机制,从而减少导致令牌丢弃的情况。虽然 Laux 在令牌一旦被丢弃后不会直接处理它,但有效调整其在 Ltotal=Ltask+αLaux 中的系数 α 对于保持令牌丢弃率较低是必要的。较高的 α 通常会促使路由器进行更均衡的分配,从而减少丢弃,但如果设置过高,则可能干扰最佳专业化。
下图说明了令牌被路由、容量检查以及某些令牌被丢弃的过程。
令牌通过专家容量有限的 MoE 层的流程。令牌被路由到专家。如果一个专家的容量(此处 C=2)已满,则后续分配给它的令牌会被丢弃,并且通常通过直通机制绕过专家计算。
训练期间,有必要监控每个 MoE 层或整个模型平均的丢弃令牌百分比。这项指标可作为一项重要的健康检查:
容量因子过低)、负载均衡效果不佳(Laux 系数 α 需要调整或路由器学习效果不佳),或者数据分布可能存在问题。记录此指标有助于诊断训练问题并调整相关超参数(容量因子,α)。
虽然直通是标准方法,但研究已考量了其他处理容量溢出的方法,例如:
由于增加了路由逻辑和通信模式的复杂度,这些方法在标准大规模 MoE 实现中不被广泛采用。重点仍在于通过容量管理和负载均衡损失来防止丢弃。
总之,在 MoE 训练中处理丢弃令牌,与其说是主动处理它们,不如说是更多地实施预防措施。设置适当的专家容量并有效地调整负载均衡辅助损失是减少令牌丢弃并确保大多数令牌从专业专家计算中获益的主要策略。监控丢弃率对于保持训练稳定性和模型性能很重要。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造