AI存储需求(SNIA CMSS峰会)
北冥有鱼  2024-08-30 09:34  发布于中国

题目:Storage Requirements for AI

演讲者:John Cardente, Member of Technical Staff, Dell Technologies

会议:SNIA Compute, Memory, and Storage Summit

日期:2024年5月21日

Deep Learning I/O (DLIO) Benchmark

https://github.com/argonne-lcf/dlio_benchmark

640.webp

AI的蓬勃发展带来了对GPU的巨⼤需求,促使人们尽最大限度地利用其性能。

GPU是AI的必要组件

现代深度学习AI模型需要进行数百万次的向量运算。为了使AI在计算方面可行,必须将向量运算并行化。GPU被设计用于快速且经济高效地执行并行向量运算。正是由于GPU的存在,AI才在经济上变得可行。

GPU的昂贵和稀缺

各大公司正竞相建设AI数据中心,这些数据中心可以容纳数百乃至上千台GPU。然而,对GPU的需求正不断超过供应,导致其价格昂贵且难以获得。

最大化GPU利用率至关重要

-----

随着AI的蓬勃发展,许多公司正在建设AI数据中心,以提供更先进的产品功能并简化运营。现代深度学习AI模型需要进行数百万次的向量运算。为了在合理的时间内使这些计算在计算上可行,需要并行处理。GPU被设计用于极其快速且经济高效地执行并行向量运算。正是这项技术使先进的AI计算和经济效益成为可能。

随着大规模AI数据中心的建设竞赛,GPU供不应求,导致稀缺和高昂的采购成本。因此,运营者必须最大限度地利用其拥有的GPU资源。在AI数据中心设计中,最大化GPU利用率正成为主要目标。

640.webp

为了最大化GPU利用率,数据中心的设计需要一种平衡的端到端架构,以避免性能瓶颈。虽然人们经常关注高性能的GPU服务器以及大规模的GPU之间通信所需的东西向网络,但存储也扮演着同样关键的角色。

640.webp

存储在整个AI生命周期中扮演着重要角色

数据准备

关键任务:

      可扩展且高性能的存储,支持将数据转换为适用于AI的格式

      保护宝贵的原始和衍生训练数据集

关键功能:

      存储各种格式的大型结构化和非结构化数据集

     在类似MapReduce的分布式处理(常用于转换AI数据)的压力下进行扩展

     支持文件和对象访问协议,简化集成

训练和微调

关键任务:

      提供训练数据,让昂贵的GPU充分利用

     保存和恢复模型检查点以保护训练投入

关键功能:

       维持必要的读带宽,使训练中的GPU资源保持忙碌

      最小化保存检查点数据的时间,以减少训练暂停

      扩展以满足大型集群中数据并行训练的需求

推理

关键任务:

      安全存储并快速交付模型文件,用于推理服务

      提供批量推理数据

关键功能:

      可靠地存储生成成本高昂的模型文件数据

      最小化模型文件读取延迟,以便快速部署推理

      维持必要的读带宽,使推理中的GPU资源保持忙碌

-----

正如数据是AI的“燃料”,存储贯穿整个AI生命周期。它从数据准备阶段开始,原始数据会在此阶段进行转换,通常使用分布式处理框架,将其转换为适合AI模型训练和批量推理的格式。以开放数据格式存储和高效访问非结构化和结构化数据至关重要。这种同时存取文件和对象的方式可以避免额外的数据副本,当混合使用支持不同存储协议的分析和AI软件栈时尤为重要。

数据经过适当转换后,将用于训练或微调AI模型。训练过程中,可能需要大量存储读带宽来为GPU提供充足的训练数据。同样,在长达数天或数周的训练过程中,也可能需要高性能的存储写带宽来快速保存模型检查点。今天我们探讨的重点在于更好地理解这些性能需求。

训练完成后,AI模型将用于从未见过的全新数据中生成推理结果。部署推理服务需要从存储中快速读取模型文件。批量推理可能需要大的读带宽来为GPU提供数据。

640.webp

为了更好地进行解读,理解AI模型训练的基础知识会很有帮助。训练数据集是一组样本的集合,每个样本包含一组称为特征的模型输入和相关的预期真实推理输出。训练数据集可能存储为一个文件或一组文件。训练数据从存储中读取并打包成包含相对较少数量训练样本的随机批次。这些样本批次通过模型运行以生成推理输出,这些输出与真实值进行比较,以计算反映模型表现的损失得分。然后使用损失得分更新模型的权重(也称为参数),以提高模型的准确性。这个过程重复多次,直到模型收敛到稳定的准确水平。可能需要对训练数据进行多次遍历才能实现这一目标。每次遍历称为一个epoch,对于较小的训练数据集,数据在第一个epoch之后可能会缓存到服务器内存中。在训练过程中,AI模型状态会定期保存或检查点,以防止故障。

