NVIDIA:LLM集群存储IO行为(实测数据)
NVIDIA:LLM集群存储IO行为(实测数据)
NVIDIA最新研究揭示了大规模语言模型(LLM)训练过程中存储系统的IO行为特征。通过实测数据,研究人员分析了初始化读取、计算阶段和检查点写入三个主要阶段的存储系统IO/带宽特征,并探讨了基于异步写入扩展检查点写入带宽的优化方法。
图1:2012年到2024年AI模型训练计算能力(PFLOPs)的增长趋势
训练计算平台
NVIDIA的Eos DGX AI超级计算机采用了H100 SuperPOD部署,其性能在2023年11月的TOP500榜单中排名第9,峰值计算能力达到121.40 PF。该系统由576个NVIDIA DGX系统组成,每个系统配备八个H100 GPU。网络架构采用Quantum-2 NDR InfiniBand,具有独立的计算(8-rail)和存储(2-rail)结构。
存储系统
DDN EXAScaler Lustre存储平台的主要特点包括:
- 硬件配置:使用12个DDN AI400X2存储设备,每个配备24个NVMe驱动器,提供高速数据访问。每个设备由8个200Gb/s InfiniBand连接,确保高带宽网络连接。
- 存储架构:采用Lustre文件系统(版本2.14.0),经过多项定制优化。使用分布式命名空间(DNE)和自动轮询技术管理元数据目标(MDT)。对象存储目标(OST)采用PFL默认条带化,优化数据分布。
- 性能特性:峰值带宽达到约1TB/s,显示出极高的数据传输能力。系统性能超出当前实验需求,不构成瓶颈。
- 高级功能:支持PCC-RO(实现高速缓存),可通过用户标志为每个Slurm作业单独启用。提供项目配额管理,有助于资源分配和控制。支持子目录挂载,增强数据集管理和访问控制能力。集成Kerberos认证,提升整体安全性。
LLM训练设置
使用Megatron-LM框架进行大规模语言模型(LLM)训练的设置。主要特点包括:
- 开源框架:使用NVIDIA开发的Megatron-LM开源框架来训练和运行LLM模型。
- 模型规模增长:之前的模型(LUG2021)有130亿参数,新模型大幅扩展到3400亿参数,数据集规模达到8T。
- 研究重点:专注于训练工作负载,特别关注I/O性能在大规模模型训练中的变化。
- 并行化策略:采用张量并行、流水线并行和数据并行的组合策略。这种多维并行化方法使模型训练可扩展到10,000 GPU的规模。
- 性能和可扩展性:通过使用多种并行化技术,系统能够有效地处理超大规模模型,展示了在极端规模下的训练能力。
- I/O演变研究:通过比较新旧模型设置,研究I/O模式和性能如何随模型规模增长而变化。
负载分析
图5:GPU计算时负载(含训练和检查点写入)
图6:训练时存储读写带宽
三个关键阶段及其特征:
- 初始化读取阶段:仅在训练开始时执行一次。图表显示了一个短暂但显著的读取峰值,约为100 GB/s。
- 计算阶段:涉及迭代的GPU处理。图表中表现为较长的平稳期,I/O活动最小。
- 检查点写入阶段:每N次计算迭代后执行。图中显示为周期性的写入活动,峰值约为75 GB/s。使用缓冲I/O来管理这些写入操作。
图7:聚焦初始化读取阶段的读IO行为
- 计算阶段的读取非常低:约3MB/s
- I/O很小:< 4KB
- 随着节点数量增加,总读取量呈线性增长。
图8:聚焦检查点写入阶段的写IO行为
写入阶段,GPU使用率极低,处于等待状态。
图9:检查点写入阶段的详细信息
- 检查点大小为4.3 TiB
- 检查点由少数节点完成(模型并行)。峰值75 GB/s(约12个节点)
- 每个客户端以约6 GB/s的速度写入(可用写入能力为93 GB/s)
- 检查点持续90秒
在这个模型版本中,峰值IO随模型并行度而扩展,而不是随节点数量扩展。
检查点异步写入
图10:并行检查点写入示例
通过人为模拟检查点,可以运行工作负载写入IO的完全并行版本。下面是在48个节点上进行10次检查点的示例,每次检查点持续16秒,峰值275 GB/s(约4倍加速)。
这种并行检查点方法对LLM训练和存储系统设计有几个重要影响:
- 显著减少了检查点操作的时间,可能大幅提高整体训练效率。
- 存储系统需要能够支持更高的瞬时I/O带宽,以适应并行写入的需求。
- 并行化策略改变了I/O负载分布,从集中在少数节点转变为分散到多个节点。
- 异步检查点的潜力暗示了进一步优化的可能性,可能通过降低检查点对计算的干扰来提高效率。
- 存储系统的设计需要考虑到更频繁、更短暂但强度更高的I/O峰值。
如何实现并行/异步检查点方法?
在AI训练场景中实现并行/异步检查点(Checkpoint)写入是一个重要的性能优化策略。这种方法可以显著减少训练过程中的I/O等待时间,提高整体训练效率。以下是实现这一目标的关键步骤和考虑因素:
- 异步写入机制:利用异步I/O操作,将检查点数据写入存储系统。使用单独的线程或进程来处理检查点写入,避免阻塞主训练循环。
- 数据缓冲:实现内存缓冲区,临时存储检查点数据。当缓冲区达到一定大小或经过特定时间间隔时,触发异步写入操作。
- 并行写入:将大型检查点文件分割成多个小块。使用多线程或分布式系统并行写入这些数据块。
- 压缩优化:在写入之前对检查点数据进行压缩,减少I/O负载。选择平衡压缩率和CPU开销的算法,如LZ4或Snappy。
小结-LLM训练时IO行为
- 计算阶段的读取带宽非常低:
- 文件系统(FS)能力应专注于小IO(或其他工作量)。
- 检查点可扩展性可以支持大的写入峰值:
- 这对文件系统提出了更高的需求。
- 未来的检查点改进可能会再次改变IO模式:
- 需要依赖CPU和网络织物的有效并发性能。