微信扫码
添加专属顾问
我要投稿
探索AI训练稳定性的发展历程和百度百舸如何提升万卡集群稳定性。核心内容:1. AI训练稳定性的演进及早期运维模式2. 大模型时代对稳定性管理的挑战和案例分析3. 百度百舸集群训练稳定性全景图与关键指标提出
1. AI 训练稳定性的演进历程
2012 年 ImageNet 竞赛中 AlexNet 的横空出世,开启了现代 AI 发展的新纪元。彼时我们不会想到,十年后支撑 AI 训练的 GPU 集群会从研究室里的几台服务器,发展成需要专门供电系统的万卡级计算矩阵。在这个算力爆发式增长的过程中,训练系统的稳定性管理正经历着从「简单运维」到「精密工程」的深刻变革。
1.1 早期的小模型时代:手动运维的黄金年代
2022 年之前的 AI 训练,更像是手工作坊式的精雕细琢。大多数训练任务只需十几块 GPU,利用 PyTorch 或 TensorFlow 的数据并行功能就能轻松应对。记得那时算法工程师们有个共识:如果训练遇到问题,重启往往比排查更高效。
当时我们构建的监控系统就像汽车仪表盘,只能显示最基本的任务状态。当训练意外中断时,工程师们会像侦探一样翻查日志 —— 如果发现是 GPU 报错,就联系运维同事。运维人员则带着「NVIDIA三件套」(nvidia-smi、dcgm、nsys)到机房巡检,像老中医把脉般通过温度、功耗等指标判断硬件状态。这种工作模式虽简单,但应对数十卡规模的集群还算游刃有余。
1.2 大模型风暴:从量变到质变的冲击
ChatGPT 的登场如同打开潘多拉魔盒,将 AI 训练带入新的纪元。当我们开始部署千卡/万卡集群时,才发现原有的运维体系就像用小渔网捕鲸鱼 —— 完全无法匹配新需求。
让我们通过百度百舸经历过的一个真实案例来深入理解这个问题:
2. 百度百舸集群训练稳定性全景图
站在现在的时间点回望,AI 训练稳定性已从辅助功能演变为核心基础设施。就像现代建筑中的抗震结构,它虽不直接参与空间构成,却是万丈高楼得以屹立的关键。当行业向着数万卡集群迈进时,这套隐形护甲的质量,将直接决定 AI 进化的速度与边界。
在 2024 年百度百舸对训练过程的生命周期进行了更细致的拆分,提出了「无效训练时间」这一关键指标,并致力于将其最小化。具体来说:
任务无效训练时间 = 故障中断次数 × 任务故障恢复时长 + 任务常态写 Ckpt 总时长
其中,任务故障恢复时长 = 故障感知召回耗时(自动/人工定位)+ 任务调度耗时 + 任务初始化耗时 + 任务重算时长。
通过这个公式可以看出,要降低无效训练时间,需要「围绕基础设施稳定性」、「任务容错」两个维度来系统展开,重点解决三个方面的问题:
提高基础设施的交付质量。
提高任务故障容错的召回率、准确率和时效性。
优化 checkpoint 机制,减少保存时间和恢复时的重算时间。
经过容错架构的整体变革,百度百舸形成了从 「任务负载 — 框架 — 通信 — 基础架构」全链路的自动异常感知、诊断、恢复能力,可覆盖 90%+ 的训练异常场景,时效性最快可以实现秒级异常感知、分钟级定位,以及平均 3 分钟的故障自愈能力。
基础设施的交付质量保障是稳定性的基础。
CPU 时代,机器的交付前可能仅会跑一些常规的 CPU 计算、网络的压力测试,并不会从业务视角去评估基础架构,机器交付后硬件异常的故障频率相对较少。有硬件故障时,通常走工单系统人工换机用户相对是可接受的。
而 GPU 时代,AI Infra 的交付则需要考虑 CPU、GPU、RDMA 网络、存储,甚至机房的功率、温度等各方面因素,遗漏任何一个环节都会成为后续稳定性的隐患。在交付给客户后,机器也可能会由于长时间的高负载运行频繁出现硬件故障,而 GPU 机器的高昂成本,使客户对节点故障感知、换机的时效性提出了非常高的要求。
因此百度百舸对 GPU 机器交付前及交付后的稳定性质量进行了系统性管理:
交付前,百度百舸会对机器进行 200 多项指标检测,然后进行 48 小时烤机,以及 NCCL-Test 的机内、机间的大环、同号卡通信性能基准测试,端到端的大模型训练、推理性能基准测试。
交付后,需要能够实时的感知节点故障及定期巡检,并具备分级处理的自愈能力,例如 Error 级别的故障实现自动排水、重启,Fault 级别故障实现自动换机。
任务容错最重要的就是提升故障的召回率与准确率,即如何能够尽可能的准确识别、定位所有故障。我们将故障分类两类:显式故障和隐式故障。
显式的故障通常比较容易召回,我们将实践积累的各种进程异常状态及各类报错pattern形成专家知识库,再结合硬件感知服务(HAS Agent)的硬件全链路 10 秒级监控能力,可以实现显式故障的召回率达到 95%+。
隐式的异常则往往很难轻易的识别,例如训练进程 hang、慢节点就是典型的隐式故障,需要丰富的经验积累才能准确的识别出异常。
[E ProcessGroupNCCL.cpp:828] [Rank 1] Watchdog caught collective operation timeout: WorkNCCL(SeqNum=15173, OpType=ALLREDUCE, Timeout(ms)=1800000) ran for 1802710 milliseconds before timing out.
[E ProcessGroupNCCL.cpp:828] [Rank 0] Watchdog caught collective operation timeout: WorkNCCL(SeqNum=15173, OpType=ALLREDUCE, Timeout(ms)=1800000) ran for 1802713 milliseconds before timing out.
很多公司、实验室在面对 hang 的问题时,会在采用框架层插桩的方式来 trace 训练进程,这种方式通常是比较直接且准确的,但是有比较强的侵入性,而且可能还会有一些性能开销。对于云厂商来说,需要寻找对用户更透明、更无损的方式来感知、定位 hang 异常。
如何感知训练 hang,以百度百舸的产品设计思路为例,我们可以从以下几个方向去思考:
训练进程 hang 的最直观表现是什么?
人工判断一个任务是否 hang 了,最直接的方式就是看是否所有 worker 的任务日志一段时间内都不输出日志了,所以 hang 自动感知的第一种方法就是采集所有 worker 的日志,并判断所有 worker 日志中最后一行日志是否为 x 分钟前的(x 小于 Pytorch 的通信超时时间,例如 8 分钟),如果是则基本可以判定为 hang。
百度集合通信库 BCCL是百度智能云推出的一款面向大模型训练场景优化的集合通信库。
BCCL 基于开源的 NCCL 进行了功能扩展和能力增强,针对大模型训练场景在可观测性、故障诊断、稳定性等方面进行优化,进一步提升集合通信库的可运维能力。相比 NCCL,BCCL 的关键特性如下:
* 可观测性:新增集合通信带宽实时统计能力;
* 故障诊断:新增集合通信 hang 时的故障诊断能力;
* 稳定性:增强网络稳定性和故障容错能力;
* 性能优化:提升大模型训练主流 GPU 芯片的集合通信性能。
LSK & YZ,公众号:百度智能云技术站专为大模型训练优化,百度集合通信库 BCCL 万卡集群快速定位故障
此类技术已在百度百舸的万卡规模训练集群中验证,相比单纯依赖应用层监控的方案,将隐式故障的平均检测时间从分钟级缩短至秒级,诊断准确率提升 40% 以上。
通过与既有硬件故障感知服务、BCCL 通信库监测体系联动,百度百舸形成了覆盖从硬件到系统内核再到应用层的立体化诊断能力。
任务发生异常后,上文中我们提到需要经过故障自动感知、诊断和自愈等 3 个环节,那么减少中断时间的核心思想,就是尽可能的缩短这 3 个环节的时间,通过多维度的感知、诊断手段可以将故障发现、定位的时效性降低至分钟级甚至秒级。自愈则需要能够根据不同的诊断结果进行分级恢复和故障屏蔽的能力:
通过多级重启策略,尽可能避免单点故障引发全部节点的重新调度。在万卡级别的训练场景中,百度百舸将大部分训练异常场景恢复时间从过去的 30min 缩短至现在的 30s 内,成功率到 95%+。
除了上述的多级任务重启策略外,另一个提高任务故障恢复效率的重要手段就是减少训练重算时间。在探讨具体技术方案之前,我们先来看看目前主流的 checkpoint 保存策略。
传统的 checkpoint 保存通常采用固定间隔策略,比如每隔 N 个 step 或每隔 T 小时保存一次,这种方式实现简单但缺乏灵活性,可能会产生大量冗余存储,同时在故障发生时可能会损失较多训练进度。
而触发式 checkpoint 则是一种更智能的方案,它根据特定条件或异常事件(如故障、显存不足、显式指令等)动态触发模型状态保存。其核心目标是通过灵活的控制保存时机,减少不必要的存储开销和训练中断时间,从而降低因频繁或冗余保存导致的重算时间浪费。
随着大模型训练规模的扩大,还有一种更激进的「零重复 checkpoint」技术,即在每个训练 step 都保存一次 checkpoint。这种方案的优势在于可以将重算时间降到最低,确保故障发生时能够从最近的 step 恢复,几乎不会损失训练进度。但其显著的缺点是存储开销巨大,即使采用增量式存储,仍然需要相当大的存储空间和 I/O 带宽。此外,频繁的 checkpoint 操作也可能影响训练性能。
相比之下,触发式 checkpoint 走的是一条平衡之路。我们来看下它实现的几个核心要点:
集成容错:训练进程集成容错的故障感知与定位机制,在进程退出前自动触发保存。这种主动感知机制能够在故障发生的第一时间保存训练状态,最大限度减少进度损失。
高速转储:异步 checkpoint 保存机制会将 checkpoint 暂存到共享内存中,再由外部程序转储至磁盘。当某个节点异常时,容错组件会拉起新节点,并在新节点训练进程启动前,利用 RDMA 技术实现 checkpoint 快速从故障节点转储至新节点,这大大减少了从远程存储拉取 checkpoint 的时间。
冗余备份:触发式 checkpoint 也并非完美无缺,例如在节点发生内核 crash 等严重故障时,可能无法触发自动保存。因此,需要通过定期的冗余备份机制进行兜底,确保 checkpoint 不会完全丢失。
实践表明,当触发式 checkpoint 与异步、增量式的 checkpoint 机制结合使用时,可以在保证数据安全性的同时,显著提高 checkpoint 保存效率,减少训练重算时间。
相比零重复 checkpoint 的重型方案,触发式 checkpoint 提供了一个更实用的折中方案,在合理的存储开销下实现较好的容错效果。当然,具体选择哪种方案,还需要根据实际的训练规模、硬件条件和可用资源来权衡。
随着分布式训练规模的持续增长,相信未来会出现更多创新的 checkpoint 方案,比如基于预测的主动保存策略、多级存储架构的智能调度等,这些都将为提高大规模训练的可靠性提供新的可能。
6. 业务发展对稳定性的要求
AI 训练的稳定性管理已经演变为智能时代的精密工程。从最初靠人工重启解决问题的摸索阶段,到如今能自动感知异常、快速恢复的智能系统,每一次进步都映照着算力规模的跨越式发展。
让人不禁思考,在未来十万卡集群的算力洪流中,或许会出现更精妙的动态平衡方案:既能像鹰隼般敏锐捕捉故障征兆,又能如雁群迁移般智能调度资源,在秒级恢复与 PB 级存储成本之间找到新的平衡支点。
目前百度百舸支持厂内千卡和万卡集群有效训练时长已经可达 99.5%,为客户大模型的预训练保驾护航,比如国内第一个数学大模型——九章算术,国内第一个类 Sora 大模型 —— Vidu 等。
活动推荐
往期推荐
阿里巴巴AIGC技术与数据分析的融合实践
蔚来知识平台的建设与应用
当AI狂奔遇上数据泥潭——AI数据全链路闭环加速沙龙分享破局之道
Instagram与X(Twitter)等社交数据集获取攻略
腾讯云基于 Iceberg 的批流一体实践
高途基于 Iceberg 和 Amoro 的湖仓一体架构实践
DataWorks Copilot在ETL与BI的应用实践
安全与能效的博弈:换电站智能充电系统的算法突围战
知乎技术沙龙干货分享:大模型推理框架 ZhiLight 实践
大模型驱动的DeepInsight Copilot在蚂蚁的技术实践
点个在看你最好看
SPRING HAS ARRIVED
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2025-03-21
快速上手:开发第一个MCP Server
2025-03-21
在Ubuntu服务器4x2080ti(22G)上部署QwQ-32B + SGLang教程
2025-03-21
MCP Server 开发必备:MCP Inspector 调试工具
2025-03-21
AI一周写出ICLR研讨会论文!成果简洁有效获审稿人大赞
2025-03-21
Prompt caching,一篇就够了。
2025-03-20
「AI开发进入USB时代!」Cherry Studio+MCP协议实测:3分钟连通本地/云端/API,效率飙升10倍!
2025-03-20
Xinference+Dify本地部署全攻略:知识库搭建与模型配置详解(附一键安装包)
2025-03-20
Cursor实战:高效搞定多表关联
2025-02-04
2025-02-04
2024-09-18
2024-07-11
2024-07-09
2024-07-11
2024-07-26
2025-02-05
2025-01-27
2025-02-01
2025-03-20
2025-03-16
2025-03-16
2025-03-13
2025-03-13
2025-03-11
2025-03-07
2025-03-05