链条的强度取决于其最薄弱的环节,而您的 AI/ML 基础设施的速度取决于最慢的组件。如果您使用 GPU 训练机器学习模型,那么您的薄弱环节可能是您的存储解决方案。结果就是我所说的“GPU 饥饿问题”。当您的网络或存储解决方案无法足够快地向训练逻辑提供训练数据以充分利用 GPU 时,就会出现 GPU 饥饿问题。症状相当明显。如果您正在监控 GPU,您会发现它们永远无法充分利用。如果您已经对训练代码进行了检测,那么您会注意到总训练时间主要由 IO 主导。
不幸的是,对于那些正在努力解决这个问题的人来说,有一个坏消息。让我们看看 GPU 取得的一些进展,以了解这个问题在未来几年只会变得更糟。
GPU 变得越来越快。不仅原始性能变得更好,而且内存和带宽也在增加。让我们来看看 Nvidia 最新 GPU 的这三个特征
图形处理器 | 表现 | 记忆 | 内存带宽 |
---|---|---|---|
A100 | 624 万亿次浮点运算 | 40GB | 1,555GB/秒 |
H100 | 1,979 万亿次浮点运算 | 80GB | 3.35TB/秒 |
H200 | 1,979 万亿次浮点运算 | 141GB | 4.8TB/秒 |
上表使用的统计数据与 A100 的 PCIe(外围组件互连 Express)插槽解决方案以及 H100 和 H200 的 SXM(服务器 PCI Express 模块)插槽解决方案一致。 A100 不存在 SXM 统计数据。性能方面,使用Floating Point 16 Tensor Core统计数据进行比较。
对上述统计数据的一些观察值得一提。首先,H100和H200具有相同的性能(1,979 TFLOPS),是A100的3.17倍。 H100 的内存是 A100 的两倍,并且内存带宽也增加了类似的量 - 这是有道理的,否则 GPU 就会挨饿。 H200 可以处理高达 141GB 的内存,其内存带宽也相对于其他 GPU 成比例增加。
让我们更详细地了解这些统计数据,并讨论它们对机器学习的意义。
性能- 万亿次浮点运算 (TFLOP) 是每秒一万亿 (10^12) 次浮点运算。这是一个 1,后面有 12 个零 (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 月,英伟达
虽然 Grace Hopper Superchip 的所有规格都比以前的芯片有所改进,但对于 AI/ML 工程师来说最重要的创新是其统一内存。 Grace Hopper 使 GPU 能够完全访问 CPU 的内存。这一点很重要,因为在过去,希望使用 GPU 进行训练的工程师必须首先将数据拉入系统内存,然后从那里将数据移动到 GPU 内存。 Grace Hopper 无需使用 CPU 内存作为反弹缓冲区来将数据传输到 GPU。
对于负责升级 GPU 并确保其他一切都能跟上的任何人来说,一些关键 GPU 统计数据以及 Grace Hopper 的功能的简单比较一定会有点可怕。存储解决方案绝对需要以更快的速度提供数据,以跟上这些 GPU 的改进。让我们看一下解决 GPU 饥饿问题的常见解决方案。
对于这个问题有一个常见且明显的解决方案,不需要组织更换或升级其现有的存储解决方案。您可以保持现有存储解决方案完好无损,以便可以利用组织所需的所有企业功能。该存储解决方案很可能是一个数据湖,保存组织的所有非结构化数据 - 因此,它可能非常大,并且总拥有成本是一个考虑因素。它还具有许多可实现冗余、可靠性和安全性的功能,所有这些都会影响性能。
然而,可以做的是设置一个与您的计算基础设施位于同一数据中心的存储解决方案 - 理想情况下,这将与您的计算位于同一集群中。确保您拥有高速网络和最好的可用存储设备。从那里,仅复制 ML 训练所需的数据。
亚马逊最近宣布
我上面概述的通用解决方案要求 AWS 通过以更高的成本提供专用存储桶来定制其 S3 存储解决方案。此外,一些组织(不是 MinIO 客户)正在购买专门的存储解决方案来执行我上面描述的简单操作。不幸的是,这增加了现有基础设施的复杂性,因为需要新产品来解决相对简单的问题。
讽刺的是,MinIO 客户一直有这个选择。您可以通过在具有 NVMe 驱动器的高速网络上新安装 MinIO 来完全执行我上面描述的操作。 MinIO 是一种软件定义的存储解决方案 - 同一产品使用各种存储设备在裸机或您选择的集群上运行。如果您的公司数据湖在带有 HDD 的裸机上使用 MinIO,并且它对于所有非 ML 数据都能正常工作,那么就没有理由更换它。但是,如果由于您使用的是 GPU,用于 ML 的数据集需要更快的 IO,那么请考虑我在本文中概述的方法。请务必制作 ML 数据的副本,以便在 MinIO 的高速实例中使用 - 黄金副本应始终存在于 MinIO 的强化安装中。这将允许您关闭 MinIO 高速实例中的复制和加密等功能,从而进一步提高性能。使用 MinIO 复制数据很容易
MinIO 能够提供满足您饥饿的 GPU 所需的性能 -
下载
也出现在这里。