本文为 2021 MAXP 系列公开课第二讲完整版直播回顾,由亚马逊云科技上海人工智能研究院张建博士主讲。介绍了图机器学习工作的详情,并着重解说了本次大赛的图机器学习赛题,文中附基线模型开源地址。
在过来的几年中,神经网络的衰亡与利用胜利推动了模式识别和数据挖掘的钻研。许多已经重大依赖于手工提取特色的机器学习工作,现在都已被各种端到端的深度学习范式彻底改变了。只管传统的深度学习办法被利用在提取欧氏空间数据的特色方面获得了微小的胜利,但许多理论利用场景中的数据是从非欧式空间生成的,传统的深度学习办法在解决非欧式空间数据上的体现却仍难以使人称心。
近年来,人们对深度学习办法在图上的扩大越来越感兴趣。在多方因素的胜利推动下,钻研人员借鉴了卷积网络、循环网络和深度主动编码器的思维,定义和设计了用于解决图数据的神经网络构造,由此一个新的钻研热点——“图神经网络”。
10 月 11 日,biendata 邀请亚马逊云科技上海人工智能研究院张建博士,针对 2021 MAXP 命题赛:基于 DGL 的图机器学习工作,发展了一场线上直播。张建博士为直播观众具体解说了图神经网络框架 DGL,以及本次赛题的官网基线模型。
模型地址:https://github.com/dglai/maxp…
直播视频回顾:https://www.bilibili.com/vide…
对于 2021 MAXP
2021 MAXP 高性能云计算翻新大赛(2021 MAXP)由中国计算机学会高性能计算业余委员会和中国信息通信研究院领导,ACM 中国高性能计算专家委员会(ACMSIGHPC)和云计算开源产业联盟联结主办,亚马逊云科技和腾讯云反对,阿里云、华为云、UCloud、天翼云等厂商参加。大赛以高性能云计算为主题,旨在进一步推动国内高性能计算的倒退,并为参赛者提供了 高达 40 万元的奖金池,还会提供实习机会和权威荣誉证书。
直播回顾
本篇文章将分为五个模块介绍图数据工作。
- 模块一是解说为什么要做图相干数据的工作。
- 模块二会介绍近几年图机器学习方面的停顿,特地是和图神经网络相干的停顿,以及次要由亚马逊云科技上海人工智能研究院主导开源的 Deep Graph Library(DGL)图形网络框架,这也是大赛须要应用到的框架。
- 模块三是针对赛道题目进行解说。
- 模块四是本篇文章最外围的内容,将对基线 DGL 模型进行解说,特地是针对初赛的数据的解决和 DGL 模型的构建。
模型地址:https://github.com/dglai/maxp… - 模块五会分享一些学习和把握 DGL 的相干资源。
本次大赛用到的图数据是人工智能的新数据金矿,就是图结构化的数据。在理论生存和工作中,图数据无处不在。例如社交网络、常识图谱及用户相互之间的关系等,这些都是图。化学分子也能够看成一个图,这是一种构图的新办法。
当初计算机视觉或自然语言解决所用到的图像数据和自然语言数据实质上也是一种图,通常称为网格状的图。例如图像数据,每一个圈代表一个像素点,表白了这个像素点和它邻近的这 8 个像素点之间的关系。
计算机视觉中用的卷积神经网络,实质就是对于一个或一片区域的像素以及它们之间的关系进行建模。那么自然语言就能够认为是链型的图,从讲话时的第一个字到前面的字通过线性的关系串联起来。
很多自然语言中应用的模型。例如 GPT,它的实质是在线性串联的图构造上构建点和点之间的潜在关系。
对于图数据这类比拟新的数据,近几年学术界针对于图的论文数量始终在持续增长。
论文题目里蕴含 graph 的论文数量出现指数增长的模式。尤其是 2016 年,在图像深度学习的算法失去利用之后,这几年都放弃着百分之四十多的年增长率。到 2020 年,曾经至多有 2,000 多篇论文都在探讨图和图数据及与图数据相干的机器学习的内容。
随着图数据的广泛应用及呈现新的人工智能思路后,与图数据相干的一些算法和模型都呈现井喷式增长。
其中比拟典型的代表是 2016 年呈现的《GCN 图卷积神经网络》论文,这篇论文代表了图神经网络的开始。
对于图上机器学习来说,通常会利用它实现三类工作。
第一类是点和边的分类。用于辨认可疑账户和锁定有价值的用户。
第二类是链接预测。对于图来说有一些非凡的利用,在电商的商品举荐里就用到此类工作。这类工作的实质是预测用户和商品之间是否存在关联关系,如果关联关系的可能性很高,那么就会举荐相关联的商品。
第三类是图分类和回归的问题。用于预测化学分子的个性。
这些都是图上机器学习常见的工作,在深度学习使用到图数据之前,这个学科倒退出了很多办法和模型实现图上机器学习的工作。
2012 年呈现以连贯主义为外围的神经网络成为人工智能畛域新的支流模型后,很多学者开始钻研如何将深度学习的办法使用到图结构化的数据上。
2016 年随着相干论文的呈现,产生了一种新的图像机器学习的办法,叫图神经网络。
图神经网络的实质是神经网络家族的一员,更多的是钻研基于点边和图的特色。
图神经网络的实质是对于图结构化数据上的次要实体,点和边及它们领有的特色进行卷积运算,同时利用神经网络常见的非线性的激活函数及正则化办法,将图外面的点和边及它们的特色进行多层卷积化解决,最初失去点、边或整个图构造的向量化的示意。
利用向量化示意,能够进一步帮忙实现上游的工作。例如要对点、边、图做分类或回归等一系列利用。
目前曾经有各种各样的机器学习或深度学习的框架工具,比方 TensorFlow、PyTorch 等工具都十分好用,然而在实际的过程中如果只应用 TensorFlow、PyTorch 这类常见的框架开发 GNN,就会碰到图结构化数据特有的问题。
因为图构造的特殊性,在应用传统的或常见的深度学习框架的过程中就容易呈现 out of memory 等问题。
因为在图结构化数据时,数据里常常会呈现一个点有很多街坊,而街坊的数量是变动的。然而卷积神经网络里所看到的每一个像素,像素周边的街坊数量是固定的,这样针对固定数量张量设计的构造就容易呈现内存溢出的问题。
因而在开发图神经网络的过程中,常常会碰到相似这种须要解决不均衡或是不统一数据分布的状况,此时用传统的神经网络框架开发就会碰到各种各样的问题。所以须要有专门针对于图神经网络的通用框架的呈现,DGL 就是其中之一。
DGL 是专门用来编写图神经网络的开源工具,目标是为了让编写图神经网络更加简略,并且易于疾速利用到业务场景外面。
简略而言,DGL 是一款面向图神经网络深度学习框架。
与其余的图神经网络深度学习框架不同的是,DGL 是兼容多个后端的框架,称为后端无知的框架。在整个框架里 DGL 反对用 PyTorch 去编写后端,也反对 MXNet、TensorFlow 编写后端。DGL 关注的是应答与图结构化数据相干和图神经网络模型相干的工作。
在 DGL 中同样反对多种训练模式的状况,包含单机单卡、单机多卡或多机多 CPU 的分布式训练等在平时做深度学习训练过程中都会用到的情景。
同时针对于罕用的 GNN 模块,都曾经做了内置的实现。另外,DGL 已有 70 多个经典和前沿的 GNN 模型的样例,能够更好的上手 GNN 的学习和利用最新的模型实现业务需要,或是开发新的模型须要。
在刚刚过来的 9 月份,DGL 整个开源我的项目取得了中国信息通信研究院主持“OSCAR 尖峰开源我的项目及开源社区”的大奖,这样评比中的获胜,也是对 DGL 作为开源社区的认可。
赛题解说
图机器学习的常见工作是包含三类:点分类 / 回归,边分类 / 回归、链接预测,整图分类 / 回归。
这次较量所做的事件就是最常见的点分类,实现图中点的标签分类。
较量的数据由的数据供应方获取的,基于微软的学术论文援用文献的援用图。
数据是论文援用关系图,节点是论文,边是单向的论文援用关系。每节点都具备 300 维的特征值,节点属于 23 个类别之一,这也是论文所处的畛域标签。
工作是通过利用已知的标签学习和预测未知节点的标签。
针对这个工作咱们开发了基于 DGL 的 GNN 基线模型,次要的目标是为了帮忙参赛者疾速的上手把握和应用 DGL 来开发 GNN 的模型,并使用到这次大赛过程中。
代码构造包含两局部。
第一局部是 4 个数据预处理的文件,每个文件都有不同的目标。
第二局部是 GNN 的目录,其中包含用 DGL 写的 GNN 模型文件及针对模型文件和较量数据所做的模型训练文件和相应的帮助文件。
首先介绍代码逻辑里数据预处理的局部。
文件一的次要目标是实现针对于初赛数据构建点列表。
初赛数据蕴含点及论文到论文之间的边列表,然而边列表里蕴含一些论文的 ID,这些 ID 在论文的点列表里并没有呈现,所以数据摸索和解决须要将所有点的 paper ID 合并起来,形成残缺的点列表,同时给每一个 paper ID 新的点索引。
文件二次要实现将原始文件的 300 维特色全副读出来,构建成压缩数据。
因为原始数据文件是用文本的格局存储的,解决起来十分破费工夫,而且速度很慢,对内存的要求也比拟高。所以文件二进行数据预处理后保留下来,间接用到前面的建模过程中,会极大的晋升速度。
文件三的次要目标是应用新建的点索引,同每一个 paper ID 对应的点索引实现对于原有的边列表替换。
利用 DGL 的 Graph 类构建了 DGL Graph,同时借助 DGL 的保留图性能存成 graph.bin 文件。
文件四的次要目标是实现对标签的宰割。针对 train_nodes.csv 有标签的数据进行 train 或 validation 的宰割,test 的数据集是用 validation_nodes.csv 里没有标签的点进行索引构建的。
其次介绍代码逻辑的 GNN 局部,GNN 局部次要蕴含两个文件。
第一个文件是 models.py 文件。
在 models.py 文件中,DGL 内置的三个罕用的 GNN 模块被称为根底的模型模块,构建基于街坊采样模式的模型代码。
街坊采样模式的模型代码分为三类:GraphSage,GCN,GAT。
因为赛题的数据相对来说规模较大,达到了百万级的点及千万级的边的规模。因而,如果想把图和 300 维的特色都应用全图训练模式,全副放到 GPU 里训练,很容易就会造成 GPU 显存溢出无奈实现训练;全副放到 CPU 里训练,速度会十分慢。
所以采纳 mini 批次的办法训练。做点分类时能够用街坊采样模式升高每一个批次的计算数据的数据量,从而保障能够应用 GPU 疾速实现数据训练。
每一个模型构建之后都有入参,局部入参能够三个模型共享,另一部分入参是某些模型独有的。
第二个文件是 model_train.py 文件,这也是基线模型代码的外围文件。它利用构建的 GNN 模型以及通过预处理后的数据文件构建的训练模型代码。
代码次要逻辑的第一步是实现预处理数据的读取。应用辅助函数能够疾速读取预处理数据,供训练模型应用。
训练模型的代码蕴含三种形式:
一种是应用 CPU 去训练;一种应用单块 GPU 进行 mini 批次训练;一种是应用单机多 GPU 进行数据并行的 mini 批次训练。
在主函数里有相应的入口,CPU 的训练更多的是进行代码调试。对模型进行批改或应用本人开发的模型,能够先在 CPU 上进行调试训练,保障代码没有谬误,再迁徙到 GPU 上进行训练。
三个训练形式的训练逻辑是统一的。如果应用多 CPU 进行训练数据并行的形式,须要对数据集进行屡次划分,不同的划分送到不同的显卡上进行训练,将剩下的工作应用 DGL 点采样器和数据加载器实现 mini 批次的构建,最初抉择构建 GNN 模型。
因为代码是基于 PyTorch 后端写的,能够构建常见的 PyTorch 损失函数和优化器,最初在整个的 Epoch 循环外面实现训练的 mini batch 的循环和验证,及最佳模型保留的工作。
针对 DGL 较量,咱们还提供了与 DGL 相干的外围资源不便大家学习和把握。
DGL 图神经网络次要的外围资源有两个:第一个外围资源是 dgl.ai 的官网。官网中最外围的内容分为两块:
一块是 Getting Started,这个页面能够辅助装置 DGL。因为装置的过程中针对不同的零碎,是否应用 GPU,有没有显卡及显卡对应的版本都有不同的装置命令。因而利用 Getting Started 页面,疾速找到环境对应的装置命令,一条命令就能够将 DGL 装置好。
另一块是 docs,这个页面蕴含了与 DGL 相干的和次要的所有外围帮忙文档。
Docs 中包含 DGL 对外开放的 API 阐明,还有基于中文的用户手册。不便中国区的用户疾速的上手应用 DGL 构建 hello word 代码。
第二个外围资源就是 DGL GitHub 站。
这里能够看到 DGL 的源码及官网的 DGL 模型实现样例。除了 GCN、GAT 和 GraphConv,还有很多经典样例能够在 examples 目录中找到,这些样例都能够进行参考应用,也能够批改模型实现本次大赛。
对于 DGL 的相干问题能够在 DGL 的官网探讨渠道中探讨。
第一个渠道是 DGL 官网里的 discuss 论坛;
第二个渠道是 DGL GitHub 站中的 issue 区;
第三个渠道是搜寻 DGL 用户群或 DGL 用户 1 群、DGL 用户 2;
第四个渠道是通过 Slack Channel 提问题,找到相干共事回复,给到参赛者解惑。