为什么贪婪的 GPU需要快速的对象存储?

一个链条的力量取决于其最薄弱的环节 - 同样,您的AI/ML基础设施的速度也只有您的最慢组件那么快。如果您使用GPU训练机器学习模型,那么您的薄弱环节可能是您的存储解决方案。结果就是我所说的“饥饿GPU问题”。

饥饿GPU问题发生在您的网络或存储解决方案无法快速向您的训练逻辑提供训练数据,以至于无法充分利用您的GPU时。症状相当明显。如果您在监控您的GPU,那么您会注意到它们从未接近充分利用。如果您已经对您的训练代码进行了 instrumentation,那么您会注意到总的训练时间主要由I/O主导。
不幸的是,对于那些正在处理这个问题的人来说,有一个坏消息。让我们来看看在使用GPU方面的一些进展,以了解这个问题在未来几年将如何变得更糟。

GPUs正在变得更快

GPU正在变得更快。不仅原始性能在提高,内存和带宽也在增加。让我们来看看NVIDIA最新GPU的三个特点:A100、H100和H200。

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(外围组件互连 Express)插槽解决方案和H100和H200的SXM(服务器PCI Express模块)插槽解决方案相对应的统计数据。SXM的统计数据对于A100不存在。关于性能,比较时使用了浮点16张量核心的统计数据。)

上述统计数据中的一些观察值得关注。首先,H100和H200的性能(1,979 TFLOPS)相同,是A100的3.17倍。H100的内存是A100的两倍,内存带宽增加了同样多 - 这是有意义的,否则GPU会饿死自己。H200可以处理高达141GB的内存,它的内存带宽也随着内存的增加而成比例地增加。
让我们更详细地探讨这些统计数据,并讨论它们对机器学习意味着什么。

  • 性能 - 一个teraflop(TFLOPS)是一万亿(10^12)浮点运算每秒。这是一个后面跟着12个零的1(1,000,000,000,000)。在模型训练期间发生的浮点运算包括简单的张量数学以及损失函数(即梯度)的一阶导数。然而,由于统计数据中的TFLOPs与I/O需求之间的相对比较,可以进行一些估计。从上面的统计数据来看,我们可以看到,H100和H200,这两者都表现出1,979 TFLOPS的性能,速度快了3倍 - 如果其他一切都能跟上,理论上数据处理速度可以提高3倍。

  • GPU内存 - 也称为视频内存或图形内存。GPU内存与系统的 main memory(RAM)是分开的,专门用于处理图形卡执行的密集图形处理任务。GPU内存决定了训练模型时的批量大小。在过去,当将训练逻辑从CPU迁移到GPU时,批量大小会减小。然而,随着GPU内存与CPU内存容量相当,GPU训练的批量大小将会增加。当性能和内存容量同时增加时,结果是更大的请求,每个吉字节的数据处理速度更快。

  • 内存带宽 - 将GPU内存和计算核心连接的“高速公路”。它决定了每单位时间内可以转移多少数据。正如更宽的高速公路可以让更多的汽车在给定的时间内通过一样,更高的内存带宽可以让更多的数据在内存和GPU之间移动。正如你所看到的,这些GPU的设计者增加了每个新版本内存带宽与内存的比例,因此芯片内部的数据显示不会成为瓶颈。

未来展望

2023年8月,NVIDIA宣布了其下一个用于加速计算和生成AI的GPU平台 - Grace Hopper超级芯片平台。这个新的平台使用了Grace Hopper超级芯片,通过NVIDIA NVLink可以连接额外的超级芯片,使它们在模型训练和推理时共同工作。
虽然所有关于Grace Hopper超级芯片的规格都代表了比之前芯片的改进,但对于AI/ML工程师来说,最重要的创新是其统一的内存。Grace Hopper让GPU完全访问CPU的内存。这对于过去希望使用GPU进行训练的工程师来说很重要。因为过去,工程师如果希望使用GPU进行训练,首先必须将数据拉入系统内存,然后从那里将数据移动到GPU内存。Grace Hopper消除了使用CPU内存作为数据到达GPU的回弹缓冲区的需要。
对于负责升级GPU并确保其他一切能够跟上进度的任何人来说,将几项关键的GPU统计数据以及Grace Hopper的能力进行简单比较,可能有点令人不安。一个存储解决方案绝对需要以更快的速度服务数据,以跟上这些GPU的改进。让我们来看一个常见的老虎GPU问题的解决方案。

