DESIGN TOOLS
Storage

美光9400 NVMe固态硬盘探索使用NVIDIA技术的大加速器内存

约翰·马齐| 2024年1月

数据集训练规模继续增长,超过数十亿个参数. 虽然有些模型可以完全适应系统内存,但更大的模型却不能. 在这种情况下, 数据加载程序需要通过各种方法访问位于闪存上的模型. 其中一种方法是将内存映射文件存储在ssd上. 这允许数据加载器访问文件,就像它在内存中一样, 但是CPU和软件栈的开销极大地降低了训练系统的性能. 这就是大加速器内存(BaM)*和gpu启动的直接存储(GIDS)*数据加载程序的由来.

什么是BaM和GIDS?

 

BaM是一种利用低延迟的系统架构, 极高的吞吐量, large density, 和ssd的耐用性. BaM的目标是提供高效的抽象,使GPU线程能够对ssd上的数据集进行细粒度访问,并实现比需要CPU提供存储请求以服务GPU的解决方案更高的性能. BaM加速使用定制的存储驱动程序,该驱动程序专门设计用于使gpu的固有并行性能够直接访问存储设备. BaM不同于 NVIDIA Magnum IO™GPUDirect® 存储(GDS),因为BaM不依赖CPU来准备从GPU到SSD的通信.

美光之前与NVIDIA GDS的合作如下:

GIDS数据加载器建立在BaM子系统上,以解决gpu加速图形神经网络(GNN)训练的内存容量需求,同时也掩盖了存储延迟. GIDS通过在SSD上存储图的特征数据来实现这一点, 由于该数据通常是大规模图的总图数据集的最大部分. 图结构数据, 与特征数据相比,哪个通常要小得多, 被钉入系统内存,使快速GPU图形采样. Lastly, GIDS数据加载程序在GPU内存上为最近访问的节点分配一个软件定义的缓存,以减少存储访问.

使用GIDS进行图神经网络训练

 

以显示BaM和GIDS的好处, 我们使用Illinois Graph Benchmark (IGB)异构完整数据集进行GNN训练. 这个数据集是2.28TB大,不适合大多数平台的系统内存. 我们使用单个Nvidia a100 80gb Tensor Core GPU为100次迭代计时训练,并改变ssd的数量以提供广泛的结果, 如图1和表1所示.

图1:igb异构完整数据集的GIDS训练时间- 100次迭代

 

 

GIDS(4块ssd)

GIDS(2块ssd)

GIDS (1 SSD)

内存映射抽象

Sampling

 4.75

 4.93

 4.08

 4.65

功能聚合 

 8.57

 15.9

 31.6

 1,130

Training

 1.98

 1.97

 1.87

 2.13

End-to-End

 15.3

 22.8

 37.6

 1,143

表1:igb异构完整数据集- 100次迭代的GIDS训练时间


训练的第一部分是图形采样,由GPU完成,并访问系统内存中的图形结构数据(见蓝色部分)。. 这个值在不同的测试配置之间变化很小,因为存储在系统内存中的结构在这些测试之间不会改变.

另一部分是实际训练时间(见最右边的绿色部分). 这部分高度依赖于GPU, 我们可以看到,这在多个测试配置之间并没有像预期的那样有太大的变化.

最重要的部分, 我们在哪里看到最大的差异, 是特征聚合(用金色显示). 由于该系统的特性数据存储在Micron 9400 ssd上, 我们看到,从1微米到4微米的9400固态硬盘的扩展极大地改善了(减少了)特征聚合处理时间. 特征聚合提高了3.从1个SSD扩展到4个SSD. 

我们还包括了基线计算, 它使用内存映射抽象和深度图形库(DGL)数据加载器来访问特征数据. 因为这种访问特征数据的方法需要使用CPU软件堆栈,而不是由GPU直接访问, 我们可以看到CPU软件堆栈在训练期间保持GPU饱和是多么低效. 特性抽象相对于基线的改进是35.使用GIDS和131的1微米9400 NVMe SSD的76x.在4微米9400 NVMe固态硬盘上运行. 该数据的另一个视图如图2和表2所示, 其中显示了这些测试期间的有效带宽和IOPs.

图2:GIDS训练与基线的有效带宽和IOPS

 

 

DGL内存映射

GIDS (1 SSD)

GIDS(2块ssd)

GIDS(4块ssd)

有效带宽(GB/s)

0.194

6.9

13.8

25.6

实现IOPs (M/s)

0.049

1.7

3.4

6.3

表2:GIDS训练与基线的有效带宽和IOPS


随着数据集的不断增长, 为了在合理的时间内训练这些模型,并利用领先gpu提供的改进,我们可以看到范式转变的必要性. BaM和GIDS是一个很好的起点, 我们期待着在未来与更多这类系统合作.

Test System

 

Component

Details

Server

Supermicro® 4124年gs-tnr

CPU

2x AMD EPYC™7702(64核)

Memory

1tb微米DDR4-3200

GPU

Nvidia a100 80gb

内存时钟:1512mhz

SM时钟:1410mhz

SSDs

4x Micron 9400 MAX 6.4TB

OS

Ubuntu 22.04 LTS,内核5.15.0.86

NVIDIA Driver

535.113.01

软件栈

CUDA 12.2, DGL 1.1.2, Pytorch 2.1运行在NVIDIA Docker容器

首席存储解决方案工程师

John Mazzie

John是位于德克萨斯州奥斯汀的数据中心工作负载工程小组的技术人员. 他于2008年毕业于西弗吉尼亚大学(West Virginia University),获得硕士学位,主修无线通信. John曾在Dell的存储MD3系列存储阵列的开发和维护方面工作过. John于2016年加入美光,从事Cassandra的研究, MongoDB, and Ceph, 以及其他高级存储工作负载.