存储架构#

数据,大量的数据,是开发精确深度学习 (DL) 模型的关键。数据量持续呈指数级增长,用于训练单个模型的数据也在不断增长。数据格式,而不仅仅是数据量,可能在数据访问速度方面起着关键作用。DGX H100 系统的性能比其前代产品快九倍。为了在实践中实现这一点,存储系统性能必须相应地扩展。

深度学习训练中的关键 I/O 操作是重读。不仅仅是读取数据,而且由于深度学习训练的迭代性质,数据必须一次又一次地重复使用。纯读取性能仍然很重要,因为某些模型类型可以在一个 epoch 的一小部分时间内完成训练(例如:某些推荐模型),并且现有模型的推理可能是高度 I/O 密集型的,甚至比训练更密集。写入性能也很重要。随着深度学习模型规模和训练时间的增长,写入检查点对于容错是必要的。检查点文件的大小可能达到 TB 级,虽然写入频率不高,但通常是同步写入,这会阻止深度学习模型向前推进。

理想情况下,数据在首次读取数据集时会被缓存,因此无需跨网络检索数据。共享文件系统通常使用 RAM 作为第一层缓存。从缓存读取文件可能比从远程存储读取快一个数量级。此外,DGX H100 系统提供本地 NVMe 存储,也可用于缓存或暂存数据。

DGX SuperPOD 旨在支持所有工作负载,但最大化训练性能所需的存储性能可能因模型和数据集的类型而异。表 5表 6 中的指南旨在帮助确定不同类型模型所需的 I/O 级别。

表 5. 存储性能需求

性能级别

工作描述

数据集大小

良好

自然语言处理 (NLP)

数据集通常适合本地缓存

较好

使用压缩图像的图像处理,ImageNet/ResNet-50

许多甚至大多数数据集可以适合本地节点的缓存

最佳

使用 1080p、4K 或未压缩图像进行训练、离线推理、ETL

数据集太大而无法放入缓存,大规模的首次 epoch I/O 需求,仅读取数据集一次的工作流程

表 6. 存储性能指南

性能特征 1

良好 (GBps)

较好 (GBps)

最佳 (GBps)

单节点读取

4

8

40

单节点写入

2

4

20

单 SU 聚合系统读取

15

40

125

单 SU 聚合系统写入

7

20

62

4 SU 聚合系统读取

60

160

500

4 SU 聚合系统写入

30

80

250

即使对于表 6中的最佳类别,也希望单节点读取性能更接近 80 GBps 的最大网络性能。

注意

随着数据集越来越大,它们可能不再适合本地系统上的缓存。将不适合缓存的大型数据集与非常快速的 GPU 配对可能会造成难以实现最大训练性能的情况。NVIDIA GPUDirect Storage® (GDS) 提供了一种将数据从远程文件系统或本地 NVMe 直接读取到 GPU 内存的方法,从而以更低的延迟提供更高的持续 I/O 性能。使用 DGX SuperPOD 上的存储结构,启用 GDS 的应用程序应该能够以超过 40 GBps 的速度将数据直接读取到 GPU 中。

高速存储为组织的所有节点提供数据的共享视图。它必须针对小型、随机 I/O 模式进行优化,并提供高峰值节点性能和高聚合文件系统性能,以满足组织可能遇到的各种工作负载。高速存储应支持来自单个系统的高效多线程读取和写入,但大多数深度学习工作负载将以读取为主。

汽车和其他计算机视觉相关任务中的用例(其中 1080p 图像用于训练,在某些情况下为未压缩图像)涉及的数据集很容易超过 30 TB。在这些情况下,每个 GPU 需要 4 GBps 的读取性能。

虽然 NLP 用例通常不需要太多的读取性能来进行训练,但创建和读取检查点文件需要峰值读取和写入性能。这是一个同步操作,训练在此阶段停止。如果您正在寻求最佳的端到端训练性能,请不要忽略检查点的 I/O 操作。

上述指标假设了各种各样的工作负载、数据集以及在本地和直接从高速存储系统进行训练的需求。最好在最终确定性能和容量需求之前,先对工作负载和组织需求进行表征。