640.webp

由于缺乏关于训练过程读性能需求的详细信息,我们可以利用GPU基准测试来进行估算。

(1)运行专为使GPU利用率饱和的AI训练基准测试。(2)提取性能测试结果,以每秒处理的训练样本数量来衡量。MLCommons的MLPerf训练基准测试套件非常适合用于此目的,因为它涵盖了各种AI模型,旨在使GPU利用率饱和,并且来自多个提交者的测试结果都公开可用。

-----

然而,对于训练所需的存储读性能要求,相关信息非常有限。如果目标是让GPU保持忙碌状态,一种合理的方法是使用GPU基准测试来确定各种模型的峰值性能,然后反向推导出维持这些工作量所需的存储读性能。MLPerf训练基准测试是理想的选择。它旨在使GPU保持高利用率,在训练各种代表不同使用案例的流行AI模型时达到最佳性能。来自多个来源的结果公开可供分析。

640.webp

下表显示了MLPerf训练基准测试3.0版本提交的NVIDIA H100 80GB GPU结果,这是当时性能最高的GPU。前三列显示了训练的模型、它们的大小和参数,以及相关训练数据集的详细信息。第四列提供了每个在训练期间输入到模型中的单个训练样本的大小(以字节为单位)。第五和第六列分别指定了使用的GPU数量及其在每秒训练样本数方面能够实现的吞吐量。显示了8个GPU的结果,以代表高端AI服务器的典型配置。对于GPT-3,显示了32个GPU的结果,因为单个模型实例需要那么多GPU。最后一列估算了维持相关GPU吞吐量所需的存储读带宽。这反映了在训练数据在第一个epoch和后续epoch期间被读取时的存储读性能要求,如果数据集太大而无法放入内存中。

这些模型的估算存储读带宽差异很大。例如,GPT-3只需约150 MB/s即可让32个H100 GPU保持高利用率状态。这是因为GPT-3的计算量极大,且其经过标记的文本训练样本相对较小,每个只有8 KB。相反,使用8个H100 GPU训练3D U-Net时,可能需要超过40 GB/s的带宽才能保持高利用率。在此情况下,由于3D U-Net的计算量相对较小,但其训练样本图像非常大,每个约92 MB,因此需要更高的读带宽来匹配GPU的速度。ResNet-50则介于两者之间,大约需要6.1 GB/s的带宽才能使8个H100 GPU得到充分利用。这些例子展示了在估算需求时,模型计算复杂性和训练样本大小之间的权衡。请注意,大型模型并不总是需要大量的存储读带宽。

640.webp

存储系统的性能往往取决于数据访问方式。例如,我们将利用DLIO基准测试来模拟ResNet-50图像分类模型训练时产生的IO访问模式。DLIO是一个AI存储基准测试,它模拟GPU的工作方式,但保留了AI模型训练的所有其他关键方面,包括使用真实的深度学习框架数据加载器和训练数据文件格式。DLIO旨在产生高强度的AI工作负载,以衡量存储性能,而无需实际使用GPU。在这个案例中,训练数据集由一组TFRecord文件组成,每个文件包含124个150 KB的图像张量。训练数据将通过TensorFlow的数据加载器进行读取。

640.webp

在从NFS共享读取训练数据时,我们收集了库IO traces。左上方图表显示了训练期间持续读取训练数据的64到256 KB的IO流。右侧图表显示,随着每批训练样本数量的变化,IO大小的分布并未发生显著变化。左下方图表则表明,训练文件是按顺序读取的,一个接一个。因此,基于之前对该工作负载的估算,AI存储系统可能需要实现6.1 GB/s的读带宽,以顺序读取64到256 KB的IO流,从而在训练ResNet-50时使GPU达到完全利用。然而,其他模型可能会使用不同大小的IO展现出更随机的IO访问模式。这意味着AI存储系统需要在多种访问模式下都有出色的表现。

640.webp

