2023 年 9 月,AI 领域的权威基准评测 MLPerf 推出了 Storage Benchmark。该基准测试通过模拟机器学习 I/O 负载的方法,在不需要 GPU 的情况下就能进行大规模的性能压测,用以评估存储系统在 AI 模型训练场景的适用性。
目前支持两种模型训练:BERT(自然语言模型)和 Unet3D(3D 医学成像)。虽然目前不支持大语言模型如 GPT、LLaMA,但 BERT 与大语言模型同为多层 transformer 结构,大语言模型的用户仍可从 BERT 训练结果获得一定的参考。
高性能存储产品厂商 DDN、Nutanix、Weka 和 Argonne National Laboratory(简称 ANL)发布了 MLPerf 的测试结果作为行业参考,我们也使用 JuiceFS 企业版进行了测试,让用户了解它在模型训练中的表现。
测试中最直观的指标是 GPU 利用率,大于 90% 为测试通过,表示存储系统能够满足训练业务的性能需求。JuiceFS 在 Unet3D 的 500 卡规模测试中,GPU 利用率保持在 97% 以上;在 BERT 的 1000 卡规模测试中,GPU 利用率保持在 98% 以上。
01 测试准备
JuiceFS 企业版是基于对象存储的并行文件系统,相比社区版它提供了更强的元数据引擎和缓存管理能力,它的架构图如下:

我们在华为云上搭建了一套企业版 JuiceFS 文件系统,使用华为云 OBS 作为数据持久层,部署了 3 节点的元数据集群和多节点的分布式缓存集群,硬件规格如下:
- 元数据节点:m7.2xlarge.8 | 8vCPUs | 64GiB
- 对象存储:OBS,带宽上限 300 Gb/s
- 客户端节点:ir7.16xlarge.4 | 64vCPUs | 256GiB | Local SSD 2*1,600GiB | 网卡带宽 25 Gbps (以太网)
准备好文件系统后,我们使用 mlperf 的脚本生成后续模拟训练所需要的数据集,所有的测试中 batch size 和 steps 均采用默认设置。目前仅支持模拟 NVIDIA v100 GPU,后文中提到的 GPU 均是模拟 v100。
架构深度解析: JuiceFS 的核心优势在于将元数据与数据分离。元数据操作(如打开文件、列出目录)由元数据服务器处理,而实际的数据读写则直接流向对象存储。这种设计使得元数据服务可以独立扩展,专注于低延迟响应,而数据吞吐量则取决于底层对象存储和缓存层的聚合带宽。在企业版中,元数据引擎经过优化,能够处理更高并发的元数据请求,这对于 AI 训练中频繁的小文件访问至关重要。
02 BERT 模型
MLPerf 为 BERT 模型生成数据集时,会按照每个数据集文件包含 313,532 个样本的规则来生成,每个样本大小为 2.5 KB。训练过程中每个模拟 v100 GPU 每秒能处理 50 个样本,即每个 GPU 的 IO 吞吐需求为 125 KB/s,绝大部分存储系统都能轻松满足它的模型训练需要,JuiceFS 也是一样的,能够满足 1000 卡规模的模型训练需要。

我们汇集了 MLPerf 的主要公开结果,包括 ANL、DDN、Weka 的数据,并新增了本次测试中 JuiceFS 的结果。
- JuiceFS 在 1000 GPU 规模下保持 98% 以上 GPU 利用率。
- ANL 的结果依然非常优秀,考虑到 ANL 测试的网络条件是高带宽低延迟的 Slingshot 网络,能有这样的成绩也是意料之中的。
03 Unet3D 模型
Unet3D 模型的训练对带宽的需求高于 BERT 模型。我们首先在没有任何缓存(包括分布式缓存和单机缓存)的条件下测试了训练 Unet3D 模型的情况。在这种设置下,JuiceFS 客户端将直接从对象存储中读取数据。
无缓存测试
如下图所示,随着节点数的增加,GPU 利用率(图中的绿色线条)会缓慢下降。当 GPU 增至 98 卡时,它出现了一个明显的拐点,随后 GPU 利用率随节点数的增加而急剧降低。







