查看原文
其他

揭开深度学习IO性能的神秘面纱

常华Andy Andy730 2024-03-16

Source: Silverton Consulting, Demystifying Deep Learning IO Performance, 27 February 2023


介绍


硬件和软件技术变来变去,但工作负载除了变得更快之外并没有太大变化——也就是说,直到人工智能深度学习(DL)站稳脚跟。 


如果有一个新的工作负载正在改变企业 IT,那就是 DL。来自研究实验室的DL和支撑它的神经网络,迅速跃升到过去30年或更长时间一直在发展的其他AI功能的前沿。 


这毫不奇怪,企业组织打算采用深度学习技术来解决以前无法解决的业务问题。生产环境中 DL 的主要领域是计算机视觉、推荐引擎和自然语言处理。然而,生命科学中的许多具体问题(例如)也使用神经网络来解决。  


尽管如今深度学习训练和推理已广为人知,但执行深度学习所需的 IO 活动或带宽存在误解。本文试图揭开DL IO的神秘面纱。在这里,我们将回顾 DL 存储 IO 对训练和推理的需求,包括并行处理需求,并将展示一些 DL 训练和推理 IO 示例。 



为什么 DL 可能需要高性能存储


DL 使用高性能存储的原因有很多。与传统的高性能计算(HPC)相比,DL IO 模式的特点是几乎 100% 的读取工作负载,并且以随机读取为主,通常具有中小型 IO 大小。这些要求非常适合SSD或闪存存储,但不太适合HDD或磁盘技术。 


更高性能的存储可以使 GPU(和 CPU)更忙,从而帮助 IT 组织证明 DL GPU 硬件费用的合理性。 

 

此外,AI需要高性能存储,因为DL模型训练传统上消耗大量数据。图像识别模型、推荐引擎等在海量数据集上进行训练。长时间训练的大型语言模型需要性能最快的存储,以满足下面讨论的检查点要求。 

 

此外,神经网络(NN)训练的性质需要重复遍历整个数据集以校准模型以执行有效的推理。因此,将训练数据分散在不同的存储层上可能无法很好地执行,因为这需要数据移动器和编排,并增加了避免资源冲突的复杂性。  

 

最后,为了加快深度学习模型的训练和推理,企业经常部署多个GPU,并且在许多情况下,多个GPU服务器协同工作以并行处理数据或模型,这需要针对随机而不是顺序IO优化的高性能共享存储。  



DL 模型


目前有几种不同的AI DL模型在使用中。在研究实验室中创建的三种流行的最先进的DL模型是DALL-E(从文本生成图像),ChatGPT(聊天机器人)和AlphaFold 2(蛋白质结构预测)。在实验室之外,NVIDIA、Hugging Face、Google和其他公司为有兴趣利用该技术的企业提供专有的DL模型。 

 

从IO的角度来看,大多数研究和专有模型的挑战在于它们的训练数据是私有的。此外,如果您拥有独立评估IO带宽需求的数据和模型,则需要云的硬件和几个月的处理时间。因此,了解DL IO的真实外观需要分析更简单的非专有DL模型。

 

为此, MLCommons 发布了一组称为 MLPerf 测试的AI基准测试,这些基准测试使用多个开源DL模型。  MLPerf 训练基准测试包括八个数据中心 DL 模型和三个 HPC DL 模型,以及几个推理基准。虽然 MLPerf benchmarks旨在比较GPU和CPU硬件性能,但有些也可用于研究DL IO要求。 



MLPerf DL 训练模型


MLPerf DL 训练模型数据大小差异很大。  使用适量训练数据的MLPerf模型包括用于自然语言处理(NLP)的 BERT(13.5GB),用于量子分子建模的Open Catalyst(23GB),用于语音识别的RNN-T(30GB)和用于对象检测的轻量级RetinaNet(38GB)。这些数据中的任何一个都可以读入单个企业GPU的内存中,然后用于重复训练,直到模型达到所需的精度水平。虽然首次将训练数据读入 GPU 时延迟很重要,但之后这些模型的训练主要是受计算限制的。 

 

使用大量训练数据的MLPerf DL模型包括用于图像分类的ResNet-50(160GB),用于气候分割的DeepCAM(8TB),用于宇宙学参数预测的CosmoFlow(10TB)和用于推荐引擎的DLRM(23TB)。这些模型中的每一个都需要使用一个或多个 GPU 训练多个读取 IO 段  。 

 

