Crux:GPU高效的深度学习训练通信调度
作者:阿里云团队
Author:Jiamin Cao, Yu Guan, Kun Qian, Jiaqi Gao, Wencong Xiao, Jianbo Dong,Binzhang Fu, Dennis Cai, Ennan Zhai
论文摘要原文:Deep learning training (DLT), e.g., large language model (LLM)training,has become one of the most important services in multi-tenant cloud computing. By deeply studying in-production DLTjobs, we observed that communication contention among differ-ent DLT jobs seriously influences the overall GPU computationutilization, resulting in the low efficiency of the training cluster.In this paper, we presentCrux, a communication scheduler thataims to maximize GPU computation utilizationby mitigating the communication contention among DLT jobs. Maximizing GPU com-putation utilization for DLT, nevertheless, is NP-Complete; thus,we formulate and prove a novel theorem to approach this goal by GPUintensity-aware communication scheduling. Then, we propose an approach that prioritizes the DLT flows with high GPU com-putation intensity, reducing potential communication contention.Our 96-GPU testbed experiments show that Crux improves 8.3% to 14.8% GPU computation utilization. The large-scale production trace-based simulation further shows that Crux increases GPU computation utilization by up to 23% compared with alternatives including Sincronia, TACCL, and CASSINI.
论文摘要中文:深度学习训练(DLT),例如:大型语言模型(LLM)训练已成为多租户云计算中最重要的服务之一。通过对生产中DLT作业的深入研究,我们发现DLT作业间的通信竞争严重影响了GPU的整体计算利用率,导致训练集群的效率低下。本文提出了一种通信调度器Crux,旨在通过减少DLT作业之间的通信争用来最大化GPU计算利用率.然而,DLT的GPU计算利用率最大化是NP完全的;因此,我们公式化并证明了一个新的定理,以通过GPU强度感知通信调度来实现这一目标。在此基础上,提出了一种对GPU计算强度较高的DLT流进行优先级排序的方法,减少了潜在的通信冲突.我们的96-GPU测试平台实验表明,Crux将GPU计算利用率提高了8.3%至14.8%。基于大规模生产轨迹的模拟进一步表明,与Sincronia、TACCL和CASSINI等替代方案相比,Crux将GPU计算利用率提高了23%。
研究问题、关键问题:本文的研究问题是 如何通过优化多租户深度学习训练(DLT)集群中的通信调度,提高 GPU 计算利用率,从而提升训练效率和集群收益。
具体而言,研究问题包含以下两个方面:
1.分析 DLT 任务之间的通信竞争问题: 研究生产环境中 DLT 任务之间的通信竞争现象,分析其产生原因和影响,并提出解决方案。
2.设计高效的通信调度算法: 基于 GPU 强度概念,设计高效的通信调度算法,优先调度 GPU 强度高的任务,从而最大化 GPU 利用率。
研究动机:
1.生产环境中 DLT 任务通信竞争普遍存在: 随着深度学习模型的规模不断扩大,DLT 任务在共享 GPU 集群中执行时,不同任务之间会产生通信竞争,导致 GPU 利用率低下,训练效率降低,集群收益受损。
2.现有通信调度方法无法有效解决通信竞争问题: 现有的 DLT 通信调度方法主要集中在单任务内部,忽略了不同任务之间的通信竞争,无法有效提高整体 GPU 利用率。
3.提高 GPU 利用率对 DLT 集群至关重要: GPU 利用率是 DLT 集群性能的重要指标,直接影响到训练效率和集群收益。因此,优化 GPU 利用率对于 DLT 集群至关重要。
研究意义:
- 提升 DLT 训练效率: 通过优化 DLT 集群的通信调度,减少通信竞争,可以提高 GPU 利用率,从而缩短训练时间,提升训练效率。
- 提高集群收益: GPU 利用率越高,集群的吞吐量越大,可以处理更多的训练任务,从而提高集群的收益。
- 推动 DLT 集群发展: 通过优化 DLT 集群的通信调度,可以促进 DLT 集群的发展,使其能够更好地满足日益增长的计算需求。
研究内容(算法、方法、技术、模型):
- GPU 强度概念:
定义 GPU 强度来衡量任务对 GPU 利用率的影响,并以此作为通信调度的依据。
GPU 强度越高,任务对 GPU 利用率的影响越大,因此在通信调度中应优先考虑。
- 路径选择算法:
设计路径选择算法,选择对高 GPU 强度任务影响较小的路径,避免通信竞争。
算法会根据任务的 GPU 强度和网络拓扑结构进行路径选择,以确保高 GPU 强度任务能够优先使用带宽较宽的路径。
- 优先级分配算法:
设计优先级分配算法,考虑 DLT 任务的特征(如迭代和计算-通信重叠),对任务进行优先级分配,优先调度 GPU 强度高的任务。
算法会根据任务的 GPU 强度、迭代时间、计算-通信重叠程度等因素进行优先级分配,以确保高 GPU 强度任务能够优先获得网络资源。
- 优先级压缩算法:
设计优先级压缩算法,将优先级分配结果压缩到有限的优先级级别下,最小化 GPU 利用率损失。
算法会根据任务的 GPU 强度、网络拓扑结构等因素进行优先级压缩,以确保高 GPU 强度任务能够优先获得网络资源,同时尽量减少低 GPU 强度任务之间的竞争。
主要贡献
- 对我们的多租户生产培训集群的分析表明,36.3%的DLT作业可能会遇到与其他作业的通信竞争,从而导致大量GPU浪费。我们认为作业间通信调度对于提高GPU利用率是必要的。我们在https://github.com/alibaba/alibaba-lingjun-dataset-2023上公开了我们的数据集。
- 我们将GPU利用率最大化这一NP完全(NPC)问题转化为GPU强度感知通信调度问题。我们设计了一个系统Crux来优化DLT集群中的GPU利用率。Crux引入了(1)一种路径选择算法,通过为具有较高GPU密度的作业选择最不拥塞的路径来缓解通信争用,(2)优先级分配算法,考虑DLT特性,如多次迭代和通信-计算重叠,以及(3)一种高效的优先级压缩算法,以适应实际NIC和交换机上有限的优先级。
- 我们的实验测试平台由96个Nvidia A100 GPU组成,表明Crux在实际模型(例如,GPT、BERT和ResNet)。我们基于生产跟踪(2,000 + GPU,5,000+作业)的模拟表明,与最先进的解决方案(Sincronia,CASSINI和TACCL)相比,Crux在各种集群网络架构下将GPU利用率提高了5%至23%。
创新点、创新性:
提出了 GPU 强度概念并构建了基于 GPU 强度的通信调度方法,从而有效地解决了 DLT 集群中任务之间的通信竞争问题,提高了 GPU 利用率和训练效率。
技术难点:
- 通信竞争的复杂性,以及如何准确评估和调度通信竞争。
- GPU 强度的计算,以及如何高效地计算 GPU 强度。
- 调度算法的设计,以及如何设计高效的调度算法。
- 系统的可扩展性和鲁棒性,以及如何提高系统的可扩展性和鲁棒性。
进一步研究思路 (Future Work):
Crux 论文提出的 GPU 强度概念和通信调度方法为 DLT 集群的性能优化提供了新的思路。未来研究可以从以下几个方面进行探索:
GPU 强度的细化: 考虑数据传输模式、数据类型、通信协议等因素,设计更精细的 GPU 强度计算方法,以更准确地反映任务的通信需求。
多目标优化: 在最大化 GPU 利用率的基础上,考虑最小化任务完成时间、提高任务公平性、最大化吞吐量等多目标,设计多目标优化算法,找到最优的调度策略。
自动化调度: 利用机器学习或强化学习技术,实现自动化调度,减少人工干预,提高调度效率,并更好地适应动态变化的 DLT 集群环境。
个人总结:
Crux引入GPU强度概念(即特异性指标)衡量作业对GPU利用率的影响。它们的调度决策并非是传统的基于单个作业的流量模式,考虑了不同作业间的竞争。使用GPU强度,Crux为不同的作业选择路径并分配优先级,以减轻通信争用。