使用 MLPerf 测试 ML 训练性能
MLPerf™ Storage 是一个用于评估支持AI工作负载的存储系统性能的基准测试套件。 该套件包含AI 训练(Training)的工作负载类别:
它通过模拟诸如 “3D-Unet”、 “ResNet-50” 和 “Cosmoflow” 等模型的 I/O 模式,用于评估存储系统的吞吐性能和I/O 效率。 本指南介绍如何使用 MLPerf v2.0 Storage 基准测试工具来测试 Alluxio 集群 的性能。
基准测试亮点
下表展示了使用 MLPerf Storage v2.0 基准测试得到的结果(https://mlcommons.org/benchmarks/storage/)。 测试时数据已全部缓存到 Alluxio 中,并使用 H100 GPU 作为训练加速器。 表中的 “Accelerator Utilization (AU)” 指标表示存储系统使 GPU 保持高效工作的程度。
Resnet50
16
500 GB
1
2
99.57%
3.03075
0.1894
Resnet50
32
1.0 TB
2
2
99.57%
6.05086
0.1891
Resnet50
128
4.0 TB
8
8
99.57%
24.1364
0.1886
U-Net3D
1
500 GB
1
2
99.02%
2.92255
2.9225
U-Net3D
2
1.0 TB
2
2
99.02%
5.80375
2.8946
U-Net3D
8
4.0 TB
8
8
99.02%
23.1569
2.8946
Cosmoflow
5
500 GB
1
2
74.97%
2.69356
0.5387
Cosmoflow
8
1.0 TB
8
8
74.97%
4.31414
0.5393
测试环境
基准测试结果是使用以下环境生成的,所有实例都部署在同一个 AWS 可用区中。
Alluxio 集群:
2 个工作节点 (
i3en.12xlarge: 48 核, 384GiB RAM, 3000GB NVMe SSD)1 个 FUSE 客户端节点 (
c5n.9xlarge: 36 核, 96GiB RAM, 50GB EBS)
操作系统: Ubuntu 24.04
设置和配置
1. 安装 MLPerf Storage 工具
在计划运行基准测试的客户端节点上执行以下操作:
目录结构如下:
该基准测试通过 dlio_benchmark 模拟深度学习 I/O 模式。 dlio_benchmark 当前需从特定分支获取,未来版本将从 PyPI 安装。 每个工作负载的配置通过 YAML 文件 定义,位于 configs 目录下。
2. 配置 Alluxio
为了在 ML 训练期间获得最佳读取性能,我们建议在 Alluxio 集群节点的 conf/alluxio-site.properties 文件中设置以下属性。
在运行基准测试之前,请确保:
Alluxio FUSE 进程正在客户端节点上运行。
训练数据集已完全加载到 Alluxio 缓存中。
运行基准测试
基准测试过程包括生成一个合成数据集,然后对其运行训练模拟。
步骤 1:生成数据集
注意:此步骤仅需在一个客户端(launcher client)上执行。 数据集大小取决于加速器数量、客户端数量及系统内存。 一般遵循以下两条规则: 磁盘容量大小应至少为所有客户端系统内存总和的 5 倍; 每个 GPU 的训练应运行 500 次迭代(iteration)。 如果在执行该命令时传入了客户端列表,则内存数量会通过程序自动计算。否则,用户可以自行提供客户端数量以及每个客户端的内存大小,用于进行计算。
示例命令:
接着,根据工作负载生成合成数据集:
生成数据集后,将其上传到您的 UFS 并确保已加载到 Alluxio 中。
步骤 2:运行训练基准测试
示例命令:
步骤 3:生成基准测试报告
基准测试提交报告是通过汇总各个独立运行的结果生成的。报告命令提供了相关功能,用于为指定的结果目录生成报告。
运行以下命令以汇总结果并生成报告:
注意:reportgen 命令必须在最初的 launcher client 节点上运行。
Last updated