使用 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 保持高效工作的程度。

模型
加速器数量 (H100)
数据集大小
Fuse 节点
Worker 节点
加速器利用率 (AU)
读取带宽 (GiB/s)
单加速器读取带宽 (Gib/s)

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