Quiver:单机多卡GNN训练加速系统
如果无法正常显示,请先停止浏览器的去广告插件。
1. 您公司的logo
Quiver:
分布式高性能图学习系统
袁秀龙 清华大学
Zeyuan Tan, Luo Mai, 爱丁堡大学
Guo Li, Peter Pietzuch 帝国理工学院
阿里巴巴
1
2. 目录 CONTENT
01 为什么我们需要一
个高性能图引擎 03
02 Quiver单机版本的设
计与性能 04
Quiver分布式的扩展
总结与展望
您公司的logo
2
3. 您公司的logo
01
为什么我们需要一个高性能图引擎
3
4. 为什么我们需要一个高性能的图引擎
机器学习系统 = 数据模块 + 计算模块
数据模块=数据IO + 数据预处理
tf.data
pytorch.dataloader
MindData
计算模块= Tensor计算 + 自动微分
TensorFlow
Pytorch
MindSpore
您公司的logo
4
5. 为什么我们需要一个高性能的图引擎
图机器学习系统 = 图引擎 + 图上的传播计算
图引擎=图数据管理 + 图采样+图
特征拉取+其他预处理
计算模块= 基于消息传递的Tensor计算 +
自动微分
您公司的logo
5
6. 为什么我们需要一个高性能的图引擎
计算模块可以在现有的Tensor计算引擎上构建
DGL架构[1]
您公司的logo
6
7. 为什么我们需要一个高性能的图引擎
图数据模块面临着 数百倍于 常规机器学习数据预处
理所面临的IO压力,导致数据预处理时间更长。
常规机器学习数据预处理任务 图机器学习数据预处理任务
图结构 简单 复杂
图拓扑数据 小(一个进程一份拓扑结构数据) 大(一个机器节点一份拓扑结构
数据)
图采样 简单: 点采样/边采样( 如正负样本对 ) 复杂: 子图采样
特征拉取I/O次数 一个样本平均约为一次I/O 一个样本(子图)约为|V|次IO
您公司的logo
7
8. 为什么我们需要一个高性能的图引擎
图机器学习模型目前较小,计算时间较短,更加重了对数据处
理侧的压力, GPU利用率较低。
一个batch的数据最大
可达 587MB
图采样 CPU图特征拉取 H2D传输
64ms 13ms 36ms
PyG官方Reddit示例[2]: BatchSize=1024, 节点特征维度=602, 每个子图节点个数
<=250
您公司的logo
GPU计算
5ms
GPU利用率 < 35%
8
9. 为什么我们需要一个高性能的图引擎
➢ 图采样复杂且耗时较长
➢ 图特征聚合对内存带宽和CPU到GPU的传输带宽负载较大,经常成为性能瓶颈
➢ 图模型小计算相对较快,对数据侧压力较大,GPU显存占用和GPU利用率均比较低
您公司的logo
9
10. 您公司的logo
02
Quiver在GPU服务器的设计
10
11. 单机GNN的训练性能值得被挖掘
1. 512G/1T内存的机器并不少见,单机内存能够支撑绝大部分规模的图数据上的模型训练和
推理:PinSage[3]/Pixie[4]。
1. NVMe SSD技术的发展使得硬盘的随机读取速度快过常规网络传输速度。
1. 单机的方案相比较分布式的方案往往更高效、更经济。
[5] 数据来源于AWS官网[https://aws.amazon.com/cn/ec2/instance-types/p4/]
您公司的logo
11
12. Quiver在单机上的一些设计和实现
一个batch的数据最大可
达 587MB
常规方案1
CPU图采样
64ms
CPU图特征拉取 13ms
H2D传输
36ms
CPU图采样 CPU图特征拉取 64ms 13ms CPU图采样 CPU图特征拉取 H2D传输
64ms 13ms 36ms
CPU图采样 CPU图特征拉取
64ms 13ms
您公司的logo
GPU计算
5ms
GPU计算
5ms
12
13. Quiver在单机上的一些设计和实现
常规方案2
CPU图采样 64ms
CPU图采样 64ms
CPU图采样 64ms
CPU图采样 64ms
CPU图特征拉取 13ms
H2D传输 36ms
GPU计算 5ms
CPU图特征拉取 13ms
CPU图特征拉取 13ms
H2D传输 36ms
GPU计算 5ms
CPU图特征拉取 13ms
问题:
➢ 采样和特征拉取均为CPU密集型操作,多卡训练时由于CPU成为瓶颈而导致扩展性差(p4d: 6
cores/GPU)
➢ CPU到GPU的数据拷贝的时间消耗无法优化
您公司的logo
13
14. Quiver在单机上的一些设计和实现
一个batch的数据最大可
达 587MB
常规方案2
CPU图采样
64ms
GPU图采样
CPU图特征拉取 13ms
GPU图特征拉取
H2D传输
36ms
H2D传输
36ms
GPU计算
5ms
GPU计算
5ms
全部数据需要放到GPU上,GPU显存小,只能处理小图
您公司的logo
14
15. Quiver在单机上的一些设计和实现
Quiver在单机器上的整体设计想法
图机器学习模型训练占用显存少,显存利用率低
充分利用起来GPU Server中的多层次访问吞吐关系
和图学习模型训练过程中的数据访问特性将GPU利
用起来。
您公司的logo
15
16. Quiver在单机上的一些设计和实现 —— UVA 采样
采样操作:对内存负载不高,但由于有大量的随机访问,使得每一次的内存访问延迟较高。
UVA采样:GPU通过PCIe访问CPU内存相比较CPU直接访问内存延迟更高。但通过大量的GPU线程并
行使得延迟可以被良好的掩盖。
您公司的logo
16
17. Quiver在单机上的一些设计和实现 —— UVA 采样
➢ 性能相比较单CPU采样有约20X的性能提升
➢ 不占用CPU,多卡训练时CPU不会成为瓶颈
➢ 可以处理远大于GPU显存的图
您公司的logo
17
18. Quiver-UVA Feature Allocation
1.真实图的访问大多具有幂律分布特性,是一个典型的缓存友好型访问特性
2.一个AI Server的典型访问吞吐层级有如下关系:
GPU Local > D2D With NVLink > D2H With Pinned Buffer >D2D Without NVLink>(H2H, D2H With
Pageable Buffer) > Disk
Device GPU0 GPU1 CPU
GPU0 ~660GB/s - -
GPU1 ~50GB/s ~660GB/s -
CPU Pageable: ~13GB/s
Pinned: ~26GB/s Pageable: ~13GB/s
Pinned: ~26GB/s ~13GB/s
您公司的logo
18
19. Quiver-Adaptive Data Allocation
当机器上有NVLink高速互联时:
GPU Local > D2D With NVLink > D2H With Pinned Buffer
您公司的logo
19
20. Quiver-UVA Feature Allocation
当机器上没有NVLink高速互联时:
GPU Local > D2D With NVLink > D2H With Pinned Buffer
您公司的logo
20
21. Quiver-UVA Feature Allocation
7x 吞吐
您公司的logo
21
22. Quiver-端到端训练性能数据
性能收益来源:
➢ 采样更快,采样扩展性更好
➢ 特征聚合吞吐更高
您公司的logo
22
23. Quiver-API与单卡训练使用示例
PyG用户只需要修改10余行代码即可享受到Quiver带来的性能加速
您公司的logo
23
24. Quiver-API与多卡使用示例
实现了基于共享内存的IPC机制,可以作为进程间参数传递,方便启动DDP训练
您公司的logo
24
25. 您公司的logo
03
Quiver在多机下的扩展
25
26. 分布式情况下图机器学习模型训练的挑战
单机下的图机器学习模型训练
您公司的logo
26
27. 分布式情况下图机器学习模型训练的挑战
核心挑战:图切分带来的网络通信问题
Server1
Feature
Partition1
Server2 Server3 Server4
Feature
Partition2 Feature
Partition3 Feature
Partition4
传输数据量大
Server4
Server1
图采样
Server3
图特征拉取
机器需要>10GB/s的
网络带宽来满足训
练
H2D传输
GPU训练
Train on Server1
Server2
您公司的logo
27
28. 分布式情况下图机器学习模型训练的挑战
常见解决方案:
Quiver在分布式下的
探索方向
➢ 优化现有的训练流程
➢ 通过更好的切分算法来确保大部分数据访问都在本地命中
➢ 利用图的访问不均匀特性来做良好的缓存策略
➢ 利用RDMA等技术加速网络通信
➢ 寻找对分布式更友好的训练策略
➢ 通过预先进行数据预处理落盘,将图数据训练流程退化到常规数据训练流程: AGL[6],
SIGN[7]
➢ 通过划分Cluster,训练的数据访问和采样局限在Cluster内部,杜绝跨Cluster的通信:
ClusterGCN[8]
您公司的logo
28
29. Quiver-Adaptive Feature Allocation and Cache
拓扑的切分: Random, Metis, V-Cut, E-Cut…
图数据的切分
特征的切分: Random, 与图切分的结果保持一致
您公司的logo
29
30. Quiver-Adaptive Feature Allocation and Cache
随机划分实际用的更多
拓扑的切分: Random, Metis, V-Cut, E-Cut…
图数据的切分
特征的切分: Random, 与图切分的结果保持一致
Quiver更关注特征的切分
您公司的logo
30
31. Quiver-Adaptive Feature Allocation and Cache
观察:
➢ 从训练开始到训练结束,每个机器上训练的种子节点保持不变。
意味着:
➢ 从训练开始到训练结束,每一个Epoch内每个机器对特征数据的访
问频次特性是固定的
而:
➢ 在给定种子节点的情况下,对特征数据访问频次特性由采样算法决
定
您公司的logo
31
32. Quiver-Adaptive Feature Allocation and Cache
核心想法:基于全局的每台机器对节点特征的访问热度图矩阵决定特征
数据在各个机器上的切分和冗余存储。
两机训练时,每台机器上全图的所有节点特征数据的访问热度图
您公司的logo
32
33. Quiver-Adaptive Feature Allocation and Cache
更高的本地特征数据命中率
您公司的logo
33
34. Quiver-端到端性能表现
您公司的logo
34
35. 您公司的logo
04
Quiver项目总结与未来展望
35
36. Quiver-总结与未来展望
总结
➢ 利用UVA采样和UVA的特征聚合来提升GPU的利用率,极大的提升了单机上训练的性
能。
➢ 分布式情况下,基于应用层的访问信息来决定数据的排布,在一些数据集下极大的
提升了本地命中率,减少大量网络开销。
展望
➢ Quiver致力于为图学习社区提供统一、高效的图引擎,让算法同学专注到模型本身
的构建而无需担心性能问题。
➢ 非常欢迎对Quiver感兴趣的同学在会后进行交流与合作。
您公司的logo
36
37. 非常感谢您的观看
Project link
37