如上所示, 某些模型的AI DL处理所需的数据量并不像许多人认为的那么高。例如,BERT NLP模型是当今许多大型语言模型的前身,仅使用13.5GB的文本数据进行训练。GPT-3 是一个异常庞大和复杂的 NLP 模型,使用了更多的训练数据。但是,由于训练非常耗费 GPU,因此通常使用非常大量的 GPU 完成快速训练(例如,GPT-3 通常使用 1024 个 GPU 进行训练),并且存储子系统需要大量并行 IO。  

 

正如我们将要讨论的,大多数模型训练和推理都可以通过添加 GPU(和 CPU)硬件来并行处理数据和模型来加速。正如我们将看到的,挑战在于扩展 存储系统以支持并行 IO 性能。  



MLPerf DL 推理模型


反过来,推理有几个多模型 MLPerf 基准。例如,MLPerf数据中心推理基准包括ResNet-50(图像分类),RetinaNet(oject检测),3D U-Net(医学成像),RNN-T(语音到文本),BERT(NLP)和DLRM(推荐引擎)。与训练基准一样,用于这些基准的数据量差异很大,但仅用于推动模型推理足够长的时间以收集基准结果。 

 

所有 MLPerf 数据中心推理模型都在两种操作模式下进行测试:  

  • 服务器查询模式:处理请求或事务的一个推理。 

  • 脱机模式:处理包含多个请求的文件,并对所有请求执行推理。 

 

从 IO 的角度来看,这两种模式之间的区别在于,一种模式一次处理单个请求或事务,另一种模式一次处理一批请求或操作。 

 


并行处理


如前所述,DL 训练和推理可以通过并行处理来加速。DL 并行化有两种标准方法: 

  • 数据并行性是指训练或推理数据被拆分为跨多个 GPU,并且跨所有 GPU 并行执行训练或推理。  

  • 模型并行性:是指模型 NN 拆分到多个 GPU 中,并在所有 GPU 上执行训练或推理。  

 

当 NN 超过 GPU 内存大小(最多 80GB)时,将使用模型并行性。在这些情况下,模型的层将分配给每个 GPU,并且数据按顺序流水线传输到每个 GPU。数据并行性更为常见。在这里, 训练 或推理数据被分成多个段,其中每个段在不同的 GPU 上处理。在某些情况下,数据和模型并行性都用于加速模型处理。


对于训练和推理期间的模型并行性,必须将中间结果协同到其他 GPU,即,来自一层的训练结果必须传达给在下一层运行的 GPU。另一方面,数据并行训练在两者之间略有不同。对于推理,数据只需要在 GPU 之间拆分,例如独立推理其数据,而对于训练,数据并行性需要将中间结果与处理其他段的 GPU 相结合。


对于 DL 训练和推理,可能会出现两种类型的附加 IO:用于模型训练的检查点 IO 和用于推理的日志记录 IO。  

  • 检查点 IO:在长时间运行的训练活动(几天、几周、几个月)期间发生,以便在发生硬件故障时保存处理状态。发生故障时,模型训练可以从 last 检查点重新启动,而不必从头开始。 

  • 日志记录 IO:记录模型所做的推理以及用于生成它们的事务。记录数据允许在运行中监控DL模型是否存在漂移或其他问题,并允许在适用的情况下添加降雨数据。 

 

检查点 IO 可能很重要,也可能不重要,具体取决于模型的大小、并行运行的 GPU 数量以及硬件故障的频率。检查点也可以更复杂, 例如,仅更改检查点模型以最小化带宽。日志记录 IO 主要由事务或文件处理速率驱动,但也取决于运行中的 GPU 数量。 

 

此外,模型训练包括用于记录 DL 模型的最终 NN 参数的写入传递,推理包括一个或多个读取传递,用于将 DL 模型的 NN 读取到 GPU 内存中。 

 

对于大多数企业 AI 活动,写出和回读 DL 模型应该是微不足道的。也就是说,一些大型语言变压器 型号具有数十亿个 NN 参数,下一代变压器可能会将参数数量增加 100 倍或更多。



DL 模型 IO 的驱动


