Llama3.1 训练平均 3 小时故障一次,H100 万卡集群好脆弱,气温波动都会影响吞吐量
- 量子位
2024-07-29 17:54
每 3 个小时 1 次、平均 1 天 8 次,Llama 3.1 405B 预训练老出故障,H100 是罪魁祸首?
最近有人从 Meta 发布的 92 页超长 Llama 3.1 论文中发现了华点:
Llama 3.1 在为期 54 天的预训练期间,经历了共 466 次任务中断。其中只有 47 次是计划内的,419 次纯属意外,意外中 78% 已确认或怀疑是硬件问题导致。
而且 GPU 问题最严重,占了 58.7%。
Llama 3.1 405 模型是在一个含 16384 块 Nvidia H100 80GB GPU 集群上进行训练的。虽说针对大规模系统有句老话:唯一确定的就是会出故障。
但这一问题还是引起不少网友关注。
放慢速度,check 一下产品吧。
老出故障,咋整?
具体来看,在 419 次意外中断中,148 次(30.1%)是由各种 GPU 故障(包括 NVLink 故障)引起的,72 次(17.2%)可以具体到是由 HBM3 内存故障引起。
鉴于 H100 的 700W 高功耗和热应力,出现这样的结果也并不意外。
有意思的是,54 天内只有两次是 CPU 出现了故障。
除了 GPU 外的另一半故障由众多因素导致,比如软件 Bug、网络电缆等等。
不过最终,Llama 3.1 团队保持了超 90% 的有效训练时间。只有三起故障需要人工大幅介入,其余的都自动化处理了。
那么他们是如何应对的?
为了增加有效训练时间,Llama 3.1 团队表示减少了任务启动和 checkpointing 时间,并开发了一些工具来快速诊断和解决问题。
其中广泛使用了 PyTorch 的内置 NCCL flight recorder(Ansel 等人 2024 年开发),是一个可以把集体元数据和堆栈跟踪记录到一个循环缓冲区里的功能,这样就能快速诊断大规模卡顿和性能问题,特别是跟 NCCLX 有关的问题。
用这个工具,团队能有效记录每次通信事件和每个集体操作的持续时间,在 NCCLX Watchdog 或 Heartbeat 超时时还能自动导出跟踪数据。
还可以根据需要,通过在线配置更改(Tang 等人 2015 年提出的方法)来选择性地启用一些计算量更大的跟踪操作和元数据收集,而不需要重新发布代码或重启任务。
团队表示,在大规模训练中调试问题很复杂,因为网络同时使用了 NVLink 和 RoCE。通过 NVLink 传输数据通常是通过 CUDA 内核发出的加载 / 存储操作来完成的,如果远程 GPU 或 NVLink 连接出了问题,往往表现为 CUDA 内核里的加载 / 存储操作卡住了,却不会返回明确的错误代码。
而 NCCLX 通过与 PyTorch 紧密配合,提高了故障检测和定位的速度和准确性,让 PyTorch 能够访问 NCCLX 的内部状态并跟踪相关信息。
虽然无法完全避免 NVLink 故障导致的卡顿,但系统会监控通信库状态,在发现卡顿时自动超时。
此外,NCCLX 还会跟踪每次 NCCLX 通信的内核和网络活动,并在失败时提供 NCCLX 集体操作内部状态“快照”,包括所有等级之间已完成和待处理的数据传输。团队通过分析这些数据来调试 NCCLX 的扩展问题。
有时,硬件问题可能导致某些部分虽然看起来还在运行,但速度变慢,这种情况很难被发现。即使只有一个部分变慢,也可能拖慢数千个其它 GPU 的速度。
为此团队开发了一些工具,可以优先处理某些可能有问题的进程组的通信。通常只需要调查几个最可疑的对象,就能有效找出那些变慢的部分。
团队还观察到了一个有趣的现象 —— 环境因素对大规模训练性能的影响。在训练 Llama 3.1 405B 时,吞吐量会根据一天中时间的不同而有 1-2% 的变化。这是因为中午温度较高,影响了 GPU 动态电压和频率调节。
在训练过程中,数万个 GPU 可能会同时增加或减少功耗,比如在所有 GPU 等待 checkpointing 或集体通信完成时,或者在整个训练任务启动 / 关闭时。这种情况发生,可能导致数据中心的瞬时功耗波动达到数十兆瓦,对电网来说是个不小的考验。
团队最后还表示:
随着未来更大的 Llama 模型扩展训练规模,这一挑战将持续存在。
AI 集群问题正待破壁
Meta2022 年首次分享了其 AI 研究超级集群(RSC)的详细信息,当时拥有 16000 个 NVIDIA A100 GPU,帮助其构建了第一代 AI 模型,在 Llama 初代和 Llama 2 开发中都发挥了重要作用。
△ 来自 Meta
今年三月份,Meta 又公开了 24576 个 NVIDIA H100 GPU 的 AI 集群,支持 Llama 3 及之后模型。
更是定下了到今年年底增加 350000 个 NVIDIA H100 GPU 的目标,作为整体算力的一部分(整体算力近 600000 个 H100 GPU)。
这么大的规模,emmm 可不是个持续性的挑战嘛。当然,大规模 AI 集群会给模型训练造成故障是一个有些“远古”的问题,很早之前就有相关研究。
H100 本身什么含金量无需多言。
在去年最新 MLPerf 训练基准测试中,英伟达 H100 集群,横扫八项测试,全部创下新纪录,并且在大语言模型任务中表现尤为突出。
11 分钟内训练一遍 GPT-3,8 秒训完 BERT。在大语言模型任务中,H100 集群的加速性能逼近线性增长。即随着集群处理器数量增加,加速效果也几乎同比增加。
意味着在集群内 GPU 之间的通信效率非常高。
除此之外,H100 还完成了推荐算法、CV、医学图像识别以及语音识别等任务,是唯一一个参加 8 项测试的集群。
不过,SemiAnalysis 一个月前的一篇文章指出,构建大规模 AI 算力集群非常复杂,远远不只是有没有钱买卡的事。
在电力、网络设计、并行、可靠性等很多方面都面临局限。
参考链接:
[1]https://ai.meta.com/research/publications/the-llama-3-herd-of-models/
[2]https://engineering.fb.com/2024/03/12/data-center-engineering/building-metas-genai-infrastructure/
[3]https://www.semianalysis.com/p/100000-h100-clusters-power-network
本文来自微信公众号:量子位(ID:QbitAI),作者:西风
广告声明:文内含有的对外跳转链接(包括不限于超链接、二维码、口令等形式),用于传递更多信息,节省甄选时间,结果仅供参考,IT之家所有文章均包含本声明。