图神经网络 GNN 框架 Graph-Learn 技术分享|学习笔记

本文涉及的产品
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
模型训练 PAI-DLC,5000CU*H 3个月
交互式建模 PAI-DSW,5000CU*H 3个月
简介: 快速学习图神经网络 GNN 框架 Graph-Learn 技术分享。

开发者学堂课程【PAL 平台学习路线:机器学习入门到应用:图神经网络 GNN 框架 Graph-Learn 技术分享】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/855/detail/14099


图神经网络 GNN 框架 Graph-Learn 技术分享

 

内容介

一、图神经网络简介

二、Graph-Learn 的简单介绍

三、GNN 的一些应用场景

 

一、图神经网络简介

GNN 也就是图神经网络,是指图与深度学习的结合。图在生活中无处不在,社交网络交通网络电商关系网络都构成一张图,电商关系网络为例来说明:

 image.png

在电商场景有商品用户、店铺设备等多种实体经济实体之间有多种不同类型的边,那对这样一个复杂的数据我们可以把它用一个图来描述,包括一些,点和边,在这里点就是这些不同的实体,边就是实体之间的关系,所以可以看出图是一种用来建模,有关系的实体之间的数据的一种常用手段,那神经网络是将图和深度学习进行结合,将一个图上的点或者边,映射到一个低维向量空间中来进行表示,从来对整个图的结构以及属性关系进行建模,应用于下游任务进行一些点的分类边的预测或者图的回归。

神经网络相比一般网络好处,图的话他融合了多种关系,而且可以捕获一些二阶三阶等高阶的一些关系此外由于是对整个的实体和关系进行联合的优化。因此可以做到一个全局优化,最后,有些图还可以做一些推理的任务

 

二、Graph-Learn 的简单介绍

1、Graph-Learn 分布式图学习框架

 image.png

如上图,最底层是由分布式的图存储和查询引擎构成,可以对一些异构有属性的权重的有标签的图进行分布式的存储,并提供了一些分布式查询的一些语法,包括采样、复采样、变异属性查询等,同时兼容常用的深度学习框架比如 TensorFlow  PyTorch

在上层提供了一些简洁灵活的数据预处理模块,将复杂的特征以及不同的数据转换成深度学习框架所需要的数据格式来进行上层算法的搭建,在上层封装了一些常用的图卷层,并且支持一些异构体,

顶层实现了常见的图神经网络 GNN 算法,以及 KG(如TransE)算法,同时支持自定义算法。

2、面向工业场景设计

image.png

Graph-Learn 主要是面向工业场景来进行设计那工业场景的图有一些特点:

(1)超大规模

边的规模可达百亿或千亿级边,点的规模可达十亿到百亿级点,是一种 TB 级存储

2点边异构

数据不规则,多种类型的点,多种类型的边

3属性多样

区别于学术场景的图工业场景的图点、边均有属性,类型多样,包括整型、浮点型、字符型

最常见的例子就是,一个用户或者一个物品他可能有一些连续的特征一些离散的特征。比如说标签,用户年龄性别等离散值特征。

3、一体化系统实现

Graph-Learn 使用了一体化的系统实现如下图所示

 image.png

最底下是一个图引擎支持超大规模异构图属性的,采用一个分布式内存的存储方式,然后机器之间使用 RPC的连接方式,上提供一个 Python 的 API,可以进行构图图采样复采样、图查询等功能再往上层使用一些常见的深度学习引擎,比如 TensorFlow  PyTorch 来构建一些算法模块,算法模块支持常见 GCN,SAGE,GAT 算法,同时也就是一些自定义的算法 

4、面向业务的端到端方案

 image.png

提供了一个面向业务的端到端的一个方案,从数据算子算法到业务:

数据层首先需要准备点边的数据,基于点和边的数据可以自动的一个图,包括图的拓扑以及一些图的分析比如说,图的,点的出入,点的个数,算子层主要是一些图操作算子,包括采样复采样,图的一些融合或者聚合以及 Combiner 还有一些提供了一个查询语法。在往上是一个算法内置了像 GCN,GraphSAGE,GAT,GIN,SEAL,Trans X 多种算法,;最上层可以直接用应用于各种各样业务比如说推荐场景安全公共场景、知识图谱场景等 

