存储架构#

数据,大量的数据,是开发精确的深度学习 (DL) 模型的关键。数据量持续呈指数级增长,用于训练单个模型的数据也在不断增长。数据格式,而不仅仅是数据量,可以在数据访问速度方面发挥关键作用,因此存储系统性能必须相应地扩展。

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

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

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

表 5. 存储性能要求#

性能级别

工作描述

数据集大小

良好

自然语言处理 (NLP)

数据集通常适合本地缓存

较好

训练压缩图像、压缩音频和文本数据,例如 LLM 训练

许多到大多数数据集可以适合本地系统的缓存

最佳

使用大型视频和图像文件进行训练(例如 AV 重放)、离线推理、ETL、生成网络(例如 stable diffusion)、3D 图像(例如医学 U-Net)、基因组学工作负载和蛋白质预测(例如 AlphaFold)

数据集太大而无法放入缓存,大规模的首个 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 的应用程序应该能够以超过 27 GBps 的速度直接将数据读取到 GPU 中。

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

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

虽然 NLP 和 LLM 用例通常不需要那么多的读取性能来进行训练,但创建和读取检查点文件需要峰值读取和写入性能。这是一个同步操作,训练会在这个阶段停止。如果您正在寻求最佳的端到端训练性能,请不要忽略检查点的 I/O 操作。对于 LLM 和大型模型用例,请考虑至少 ½ 的读取性能作为建议的写入性能。

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