存储架构#
数据,大量的数据,是开发精确深度学习 (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 操作。
上述指标假设了各种各样的工作负载、数据集以及在本地和直接从高速存储系统进行训练的需求。最好在最终确定性能和容量需求之前,先对工作负载和组织需求进行表征。