Graph-Learn 可以与 PAI 的云产品结合,PAI 生态包括 Data Works,Max Compute,NAS,OSS等,Graph-Learn 对这些都是完全支持的在产品层面 PAI 有 DLC,DSW,STUDIO,EAS 等在 DLC,DSW,STUDIO 产品都可以用到 Graph-Learn。

5、兼容开源生态

 image.png

同时也对框架进行了开源各种开源的一些生态Graph-Learn 对外提供的 API 是 Python 格式数据以 Numpy组织,我们提供的数据转换成 TensFlow 或者 PyTorch 或者 pyG 的一些形式,基于这些数据转换后的结果然后基于一些深度学习引擎可以方便地构建 GNN 算法以及应用。

6、如何使用一 PAI 组件

如何使用 PAI 组件,已经在 PAI 分装了若干算法组件,可以直接通过 PAI 命令进行调用这些组件包括如下几个

1)无监督模型:包括同构图GraphSAGE、二部图 GraphSAGE ,这些组件通过用户提供的输入表,以及指定的参数,可以产出模型,或顶点的向量,也就是用户的向量,或者物品的向量,基于这些向量可以做到一个向量召回;

(2)同时提供了一个离线召回评估 hitrate 评估组件,这个组件可以对上述向量进行一个简单的评估,可以评估向量的相似度,并且计算一个 hitrate;

(3)此外还提供了有监督GraphSAGE 组件,这个模型主要用于点分类模型。

二部图 GraphSAGE 为例说一下如何调用:

Pai-name bipartite_graphsage_ext

-Dps_count=2 -Dps_memory=20000 -Dworker-cout=10 -Dworker_memory=5000

-Dui_edge_table=’u2i_edge’ -Du_node_table=’u2i_node’ -Dinode_table=’u2i_node-1‘

-Depoch=2 -Dbatch_size=512 -Dlearning_rate=0.0001 -Ddeop_out=0.5......

调用方法就是直接用一个 PAI 的命令行,PAI 行内一个算法组件名称,后面是一些用户自定义的参数,包括机械的配置,输入语,输出表以及驱动过程中的配置,PAI 命令行可以通过 datawatch、PAI STUDIO 或者 DSW 等形式进行提交。

除了了内置的算法还支持用户自定义算法

7、如何使用一自定义算法:

首先是编写算法模型,使用 GraphLearn 提供的 python API 编写 GNN 算法;

第二步就是将 Graph - Learn wheel 包一起打包上传,将 GraphLearn wheel 包解压并和自己编写的算法一起打包上传;

第三步就是在 PAI 上运行,使用 PAI - Tensorflow 或者 PAI - PyTorch 命令运行。

在 dataworks 上打包上传后就可以用如下命令进行:

Pai-name tensorflow1120_ext

-Dscript=’odps://your_project/resources/your_tar_name.tar.gz’

-DentryFile=”your_train_file.py”......

提交一个 PAI 的 name 到 tensorflow 的任务,然后将自己上传的包提供一下,然后将自己的训练文件指定一下,进行一个分布式的运行。


三、GNN 的一些应用场景

1、应用场景1:推荐召回

把 u2i/i2i 推荐问题转换成顶点间的边连接预测问题

构图很关键,尤其是构建 u2i/i2i 的图,图关系意味着模型学习的上限

的关系类型: user - item 关系如用户点击物品、用户购买物品、用户评价或者评论物品等);item - item 关系就是 item之间的相似度,该相似度可以用滑动窗等方式产生);还可以对 user 和 item 提供一些特征,最简单的就是使用用户或者物品的 ID 作为特征,还可以提供一些具有辨识度的统计特征,标签特征等。

以二部图为例进行一个算法的介绍:

image.png

