豆包大模型团队近日开源了其研发的COMET通信优化系统,该系统旨在解决混合专家模型(MoE)在分布式训练中面临的通信开销问题。MoE架构通过稀疏激活机制有效突破了传统稠密模型的计算瓶颈,但在分布式训练环境中,跨设备通信开销巨大,成为制约训练效率和成本的关键因素。
MoE模型的专家网络分布在多个GPU上,每次计算需频繁执行Token分发与结果聚合,导致GPU计算资源大量闲置。为了掩盖这一巨大的通信开销,现有方案主要集中在计算与通信的高效重叠上,但存在显存开销大、对训练框架侵入性改动复杂以及资源利用不高效等问题。
针对这些挑战,COMET系统引入了两项核心机制。首先是共享张量依赖解析,通过分解和重调度共享张量,解决通信与计算之间的粒度错配问题。系统能够将MoE层间传递的共享张量沿Token维度或隐层维度进行切割,使通信与计算的最小单元对齐,并通过动态调整数据块的计算顺序,优先计算本地数据块,同时异步拉取远程Token,以消除等待延迟。
其次是自适应负载分配机制,该机制动态分配GPU线程块资源,精准平衡通信与计算负载。通过将通信与计算任务分别封装在独立线程块中,避免远程I/O阻塞计算核心,并根据输入规模和并行策略实时调整线程块分配,系统能够在运行时实现“零开销”算子动态切换,始终提供低延迟的算子。
为了验证COMET系统的性能,团队在多个大规模MoE模型中进行了端到端性能评估。结果表明,在8卡H800的实验集群中,COMET系统能够显著降低MoE模型的前向时延,较其他基线系统降低31.8%-44.4%。在单个MoE层上,COMET的执行时间也显著短于基线方案,平均实现了1.28倍到2.37倍的速度提升。
目前,COMET系统已实际应用于万卡级生产集群,助力MoE模型高效训练,并累计节省了数百万GPU小时资源。该系统在不同并行策略、输入规模及硬件环境下均表现稳定,具有较强的鲁棒性和泛化能力。
COMET系统包含约1.2万行C++和CUDA代码,以及2千行Python代码,并向开发者提供了一套友好的Python API。该系统建立了面向MoE的细粒度流水线编程范式,实现了通信操作与GEMM计算的算子内融合,可直接接入已有的MoE训练框架,支持多种并行模式,并提供了灵活的插拔式部署方案。核心代码现已开源,并计划兼容Triton等编译生态。