一次性讲明白,如何搞定一个可以支持多芯混合训练的 AI 集群
1 如何建立和加速一个 GPU 集群
1.1 实现 GPU 互联互通
1.2 制定分布式并行策略
1.3 部署 AI 加速套件
2 建立不同芯片集群的差异
在互联互通上,昆仑芯服务器内部通过 XPU Link 进行连接,服务器之间通过标准的 RDMA 网卡进行连接,卡和卡之间使用 XCCL 通信库进行相互通信。昇腾 910B 服务器内部通过 HCCS 进行连接,服务器之间通过华为自研的内置 RDMA 进行连接,卡和卡之间使用 HCCL 通信库进行相互通信。 在并行策略上,NVIDIA GPU 和昆仑芯采用单机 8 卡的部署方式,昇腾 910B 则是机内 16 卡分为 2 个 8 卡通信组 。这意味着在 AI 框架下形成不同的集群拓扑,需要有针对性地制定分布式并行策略。 在 AI 加速套件上,由于 GPU、昆仑芯、昇腾等芯片在计算能力,显存大小,I/O 吞吐,通信库等均存在差异,故需要面向具体芯片进行特定优化。最后的结果,就是每一种芯片,有一个各自对应的算子库,以及相应的加速策略。
3 建立和加速多芯混合集群的挑战和方案
不同类型的卡的物理连接方式和集合通信库是完全不同的,这导致他们之间无法直接互联互通。 我们需要为跨芯片的互联互通设计一套新的物理网络架构,并配套相应的集合通信库方案,使得通信效果达到最优。 在集群建设完成后,由于不同种类卡的性能不一致,这就导致在单一芯片集群中,基于均匀切分计算量制定分布式并行策略的方法,将无法确保不同芯片可以按照相同节奏计算和通信,导致算力浪费。 我们需要为此找到一套最优的分布式并行策略,使得这些不同种类的芯片能够在计算和通信的节奏上保持一致,使得集群算力效能最大化。 由于不同卡的加速方法存在差异,生态能力和调优策略发展程度不一,这将导致集群中的各类算力效能无法充分发挥,即 MFU 未达到理想值( MFU 名词解释详见文末)。 我们需要为所有芯片提供统一的加速抽象以便屏蔽这些差异性,同时又能提供最优的 AI 加速套件,确保各种芯片均可以达到 MFU 理想值,实现高效能运行。
3.1 跨芯片的互联互通,构建多芯混合集群
3.2 自适应并行策略搜索,提升多芯混合训练任务的整体效能
3.3 Accelerator 抽象,屏蔽硬件差异充分发挥不同芯片的算力效能
3.4 多芯混合训练的技术指标
4 新旧算力统一融合,满足未来业务增长
5 名词解释
MFU,Model FLOPs Utilization,MFU =(实际观测到的模型吞吐量)/ (假设峰值 FLOPs 下的理论最大吞吐量)
推荐阅读