一个常见的解决方案

这个问题有一个常见且明显的解决方案,不需要组织替换或升级现有的存储解决方案。您可以保持现有的存储解决方案不变,以便您可以利用贵组织所需的所有企业功能。这个存储解决方案很可能是包含贵组织所有非结构化数据的数据湖——因此,它可能相当大,总体拥有成本是一个考虑因素。它还具有许多为冗余、可靠性和安全性启用的特性,所有这些都会影响性能。
然而,可以做的就是在一个与计算基础设施相同的数据中心设置一个存储解决方案——理想情况下,这个解决方案应该与计算集群相同。确保您拥有高速网络和最佳的存储设备。从那里,只复制用于ML训练的数据。
亚马逊最近宣布的亚马逊S3 Express One Zone体现了这种方法。它是一种优化高吞吐量和小延迟的桶类型,仅限于单个可用区(没有复制)。亚马逊的意图是让客户用它来持有需要高速访问的数据的副本。因此,它是为模型训练而专门设计的。根据亚马逊的说法,它提供的是S3标准数据的10倍访问速度,成本是S3标准8倍。有关我们对亚马逊S3 Express One Zone的评估,请阅读更多内容。

MinIO解决方案

我上面概述的常见解决方案要求亚马逊定制其S3存储解决方案,通过提供增加成本的专业桶。另外,一些组织(不是MinIO客户)正在购买专业的存储解决方案,以实现我上述描述的简单事情。不幸的是,这给现有的基础设施增加了复杂性,因为需要新产品来解决一个相对简单的问题。

所有这些讽刺的是,MinIO客户一直都有这种选择。您可以通过在高速网络上安装MinIO的新实例并使用NVMe驱动器来实现我描述的所有内容。MinIO是一个软件定义的存储解决方案-相同的产品可以在裸机或您选择的集群上运行,使用各种存储设备。如果您的企业数据湖在裸机上使用MinIO并通过HDD工作,且对所有非ML数据都很好,那么没有理由替换它。但是,如果用于ML的数据集需要更快的I/O,因为您使用GPU,那么请考虑我在本帖中概述的方法。确保制作一份您的ML数据副本,用于MinIO的高速实例-始终在MinIO的坚不可摧的安装中存在金副本。这将允许您在MinIO的高速实例中关闭诸如复制和加密之类的特性,进一步提高性能。使用MinIO的镜像功能复制数据非常简单。

MinIO具有满足饥饿的GPU所需性能的能力-最近的一项基准测试在GETs上实现了325 GiB/s,在PUTs上实现了165 GiB/s,仅用32个节点的标准NVMe SSD。

今天就下载MinIO,了解如何轻松构建数据湖屋。如果您有任何问题,一定要联系我们!

相关推荐

  1. 为什么需要分布式存储

    2024-02-01 20:04:02       35 阅读
  2. 对象存储详细介绍

    2024-02-01 20:04:02       34 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-01 20:04:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-01 20:04:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-01 20:04:02       82 阅读
  4. Python语言-面向对象

    2024-02-01 20:04:02       91 阅读

热门阅读

  1. shell学习

    2024-02-01 20:04:02       52 阅读
  2. Ubuntu18搭建Kubernetes集群

    2024-02-01 20:04:02       60 阅读
  3. 踩坑日记:opencv多次绘图绘图不全

    2024-02-01 20:04:02       53 阅读
  4. Python中类的成员方法

    2024-02-01 20:04:02       50 阅读