- US - English
 - China - 简体中文
 - India - English
 - Japan - 日本語
 - Malaysia - English
 - Singapore - English
 - Taiwan, China - 繁體中文
 
无效的输入。不支持特殊字符。
随着 AI 系统的复杂性和能力不断扩展,对存储基础设施的要求也在迅速演变。从训练大型模型,到提供实时推理,存储早已不再是被动提供支持的 AI 后端组件。如今的存储系统已成为 AI 堆栈中的性能关键型组件。MLPerf Storage v2.0 基准测试套件采用了新的测试方法,可帮助我们了解现代 SSD 如何处理 AI 工作负载所使用的独特 I/O 模式,其测试内容涵盖高吞吐量训练和容错检查点等。
但是,有关 AI 存储基准测试的故事并未到此结束。随着推理工作负载转向检索增强生成 (RAG),向量数据库和键值 (KV) 缓存正在成为存储系统优化的下一个前沿。这些工作负载带来了新的挑战。
在本文中,我将介绍最新的 MLPerf Storage 基准测试结果,揭秘它们背后的工作负载,并探讨未来的基准测试将如何应对向量搜索和 KV 缓存重用等技术的兴起。
如果您想了解更多信息,请报名参加 SNIA 开发者大会 (SDC),我将于 9 月 17 日上午 8:30 在我主持的会议上对此进行深入探讨。会议主题为:MLPerf Storage 基准测试套件和 AI 存储工作负载的讨论与分析
MLPerf Storage v2.0:关键结果和工作负载
众所周知,对 AI 工作负载所使用的存储系统进行基准测试非常困难。真正的训练工作需要配备售价高昂的加速器,公开可用的数据集通常太小,无法反映真实的生产规模行为。
由 MLCommons 联盟开发的 MLPerf Storage 填补了这一空白。它使用合成数据集和真实数据加载器(PyTorch、TensorFlow、DALI 等)来模拟实际工作当中的 AI 训练工作负载,同时使用经过校准的睡眠间隔时间来代替实际计算过程,以模拟 GPU 的行为。这种方法可实现准确、可扩展的存储系统基准测试,无需配备数千个 GPU。
自 MLPerf Storage 首次发布以来,美光一直深度参与其开发工作,为各个主要版本做出了重要贡献。从 v0.5、v1.0,到现在的 v2.0,美光始终积极提交测试结果,同时协助设计基准工作负载。
在 MLPerf Storage v2.0 中,测试内容除了训练数据摄取之外,还新增了检查点工作负载。
训练工作负载:ResNet50、CosmoFlow、Unet3D
我曾经写文章介绍过 MLPerf Storage 中的训练工作负载,也曾在演讲中对此进行过深入探讨,最近一次演讲是在 FMS 2024 上。在 v2.0 的官方出版物中,训练基准测试的定义与 v1.0 版本相同,这意味着我们可以对比在这两个版本上的测试结果。
我强烈推荐大家重温一下上面的演讲。不过,其重点可概括为:MLPerf Storage 中的训练数据摄入测试可代表现实中的广泛工作负载。从 MLPerf Storage 提供的三种模型中,我们看到了一系列不同大小的数据传输块,具体取决于数据容器格式(TFRecord 测试会导致大量的 4KB IO 操作)。
    
    
    
这些特征表明,AI 训练中的数据摄取操作比我们预期中的要复杂得多。
检查点工作负载:Llama 3 模型群
2023 年底,我们开始开发检查点工作负载,随后我们的工作被纳入了 MLPerf Storage,对此我们非常自豪。检查点现在是一个广受欢迎的工作负载,它解决了在训练期间定期保存模型和优化器状态的需求,对于需要在横向扩展的集群上运行的大语言模型 (LLM) 尤其有用。要深入了解该基准测试,请访问我在 mlcommons.org 上发表的博客文章:新的检查点工作负载宣布推出。
该基准测试包括四种模型,对应的检查点大小从 105 GB 到 18,000 GB 不等。对于每种模型,我们都会测量检查点的两个阶段:保存检查点和加载检查点。
检查点测试的结果展示了各种解决方案,均用于高效存储检查点以及从之前的检查点恢复。IBM 的测试成绩尤为突出,在高达 1 万亿参数的模型上,其恢复速度超过 600 GiB/s!
新兴工作负载:向量数据库
向量数据库经过专门优化,用于存储和搜索高维向量——通常是由 AI 模型生成的嵌入数据。这些系统主要用于相似性搜索,典型应用包括:推荐引擎、图像和文本检索、欺诈检测,以及越来越多的 LLM 检索增强生成 (RAG) 等。
与传统数据库不同,向量数据库优先执行近似最近邻 (ANN) 搜索,而非精确匹配搜索,虽然牺牲了精确度,但可提升速度和可扩展性。随着数据集大小逐年增长,将向量索引从内存卸载到磁盘上的需求随之增加,也让存储性能成为首要关注的问题。
虽然有多种方法可将存储集成到向量搜索系统中,但实践中采用的主要方法是使用一个索引。利用该索引,系统可从高速存储设备中进行查询。我的团队同事 Sayali Shirode 最近在未来内存与存储 (FMS) 峰会上介绍了她的一些发现,她主持的会议主题为:“对 MLPerf Storage 中新引入的向量数据库基准测试的讨论与分析”。
在会议上,Sayali 展示了在 Milvus 中使用 DiskANN 和 1 亿向量数据集的分析结果。这项工作旨在决定存储决策,其主要发现包括:
- 小 IO
 - 低 QD,以及突发性超高 QD
 
