FlagOS 新升级:统一通信库 FlagCX,全面提升多元算力统一通信技术生态

近日,智源研究院联合多家生态合作伙伴共同构建的开源统一通信库 FlagCX 迎来全面升级,将进一步推动多元芯片的通信优化与高效互联技术的发展。升级后的 FlagCX ,支持 6 家芯片,提供同构和异构下的全场景通信能力,实现高效异构混训全栈开源解决方案,并在异构集合通信算法和统一通信库的标准化方面取得新突破。
这是开源统一的 AI 系统软件生态 FlagOS 发展进程中又一个重要性突破。面向多元算力的统一通信库 FlagCX 属于 FlagOS 的重要组成部分,它同高效并行训推框架 FlagScale、高性能算子库 FlagGems,以及统一编译器 FlagTree 等一起构建了面向多种 AI 芯片的开源、统一系统软件生态,为产业提供一套完善的 AI 计算全覆盖的系统软件技术栈。

相比于 FlagCX 初始开源版本,当前版本实现了多项突破:
全面支持集合通信功能,涵盖同构和异构全场景,并实现多芯片自动拓扑探测功能。
高效的异构集合通信算法,并联合 FlagScale 为用户提供高效异构混训全栈开源方案。
完成 6 款芯片适配,统一通信库的标准化与产业生态合作获得重要进展。
开源地址:https://github.com/FlagOpen/FlagCX
一、全场景通信能力与多芯片自动拓扑探测
1.1 全面支持跨芯异构集合通信算法
FlagCX 在支持 Device-buffer RDMA 跨芯高性能 Send/Recv 操作的基础上,自研了异构跨芯集合通信 C2C 算法(Cluster-to-Cluster Algorithm,在异构集群中每个同构芯片形成的子集群在 FlagCX 中表示为 cluster),能支持单网卡、多网卡和异构子集群间不同网卡配置等多种场景,最大化利用网卡带宽。下表列出了 FlagCX 当前所支持的通信后端及对应的通信算子和执行模式(同构/异构),其中所有异构跨芯集合通信操作均通过 C2C 算法实现。

上表列出的同构通信后端是基于 FlagCX 统一适配器模块来实现对厂商原生通信库的兼容,包括 NCCL、IXCCL、CNCL、MCCL、XCCL 和 DUCCL 等,主要负责执行同构芯片间的通信操作。FlagCX Core 负责实现跨芯异构 Send/Recv 操作,并利用异构 Send/Recv 和同构通信后端来实现跨芯异构集合通信操作。
1.2 多芯片自动拓扑探测功能
FlagCX 新增服务器级的自动拓扑探测模块,支持自动识别服务器内部硬件拓扑和通过读取 xml 格式的统一拓扑文件来获取拓扑信息。拓扑模块通过调用厂商适配过的统一接口和读取服务器的系统信息,能实现对不同厂商服务器内部硬件拓扑的自动化探测。目前,拓扑模块可探测服务器内部的加速卡、网卡、CPU、PCIe Switch 及设备间的 PCI 链路等信息,并自动生成层级化的拓扑结构。更进一步,拓扑模块还能通过计算加速卡与网卡距离,为每个进程智能匹配最优网卡,显著提升跨节点通信效率与带宽利用率。下表展示了具体的拓扑探测相关功能:

二、高效异构集合通信算法与端到端异构混训
2.1 高效异构集合通信算法
单网卡异构场景
FlagCX 除了支持高性能的跨芯异构 Send/Recv 通信原语,还新增了基于 C2C 算法实现的跨芯异构集合通信原语。下图选择了三个代表性通信原语 Send/Recv、AllReduce、AllGather 分别在 A800+ChipA 和 A100+ChipB 上在单网卡异构场景下的通信性能测试。

从实测结果来看,在单网卡场景下:
Send/Recv 的通信带宽能达到峰值带宽的 90%
AllReduce 的通信带宽能达到峰值带宽的 75%~80%
AllGather 的通信带宽在 A800+ChipA 上能达到峰值带宽的 75%,而在 A100+ChipB 上能达到峰值带宽的 120%
上面通信带宽是按照传统同构通信算法理论通信量除以实际通信总时间得来,峰值带宽通过 perftest(https://github.com/linux-rdma/perftest)实测得来。之所以会出现理论计算带宽高于实测峰值带宽,是因为 FlagCX 的跨芯 C2C 通信算法不同于传统同构通信算法。以 AllGather 为例,FlagCX 的跨芯 C2C 算法在单网卡场景下是通过“同构 Gather+跨芯异构 Send/Recv+同构 Broadcast”三步实现,与传统 AllGather 算法对比如下:

上述公式中:
TAllGather 和 TC2C-AllGather 表示端到端通信耗时。
Nranks 和 Nclusters 分别表示参与通信的总 rank 数和总 cluster 数。
C 表示通信量。
BWinter 和 BWintra 表示 cluster 间带宽(本测试中即网卡带宽)和 cluster 内带宽(本测试中即机内带宽)。
可以看到,通过分层实现,由于同构 Gather 以及同构 Broadcast 的机内带宽远高于网卡带宽,可以近似忽略,所以 AllGather 的跨芯通信量大概从(Nranks-1)/Nranks 降低至(Nclusters-1)/Nclusters,从而使得端到端整体耗时开销减少,按照传统理论计算的带宽也因此高于实测峰值带宽。下一步 FlagCX 将引入专门针对异构跨芯集合通信算法评估方法,同时也会持续优化跨芯集合通信算法进一步提升通信效率。
多网卡异构场景
相比单网卡异构场景,多网卡异构场景的情况更复杂,有两个关键挑战:
1)如何在任意拓扑构型的异构子集群间实现高效通信;
2)如何最大化利用所有网卡的通信带宽来降低通信开销。
为了应对挑战,FlagCX 将 C2C 算法与自动拓扑探测功能进行结合:先通过自动拓扑探测来获取每个 rank 的最近网卡距离,筛选出网卡距离最近的 rank 来参与跨芯异构通信;然后,再根据 C2C 算法编排出针对特定网卡配置的跨芯异构集合通信算法实现。以跨芯 AllReduce 和 AllGather 为例:
C2C AllReduce
在所有 rank 均参与跨芯异构通信场景下,底层算法实现为“同构 ReduceScatter+跨芯 Send/Recv+同构 AllReduce”。
在其他多网卡配置下,底层算法实现对应为“同构 Reduce+跨芯 Send/Recv+同构 AllReduce”。
C2C AllGather
在所有 rank 均参与跨芯异构通信场景下,底层算法实现为“同构 AllGather+跨芯 Send/Recv+同构 Broadcast”。
在其他多网卡配置下,底层算法实现对应为“同构 Gather+跨芯 Send/Recv+同构 Broadcast”。

