分析与表征:AI 工作负载与 MLPerf Storage
AI 工作负载存储测试是一项具有挑战性的任务,因为实际运行训练可能需要专用硬件,这些硬件可能价格昂贵且更新换代迅速。这就是 MLPerf 发挥作用的地方,可帮助测试 AI 工作负载的存储。
为什么选择 MLPerf?
MLCommons 开发了许多专注于扩展 AI 加速器性能的 AI 工作负载基准测试。最近,他们利用这些专业知识专注于 AI 存储,并建立了一个基准测试,用于针对 AI 训练的存储进行压力测试。此基准测试的目标是以与实际 AI 训练流程相同的方式执行 I/O,通过提供更大的数据集来限制文件系统缓存的影响,以及/或者将训练硬件(GPU 和其他加速器)与存储测试分离。1
MLPerf Storage 利用深度学习 I/O(DLIO)基准测试,该基准测试使用与实际 AI 训练工作负载(PyTorch、TensorFlow 等)相同的数据加载器来将数据从存储移动到 CPU 内存。在 DLIO 中,定义了一个具有睡眠时间和批次大小的加速器,其中睡眠时间是通过在模拟的加速器中运行实际工作负载来计算的。可以通过增加运行 DLIO 的客户端,并使用消息传递接口(MPI)为每个客户端模拟多个加速器来扩展工作负载。
MLPerf 的工作原理是定义一组配置来表示提交给 MLPerf 训练的结果。目前,实施的模型是 BERT(自然语言处理)和 Unet3D(3D 医学成像),结果以每秒样本数和支持的加速器数量报告。要通过测试,必须保持至少 90% 的加速器利用率。
Unet3D 分析
虽然 MLPerf 同时实施 BERT 和 Unet3D,但我们的分析侧重于 Unet3D,因为 BERT 基准测试不会广泛地对存储 I/O 施加压力。Unet3D 是一种 3D 医学成像模型,可将大型图像文件读取到加速器内存并带有手动注释,同时生成密集的体积分割。从存储的角度来看,这看起来像是从训练数据集中随机读取大文件。我们的测试比较了一台加速器与 15 台加速器在使用 7.68 TB 美光 9400 PPO NVMe 固态硬盘时的结果。
首先,我们将检查设备上随时间变化的吞吐量。在图 1 中,一个加速器的测量结果大多在 0 到 600 MB/秒之间,有些峰值会达到 1,600 MB/秒。这些峰值对应于在计算开始之前,一个周期的起始阶段预取缓冲区被填充的情况。在图 2 中,我们看到,对于 15 个加速器,工作负载仍然突发,但会达到设备支持的最大吞吐量。但是,由于工作负载的突发,总平均吞吐量比最大值低 15-20%。
接下来,我们将查看相同工作负载的队列深度(QD)。在仅有一个加速器时,QD 从不会高于 10(图 3),而有 15 个加速器时,QD 峰值在早期达到 145 左右,但在测试的剩余时间内稳定在最高 120(图 4)。然而,这些时间序列图并未展示整个情况。
在查看给定 QD 下的 I/O 百分比时,我们看到,对于单个加速器,将近 50% 的 I/O 是队列中的第一个事务(QD 0),将近 50% 是第二个事务(QD 1),如图 5 所示。
使用 15 个加速器时,大多数交易发生在 80 到 110 的 QD 之间,但也有相当一部分交易发生在 QD 低于 10 的位置(图 6)。这种行为表明,在预期应显示持续高吞吐量的工作负载中存在空闲时间。
从这些结果中,我们可以看到,从存储的角度来看,工作负载是非常重要的。此外,随机的大块传输和空闲时间与大量的突发传输混合在一起,这样的模式与 MLPerf Storage 相结合,将成为一种非常有用的工具,能够通过重现这些真实的工作负载来对各种模型的存储进行基准测试。