在S3上读取相同的ResNet-50训练数据会产生非常不同的IO特征。左上方图表显示,使用更大的20到50 MB的IO来读取训练数据。右上方图表再次显示,IO大小分布不随批量大小变化。左下方图表显示,文件仍然是顺序访问的。这种显著不同的IO访问模式对性能的影响取决于特定的对象存储和S3软件库。尽管NFS和S3都关注吞吐量,但在使用S3时,延迟可能是另一个需要考虑的因素,因为在这些大IO完成之前,训练无法开始或继续。

640.webp

NFS和S3之间的另一个考虑因素是操作系统页面缓存的好处,这在单个服务器内训练多个模型时尤为重要。在这种情况下,各个模型实例可能会读取相同的训练数据。当通过NFS访问训练数据时,操作系统页面缓存可能会满足不同模型的重复IO请求,避免额外的存储读取访问。由于S3绕过操作系统页面缓存,没有服务器端缓存,重复的读取IO可能会发送到存储,从而增加存储读性能需求。这个例子表明,在选择AI存储解决方案时,用于检索训练数据的存储协议是另一个重要的考虑因素。

640.webp

检查点用于在训练失败或中断后恢复训练,周期性地保存训练状态。

检查点包含学习到的模型权重和优化器状态信息。

检查点可以保存为一个或多个文件,具体取决于模型并行性和实现方式。

每个检查点文件由单个写入器顺序写入。

对于数据并行,只需要保存一个模型实例,而无需保存所有GPU内存。

-----

现在我们来谈谈检查点。大型AI模型的训练可能需要数天或数周的时间。在此期间,随着训练数据的处理,模型权重会不断变化。由于生成这些权重所消耗的计算资源,它们的价值会随着时间的推移而增加。通过定期将当前的模型权重和其他状态保存到持久存储中,检查点能够防止丢失这些宝贵的数据。检查点通常保存为一个或多个文件,每个文件由单个写入器按顺序写入。文件的数量取决于模型的并行度以及特定模型如何实现检查点。当使用数据并行时,只需要保存一个模型实例,而无需保存系统中所有GPU的内存内容。由于在检查点期间训练通常会暂停,因此快速保存检查点是存储性能的关键要求。

640.webp

下表估算了在不同时间限制内完成不同大小检查点所需的总写带宽。左边第一列指定了不同模型的大小(以参数数量衡量)。第二列根据每个参数14字节的经验法则估算了检查点的总大小(包括模型权重和优化器状态)。其余列提供了在不同时间限制内完成检查点所需的估算总写带宽,以假定的2小时检查点间隔的百分比表示。例如,一个1750亿参数的模型会产生2.4 TB的检查点数据。要在360秒(即2小时检查点间隔的5%)内保存该检查点,需要6.8 GB/s的总写带宽。如果能实现,这意味着在两小时内有95%的时间可以用于模型训练。

这些估算清晰地展示了存储写带宽需求会随着模型大小和时间限制的不同而显著变化。大型模型在紧凑的检查点时间限制下,对写带宽的需求尤为显著。然而,当模型规模较小或检查点的时间限制较为宽松时,需求则会明显降低。理解这些因素对于评估存储解决方案与空闲GPU之间的成本权衡至关重要。

640.webp

从检查点恢复训练需要将保存的状态还原到所有GPU上。

需要根据对应的检查点文件,重新初始化每个GPU内存中的权重和优化器状态。

检查点文件通常是顺序读取的。

在使用模型并行时,单个检查点文件可以用于恢复多个GPU。

读取器数量取决于数据并行程度,即需要根据数据并行化使用的进程数来分配读取器数量。

-----

检查点功能允许在计划内或计划外的中断后恢复模型训练。这需要将检查点数据重新加载到所有参与训练的GPU上。每个检查点文件根据要恢复的模型实例数量,由一个或多个读取器按顺序读取。例如,左侧图示显示了一个检查点文件正被加载到三个GPU上,每个GPU都持有模型的相同部分。其他检查点文件也会以类似的方式被读取三次,以恢复其余的GPU状态。检查点文件通常是并行读取的,这增加了对多个文件的并发顺序读取流的需求。由于模型训练无法在检查点完全恢复到所有GPU之前恢复,因此我们希望这一过程能尽快完成。

640.webp

下面的表格估算了在不同模型实例数量下,5分钟内恢复不同大小检查点所需的总存储读带宽。请注意,5分钟的时间限制仅作为样本,实际的检查点恢复时间限制取决于恢复需求的频率和AI工程师的期望。如之前所述,前两列展示了不同模型的大小及其相关的检查点大小。其余列则显示了估算的总读带宽。例如,要在5分钟内将一个拥有1750亿参数的模型恢复到16个模型实例上,需要2.18 GB/s的读带宽来16次读取总计2.4 TB的检查点数据。这再次表明,需求会根据模型大小、训练并行度和允许的检查点恢复时间的不同而大幅变化。

