Workflow
ByteRobust
icon
搜索文档
豆包是如何炼成的?字节放出自研万卡训练系统ByteRobust论文
机器之心· 2025-10-21 17:32
文章核心观点 - 大规模语言模型训练面临因GPU集群庞大而频繁发生的硬件和软件故障挑战,严重制约有效训练时间比率(ETTR)[1][2] - 字节跳动提出并部署了名为ByteRobust的稳健LLM训练基础设施,其核心设计理念是通过快速隔离故障、自动化容错和高效恢复机制,最大化ETTR [3][7][24] - ByteRobust在实际生产环境中表现卓越,在万级GPU集群上实现了高达97%的ETTR,并将恢复速度提升了超过10倍 [25][28][32] LLM训练规模与挑战 - LLM训练规模已达数万块GPU,例如LLaMA 3预训练动用了16,384块H100 GPU,xAI建立了10万块GPU的集群 [1] - 大规模训练伴随高故障率,Meta报告在16,000块GPU上硬件故障约每2.78小时发生一次 [1] - 传统“故障-停止-诊断-恢复”流程耗时从几小时到几天,极大限制了ETTR [2] ByteRobust基础设施概述 - ByteRobust旨在以最小非生产时间实现高效事件诊断和处理,核心目标为获得高ETTR [7] - 系统由控制平面和数据平面两大核心组件构成,监控管理LLM训练全生命周期 [8] - 控制平面负责协调异常检测、故障定位和恢复操作;数据平面提供实时可观测性、即时诊断和快速检查点回滚 [10][11] 核心设计理念:优先快速隔离 - 系统倾向于快速故障隔离而非精确定位,以避免大量GPU闲置 [13] - 结合轻量级实时检测与分层“停止-诊断”,以最小开销快速甄别故障机器 [14] - 应用数据驱动方法对运行时堆栈跟踪进行聚类分析,在故障域内隔离可疑机器,宁可“过度驱逐” [14] 自动化容错机制 - 系统将人为错误纳入设计考量,提出自动化容错框架 [18] - 框架结合实时检查、“停止-诊断”、原地重试、代码回滚和回放测试,以应对各类故障 [19] - 采用“延迟更新”方法,将用户代码变更与故障恢复过程合并 [20] 快速恢复与控制可变性 - 对于不改变机器分配的变更,使用“原地热更新”机制保留运行时环境 [22] - 利用预先配置且经过自检的“温备用”机器,避免整个任务的重新调度 [23] - 检查点模块将备份分布在不同并行组中,消除对远程文件系统的依赖,实现快速重启 [23] 实际部署与性能表现 - ByteRobust已实际部署超过一年,用于支持内部LLM训练 [24] - 在三个月内,系统通过自动化容错框架识别了38,236次显式故障和5,948次隐式故障 [26] - 故障统计覆盖778,135个训练任务,其中CUDA错误占比最高,达36.1% [27] - 在16,384块GPU上,温备用和热更新机制使恢复速度分别提升10.87倍和11.04倍 [28] - 高效检查点机制实现“每步检查点”,开销低于0.9%,显著加速故障切换 [31] - 在9,600块GPU上训练70B+密集模型时,实现了97%的ETTR [32] - 通过热更新机制部署更高效训练代码,在密集模型和MoE任务中分别实现1.25倍和1.58倍的MFU提升 [37]