公开课预告
01 背景
02 摘要
Vela:集成于 IBM Cloud 的 AI 超级计算能力,提供可扩展、动态、多租户、多地域的 Infra,支持大规模模型训练及其他 AI 工作流程(A100)。
Blue Vela:专为大规模、高要求 AI 模型训练任务优化的本地托管环境(H100)。
03 Vela:IBM Cloud 的 AI Infra 建设
3.1 Vela 架构
每个节点 8 个 80GB 的 A100 GPU,通过 NVLink + NVSwitch 全互联。
节点搭载第二代 Intel Cascade Lake CPU。一年后,系统规模扩展了近两倍,新增节点使用第三代 Intel Ice Lake CPU。
每节点配备 1.5TB 内存 和 4 块 3.2TB NVMe。
为支持分布式训练,计算节点包含 4 个 100Gbps NIC,通过双层 Spine-Leaf CLOS 互联。(PS:其实下图中展示的每个 PCIe Switch 对应一个 2x100 Gbps 的 NIC 和两个 GPU。相当于总共 4 个 2x100 Gbps 的 NIC)
上述提到每个机架提供 1.6Tbps 的跨机架带宽,而 6 个节点理论带宽上限为 6*4*100Gbps=2.4Tbps,因此扩展后相当于 Leaf 的上行和下行是有收敛的。也许采用的是 40 个 100 Gbps Port 的 Switch,NIC 占用了 24 个 Port,只剩下 16 个 Port?
散热系统是否能够满足需求?毕竟从 3 个节点扩展到 6 个节点的功耗翻倍,散热也会明显增加。
3.1.1 网络
RDMA over Converged Ethernet,也就是 RoCE
GPU-Direct RDMA,也就是 GDR
此过程首先在源端对 RoCE 数据包头部的服务类型(ToS)字节进行标记。ToS 字节的前六位预留给 DSCP(Differentiated Services Code Point)标签,后两位则保留给拥塞通知(ECN)标签。作者为 RoCE 流量打上特定的 DSCP 标签及 ECN 值,分别用于使交换机通过专用队列处理 RoCE 流量,以及在 ECN 字段中指示该队列发生拥塞的情况。
其次,Vela 网络交换机配置为监控 RoCE 队列的积压情况,根据 RoCE 队列长度计算是否存在拥塞,并相应地标记 ECN 字段。
最后,当接收方收到带有拥塞指示的 RoCE 数据包时,会向发送方回传一个高优先级的消息,即拥塞通知数据包(CNP)。
对于 8MB 的消息,GDR 提供 2GB/s 的带宽,而 TCP 仅提供 0.2GB/s,差距达到 10 倍。这种较小消息带宽的提升主要归因于 GDR 情况下数据包路径缩短带来的延迟减少。
对于 500MB 及更大的消息,GDR 提供的带宽超过 20GB/s,最高可达 30GB/s,而 TCP 则在 6GB/s 左右达到饱和,差距为 3 至 5 倍。使用 TCP 时,连接 CPU 和 NIC 的链路成为瓶颈,因为数据需要从 GPU 复制到 CPU,再从 CPU 复制到 NIC。而采用 GDR 时,数据直接从 GPU 传递到 NIC,消除了这一瓶颈链路。
3.1.2 节点虚拟化
一是将每个节点作为裸金属(BM)进行配置。
二是将节点配置为虚拟机(VM)。
系统 BIOS:启用虚拟机扩展,如 IOMMU、ACS 和 SR-IOV 支持。
网络适配器:禁用宽松的 PCI 排序,增加最大累积未完成读取字节数,启用选择性重复,通过 PCI 点对点事务实现 NIC 对 GPU 缓冲区的直接访问。
虚拟化管理:启用 NVF、大页内存、PCI 控制器上的 ACS 和 NVF 上的 ATS,并将最大 PCIe 读请求大小增加至 4KB。
Guest XML配置:启用大页内存、NUMA 域、Device-NUMA 映射、大型内存虚拟机的主机物理位模型,以及 PCI 控制器上的 ATS。
Guest 操作系统配置:将最大 PCI 读请求大小增加至 4KB。
3.1.3 存储
首先,当数据最初存储于对象存储中,由于典型云对象存储支持的 IOPs 有限,直接从对象存储加载数据至各 GPU 内存的过程缓慢,可能成为瓶颈。此瓶颈不仅在训练任务初始阶段出现,每次任务中断并需重新启动时亦然。如后文所述,组件故障使得任务的启动与停止不可避免。
其次,训练过程中,每隔一段时间,模型 Checkpoint 会存储到对象存储,这也是一个 I/O 密集步骤。
由于随机 I/O 访问模式、多读取的并发访问以及有限的数据重用,使用 NFS 的迭代时间需要多个步骤才能达到稳定状态。在此实验中,超过 300 次迭代才达到稳定。由于 Scale 的高带宽和低延迟性能,以及其处理并发访问的能力,迭代时间几乎瞬间达到稳定状态。
在稳定状态训练期间,多个客户端同时访问文件系统。由于 NFS 的并发支持有限,迭代时间会有近 50% 的波动(例如从 6 秒到 9 秒)。在 Scale 的情况下,迭代时间相对稳定,在 4.8 秒到 5.2 秒之间变化,变化幅度小于 10%。
得益于 Scale 的高性能,AI 任务的迭代速度平均比使用 NFS 快超过 10%,这直接将 AI 模型训练时间减少了 10%。
3.2 Vela 软件栈
它允许 AI 研究人员使用自定义容器,其中包含运行其工作负载所需的软件。比如,一些人使用稳定的 PyTorch 版本,另一些使用 Megatron 框架,还有一些使用最新软件的 night build 版本。自定义容器使 AI 研究人员能够在无需与系统管理员明确协调的情况下,定义并运行其平台上的实验。
OpenShift 还通过丰富的开箱即用功能和一系列专门的 Operator 简化了系统级别的监控和调试,这些 Operator 将在后文描述,同时,在发生故障时,作业调度器会自动协调作业重启。
3.2.1 OpenShift Operators
主机与设备间的 PCIe 带宽测量。
GPU Remapped rows 评估。
GPU 功率限制启用。
所有 DCGM 诊断。
通过 DGEM 和 DAXPY 工作负载进行的 GPU 内存带宽评估。
ping 和 iperf 测试。
能够发现并管理每个主机上的所有接口,将其视为一个资源池;
为 Pod 分配基于 SR-IOV 接口的虚拟接口,用于无封装的 TCP 通信;
将物理 SR-IOV 接口传递给 Pod,以支持 GDR 通信。
3.2.2 OpenShift 上的工作负载性能
较小 Batch 导致每次迭代通信量增加,便于研究 OpenShift 引入的网络开销;
较大 Batch 则增加每次迭代的计算量(从而延长迭代时间),便于研究容器虚拟化开销。
3.3 运维效率和弹性
3.3.1 定位组件故障
明确的硬件故障(Hardware Failure)
隐晦的硬件故障(Subtle Hardware Failure)
软件故障(Software Failure)
3.3.2 系统和工作负载监控
一类是轻量级测试,可与 AI 工作负载并行运行,目标是定期对每个节点执行轻量级测试。
另一类是更具侵入性的测试,需专用资源且仅在节点未被客户使用时进行。
3.3.3 Checkpointing
3.4 Vela 上的工作负载性能
首先,与 Megatron 论文中使用的 Megatron 框架训练的模型进行对比,该论文提供了不同模型规模下每 GPU 实现的 TFLOPs 参考值。对于上述列出的 8B 至 20B 模型规模,Megatron 在 Infiniband 系统上报告的每 GPU TFLOPs 介于 135 至 142 之间。作者的模型与该论文描述的模型略有不同,在 Vela 上使用 256 个 GPU 训练 Granite-13B 模型时,测得每 GPU 的 TFLOPS 为 140。
其次,Bloomberg GPT 在拥有 512 个 A100 GPU 的云服务提供商上进行训练,他们报告的每 GPU TFLOPs 为 101;而作者在 Vela 上使用相同模型进行的内部实验中,每 GPU 实现了 160 TFLOPs。
此外,作者还通过一系列从 3B 到 75B 的模型对系统进行了评估,并确认该系统在不同 GPU 数量范围内均能实现可扩展的性能表现。
3.5 Vela 技术栈全景
04 Blue Vela:新的 AI Infra 建设
32 个 Compute Node
256 个 H100 GPU
3072 物理核
64TB 内存
870 TB NVME 存储
4.1 Blue Vela 架构
4.1.1 网络 Infra
首先是计算 InfiniBand 网络,用于 GPU 间的通信。
其次是存储 InfiniBand 网络,提供对存储子系统的访问。
第三是带内以太网主机网络,用于计算结构外的节点间通信。
第四是带外网络,亦称管理网络,提供对服务器和交换机管理接口的访问。
4.1.2 计算 Infra
双路 48 核第四代 Intel Xeon Scalable CPU
2TB 内存
8 块 NVIDIA H100 GPU,每 GPU 80GB HBM 内存
10 个 NVIDIA ConnectX-7 NDR 400Gbps IB NIC
8 个专用于计算网络
2 个专用于存储网络
8 块 3.4TB 企业级 NVMe U.2 Gen4 固态硬盘
双路 25G 以太网网络
1G 管理以太网端口
双路 32 核第四代Intel Xeon Scalable CPU
1TB 内存
2 块 NVIDIA® ConnectX-7 NDR 400 Gbps IB NIC,专用于存储网络
2 块 1TB 企业级NVMe U.2 Gen4 固态硬盘
4 条 100G 以太网网络
1G 管理以太网端口
4.1.3 存储
4.1.4 数据中心选型和设计
4.2 软件栈
4.2.1 主机与管理软件组件
4.2.2 工作负载调度组件
4.2.3 可观测性组件
4.3 运维模型
对解决方案的所有层次进行端到端的监控,并结合预测分析,以估算任务的持续时间,并能够检测可能出现的任何异常情况。
另一个关键要素是自动化,它能在必要时执行基于运行手册的系统恢复,从而实现训练任务的快速重启。自动化还在确保所有环境中持续合规性和一致性方面发挥着重要作用。
此外,还需要一个强有力的变更管理流程,以消除环境中引入灾难性变更的可能性。集群还利用了 IBM 安全管道服务(SPS),与工具包结合,有助于确保合规性并构建标准环境,以提高可重复性。
此外,还需要一套针对特定角色(如研究人员、系统管理员和执行官)的全面的监控面板,以便在适当的上下文中可视化收集的广泛监控数据。
最后,作者还构建了 AskETE 聊天机器人,这是一个基于 watsonx 的聊天机器人,经过历史支持内容和集群文档的训练。该聊天机器人为研究人员提供自动化支持,并能及时记录问题,从而释放人力资源用于其他支持任务。
4.4 监控
GPU Tensor Core 利用率:Tensor Core 利用率是衡量作业性能的关键指标,能反映作业是否表现良好并得到充分优化。
GPU 整体利用率:若 GPU 整体利用率下降,则有助于指示节点可能存在性能不佳的问题。
系统健康状况:监控系统的物理健康状态,如 GPU 健康状况和内存健康状况。这些指标有助于监测系统是否健康,并尽可能顺畅运行,因为在一个作业中,即使单个节点不健康,整个作业的执行速度也会受限于最慢的节点,形成瓶颈效应。
从 IPDUs 到单个 GPU 的功耗:这些指标有助于了解整个数据中心的功耗情况,同时也能发现是否存在单个节点性能不佳的现象,例如某个节点或单个 GPU 的功耗低于其他节点,这可能预示着存在问题。
LSF 状态:此指标指示节点是否处于可用并开放接受作业的状态,还是处于关闭状态,无法接受任何作业。
GPU 限频及其原因:这将显示 GPU 是否未达到 100% 性能,有助于识别过热问题和 GPU 降速情况。在这些场景下,系统可能过热或发生电源中断降速。
4.5 Blue Vela 的初始化工作负载
05 参考链接
https://arxiv.org/abs/2407.05467
https://github.com/IBM/autopilot
https://github.com/foundation-model-stack/multi-nic-cni
https://www.ibm.com/docs/en/scalecontainernative
https://github.com/NVIDIA/nccl/issues/976#issuecomment-1697103183
—END—
点击下方名片
即刻关注我们