Sayali 的测试表明,延迟敏感域(低批量大小,单进程)会对磁盘上的索引执行 100% 4KB 操作。此外,当扩展到最大吞吐量(高批量大小,多个同时进程)测试时,我们看到了同样的行为,即对磁盘上的索引执行 100% 4KB 操作。
第二个发现基于第一个发现。当我们查看该工作负载的队列深度直方图时,可以看到,大多数 IO 都会插入到相对较低位置的队列中。单进程测试在 QD7 达到峰值,尾部对应 QD35。64 进程测试在“相对较低”的队列深度 (15) 达到相似的峰值,尾部则可延长至 QD 400+。
将线程数或批量大小从测试中的数值继续上调,将导致延迟大幅增加,而查询吞吐量仅小幅增加。综合这些测试结果,可以得出结论:DiskANN 对存储的要求是提供许多 4KB IO,同时尽可能减少延迟并优化 QoS。
想要了解更多信息?
有关向量搜索和 DiskANN 的更多信息,请参考来自 Solidigm 的 Alessandro Concalves 在 SDC 大会上的演讲:使用 NVMe 扩展 RAG:DiskANN 的向量数据库索引混合方法。自我们于今年初启动该计划以来,Alessandro 一直与 MLPerf Storage 工作组合作,开展向量数据库基准测试工作。我们还提供一款基准测试工具,能够生成合成数据集和查询。利用该工具,我们可以测试更大的数据集,但无法验证结果的准确性。在没有其他准确性测试的情况下,我们不应使用它来比较不同的索引。该工具仍在开发当中,目前处于活跃状态,因此可以使用 github 的问题处理系统来提交请求或报告错误。
KV 缓存管理和重用
KV 缓存是一个复杂的主题,其名称不足以反映这一点。我们需要知道的重点是,生成词元的 LLM 需要 KV 缓存来处理查询。KV 缓存实际上是基于转换器的 LLM 在推理期间所使用的短期内存。
KV 缓存卸载是指在处理词元生成时,使用其他内存来存储部分 KV 缓存。这是另一部分工作流程,不同于我们在这里讨论的部分。
KV 缓存管理和重用是指在词元生成后存储查询所用的 KV 缓存,以便在将来可能重用。
如果您在离开一段时间后继续与 LLM 进行对话,或者如果其他查询需要引用与已完成的查询相同的“上下文”(例如,编码助理针对相同代码库的连续查询,或者关于某个长文档的多个问题),则可能发生重用 KV 缓存的情况。从磁盘加载 KV 缓存可能比重新计算它们更快,还可释放计算资源,以生成更多输出词元。
业界仍在开发这一工作流程,一些重要研发项目专注于优化这些过程。MLPerf Storage 工作组(以及其他组织)正在努力开发和定义基准测试流程,以代表 KV 缓存管理层,以及该层与存储的交互方式。
我们的初步分析表明,KV 缓存工作负载将主要是具有高写入吞吐率的大型数据块 (2MB+) 传输操作,正如我们在缓存系统中经常看到的那样。在高吞吐量生成式 AI 系统中,KV 缓存生成速率可以达到每 GPU 每天数十 TB,或者更高。
这种使用模式推动了对存储系统的更高要求,主要侧重于优化底层存储系统的耐久性(包括过度配置、SLC/TLC/QLC 选型、灵活数据放置等)。
想要了解更多信息?
如需深入了解如何使用支持 KV 缓存的存储系统,请查看来自戴尔公司的 Ugur Kaynar 在 SDC 上的演讲:KV 缓存存储卸载:在 LLM 中实现高效推理。在 v2.0 开发周期中,Ugur 还在多个领域为 MLPerf Storage 工作组做出了贡献。
请阅读我之前讨论 KV 缓存管理细节的博客文章,其中的一些数字会让我们真正理解为什么 KV 缓存是一个非常复杂的主题:百万级词元上下文:优缺点分析。
未来的 AI 存储
目前,我们仍在寻求对当今 AI 系统的存储进行更好的基准测试和表征。因此,对于未来需要什么样的 AI 存储,很难做出比较准确的预测。如果您有兴趣跟踪 AI 存储的前沿信息,请查看 SDC 上的以下会议:
John Mazzie(美光):小粒度图神经网络训练及未来的存储系统
John Groves(美光):Famfs:为由分解式共享内存组成的大型池做好准备
CJ Newburn 和 Wen-Mei Hwu (Nvidia):存储对新一代 AI 应用的影响