饥渴的GPU需要快速的 对象存储

Hungry GPUs Need Fast Object Storage

链条的强度取决于其最薄弱的环节——同样,您的AI/ML基础设施的速度也取决于其最慢的组件。如果您使用GPU训练机器学习模型,那么您的薄弱环节可能是您的存储解决方案。结果就是我所说的“GPU饥饿问题”。GPU饥饿问题发生在您的网络或存储解决方案无法以足够快的速度为您的训练逻辑提供训练数据,从而导致无法充分利用您的GPU。症状相当明显。如果您正在监控您的GPU,您会注意到它们从未接近完全利用。如果您已经对您的训练代码进行了检测,那么您会注意到总训练时间主要受IO支配。

不幸的是,对于那些正在努力解决此问题的人来说,有一个坏消息。让我们看看GPU方面的一些进步,以了解这个问题在未来几年只会变得更糟。

GPU正在变得更快

GPU正在变得更快。不仅原始性能在提升,而且内存和带宽也在增加。让我们看看英伟达最新GPU的这三个特性:A100H100H200

GPU

性能

内存

内存带宽

A100

624 TFLOPS

40GB

1,555GB/s

H100

1,979 TFLOPS

80GB

3.35TB/s

H200

1,979 TFLOPS

141GB

4.8TB/s

(注意:上表使用与A100的PCIe(外设组件互连高速)插槽解决方案以及H100和H200的SXM(服务器PCI Express模块)插槽解决方案一致的统计数据。A100不存在SXM统计数据。关于性能,浮点16张量核心统计数据用于比较。)

以上统计数据中值得注意的一些观察结果。首先,H100和H200具有相同的性能(1,979 TFLOPS),是A100的3.17倍。H100的内存是A100的两倍,内存带宽也增加了类似的幅度——这很有道理,否则GPU会饿死自己。H200可以处理高达141GB的内存,并且其内存带宽也相对于其他GPU成比例地增加了。

让我们更详细地了解每个统计数据,并讨论它对机器学习意味着什么。

性能 - 每秒万亿次浮点运算(TFLOP)是一万亿(10^12)次浮点运算。这是一个后面跟着12个零的1(1,000,000,000,000)。很难将TFLOP与以GB为单位的IO需求等同起来,因为模型训练期间发生的浮点运算涉及简单的张量数学以及针对损失函数的一阶导数(又称梯度)。但是,相对比较是可能的。查看上面的统计数据,我们可以看到H100和H200都以1,979 TFLOPS的性能运行,速度提高了3倍——如果其他一切都能跟上,则可能以3倍的速度消耗数据。

GPU内存 - 也称为视频RAM或图形RAM。GPU内存独立于系统的内存(RAM),专门设计用于处理显卡执行的密集图形处理任务。GPU内存决定了训练模型时的批次大小。过去,当将训练逻辑从CPU转移到GPU时,批次大小会减小。但是,随着GPU内存在容量方面赶上CPU内存,用于GPU训练的批次大小将会增加。当性能和内存容量同时增加时,结果就是更大的请求,其中每GB的训练数据都以更快的速度进行处理。

内存带宽 - 将GPU内存带宽视为连接内存和计算核心的“高速公路”。它决定了每单位时间可以传输多少数据。就像更宽的高速公路允许更多汽车在给定时间内通过一样,更高的内存带宽允许在内存和GPU之间移动更多数据。正如您所看到的,这些GPU的设计人员为每个新版本增加了与内存成比例的内存带宽;因此,芯片的内部数据总线将不会成为瓶颈。

展望未来

2023年8月,英伟达宣布其下一代加速计算和生成式AI平台——GH200 Grace Hopper超级芯片平台。新平台使用Grace Hopper超级芯片,可以通过NVIDIA NVLink连接其他超级芯片,使它们能够在模型训练和推理期间协同工作。

虽然Grace Hopper超级芯片上的所有规格都代表着对先前芯片的改进,但对于AI/ML工程师来说,最重要的创新是其统一内存。Grace Hopper使GPU能够完全访问CPU的内存。这一点很重要,因为在过去,希望使用GPU进行训练的工程师必须首先将数据拉入系统内存,然后从那里将数据移动到GPU内存。Grace Hopper消除了使用CPU内存作为弹跳缓冲区将数据传输到GPU的需要。

仅仅比较一些关键的GPU统计数据以及Grace Hopper的功能,就足以让任何负责升级GPU并确保其他一切都能跟上的人感到有些害怕。存储解决方案绝对需要以更快的速度提供数据,才能跟上这些GPU的改进。让我们看看解决GPU饥饿问题的一种常见解决方案。

一种常见解决方案

这个问题有一个常见且明显的解决方案,它不需要组织更换或升级其现有的存储解决方案。您可以保持现有的存储解决方案完整,以便您可以利用组织所需的所有企业级功能。此存储解决方案很可能是一个数据湖,其中包含您组织的所有非结构化数据——因此,它可能非常大,并且拥有成本是一个需要考虑的因素。它还启用了许多用于冗余、可靠性和安全性的功能,所有这些都会影响性能。

但是,可以做的是设置一个与您的计算基础设施位于同一数据中心的存储解决方案——理想情况下,它应该与您的计算位于同一个集群中。确保您拥有高速网络和最佳的存储设备。然后,仅复制ML训练所需的数据。

亚马逊最近宣布的Amazon S3 Express One Zone体现了这种方法。它是一种针对高吞吐量和低延迟进行优化的存储桶类型,并且仅限于单个可用区(无复制)。亚马逊的目的是让客户使用它来保存需要高速访问的数据副本。因此,它是专门为模型训练而构建的。根据亚马逊的说法,它提供了比S3 Standard快10倍的数据访问速度,而成本是其8倍。阅读更多关于我们对Amazon S3 Express One Zone的评估此处

MinIO解决方案

我上面概述的常见解决方案需要AWS通过以更高的成本提供专用存储桶来定制其S3存储解决方案。此外,一些(非MinIO客户)组织正在购买专门的存储解决方案来完成我上面描述的简单操作。不幸的是,这会增加现有基础设施的复杂性,因为需要一个新产品来解决一个相对简单的问题。

具有讽刺意味的是,MinIO客户一直都有这种选择。您可以使用在高速网络上安装带有NVMe驱动器的全新MinIO实例来完成我上面描述的操作。MinIO是一个软件定义的存储解决方案——相同的产品可以在裸机或您选择的集群上运行,并使用各种存储设备。如果您的企业数据湖使用带有HDD的裸机上的MinIO,并且它可以很好地处理所有非ML数据,那么就没有理由替换它。但是,如果用于ML的数据集需要更快的IO,因为您正在使用GPU,那么请考虑我在本文中概述的方法。确保为在您的高速MinIO实例中使用而复制ML数据副本——黄金副本应始终存在于MinIO的强化安装中。这将允许您关闭高速MinIO实例中的复制和加密等功能,从而进一步提高性能。使用MinIO的镜像功能可以轻松复制数据。

MinIO能够提供为您的“饥饿”GPU提供所需性能——最近的基准测试仅使用32个现成的NVMe SSD节点,就实现了325 GiB/s的GET和165 GiB/s的PUT速度。

立即下载MinIO,了解构建数据湖仓储是多么容易。如果您有任何疑问,请随时在Slack上与我们联系!