驱动训练和推理 IO 的 DL 的一些特征包括:  

  • 数据共享化,在运行中的 GPU 之间拆分数据:需要更快 DL 训练或推理的组织可以跨多个 GPU 部署数据并行性。一个 GPU 可能会消耗 MB/秒的训练或 GB/秒的推理数据,但是当数百或多块 GPU 专用于该任务时,底层共享存储系统的带宽需求会迅速成倍增加。 

  • 模型并行化,在运行中的 GPU 之间拆分 DL 模型 NN:对于非常大的 DL 模型,组织被迫跨多个 GPU 执行训练和推理,这与数据并行性一样,会增加 DL 速度和相关 IO 带宽要求。 

  • 网络硬件和协议:从历史上看,InfiniBand 硬件比以太网更具优势。然而,情况已不再如此,因为最新一代的以太网硬件和RDMA协议已经大大降低了速度差异。此外,正如我们将看到的,最近发布的用于InfiniBand或以太网RDMA tr的NVIDIA  GPU直接存储协议将数据直接从存储到GPU,反之亦然,而无需登陆CPU内存。  

 

驱动 DL 训练 IO 的重要注意事项包括:  

  • 训练数据集大小:较小的训练数据集可以读取一次并多次处理,但较大的训练数据集可能需要多次读取才能完成训练。虽然峰值带宽可能不会改变,但数据集大小可能会决定带宽需要支持多长时间。 

  • 训练通过次数:许多DL模型需要多次训练(或称为epochs),以适当校准神经网络。当整个训练数据集可以放入GPU内存时,epochs的数量并不重要,但对于更大的数据集,每个epoch需要对训练数据进行完整的读取传输到GPU内存中进行处理。与数据集大小一样,epochs可能不会大幅改变最大IO带宽需求,但可能会改变需要支持带宽的时间长度。

  • 批次和模型大小:模型分批训练。读取并处理一批数据,并在批次结束时进行任何提高模型准确性(提供更好的推理)所需的更改。虽然这些浮点计算对于每个训练批次都是一个,但在读入下一批之前存在延迟。NN 参数越多(# 层 * # 每层节点),所需的计算就越多。对于较大的数据集大小,批量和模型大小将是 GPU 如何请求更多数据以重新填充 GPU 内存的限制因素。

  • 检查点:如上所述,一些长时间运行的训练周期可能会使用检查点。根据硬件故障率,检查点所需的带宽对于某些型号可能很大。大型模型需要更长的时间来训练。 

 

批大小取决于 DL 模型,可以小到几条记录 到几十条或更多条记录。NN 大小也是特定于 DL 模型的。大多数企业 DL 型号都在 100K 到 250M NN 参数范围内。但是,提高推理精度通常需要更多 NN 参数。 

 

用于训练的数据类型通常是文件或对象,并且与模型相关。它们可能具有内部元素构造,用于定义数据与其分类之间的对应关系。或者,可以通过目录结构定义该对应关系。例如,医学图像可能将其诊断(或分类)嵌入在DICOM文件中,或者诊断可能保存在单独的目录中,与另一个中的X射线图像文件进行一对一的对应关系。 

 

在数百到数千个 GPU 上使用数据或模型并行性的训练的挑战在于,并非所有存储系统都能支持单个或几个目录的高带宽。尽管这些相同的存储系统可能支持跨多个设备的高 IO 速率,但在仅访问一个或几个目录时,它们的执行速度要慢得多。 

 

通常会发生这种减速情况的存储系统在节点之间维护缓存一致性,这会降低访问速度,直到缓存状态可以在存储集群的所有节点之间进行通信。另一方面,一种存储系统具有共享一切的架构,不需要节点之间进行缓存通信,从而允许更高的带宽连接到单个或少数目录。

 

VAST Data提供了一种名为Universal Storage的全闪存存储系统,采用了一种分离的、共享一切的(DASE)扩展现代架构。DASE将存储介质与管理它的CPU分离,包括所有元数据,这些元数据由集群中的所有VAST服务器共享。VAST的DASE架构允许用户独立扩展存储容量,而不会影响集群计算资源,并且通过共享一切,可以在单个或少数目录中实现高水平的IO性能扩展。

 

与训练相比,推断驱动 IO 的缺点想法很简单。在这里,重点是所需的服务器查询事务或批处理文件处理速率。对于数据和模型并行性,运行中的 GPU 数量将决定带宽需求。se 特性还驱动日志记录 IO 带宽。通常,推理以相同模型的训练速率的 ~10 倍消耗数据。 

 

因此,事务或文件推理速率越高,使用的 GPU 数量越多,需要的跨操作读取和日志记录写入带宽就越高。 

继续滑动看下一个
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存