分享自:

ReSCCL:面向集体通信的资源高效调度

期刊:ACM SIGCOMMDOI:10.1145/3718958.3750514

关于《resccl:面向集体通信的资源高效调度》的学术研究报告

本报告旨在向中国学术界介绍一篇发表于2025年ACM SIGCOMM会议(SIGCOMM ‘25)的研究论文《resccl: resource-efficient scheduling for collective communication》。该论文由来自东北大学、阿里巴巴云和中国科学院深圳先进技术研究院的研究人员Tongrui Liu, Chenyang Hei, Fuliang Li, Chengxi Gao, Jiamin Cao, Tianshu Wang, Ennan Zhai, Xingwei Wang共同完成。这是一项针对分布式深度学习训练中集体通信性能瓶颈问题的原创性系统研究工作。

一、 研究背景与动机

随着分布式深度学习训练(Distributed Deep Learning Training, DLT)系统规模的不断扩大,GPU(图形处理器)间的集体通信(Collective Communication)已成为显著的性能瓶颈。集体通信是指一组工作节点(如多个GPU)为完成特定任务(如同步梯度、参数)而进行的协同通信模式,例如AllReduce、AllGather等。现有优化工作主要集中在设计更高效的通信算法本身,例如通过数学建模和求解来合成接近最优的算法。然而,论文作者观察到,通信算法的高效执行(由通信库后端实现)对最终性能同样至关重要。一个通信后端负责将算法翻译为硬件指令,并调度GPU线程块(Thread Block, TB)和CPU线程来利用服务器内(如NVLink)和服务器间(如RDMA)的带宽。

当前主流的集体通信库后端,如NCCL和基于其的MSCCL,存在两个关键缺陷:1) 高资源开销:采用静态的、基于连接的线程块分配策略,即每个GPU间的通信连接固定分配一个TB。然而,算法执行过程中并非所有连接都持续活跃,这导致大量TB长时间空闲,浪费了宝贵的流式多处理器(Streaming Multiprocessor, SM)资源。SM是GPU上执行计算和通信的核心资源,通信占用过多SM会挤占计算资源。2) 性能下降:后端未能解决数据传输的全局最优调度问题,通常采用“惰性”执行方式,需要多次迭代算法才能完成一次完整的数据同步,导致执行流水线中存在大量“气泡”(空闲等待时间)。同时,TB间缺乏协调,引入了不必要的依赖和争用。此外,运行时解释器动态解析算法也会带来性能损耗。

因此,该研究旨在解决现有通信后端在调度和资源利用方面的根本性低效问题,目标是设计一个能够高效执行任何集体通信算法,同时维持低运行时开销的新型后端系统。

二、 研究流程与方法

本研究提出了一个名为ReSCCL(Resource-efficient Scheduling for Collective Communication Library)的新型集体通信库后端。其核心设计包含三个相互关联的组件:原始操作级执行调度优化、灵活的TB资源分配机制以及轻量级内核生成。整个研究遵循了从问题建模、系统设计到全面评估的完整流程。

1. 问题建模与目标定义 首先,研究者将任何通信算法抽象为一组在特定集群拓扑下的传输任务集合。每个任务代表GPU对等节点间的一个数据块(chunk)传输,涉及通信链路和任务间的依赖关系。他们定义了两种依赖:数据依赖(确保算法正确性的顺序约束)和通信依赖(避免同一链路上并行任务争用带宽的约束)。通过实验,他们验证了当并行TB的聚合通信能力超过单链路带宽时,增加TB反而会因链路争用导致性能下降,从而证实了通信依赖的存在及其对性能的影响。

基于此,研究者将后端调度问题形式化为一个在满足数据依赖和通信依赖约束下,最小化所有任务完成时间的优化问题。他们指出这是一个NP难问题。为了降低复杂度并找到高效解,他们提出了一个关键约束和见解:在不同微批次(micro-batch,一次算法迭代处理的数据单元)之间,传输任务仅存在通信依赖,而无数据依赖。因此,他们引入了 “任务级执行” 这一新颖的执行粒度。其核心约束是:同一个TB顺序地、迭代地执行同一个传输任务,直到该任务在所有微批次上完成。这种约束简化了调度空间,使得解决方案具有良好的可扩展性,并能有效掩盖因数据依赖产生的流水线气泡。

