登录/注册
数据集训练规模继续增长,超过数十亿个参数. 虽然有些模型可以完全适应系统内存,但更大的模型却不能. 在这种情况下, 数据加载程序需要通过各种方法访问位于闪存上的模型. 其中一种方法是将内存映射文件存储在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 |
|
内存 |
1tb微米DDR4-3200 |
GPU |
内存时钟:1512mhz SM时钟:1410mhz |
ssd |
4x 9400微米 马克斯6.4TB |
OS |
Ubuntu 20.04、内核5.4.0 |
NVIDIA驱动程序 |
535.113.01 |
参考链接
大型加速器存储器纸 & GitHub
BaM系统架构中gpu发起的按需高吞吐量存储访问(arxiv ..org)
GitHub - ZaidQureshi/bam
GPU发起的直接存储纸和GitHub
基于GPU直接存储访问的GNN框架中加速采样和聚合操作[j].org)
GitHub - jeongminpark417/GIDS
GitHub - IllinoisGraphBenchmark/IGB-Datasets:最大的现实世界开源图形数据集-在IBM-Illinois发现加速器研究所和亚马逊研究奖下完成,并与NVIDIA研究中心合作.
*注:NVIDIA Big Accelerator 内存 (BaM)和NVIDIA GPU Initiated Direct 存储 (GIDS)数据加载器是来自NVIDIA Re搜索的原型项目,不打算正式发布.