1 集合通信对分布式训练至关要紧在分布式训练中,每一起 GPU 只负责处理部分模型或数据。集群中区别 GPU 之间经过集合通信的方式,完成梯度同步和参数更新等操作,使得所有 GPU 能够做为一个整体加速模型训练。倘若有一起 GPU 在集合通信中出了情况,将会引起其他 GPU 处在等待状态,直到这块 GPU 完成数据同步,集群中所有 GPU 才会起始后续工作。因此,集合通信性能直接影响了分布式任务的速度,决定了集群中所有 GPU 能否形成合力加速模型训练。
为了最大提高集合通信的性能,在基本设备层面,集群一般采用基于 RDMA 的高性能理学网络,在任务运行时运用集合通信库进行加速。
2 大模型对系统的运维能力和稳定性提出新需求
咱们晓得,大模型的训练任务时长以周或月为周期,集群规模在千卡乃至万卡以上规模。这引起在全部任务过程中会出现各样故障,引起资源利用率不高或任务中断。这使得大模型的训练任务,不可只看重集群规模和性能,更必须关注系统的运维能力和稳定性。
倘若系统的运维能力和稳定性不足好,将会降低集群的「有效训练时长」,延长项目时间产生昂贵的时间成本。例如完成全部训练任务花了 30 天,结果有 10 天是在排除各类故障,这是不可接受的。
在分布式训练任务中,做为系统核心组件之一的集合通信库,一样必须面向大模型场景,在系统的运维能力和稳定性上进行优化。
3 百度集合通信库 BCCL 概述
百度集合通信库 BCCL(Baidu Collective Communication Library)是百度智能云推出的一款面向大模型训练场景优化的集合通信库,是百度百舸 3.0 中的要紧组件。
BCCL 基于开源的 NCCL 进行了功能扩展和能力加强,针对大模型训练场景在可观测性、故障诊断、稳定性等方面进行优化,进一步提高集合通信库的可运维能力。同期,BCCL 针对百度智能云的特定 GPU 芯片进行了集合通信性能优化,进一步提高资源利用率。相比 NCCL,BCCL 的重要特性如下:可观测性:新增集合通信带宽实时统计能力;故障诊断:新增集合通信 hang 时的故障诊断能力;稳定性:加强网络稳定性和故障容错能力;性能优化:提高大模型训练主流 GPU 芯片的集合通信性能。接下来,咱们将介绍 BCCL 在以上 4 个方面的能力。
4 可观测性:集合通信带宽实时统计4.1 背景在训练过程中,有时候会显现任务正常运行,然则集群的端到端性能下降的状况。显现这类问题,可能是集群中任一组件引起的。此时候就必须运维工程师对集群进行全面的检测。4.2 问题其中,存储系统、RDMA 网络、GPU 卡等一般都配有实时可观测性平台,能够在不中断任务运行的状况下判断是不是存在反常。相比之下,针对集合通信性能的判断,则缺乏实时和直接的手段。日前,若可疑集合通信存在性能问题,只能运用如下 2 种手段:运用 RDMA 流量监控平台进行故障排查。这种办法仅能间接推测出跨机集合通信性能是不是有反常。停止训练任务释放 GPU 资源,运用 nccl-test 进行二分查询,最后锁定显现故障的设备。虽然第 2 种办法能够完成集合通信反常的诊断,然则测试场景比较有限,只能判断是不是有常规的硬件反常问题。同期全部过程中会引起训练中断,产生昂贵的时间成本。4.3 特性和效果BCCL 的实时集合通信带宽统计功能,能够在训练过程中对集合通信性能进行实时观测,准确地展示集合通信在区别周期的性能表现,为故障诊断排除、训练性能调优等供给数据支撑。即使在繁杂通信模式下,BCCL 经过精确的打点技术依然能供给准确的带宽统计的能力。在集合通信性能反常的故障排除方面,能够进一步按照区别通信组的性能缩小故障范围。在混合并行模式下,能够经过多个性能反常的通信组的交集进一步确认故障节点。在训练性能优化方面,能够评定该带宽是不是打满硬件上限,是不是有其他的优化策略,为模型调优供给更加多的监控数据支撑。
5 故障诊断:集合通信故障诊断
5.1 背景
设备故障引起的训练任务反常停止,亦是大模型训练任务时常出现的情况。故障出现后,通常都会有报错日志或巡检反常告警,例如能够发掘某个 GPU 存在反常。在训练任务反常时,咱们只必须匹配反常时间点是不是有关联反常事件或告警,就可确认故障 root cause。除此之外,还存在着一类不告警的「静默故障」。当出现故障时,全部训练任务 hang 住,没法继续训练,然则进程不会反常退出,亦没法确认是哪个 GPU 或哪个故障节点引起训练任务 hang。然而,此类问题的排查难点在于,该类故障不会立刻出现,训练任务能够正常起步并正常训练,然则在训练超过一按时间后(可能是几个小时或数天)忽然 hang 住。排查时很难稳定复现该故障,引起排查难度进一步加强。5.2 问题因为集合通信的同步性,当某个 GPU 显现故障时,其他 GPU 仍会认为自己处在正常地等待状态。因此呢,当通信过程中断时,无 GPU 会输出反常日志,使得咱们很难快速定位到详细的故障 GPU。当上层应用程序在某一多 GPU 的集合通信操作中 hang 时,应用程序亦只能感知到某个集合通信组(故障 comm)显现了问题,却没法精确地判断是哪个 GPU 引起了此次集合通信的反常。运维工程师一般运用 nccl-test 来尝试复现和定位问题,然则因为压测时间短、测试场景简单,很难复现集合通信 hang。在百度集团内部排查此类问题时,首要停止线上的训练任务,而后进行长期的压测,例如针对现有训练任务模型进行切分,对集群设备进行分批次压测,持续缩小故障范围,从而确认故障机。排查代价一般必须 2 天乃至更加多。这类故障排查的时间,将带来巨大的集群停机成本。5.3 特性和效果为了应对这一挑战,在训练任务正常运行时,BCCL 实时记录集合通信内部的通信状态。当任务 hang 时,BCCL 会输出各个 rank 的集合通信状态。运维工程师能够按照这些数据特征来进一步缩小故障 GPU 的范围。经过这种办法,BCCL 经过一种近乎没损的方式实现了故障机的快速定位,大幅度加强了问题排查的效率。
6 稳定性:网络稳定性和容错加强6.1 背景在模型训练过程中,单个网络端口偶发性的 updown 会引起当前进程反常,从而导致全部训练任务退出。然而,单端口的偶发性 updown 在理学网络是不可避免的。6.2 特性和效果BCCL 针对此类偶发性的反常场景,进行了故障容错以避免任务退出,提高训练任务的稳定性。
掌控面容错能力提高:在训练任务起步时,一般会因为偶发性的网络故障或其他故障引起训练任务起步失败。BCCL 针对平常的偶发性反常故障增多相应的重试机制,保证训练任务正常起步。
数据面容错能力提高:在训练任务正常运行时,偶发性的网络抖动可能引起 RDMA 重传超次,从而引起全部训练任务反常。BCCL 优化了 RDMA 重传超次机制,提高训练任务的健壮性。
7 性能优化:集合通信性能优化针对大模型训练场景的主流 GPU 芯片,集合通信性能还存在继续提高的空间,进一步对任务进行加速。BCCL 针对百度智能云供给的主流的 GPU 芯片进行了深度优化。以双机 H800 测试环境为例,BCCL 相比 NCCL 带宽利用率可提高 10%。8 总结2023 年 12 月 20 日,百度百舸·AI 异构计算平台 3.0 发布,它是专为大模型优化的智能基本设备。借助 BCCL 在运维能力和稳定性进行的优化,使得百度百舸平台的有效训练时长达到 98%,带宽的有效利用率能够达到 95%。- - - - - - - - - - END - - - - - - - - - -点击阅读原文,认识 BCCL 更加多信息
传送门 大模型重构云计算AI 原生时代的云计算大规模 AI 高性能网络的设计与实践GPU 容器虚拟化新能力发布和全场景实践面向大模型的存储加速方法设计和实践向量检索在大模型应用场景的技术和实践大模型时代的异构计算平台高性能网络建设指南,《智算中心网络架构白皮书》开放下载
|