2. ReSCCL系统设计与工作流程 ReSCCL的设计工作流程如图5所示,主要包括以下几个步骤:

  • 输入与依赖分析:研究团队设计了一种领域特定语言(DSL)——ReSCCLang,供算法开发者或合成器描述通信算法逻辑。ReSCCL接受用此语言描述的算法,并进行全局依赖分析,生成一个有向无环图(Dependency DAG)。图中的节点代表传输任务,边代表数据依赖。相同颜色的节点具有通信依赖(使用相同链路)。

  • 原始操作级执行调度(核心创新):这是ReSCCL的核心。为了在任务级执行粒度下进行高效调度,研究者提出了 “基于层次优先级的动态调度”算法。该算法将DAG中的任务调度到多个“子流水线”中。每个子流水线包含一组可以同时执行(无数据依赖和通信依赖冲突)的任务。算法动态地为每个数据块ID分配优先级(执行频率低的块优先级高),并迭代地从高优先级的块DAG中选择满足依赖约束的任务加入当前子流水线。此过程循环直至所有任务被调度完毕,最终形成一个由多个子流水线串联而成的全局执行流水线。这种调度方法旨在最大化链路利用率,最小化流水线气泡,使算法性能逼近理论峰值。

  • 灵活的TB资源分配:传统后端采用“基于连接”的分配,每个物理连接固定绑定一个TB。ReSCCL则采用“基于状态”的分配策略。系统分析整个执行流水线的时间线,识别出那些在时间上从不重叠(即不会同时活跃)的连接,并将它们合并,分配给同一个TB执行。这显著减少了所需TB的总数,从而降低了SM资源开销。

  • 轻量级内核生成:与现有后端使用运行时解释器动态解析和执行算法不同,ReSCCL在离线阶段就将优化后的原始操作流水线直接编译生成轻量级的、可执行的CUDA内核。这彻底消除了运行时解析的控制开销,提升了执行效率。生成的内核遵循一个三维范式:Rank维度(指定每个GPU需执行的所有原始操作)、TB维度(指定每个TB分配的操作)、流水线维度(指定TB内按流水线索引分组的操作执行顺序)。

3. 实验评估方法 为了验证ReSCCL的有效性,研究团队进行了全面的实验评估,比较对象包括业界标准的NCCL、支持自定义算法的MSCCL,以及使用TACCL和TECCL合成算法后在MSCCL和ReSCCL上运行的效果。

  • 实验平台:使用了一个由4个节点组成的A100 GPU集群,每个节点8块GPU(共32块),通过NVSwitch和RoCE网络互联,构成两层Clos网络拓扑。
  • 评估指标与实验设计
    • 通信性能基准测试:在多种集群规模(如16 GPU、32 GPU)、多种缓冲区大小下,测量AllReduce和AllGather两种关键操作的有效带宽。对比了专家设计的算法和合成器生成的算法在ReSCCL与基线后端上的性能。
    • SM资源利用率分析:量化比较ReSCCL与MSCCL在运行相同算法时,所使用的TB数量、TB平均空闲率和最大空闲率,以证明资源节省效果。
    • 工作流分解与调度算法验证:测量ReSCCL离线编译器各阶段(解析、分析、调度、代码生成)的耗时,证明其开销可接受。并对比了其HPDS调度算法与简单的轮询(Round-Robin)调度算法的性能,以证明HPDS的有效性。
    • 端到端训练性能评估:将ReSCCL集成到大型语言模型训练框架Megatron-LM中,替换其默认通信后端。在GPT-3和T5模型的不同规模(从数亿到数百亿参数)上,测量并对比使用ReSCCL、NCCL和MSCCL作为后端时的训练吞吐量。

