开发者学堂课程【PAL 平台学习路线:机器学习入门到应用:GraphLearn on PAI】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/855/detail/14122
GraphLearn on PAI
内容介绍:
一、背景介绍
二、图与深度学习一体化
三、GNN 框架设计理念
四、GraphLearn:可扩展的工业级 GNN 框架
一、背景介绍
经过几年的成熟与发展深度学习技术被赋予了更多期待图神经网络是又一颗明珠,在它的发展过程中,除了算法的创新,框架的支持也不可或缺。回顾深度学习的发展:
第一个爆发点来自于机器视觉,image night 的比赛引发深度学习的热潮,CV 算法的识别能力一度超过了人类,在此之后我能见到了成熟的 CV 产品落地,如人脸识别,CV 的发展由仅有研究转入到应用。
第二个爆发点来自于 NLP,随着 Transformer,Bert,GTP 系列模型的不断迭代,机器翻译阅读理解等问题的精度屡屡被刷新,相比前两者图与深度学习的结合是后起之秀,近几年在各大 AI 顶会受到追捧。图像自然语言与图相比前两者更偏客观,因为图像的组成原理不变,人类的语言构成不变,那么对于 CV 和 NLP 研究是可以期待有一个上限的,而图的构成则偏主观,因为我们可以把任何有关系的事物抽象成图,比如在电商网站的购买行为是一种图,好友关系是一种图,基因的碱基序列也是一种图,这种抽象是没有上限的,这赋予了我们关于图研究在当下时间之外的更多的想象。
二、图与深度学习一体化
图数据蕴含着巨大的商业价、值科学价值。我们对于图的认识是从学习图本身开始的比如在途中找到两个景点之间的最短联通路径。商业中的图我们更倾向于把图纳入到一个场景本身,作为解决方案的一部分,比如在电商网站我们把用户的购物行为图作为精准推荐算法的一部分,我们对于图的使用由学徒变成的用途,用途的难点在于图是不规则的,我们很难在不规则的数据上开展高效计算,更难把他与以深度学习算法为基础的,面向场景的任务结合起来,Embedding 技术是一个重大突破使得我们能够把离散的不规则的特征稠密化连续化,这也为图与深度学习的结合提供的桥梁。近年来图神经网络算法的发展应用是图与深度学习结合价值的最好证明,当然如前所述这里还有很大的空间有待探索。图神经网络算法的快速发展让当下主流的深度学习框架稍显不足,尤其是在面向工业界的复杂场景的时候,这也在某种程度上限制了图神经网络的推广。我们相信图的重要性以及与深度学习结合所带来的价值。
三、GNN 框架设计理念
把图纳入的深度学习的范畴是一个自然趋势,需要在框架上提供支持,设计一款图神经网络框架我们要考虑以下几个出发点:
每个有价值的事物必然要经过时间的检验才能被证明有价值,或保持长久的生命力,图神经网络也不例外,所以我们设计框架首先要面向和支持工业生产,工业场景所要求的效率、稳定性比较严格,所要处理的图数据也更为复杂这是框架难度所在大数据和深度学习推动了工业发展,也让开源社区达到了前所未有的繁荣。
开源技术是人类史上的文明让我们都从中受益,遍观当下没有哪个 AI 技术可以脱离开源生态而独立存在,因此图神经网络框架也不例外,也需要拥抱开源,图神经网络处于发展阶段,算法迭代非常快,落地应用也百花齐放,作为框架要跟得上节奏甚至提前做出论坛在不断变化的需求中便于扩展。
四、GraphLearn:可扩展的工业级 GNN 框架
GraphLearn 是一个我们自研的面向开发者的图神经网络框架框架根植于阿里巴巴集团的业务。经过沉淀和孵化充分考虑了数据、应用、生态等方面的问题,目前,GraphLearn已经作为云产品的一部分可以通过阿里云官网集体学习平台PAI来试用,此外框架的代码也已经开源可以一键安装我们发布好的 package,也可以根据自己的开发环境从源码编译安装或者做二次开发,下面来从宏观上介绍一下 GraphLearn 的几个特点让大家对 GraphLearn 能做什么有一个直观认识。
1.工业级图数据支持
概括来说工业级图数据的第1个特点是规模大,千亿级边,百亿极点的图是常规需求,单个图的存储需要耗费TB级的内存;第2个特点是异构化程度高,实际中的图往往不是理想的一种顶点ID和一种边,而是点边异构化,其类型多达几种甚至是几十种,第3个特点是点边并非只有一个单独的 ID,同时也存在着多样化的属性信息,这些属性不规则,类型也多种多样,对于如上所述的图,GraphLearn 可以做到在几分钟内完成从文件系统的原始数据到内存索引的构建,并通过提供简单易用的 API 来简化复杂数据的处理。
2. 统一的编程范式
数据的复杂性也直接影响了上层算法编程范式,面对如此规模的图数据采样是必要过程,采样把大图变成小图定做必要的数据对齐,满足深度学习别带训练的需要,不同的采样算法直接影响了上层计算的输入,GraphLearn内置了多种采样算子并支持扩展,此外 GraphLearn 也内置了负采样模块作为对无监督训练的支持,采样之后是向量化因为原始数据是 ID 和属性等离散的。需要经过向量化和稠密化才可以接受到上层神经网络的计算,接下来是我们熟悉的邻近的聚合与自身信息的整合,这里所说的每个阶段在 GraphLearn 中都有对应的接口以支持,以简化开发过程。
3.可扩展的计算模式
为了可扩展,GraphLearn 抽象了每个算子的计算模式,包括 MAP,PROCESS,REDUCE 三个阶段
该范式可以覆盖关于图的大多数计算的需求,以采样为例,当 Server 收到 EPID 的采样请求时,MAP 接段根据图划分策略把 DI 分发到数据所对应的 Server 上面,因为图是分布式存储的,PROCESS 阶段在每个 Server 上本地执行采样计算,数据与计算 KOlocket,尽可能避免数据迁移所带来的开销,REDUCE 阶段则把各个 Server 的结果汇聚起来,如果需要扩展一种新的算法只需实现上述三个函数即可。
4.支持面向业务定制化
为了便于应用,GraphLearn 支持面向业务的定制化,实际中的每个场景都有一个具体的深度学习模型来支撑,这些模型与业务是紧密结合的,从最底层数据输入,再经过必要的算子 Graph Embedding 算法铲除图的向量化表示。然后在对接原有的业务模型,整个模型构成了一个端到端的大模型,训练过程中的信息也可以反向传播到大模型中的每一层,已有公开成果显示:端到端训练往往会有更好的收益而且在效率上也避免了中间结果落地的开销。
5.可与 PAI 云产品集成
目前 GraphLearn 已在阿里云学习平台PAI上发布,且兼容 DLC,DSW,STUDIO,EAS等PAI云产品,并打通了Max compute,NAS,OSS 等云生态数据的之间的连接,我们可以在 PAI 平台上利用 GraphLearn 和 tens Flow开发一个图神经网络算法,也可以直接调用我们发布好的算法组件,如 Graphsage。
6.兼容开源生态
PAI 后台的支援调度与安全隔离深度优化的软件站内核为开发和生产提供了很好的保障。此外 GraphLearn也已经开放到了开源社区,并且与社区内的主流深度学习生态兼容,GraphLearn 比较轻量级,方便安装部署支持护单机和分布式。不同模式只需简单配置即可,我们可以基于 GraphLearn 结合 TensorFlow PyTorch 开发自己的图神经网络算法和应用。也可以在探索阶段结合 Python 和 Numpy 进行高效率的调试。
7.已落地的应用举例
在阿里集团内部 GraphLearn 已经在多个场景落地,几个有代表性的场景如淘宝的搜索推荐,利用商品店铺用户之间的关系来提升推荐和搜索算法的效率;网络安全:如网上刷单往往具有明显的团伙效应,GNN 可以有效的打击汇察,知识图谱高质量图谱关系的构建需要花费大量的人力可以用 GNN 作为辅助来降低这个人力成本,构建好的图谱还可以进一步被 GNN 挖掘应用于其他的业务和场景。
8.GL 的未来规划
从几个方面推进 GNN 及其生态的建设:
首先是算法于业务,GNN 的价值一定由应用算法和框架共同去证明,业务和算法是风向标,GNN 的生命力要通过落地的场景才能保持,实践会带来算法创新。
另一方面是图数据和编程框架,业务和算法的变化无论是规模上还是图的组织方式上必然带来不一样的数据,以及连接算法与数据之间的编程框架,软件优化也主要体现在这一层,最后是新型硬件,框架是合理的利用算力但并不能创造算力,极致的性能最终源于硬件的支持。深度学习已经引发了好几轮 GPU 的变革,但 GPU 纯粹用于这种不规则的计算并不经济,我们也在探索适合 GNN 的新型硬件。