设计工具
存储

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

约翰·马齐| 2024年1月

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

什么是BaM和GIDS?

 

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

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

GIDS数据加载器建立在BaM子系统上,以解决gpu加速图形神经网络(GNN)训练的内存容量需求,同时也掩盖了存储延迟. GIDS通过在固态硬盘上存储图的特征数据来实现这一点, 由于该数据通常是大规模图的总图数据集的最大部分. 图结构数据, 与特征数据相比,哪个通常要小得多, 被钉入系统内存,使快速GPU图形采样. 最后, 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)

硬盘(1ssd)

内存映射抽象

抽样

 4.75

 4.93

 4.08

 4.65

功能聚合 

 8.57

 15.9

 31.6

 1,130

培训

 1.98

 1.97

 1.87

 2.13

端到端

 15.3

 22.8

 37.6

 1,143

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


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

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

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

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

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

 

 

DGL内存映射

硬盘(1ssd)

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是一个很好的起点, 我们期待着在未来与更多这类系统合作.

测试系统

 

组件

Details

服务器

超微型计算机® 4124年gs-tnr

CPU

2x AMD EPYC™7702(64核)

内存

1tb微米DDR4-3200

GPU

Nvidia a100 80gb

内存时钟:1512mhz

SM时钟:1410mhz

ssd

4x 9400微米 马克斯6.4TB

OS

Ubuntu 22.04 LTS,内核5.15.0.86

NVIDIA驱动程序

535.113.01

软件栈

CUDA 12.2、DGL 1.1.2、Pytorch.1运行在NVIDIA Docker容器

首席存储解决方案工程师

约翰Mazzie

约翰于2008年毕业于西弗吉尼亚大学,获得硕士学位,主修无线通信. 2011年,约翰搬到德克萨斯州奥斯汀,在戴尔的存储部门工作. 在戴尔,约翰负责MD3系列存储阵列的开发和维护工作. John于2016年加入美光,在奥斯汀的存储解决方案工程团队工作, 他在哪里研究卡桑德拉, MongoDB, 和Ceph.