百度图学习技术与应用
如果无法正常显示,请先停止浏览器的去广告插件。
1. 百度PGL
图学习技术与应用
黄正杰 百度资深研发工程师
2. 目录 CONTENT
01 图来源与建模 02 PGL 2.2介绍
03 图神经网络技术 04 应用落地
3. 01
图
来源与建模
4. 图从哪里来
图是描述复杂世界的通用语言
Social Network Molecular
Knowledge Graph Recommender System
G = (V, E)
<latexit sha1_base64="SkKxhkq+rlmNZwpK9BKtGNrXxkc=">AAAB/3icbVDLSgMxFL1TX7W+qi7dBItQQcpMEXQjFER0WcE+oB1KJs20oUlmSDJCGbrwF9zq3p249VPc+iWm7Sy09cCFwzn3ci4niDnTxnW/nNzK6tr6Rn6zsLW9s7tX3D9o6ihRhDZIxCPVDrCmnEnaMMxw2o4VxSLgtBWMrqd+65EqzSL5YMYx9QUeSBYygo2V2rdX5eYZujntFUtuxZ0BLRMvIyXIUO8Vv7v9iCSCSkM41rrjubHxU6wMI5xOCt1E0xiTER7QjqUSC6r9dPbvBJ1YpY/CSNmRBs3U3xcpFlqPRWA3BTZDvehNxX+9QCwkm/DST5mME0MlmQeHCUcmQtMyUJ8pSgwfW4KJYvZ3RIZYYWJsZQVbirdYwTJpViueW/Huz0u1clZPHo7gGMrgwQXU4A7q0AACHJ7hBV6dJ+fNeXc+5qs5J7s5hD9wPn8AH3mVEg==</latexit>
5. 图神经网络的发展趋势
From Spectral-based to Spatial-based
2014
2015
2016
Spectral-Based
Spectral-Based
Fourier
Transform
2017
2018
Spatial-Based
Spatial-based
Inverse Fourier
Transform
Frequency Doamin
Transform
2D Convolution v.s. Graph Convolution
6. 基于空间Spatial的图神经网络
How to represent a node? How to represent a graph?
• Neighbor Aggregation • Node Aggregation
Pooling
(Sum/Mean/Max
)
7. 消息传递图神经网络
目前大部分主流的图神经网络都可以描述成消息传递的形式 (Message Passing)
Send Message
w
w
w
w
w
w
w
w
Recv. Message
w
w
w
w
Mean
Mean
w
8. 02
PGL 2.2介绍
9. Paddle Graph Learning
Github: https://github.com/PaddlePaddle/PGL
API 文档地址: https://pgl.readthedocs.io/en/latest/
应用场景
模型仓库
推荐系统
搜索引擎
游走类模型
智慧金融
智能地图
消息传递类模型
同构图网络接口
安全风控
生物医药
知识嵌入类模型
异构网络接口
编程接口
消息传递接口
工具双擎
底层支持
图池化接口
CPU图引擎
图采样接口
GPU图引擎
图切分 | 图存储 | 图采样 | 图游走 | 异构图 | 大规模参数服务器
飞桨核心框架
10. PGL:基于Paddle 2.0动态图提升易用性
① 定义图
② 消息接收:如何把消息发到目标点
③ 目标点:如何接收消息
send
recv
11. 使用PGL构建一个GAT网络
Step1: Pre-computing weight
Step2: Compute alpha and send feature.
Step3: Recv message by softmax weighted sum
12. 如何训练一个GNN
根据图的规模,选择适用的训练方案
小 图规模
• FullBatch 训练
• 图规模<GPU显存
13. 小规模FullBatch训练
FullBatch Training
• 输入整张图或者大的图分片,输出所有的点
• 可以跑较深的GNN
• 中小型数据集: Cora, Pubmed, Citeseer,
ogbn-arxiv
图来源于《Training Graph Neural Networks with 1000 Layers,ICML 2021》
14. 如何训练一个GNN
根据图的规模,选择适用的训练方案
小 图规模
中 图规模
• FullBatch 训练 • Partition训练
• 图规模<GPU显存 • 图规模总量<多GPU显存
15. DistGPUGraph: Graph Sharding降低显存峰值
Graph Partition
单GPU FullBatch训练
降低显存峰值
GPU Memory: O(Eh)
edge
function
16. DistGPUGraph: Graph Sharding降低显存峰值
单GPU FullBatch训练
降低显存峰值
GPU Memory: O(Eh)
多GPU FullBatch训练
GPU Memory: O(Eh/ngpu)
edge
function
edge
function
edge
function
通过NCCL同步节点特征
17. DistGPUGraph: Graph Sharding降低显存峰值
TransformerConv on ogbn-arxiv
Graph -> DistGPUGraph: 一行代码实现图分片训练
Peak GPU Memory
40
30
20
10
0
1
2
4
8
GPU卡数
Automatically GPU Sharding
Seconds per 100 Epoch
800
600
400
200
0
1
2
4
GPU卡数
8
18. 如何训练一个GNN
根据图的规模,选择适用的训练方案
小 图规模
中 图规模
大 图规模
• FullBatch 训练 • Partition训练 • MiniBatch训练
• 图规模<GPU显存 • 图规模总量<多GPU显存 • 图采样
• 图规模<CPU内存
19. FullBatch vs MiniBatch采样方式训练
FullBatch/Partition Training Neighborhood Sampling Training
• 输入整张图或者大的图分片,输出所有的点 • 更像传统的Mini-Batch训练方式
• 可以跑较深的GNN • 邻居数目指数上升,模型深度受邻居采样量限制
• 中小型数据集: Cora, Pubmed, Citeseer, • 巨型数据集: ogbn-products, ogbn-papers100m
ogbn-arxiv
20. GNNAutoScale:通过History Embedding实现深度GNN
History Embedding机制
Push
Pull
Compute
Compute
Compute
• 采用History Embedding中间隐态 CPU 缓存技术存储邻居,减少显存
占用,从而可实现 GNN 深度扩展。
• 训练过程中,需要聚合邻居时从History Embedding拉取邻居信息(Pull),
更新节点时将相应内容推送至History Embedding(Push),保证History
Embedding不过时。
CUDA Stream 异步读写
•
I/O
I/O
通过异步 CUDA Stream,实现模型计算和 IO 操作的并行化,
减少从 History Embedding拉取或推送Embedding的整体用
时。
? !
Matthias Fey, Jan E. Lenssen, Frank Weichert, Jure Leskovec: GNNAutoScale: Scalable and Expressive Graph Neural Networks via Historical Embeddings (ICML 2021)
21. GNNAutoScale:通过History Embedding实现深度GNN
PGL v2.2已集成GNNAutoScale
Push
Pull
22. 如何训练一个GNN
根据图的规模,选择适用的训练方案
小 图规模
中 图规模
大 图规模
巨 图规模
• FullBatch 训练 • Partition训练 • MiniBatch训练 • MiniBatch训练
• 图规模<GPU显存 • 图规模总量<多GPU显存 • 图采样 • 分布式图存储&采样
• 图规模<CPU内存
23. PGL 易用分布式图引擎接口
Graph Engine
Graph Sharding
一键部署
l
在MPI以及K8S集群上通过pgl launch接口一键部署
l 按类型邻居采样
l 节点遍历
Servers
Clients
24. 大规模训练范式
• 满足超大规模节点
Embedding需求
•
• Graph Embedding
Graph Neural Network
• 解决数据Feed与训练
速度差瓶颈
• 大规模分布式图引擎
25. 03
图神经网络
技术
26. 节点分类任务
一般机器学习场景 图网络场景
数据之间相互独立 样本之间相互关联
训练
预测
训练
预测
标签
数据
半监督节点分类
27. 节点分类任务
图网络场景
标签传播 LPA
• 只考虑链接关系,标签间的关系
邻居
标签
样本之间相互关联
训练
自身
标签
预测
特征传播 GCN
• 只考虑特征与链接关系
半监督节点分类
自身
特征
邻居
特征
自身
标签
28. UniMP:融合标签与特征传播
有趣的发现
• 训练集很难达到99%准确率
• 数据有噪声,缺乏过拟合能力
Motivation
• 显式地把训练Label使用
• 避免训练标签泄漏
Shi, Yunsheng, et al. “Masked label prediction: Unified message passing model for semi-supervised classification.”, IJCAI 2021
29. UniMP:融合标签与特征传播
通过标签传播与特征传播的融合取得大幅度的效果提升
Shi, Yunsheng, et al. “Masked label prediction: Unified message passing model for semi-supervised classification.”, IJCAI 2021
30. R-UniMP: KDDCup 21 MAG240M冠军方案
图规模
• 论文: 121M, 768维特征(200G)
• 作者: 122M
• 引用关系: 1.3B
Relation-wise 邻居采样
• 按照节点的类型,进行独立邻居采样
Relation-wise 批归一化 ( BatchNorm)
• 对于不同节点与类型,独立Batch统计量
Relation-wise Attention注意力
• 通过注意力机制聚合不同来源的节点特征
31. Link Prediction目前与GNN结合的局限性
Tail
Head
Tail
Head
Tail
Tail
Head
Head
GNN + Link Prediction瓶颈
• GNN深度与采样相关
• 训练复杂度与邻居量相关 O(Neighbors * Training Samples)
32. Relation-based Embedding Propagation
根据不同的Score Function进行特征传播
33. Relation-based Embedding Propagation
REP的特征传播算法效率高
所有的算法叠加REP基本都有提升
通过REP算法能够加速不同的知识表示模型收敛
34. KDDCup 21 Wiki90M冠军方案
Relation-based Embedding Propagation
Eg. Geoffrey Hinton / citizen of -> Canada
• 数据集:
• 实体: 87M, with 768-dim vector
• 关系: 504M, with 768-dim vector
• 数据划分: 时间
• Sep, 2020 for train
• Oct, 2020 for dev
• Nov, 2020 for test
Graph4KG: 大规模知识表示工具
35. 04
应用落地
36. 图学习算法落地
度小满
• 网页质量评估
• 网页反作弊
• 文本检索
• 新闻推荐
• 大V动态推荐
• 直播推荐
• 贴吧推荐
• 内容推荐
百度地图
• 地图流量预测
• POI检索
• 风险用户识别
有驾App
• 异常用户检测
• 异常内容检测
• 商品推荐
• 视频推荐
37. 常用的推荐系统算法
如何去衡量相似性
Item-based 协同过滤 User-based 协同过滤
按照以前你阅读的内容推荐 按照与你同好的人推荐
相近内容
• 作者
• 类别
• 人群
• 话题
…
信息流推荐
直播推荐
相似用户
• 性别
• 年龄
• 社群
• 兴趣
…
38. 常用的推荐系统算法
用户物品向量空间
图的构造形式
点击
日志
信息流推荐
社交关系|用户行为|物品关联
可以通过距离度量相似度
表示
学习
39. 图学习技术在推荐系统的应用
用户物品向量空间
图的构造形式
社交关系|用户行为|物品关联
矩阵分解
表示
学习
可以通过距离度量相似度
随机游走+Word2vec
图对比学习
40. 推荐系统的算法组合多样
• 主要的需求:复杂的图结构支持,大规模的实现,快速的实验成本
Graph4Rec工具包: 一个工具解决GNN+表示学习问题
Graphs Random Walk Selection Ego-graph Generate GNNs Selection
•
•
• •
•
•
•
• •
•
•
•
• •
•
•
•
•
Homogeneous
Bipartite Graph
Heterogeneous
Deepwalk
Node2vec
Metapath2vec
Struc2vec
LINE
Full Neighborhood
Neighborhood Sampling
PinSAGE Sampling
EdgeDrop
Graph Augmentation
GCN
GraphSAGE
GAT
R-GNNs
LightGCN
41. Graph4Rec工具的特性
不同场景以及训练的方式,效果差异大
内置丰富的模型组合,降低调研成本
42. Graph4Rec工具的特性
大规模稀疏特征Side-info支持
node emb
…
Id emb
slot1 emb
slotN emb
自动GNN异构图扩展
GNN R-GNN
GNN GNN
GNN
GNN
43. Graph4Rec工具的特性
GNN推荐系统训练,瓶颈主要来源于 图采样 和 负样本
In-Batch Negative优化,减少随机负样本需要的图采样
降低图采样的次数,效果与速度的平衡
分布式训练速度
44. Graph4Rec工具的特性
游走模型速度快, 可作为优秀的热启动参数
参数模型热启动模式,GNN+Embedding热启动
45. Paddle Graph Learning
Github: https://github.com/PaddlePaddle/PGL
API 文档地址: https://pgl.readthedocs.io/en/latest/
应用场景
模型仓库
推荐系统
搜索引擎
游走类模型
智慧金融
智能地图
消息传递类模型
同构图网络接口
安全风控
生物医药
知识嵌入类模型
异构网络接口
编程接口
消息传递接口
工具双擎
底层支持
图池化接口
CPU图引擎
图采样接口
GPU图引擎
图切分 | 图存储 | 图采样 | 图游走 | 异构图 | 大规模参数服务器
飞桨核心框架
46. 非常感谢您的观看