在二部图 u2i 推进场景,我们对u和i这样一条边,首先会去对 u 采他的邻居,比如说我采 user 的一跳邻居,对 item来说,也会去采他的邻居比如说我根据 item 到 item 的关系去采他的二跳邻居这样user 和 item 都有一个邻居的采样,此外因为是一个无监督学习场景,我们还需要对整个的训练采一个正样本和一个负样本比如说采一个负的i,就是说user 没有交互过来,这个 item 也会去采他的二跳邻居,采样完成之后,我们使用 GraphSAGE 算法,对邻居进行一个聚合,最终学习到 u 和 i 的 Embedding  

GNN 算法的优点:不局限于行为历史序列,可供挖掘多类型高阶关系,对item来说我们挖掘了两跳的邻居关系;此外还可易捕捉数据的动态变化,运行效率高

2、应用场景2:安全风控

垃圾注册检测场景为例进行介绍垃圾注册场景是指用户垃圾账户的一个检测,也就是说用户在注册的时候我们要判断他是不是潜在的垃圾账户,整个场景建模起来是一个点分类模型

在构的时候,通过同手机号关系,同设备关系,同注册 ip 前缀关系等将账号之间的多种关系用图的边来进行表示。多种类型的边采用 RGCN 算法来进行建模。该算法如下图所示:用来建模多种类型边的关系,对多种类型的边进行一个学习转化取证然后进行一个加和,得到最终节点的向量表示,在接入一个分类器就可以完成一个点分类的模型。

image.png

优点:利用账号之间的多种关系,发掘团伙信息

垃圾注册场景使用图的原因:因为垃圾注册检测的模型,经过多年的对抗垃圾账号之间他们已经具有一些很强的对抗性通过分析发现这些账号之间具有团伙信息,那自然想到图的话可以建模这种账号与账号之间的关系然后发觉一些团伙信息所以使用GNN的话在这个场景会比较有优势。

dataworks 使用 Graph-Learn 的例子

首先已经提供的组件二部GraphSAGE,只需提供提交一个 PAI 命令的方式提供一些输入输出表,配置一些参数,点击运行后即可运行算法,运行的时候会产生一些运行日志,其中打开这个 Log View 就可以看到运行过程中的一些信息输出,比如说 notes 的变化,以及保存向量的一些阶段信息。

image.png

对于自定义算法的话将自己开发的算法以及 GraphLearn wheel 包打包成一个资源,然后上传到 dataworks 上,然后通过命令行的方式提交,指定自己的打包算法以及指定自己的入口文件然后通过一些参数配置,点击运行也可以进行训练。

二部图的运行结果可以通过打开 Log View 进行查看,通过点开 Log View 里面的 worker 查看日志输出:

image.png