640.webp

GPU集群通常运行着多种工作负载,要求所有GPU都能平等访问数据,并且需要可扩展的存储性能和容量。

现代的GPU集群可能包含数千台服务器和数万块GPU。

MLOps平台通过分布式调度机制在集群中分配和执行作业。

无论作业被分配到哪个服务器,都需要能够访问训练数据、检查点数据和其他数据。

在这类环境下,通常会同时进行数据准备、训练和检查点等多种存储密集型工作负载。

GPU集群通常运行着多种工作负载,要求所有GPU都能平等访问数据,并且需要可扩展的存储性能和容量。

-----

到目前为止,我们的讨论主要集中在单一工作负载上。然而,在实际应用中,现代的GPU集群可能会托管大量处于AI生命周期不同阶段的AI工作负载。分布式调度器用于将这些作业分配到集群中的服务器。为了简化作业部署并避免不必要的数据复制,通常假设无论数据存储在何处,都可以实现平等的访问。这意味着AI存储系统必须能够满足具有不同访问模式的多个工作负载的性能需求,这些工作负载都来自单一命名空间,并且必须能够随着GPU集群的业务需求增长而扩展。

640.webp

用于贯穿整个AI生命周期并实现AI扩展的存储需求(要求和注意事项)

读取训练数据

适应不同AI模型在读带宽需求和IO访问模式方面的大量差异。

为要求最苛刻的模型,向单个GPU服务器提供大量读带宽。

使用高性能全闪存存储来满足需求。

对于最苛刻的要求,尽可能利用支持RDMA的存储协议。

保存检查点

提供大带宽的顺序写入能力,以便快速保存检查点。

能够处理写入到单独文件(尤其是同一目录)的多个大顺序写入流。

了解针对预期AI工作负载的检查点实现细节和行为。

确定完成检查点的限时要求。

恢复检查点

提供大带宽的顺序读取能力,以便快速恢复检查点。

能够处理从同一检查点文件进行的多个大顺序读取流。

了解检查点恢复的所需频率。

确定可接受的恢复限时要求。

为GPU集群提供服务

满足来自多个同时运行的AI作业的混合存储工作负载的性能需求。

随着业务需求的增长,能够扩展存储容量和性能。

-----

简而言之,存储贯穿于AI生命周期的所有阶段,并且在生命周期的不同阶段、不同的AI模型类型以及AI基础设施用户的期望之间,需求差异巨大。并发顺序和随机读性能对于向GPU提供模型训练数据和恢复检查点至关重要。而单线程顺序写性能对于快速保存模型检查点则至关重要。现代AI GPU集群的存储系统必须能够处理来自单一命名空间的混合工作负载,并能够根据需求扩展容量和性能。选择适当的AI存储解决方案需要深入了解预期的工作负载和服务期望,以满足需求,同时控制采购和总拥有成本。

640.webp

除了上述针对训练过程的存储需求,传统企业存储的一些方面也同样适用于AI领域。

数据保护:确保数据免遭损坏或丢失。

高可用性:保证系统能够持续运行,即使发生故障也能提供服务。

数据压缩和重复数据删除:通过压缩减少存储空间占用,并消除冗余数据副本以提高存储效率。

静态加密:在数据未被使用时进行加密,保障数据安全。

多协议数据访问:支持多种数据访问协议,提高数据共享的灵活性。

远程和混合云复制:将数据副本复制到远程存储或混合云环境,实现灾难恢复。

安全和管控:建立安全策略和实施管控措施,保护数据安全。

长期归档存储:将数据长期保存用于以后的分析或满足法规遵从要求。

数据生命周期管理:根据数据的重要性和使用频率,制定数据存储、迁移和删除策略

-----

最后,本次演讲主要讨论了性能,这是许多AI存储对话的焦点。然而,AI还需要传统企业存储的功能,如数据保护、高可用性、加密、数据安全、数据生命周期管理等。一旦性能需求得到满足,这些功能就变得尤为重要。正如我在开始时所说,数据是AI的“燃料”。保护和管理这些数据至关重要。AI存储系统不仅需要提供高性能,还需要提供全面的数据管理和保护功能。

 

--【本文完】---

文章来源:Andy730公众号

全部回复(
回复
回复