上图左和右分别为 C2C AllReduce 和 AllGather 在不同网卡配置下的性能对比,测试环境为 1*A800+1*Chip C。可以看到:
对于 C2C AllReduce,八个网卡(8-NIC)配置的实测跨芯通信带宽在 128M 以上通信量时超越单网卡(1-NIC)配置,而当通信量达到 4GB 时提升 2.7 倍。
对于 C2C AllGather,八个网卡(8-NIC)配置的实测跨芯通信带宽在 384M 以上通信量时超越单网卡(1-NIC)配置,而当通信量达到 4GB 时提升 2.5 倍。
这说明 C2C 算法在通信量较大的场景能够充分利用多网卡来提升异构通信效率,后续 FlagCX 会持续深度优化 C2C 算法来进一步加速通信。
2.2 高效异构端到端混训

FlagCX 已正式集成到 FlagScale 大模型训推一体框架中,两者结合为用户提供高效异构混训全栈开源方案。上表是 FlagScale+FlagCX 在不同测试环境上和 CPU 中转方案的混训性能对比,其中 CPU 中转方案是通过 GLOO 走 CPU RDMA,并尽可能进行了计算和访存重叠优化。从实测结果来看,FlagCX 相较 CPU 中转能获得 4%~10%不同程度的端到端性能提升。
三、通信库标准化及产业合作新进展
多家芯片适配进展:当前 FlagCX 已经完成了包括寒武纪、天数、沐曦、海光、昆仑芯、英伟达等多家厂商的多款芯片适配。
标准化进展:为了推动统一通信库在产业的广泛使用,智源研究院牵头十多家企业共同打造基于 FlagCX 开源技术的《人工智能 统一通信库接口规范》国家标准。目前该标准草案已经通过了 SC42 全国信息技术标准化技术委员会人工智能分技术委员会的评审,提交至 TC28 全国信息技术标准化技术委员会审议。
产业合作进展:
FlagCX 目前已经正式集成至飞桨 3.0,通过了飞桨 13 项集合通信单测和其他 25 项 CI 相关检查,表明 FlagCX 与飞桨具备较高的兼容性和稳定性。更进一步,我们还完成了端到端模型训练验证,成功通过飞桨 3.0 的动态图与静态图训练测试,集成了 FlagCX 的飞桨 3.0 在同构计算环境下的通信性能可媲美 NCCL,并能保证训练效率无损。
基流科技公司参与了 FlagCX 异构通信架构的设计与开发,并在实现过程中融合了基流高性能网络通信技术,同时将 FlagCX 应用于智能调度运维平台,并推出面向智算中心异构资源池化的高效通信解决方案,可实现优先级调度、拓扑感知调度等多种调度方式。
北京大学刘古月老师团队基于 FlagCX 进行了异构集合通信算法的创新,提出了异构集群基于厂商芯片构建同构子集群的分层拓扑抽象,并应用于异构集合通信算法 C2C 的实现中,同时还根据多网卡场景和跨芯通信量进行通信效率优化研究。
FlagCX 已接入浪潮信息 EPAI 平台,支持多元异构平台的大模型训练和推理,实现多元芯片间的直接通信,提高系统整体计算性能。特别对于大模型推理,FlagCX 将与 EPAI 的 PD 分离推理系统深度结合,实现 Prefill 和 Decoding 集群多元异构配置以及高效通信,充分发挥不同芯片在 Prefill 和 Decoding 阶段的计算性能。
此外,中国电信研究院也引入 FlagCX,并与智源研究院及芯片厂商开展相关研究。通过网络、通信库与软件框架的协同优化,在异构多芯混合训练、异构 PD 分离推理等试验中取得显著成果,混训效率达同构的 95%以上,推理性能提升 30%以上。
FlagCX 是智源研究面向大模型、支持多种 AI 芯片的开源统一软硬件技术栈 FlagOS 的重要组成部分,诚挚欢迎更多伙伴参与共建,一起共创多元算力开源创新生态。接下来,FlagCX 将适配更多芯片,进行通信领域前沿创新,并推动 FlagOS 生态建设,赋能更多 AI 产业应用场景!

版权声明: 本文为 InfoQ 作者【智源研究院】的原创文章。
原文链接:【http://xie.infoq.cn/article/499f13c6b75ce448afcf248ec】。未经作者许可,禁止转载。
评论