相关实践学习
使用PAI-EAS一键部署ChatGLM及LangChain应用
本场景中主要介绍如何使用模型在线服务(PAI-EAS)部署ChatGLM的AI-Web应用以及启动WebUI进行模型推理,并通过LangChain集成自己的业务数据。
机器学习概览及常见算法
机器学习(Machine Learning, ML)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
相关文章
|
24天前
|
监控 安全
从 Racket 语言出发,创新员工网络监控软件的框架
在数字化企业环境中,员工网络监控软件对于保障信息安全和提升效率至关重要。Racket 语言凭借其独特特性和强大功能,为开发创新的监控软件提供了新可能。通过捕获和分析网络数据包、记录员工网络活动日志,甚至构建复杂的监控框架,Racket 能够满足企业的定制化需求,为企业信息安全和管理提供强有力支持。未来,基于 Racket 的创新解决方案将不断涌现。
35 6
|
7天前
|
机器学习/深度学习 人工智能
类人神经网络再进一步!DeepMind最新50页论文提出AligNet框架:用层次化视觉概念对齐人类
【10月更文挑战第18天】这篇论文提出了一种名为AligNet的框架,旨在通过将人类知识注入神经网络来解决其与人类认知的不匹配问题。AligNet通过训练教师模型模仿人类判断,并将人类化的结构和知识转移至预训练的视觉模型中,从而提高模型在多种任务上的泛化能力和稳健性。实验结果表明,人类对齐的模型在相似性任务和出分布情况下表现更佳。
20 3
|
20天前
|
Ubuntu 网络安全 图形学
Ubuntu学习笔记(二):ubuntu20.04解决右上角网络图标激活失败或者消失,无法连接有线问题。
在Ubuntu 20.04系统中解决网络图标消失和无法连接有线网络问题的方法,其中第三种方法通过检查并确保Windows防火墙中相关服务开启后成功恢复了网络连接。
170 0
Ubuntu学习笔记(二):ubuntu20.04解决右上角网络图标激活失败或者消失,无法连接有线问题。
|
26天前
|
安全 网络安全 区块链
网络安全与信息安全:构建数字世界的防线在当今数字化时代,网络安全已成为维护个人隐私、企业机密和国家安全的重要屏障。随着网络攻击手段的不断升级,从社交工程到先进的持续性威胁(APT),我们必须采取更加严密的防护措施。本文将深入探讨网络安全漏洞的形成原因、加密技术的应用以及提高公众安全意识的重要性,旨在为读者提供一个全面的网络安全知识框架。
在这个数字信息日益膨胀的时代,网络安全问题成为了每一个网民不可忽视的重大议题。从个人信息泄露到企业数据被盗,再到国家安全受到威胁,网络安全漏洞如同隐藏在暗处的“黑洞”,时刻准备吞噬掉我们的信息安全。而加密技术作为守护网络安全的重要工具之一,其重要性不言而喻。同时,提高公众的安全意识,也是防范网络风险的关键所在。本文将从网络安全漏洞的定义及成因出发,解析当前主流的加密技术,并强调提升安全意识的必要性,为读者提供一份详尽的网络安全指南。
|
2月前
|
存储 SQL 安全
网络安全与信息安全:守护数字世界的坚盾在这个高度数字化的时代,网络安全和信息安全已经成为个人、企业乃至国家安全的重要组成部分。本文将深入探讨网络安全漏洞、加密技术以及安全意识的重要性,旨在为读者提供一个全面的网络安全知识框架。
随着互联网技术的飞速发展,网络安全问题日益凸显。从个人信息泄露到企业数据被盗,再到国家安全受到威胁,网络安全事件层出不穷。本文将从网络安全漏洞的定义与分类入手,探讨常见的网络攻击手段;随后深入解析加密技术的原理及其在保护信息安全中的作用;最后强调提升公众与企业的安全意识的重要性,并提出具体的建议。通过综合运用这些知识点,我们可以更好地构建起一道道坚固的防线,守护我们的数字世界。
|
2月前
|
编解码 分布式计算 网络协议
Netty高性能网络框架(一)
Netty高性能网络框架(一)
|
18天前
|
机器学习/深度学习 数据采集 算法
目标分类笔记(一): 利用包含多个网络多种训练策略的框架来完成多目标分类任务(从数据准备到训练测试部署的完整流程)
这篇博客文章介绍了如何使用包含多个网络和多种训练策略的框架来完成多目标分类任务,涵盖了从数据准备到训练、测试和部署的完整流程,并提供了相关代码和配置文件。
33 0
目标分类笔记(一): 利用包含多个网络多种训练策略的框架来完成多目标分类任务(从数据准备到训练测试部署的完整流程)
|
18天前
|
机器学习/深度学习 数据可视化 Linux
Seaborn可视化学习笔记(一):可视化神经网络权重分布情况
这篇文章是关于如何使用Seaborn库来可视化神经网络权重分布的教程,包括函数信息、测试代码和实际应用示例。
25 0
完成切换网络+修改网络连接图标提示的代码框架
完成切换网络+修改网络连接图标提示的代码框架
|
3月前
|
存储 算法 Java
Java中的集合框架深度解析云上守护:云计算与网络安全的协同进化
【8月更文挑战第29天】在Java的世界中,集合框架是数据结构的代言人。它不仅让数据存储变得优雅而高效,还为程序员提供了一套丰富的工具箱。本文将带你深入理解集合框架的设计哲学,探索其背后的原理,并分享一些实用的使用技巧。无论你是初学者还是资深开发者,这篇文章都将为你打开一扇通往高效编程的大门。

热门文章

最新文章