三、 主要研究结果

  1. 通信性能显著提升

    • 对于专家设计的算法,在16-GPU和32-GPU的集群上,ReSCCL在AllGather和AllReduce操作上,相比NCCL实现了最高2.5倍的带宽提升,相比MSCCL实现了最高1.6倍的提升。
    • 对于由TACCL和TECCL合成的算法,ReSCCL后端相比MSCCL后端也能带来显著加速,在较大缓冲区下性能提升可达1.4-1.5倍。这证明了ReSCCL不仅能优化手工算法,也能提升自动合成算法的实际执行效率。
    • 在额外的拓扑配置(如每节点4 GPU)和V100 GPU集群上的实验进一步验证了ReSCCL的通用性和性能优势。
  2. SM资源利用率大幅优化

    • ReSCCL通过灵活的TB分配,显著减少了活跃TB的数量。在运行相同算法时,TB消耗相比MSCCL最高减少了77.8%。
    • ReSCCL极大地提高了TB的利用率,降低了空闲时间。平均TB利用率提升最高达41.6%,且最大TB空闲率被控制在较低水平(例如专家算法下不超过22.5%),而MSCCL中某些TB的空闲率可高达99.9%。这表明ReSCCL实现了更均衡、高效的资源使用。
  3. 调度算法高效,离线开销可接受

    • HPDS调度算法相比简单的轮询调度,性能提升最高可达187%。
    • 即使对于模拟的1024 GPU大规模算法,ReSCCL的整个离线处理流程(解析、分析、调度、代码生成)总耗时约为11分钟。鉴于这是在训练开始前的一次性开销,对于长达数小时或数天的训练任务而言是可接受的。
  4. 端到端训练吞吐量提升

    • 在真实的分布式LLM训练场景中,将ReSCCL作为Megatron的通信后端,对于不同规模的T5和GPT-3模型,相比原生NCCL实现了最高39%的吞吐量提升,相比使用MSCCL实现了最高1.8倍的提升。

四、 研究结论与价值

本研究得出结论:现有集体通信库后端的静态资源分配和低效调度机制是限制先进通信算法性能的关键瓶颈。ReSCCL通过引入任务级执行粒度基于层次优先级的动态调度算法灵活的基于状态的TB分配以及轻量级内核生成,系统地解决了这些问题。

其科学价值在于首次将集体通信后端的执行调度问题形式化,并提出了一个切实可行的优化框架,将算法层面的优化与运行时执行层面的优化解耦,使得理论上最优的算法能够在实践中接近其峰值性能。其应用价值极为显著:ReSCCL能够无缝集成到现有深度学习训练框架中,在不修改上层算法的情况下,显著提升大规模分布式训练的通信效率和整体训练速度,同时节省宝贵的GPU计算资源,为更大模型、更快速的训练提供了底层系统支持。

五、 研究亮点

  1. 问题视角新颖:不同于大多数研究聚焦于通信算法本身的设计,本研究独辟蹊径,深入剖析并解决了算法执行层面的调度与资源管理效率低下这一根本问题。
  2. 系统性解决方案:提出了一个完整、自洽的系统ReSCCL,涵盖了从新的算法描述语言、创新的调度理论、资源分配机制到运行时实现的全栈设计,各部分协同工作。
  3. 显著的性能与效率增益:实验数据充分证明了ReSCCL在带宽性能(最高2.5倍提升)、资源利用率(TB消耗减少77.8%)和端到端训练吞吐量(最高39%提升)方面的全方位优势。
  4. 广泛的适用性:ReSCCL不仅提升了专家手工优化算法的性能,也能让自动合成的算法发挥出更高效率,并且其设计不依赖于特定硬件,具有良好的通用性。

六、 其他有价值的内容

论文还对ReSCCL与相关工作进行了清晰的区分:此前的研究主要集中在通信算法优化或数据中心网络中的协同流调度,而ReSCCL专注于集体通信场景下许多对多、具有复杂依赖关系的传输任务在GPU后端的精细调度问题。此外,论文也讨论了ReSCCL在缓解网络拥塞方面的间接益处,因其调度策略避免了链路级的冲突。

ReSCCL是一项在分布式系统和高性能计算交叉领域具有重要贡献的工作,它通过资源高效的调度,为突破分布式深度学习训练的通信瓶颈提供了强有力的新工具。

上述解读依据用户上传的学术文献,如有不准确或可能侵权之处请联系本站站长:admin@fmread.com