NVIDIA:GPU作为数据访问引擎的计算架构设计-Fig-1
随着场景规模扩大和拓展带来的新问题:
NVIDIA:GPU作为数据访问引擎的计算架构设计-Fig-2
GPU 不仅仅是一个计算怪兽,它也变成了一个细粒度的数据访问引擎。使用 O(100K) 线程来加速计算或 IO。
右侧图解: 描述了 GPU 与存储设备通过 PCIe 通道连接的问题,重点在于如何高效传输 O(100K) 的请求/响应通过 PCIe 引脚。
关于 NVSHMEM(Nvidia Shared Memory) NVSHMEM 是一种高性能的分布式内存库,专为 GPU 环境下的并行计算设计。它由 NVIDIA 提供,支持在 GPU 上实现共享内存编程模型,用于在多个 GPU 之间高效地共享和传递数据。 核心概念:
NVIDIA:GPU作为数据访问引擎的计算架构设计-Fig-3
快速、稀疏访问海量数据--快速要求高并行计算,稀疏访问对热数据管理提出挑战。
右侧图示4种数据密集性计算场景,括号内为数据集体量,
Note:说明新计算范式的特征:高并行+内存密集型,反观当前内存应用面临的挑战:2D-DRAM难继续缩小制造尺寸,2.5D的HBM良品率低、价格高,难以支撑计算场景需求,关键是想说明使用NVMe介质来扩展内存。
NVIDIA:GPU作为数据访问引擎的计算架构设计-Fig-4
对上述4种场景的进一步介绍。
共同需求:简单管理大数据集
NVIDIA:GPU作为数据访问引擎的计算架构设计-Fig-5
图示新计算场景应用分层示意。
图示应从左到右进行拆解,左侧是业务系统,存储的数据经过cuGraph神经网络系统,存储到右侧高维向量数据库中,作为推荐系统的数据大脑。
通过使用 cuGraph 和嵌入向量数据库,将图神经网络(GNN)的训练和推理流程进行了模块化设计,显著降低了内存管理复杂性。数据从存储系统到推荐系统的整个流程实现了高效分层,支持了大规模图计算的可扩展性和维护性。这种设计尤其适用于需要高性能嵌入生成和查询的推荐系统。
关于cuGraph cuGraph 是 NVIDIA RAPIDS 开放式生态系统的一部分,是一个用于 GPU 加速图计算的高级库。它提供了一系列 API 和工具,能够帮助开发者高效地处理图形数据(如节点和边),从而支持机器学习、深度学习以及数据科学领域的大规模图计算任务。 典型应用场景:
NVIDIA:GPU作为数据访问引擎的计算架构设计-Fig-6
GPU 发起的数据访问架构使得 GPU 能够自主管理数据请求,从而避免传统的 CPU 中介,提高了并行数据处理效率。通过 GDA KI 存储和 NVMe 技术,数据请求可以在 GPU 内核中直接生成、提交、处理并消费。该架构不仅优化了数据 IO 性能,还通过可信的服务器环境确保了数据安全性,是高性能计算和大规模数据处理的核心支持技术。
关于GDA KI存储 GPU 主导的 IO 操作:
技术优势:
NVIDIA:GPU作为数据访问引擎的计算架构设计-Fig-7
提出新的数据中心概念:SCADA(scaled accelerated data access)
如何理解呢?
支持之前无法支持的情况,例如在一个节点中处理 10TB 数据,避免 OOM(内存不足)问题
在数据集规模和计算集群规模上透明扩展
前端:处理缓存,避免分区,支持多 GPU/多节点之间的通信
后端:应用访问数据集 X,将数据存储位置和方式的细节下放
数据平台工具可管理数据策展、本地化、分片和分阶段
利用 GPU 线程、内存管理和拓扑优化通信实现加速
Note:早就听说Nvidia要进军CSPs市场,SCADA 下一代数据中心设计思想在这张胶片中,或许能窥探出一二端倪。
SCADA 是Nvidia 在新型数据中心上的存储系统顶层设计。
NVIDIA:GPU作为数据访问引擎的计算架构设计-Fig-8
BaM 和 GIDS 是面向现代数据中心开发的两个 GPU 驱动的存储访问原型,强调了高吞吐量、易集成和高效 IO 管理。通过模板化的 C++ 库和缓存机制,这些原型降低了大规模 GPU 线程的 IO 复杂性,为高性能图计算和数据密集型任务提供了先进的存储解决方案。
NVIDIA:GPU作为数据访问引擎的计算架构设计-Fig-9
图的上半部分示意GPU直通模式下(BaM)的数据访问路径,经历:
GPU中的数据处理 -- 缓存数据 -- IO处理 -- NVMe SSD落盘(没有CPU调度参与)
下图示意每个环节的峰值IOPS和带宽:
Note:材料将计算系统的低效归因于NVMe设备或PCIe接线引脚,鹏弟认为这可能是不太准确的,或者换个说法,PCIe引角数量再怎么加也跟不上计算器的处理速度。
首先逻辑处理器电气设计(制造工艺)比存储器(RAM)要领先,后者需要持续供电(Fresh)以保留数据状态;
至于持久化的存储(NAND为例)更是要经历落盘等长周期操作。
核心还是要优化数据的IO路径,要么缩短IO路径,强化存储端计算能力,即计算型存储;
要么优化IO缓冲区、内核缓存(Page Cache)等热数据调度算法,只移动需要的数据。
不可否认,连接数据盘的PCIe接口,通道(引脚数量决定)和带宽是当前系统性能受限的客观原因。
更多关于服务器上PCIe引脚分配和设计,可参考黄亮总4年前整理的文章:
NVIDIA:GPU作为数据访问引擎的计算架构设计-Fig-10
配图右侧说明:
基于BaM GPU直接访问NVMe设备,能在4块PCIe Gen4 X 4 NVMe 设备上,跑出超过 6 MIOPs,23+ GB/s 的 4KB 随机读取性能,达到PCIe通道理论峰值性能。
左侧配图显示:随NVMe设备增加,前期(1-4盘)性能成线性,从 4 个驱动器增加到 6 个驱动器,MIOPs 和 GB/s 略有增长(已不明显)。
NVIDIA:GPU作为数据访问引擎的计算架构设计-Fig-11
每个 GPU 线程动态生成并提出自己的请求。
如果提前知道批处理数据大小,可以使用 GPU Direct Storage。
数据大小可以是 4B-4KB。
如果是粗粒度,可以用极少的线程饱和数据引脚。
无法可靠地将数据完全容纳在 GPU 的高带宽内存中。
如果能容纳,那么可以直接使用加载/存储操作。
关注数据访问作为瓶颈的问题。
如果计算是瓶颈,许多节点的 HBM(高带宽内存)通常是充足的。
描述了适合 GPU 启动数据处理的几种场景和限制条件。特别强调了细粒度高吞吐的需求、对数据大小的灵活支持、以及在数据访问和计算瓶颈之间的平衡。通过利用 GPU Direct Storage 等技术,可以更好地适应批处理和动态数据请求场景,同时缓解数据访问限制对性能的影响。
NVIDIA:GPU作为数据访问引擎的计算架构设计-Fig-12
通过将数据溢出到 NVMe 存储,将问题适配到少量 GPU 中。
即使速度稍慢(例如,使用 1 个 NVMe),需要了解您的性能减速阈值。
在相同性能水平下,与 HBM 或 DDR 相比,NVMe 提供了更高的成本效益。
随着优化的深入,性能可能会进一步提升。
性能受到进入 GPU 的 PCIe 带宽和驱动器数量的限制。
NVIDIA:GPU作为数据访问引擎的计算架构设计-Fig-13
帮助推动 GPU 成为数据访问引擎的未来