美团图神经网络练习结构的实践和探究

来源:火狐app 时间:2022-09-17 05:36:38 阅读:9

  美团查找与NLP团队在图神经网络的长时刻落地实践中,依据事务实践场景,自主规划研制了图神经网络结构Tulong,以及配套的图学习渠道,提高了模型的规划和迭代功率。本文介绍了模型概括笼统、根本结构、功用优化,以及上层东西等方面的考虑和要害规划,期望为从事相关作业的同学带来启示或许协助。

  万物之间皆有联络。图作为一种通用的数据结构,能够很好地描绘实体与实体之间的联系。例如,在交际网络中,用图来表明用户与用户之间的老友联系;在电商网站中,用图表明用户与产品之间的点击购买行为;在常识图谱构建中,还能够用图表明实体与实体间多样的联系。另一方面,深度学习技能在核算机视觉、自然语言处理、语音处理等范畴均已取得了巨大的成功。深度学习技能将图画、文本、语音等多种多样的数据转化为稠密的向量表明,供给了表明数据的另一种方法。凭借于硬件日益强壮的核算才干,深度学习能够从海量数据中学习到数据之间杂乱多样的相关性。

  这会让人不由考虑,深度学习能否运用到更宽广的范畴,比方——图?事实上,早在深度学习鼓起之前,业界就现已开端了图嵌入(Graph Embedding)技能的探究[1]。前期的图嵌入算法多以启示式的矩阵分化、概率图模型为主;随后呈现了以DeepWalk[2]和Node2vec[3]为代表的、较为“浅层”的神经网络模型;终究,以GCN[4]为代表的一系列研讨作业,打通了图信号处理与神经网络之间的壁垒,奠定了当时依据音讯传递机制的图神经网络(GNN: Graph Neural Network)模型的根本范式。

  近年来,图神经网络逐步成为学术界的研讨热门之一[5]。在工业界,图神经网络在电商查找、引荐、在线广告、金融风控、交通预估等范畴也有许多的落地运用,并带来了明显收益。

  因为图数据特有的稀少性(图的一切节点对之间只要少数边相连),直接运用通用的深度学习结构(例如TensorFlow和PyTorch)练习往往功用欠安。工欲善其事,必先利其器。针对图神经网络的深度学习结构应运而出:PyG (PyTorch Geometric)[6]和DGL (Deep Graph Library)[7]等开源结构大幅提高了图神经网络的练习速度,而且下降了资源耗费[17][18],具有活泼的社区支撑。许多公司依据自身事务特色,也纷繁建造自有的图神经网络结构。美团查找与NLP团队在长时刻的落地实践中,总结实践经验,在练习的规划和功用、功用的丰厚性、易用性等方面进行了很多优化。本文首要介绍咱们在过往落地运用中遇到的实践问题和应战,然后再介绍具体的处理计划。

  从图自身的类型来看,图神经网络模型能够分为同质图(Homogeneous Graph)、异质图(Heterogeneous Graph)、动态图(Dynamic Graph)等类型。从练习方法来看,又能够分为全图音讯传递[4]和依据子图采样的音讯传递[8]等类型。从推理方法来看,还能够分为直推式和概括式[9]。

  除此之外,下流使命除了经典的节点分类、链接猜测和图分类,还有许多范畴相关端到端的猜测使命。在实践运用中,不同事务场景对图神经网络的模型和下流使命的需求是不同的,需求个性化定制。例如在美食引荐场景中,存在用户、商家、菜品等节点,描写其相互联系能够用同质图或异质图;为了描写用户在不一起刻的偏好,或许还需求运用动态图模型;针对引荐体系的召回和排序两个阶段,还需求规划不同的练习使命。虽然现有结构都供给常见模型的完结,但简略调用这些模型不能满意上述需求。此刻便需求用户自行开发模型和练习流程代码,这就带来了额定的作业量。怎么协助用户更快捷地完结定制模型是一个不小的应战。

  在事务落地运用中,图的规划往往很大,能够到达数十亿乃至数百亿条边。咱们在初期的测验中发现,运用现有结构,只能在分布式环境下练习百亿边规划的模型,耗费较多的硬件资源(数千CPU和数TB内存)。咱们期望单机即可在合理的时刻内练习百亿边规划的模型,然后下降对硬件资源的需求。

  图神经网络的完好落地流程至少包含:依据事务数据构图、离线练习和评测模型、线上推理、事务目标观测等进程。要让图神经网络技能成功落地运用,需求充沛了解事务逻辑和事务需求,统一起高效地办理事务场景。相同以美食引荐场景为例,线上日志记载了曝光、点击、下单等行为事情,常识图谱供给了商家和菜品丰厚的属性数据,怎么从这些异质的数据结构图,要结合事务实践屡次试验确认。适宜的东西能提高对接事务数据的功率,但是现有的图神经网络结构大多聚集在模型的离线练习和评测,缺少此类东西。

  从研制功率的视点来说,自建图神经网络结构的意图是削减建模中的重复作业,让研制人员的精力会集在事务自身的特性上。因而,一个“好用”的图神经网络结构应当易于上手,经过简略地装备即能完结大都使命。在此根底上,关于一些特别的建模需求,也能供给恰当的支撑。

  美团查找与NLP团队在查找、引荐、广告、配送等事务的长时刻落地实践中,总结实践经验,自主规划研制了图神经网络结构Tulong以及配套的图学习渠道,较好地处理了上述问题。

  首要,咱们对当时盛行的图神经网络模型进行了细粒度的剖析,概括总结出了一系列子操作,完结了一套通用的模型结构。简略修正装备即可完结许多现有的图神经网络模型。

  针对依据子图采样的练习方法,咱们开发了图核算库“MTGraph”,大幅优化了图数据的内存占用和子图采样速度。单机环境下,相较于DGL练习速度提高约4倍,内存占用下降约60%。单机即可完结十亿节点百亿边规划的练习。

  环绕图神经网络结构Tulong,咱们构建了一站式的图学习渠道,为研制人员供给包含事务数据接入、图数据构建和办理、模型的练习和评测、模型导出上线等全流程的图形化东西。

  Tulong完结了高度可装备化的练习和评测,从参数初始化到学习率,从模型结构到丢失函数类型,都能够经过一套装备文件来操控。针对事务运用的常见场景,咱们总结了若干练习模版,研制人员经过修正装备即可适配大都事务场景。例如,许多事务存在午晚顶峰的周期性动摇,咱们为此规划了周期性动态图的练习模板,能够为一天中不一起段发生不同的GNN表明。在美团配送事务的运用中,需求为每个区域发生不一起段下的GNN表明,作为下流猜测使命的输入特征。开发进程中,从开端修正装备到产出初版模型仅花费三天;而在此之前,自行完结类似模型计划花费约两周时刻。

  如下图1所示,Tulong配套图核算库和图学习渠道构成了一套完好体系。体系自底向上能够分为以下3个组件。

  咱们把图神经网络的底层算子分为三类:图结构查询、稀少张量核算和稠密张量核算。咱们开发了图核算库MTGraph供给图数据的存储和查询功用,深度优化了内存占用和子图采样速度。MTGraph兼容PyTorch和DGL,用户能够在MTGraph的根底上直接编写依据DGL的模型代码。

  Tulong结构首要封装完结了练习图神经网络所需的根本组件,包含图和特征数据的预处理流程、子图采样器、通用的GNN模型结构,以及包含练习和评测在内的根底使命。依据上述组件,Tulong结构供给丰厚的预界说模型和练习/推理流程,用户经过修正装备文件即可在事务数据上练习和评测GNN模型。

  图学习渠道旨在简化离线的模型开发和迭代进程,一起简化事务体系的对接流程。图学习渠道供给一系列的可视化东西,简化从事务数据接入到模型上线的全流程。

  下文将从模型结构、练习流程结构、功用优化和图学习渠道等四个方面具体介绍各个模块的剖析和规划计划。

  咱们从工程完结的视点,概括总结了当时干流图神经网络模型的根本范式,完结一套通用结构,以期包含多种GNN模型。以下依照图的类型(同质图、异质图和动态图)别离评论。

  比较于同质图,异质图(Heterogeneous Graph)扩大了节点类型和边类型。比方,学术引证网络[13]中包含论文、作者、组织等类型的节点,节点直接经过“论文引证其他论文”、“作者编撰论文”、“作者归于组织”等类型的边相连,如下图2所示:

  咱们把异质图视为多个二分图的叠加,每一个二分图对应于一种边类型。上述的学术引证网络能够表明成“论文-引证-论文”、“作者-编撰-论文”、“作者-归于-组织”,合计三个二分图,同质图的GNN模型结构稍加修正即可在二分图上运用。

  ,用于聚合节点在不同二分图中的表明(如下图3所示)。结构中相同供给边类型纬度聚合函数的多种完结,能够经过装备选项调用。例如,要完结RGCN,能够在二分图上运用GCN,然后在边类型维度上取均匀。

  动态图(Dynamic Graph)是指随时刻改变的图。与之相对的,上述的同质图和异质图能够称为静态图。比方,学术引证网络会随时刻不断扩张,用户与产品的交互图会随用户爱好而改变。动态图上的GNN模型旨在生成给守时刻下的节点表明

  在离散时刻动态图中,时刻被区分为多个时刻片(例如以天/小时区分),每个时刻片对应一个静态的图。离散时刻动态图的GNN模型一般在每个时刻片上独自运用GNN模型,然后聚合节点在不一起刻的表征[14]。咱们把聚合进程笼统为离散时刻维度的聚合函数

  相同供给预界说的完结。此外,Tulong结构还供给离散时刻动态图数据的加载和办理机制,仅在内存中保存有必要的时刻片,下降硬件资源的耗费。

  在接连时刻动态图中,每条边附有时刻戳,表明交互事情发生的时刻。比较于静态图,接连时刻动态图中的音讯函数

  时刻之后才呈现的节点。针对此问题,咱们开发了多种接连时刻动态图上的街坊节点采样器,能够在指定的时刻规模内,高效地采样街坊节点。

  以上剖析了同质图、异质图和动态图的核算范式,咱们从中抽取出通用的函数(算子),包含音讯函数、聚合函数、更新函数、街坊节点函数,并给出多种预界说的完结。结构用户经过装备选项即可拼装组合算子,然后完结需求的GNN模型。

  练习GNN模型一般包含加载数据、界说GNN模型、练习和评测、导出模型等流程。因为GNN模型和练习使命的多样性,在实践开发进程中,用户往往要针对自己的场景自行编写模型和流程代码,处理繁琐的底层细节让用户难以会集到算法模型自身的调优上。GraphGym[12]和DGL-Go[16]企图处理这一问题,经过集成多种模型和练习使命,一起简化接口,能够让用户较为直接地上手和练习GNN模型。

  咱们经过愈加“工业化”的方法处理这一问题(如下图6所示),结构被分为两层:根底组件和流程组件。根底组件聚集于单一的功用,例如图数据组件只保护内存中的图数据结构,不供给图上的采样或张量核算功用;图上的采样功用经过图采样器来供给。流程组件经过拼装根底组件供给较为完好的数据预处理、练习和评测流程,例如练习流程组合了图数据、图采样器、GNN模型等组件,供给完好的练习功用。

  更上一层,咱们供给多种流程装备模板和GNN模型模板。模板对外露出若干超参,例如练习数据途径、模型类型、学习率等参数,结合用户指定的超参后就能够完好界说一次练习使命。换言之,依据模板和参数即可完好复现一次GNN模型试验。结构将会解析这些装备,并生成可履行的运用。

  举例来说,用户能够挑选GraphSage模型的装备模板,以及链接猜测使命的练习模板,指定模型层数和维度,以及练习评测数据途径,即可开端练习依据GraphSage的链接猜测模型。

  跟着事务的开展,事务场景下图的规划也益发巨大。怎么以合理的价值,高效练习数十亿乃至百亿边规划的GNN模型成为亟需处理的问题。咱们经过优化单机的内存占用,以及优化子图采样算法,来处理这一问题。

  图数据结构的内存占用是限制可练习图规划的重要因素。以MAG240M-LSC数据集[13]为例,增加反向边后图中共有2.4亿节点和35亿边。在依据子图采样的练习方法下,PyG和DGL单机的图数据结构均需求占用100GB以上的内存,其它开源结构的内存占用往往更多。在更大规划的事务场景图上,内存占用往往会超出硬件装备。咱们规划完结了更为紧凑的图数据结构,提高了单机可承载的图规划。

  咱们凭借图紧缩技能下降内存占用。不同于惯例的图紧缩问题,GNN的场景下需求支撑随机查询操作。例如,查询给定节点的街坊节点;判别给定的两个节点在图中是否相连。咱们对此提出的处理计划包含两部分:

  图数据预处理和紧缩:首要剖析图的核算特征,以轻量级的方法对节点进行聚类和从头编号,以期让编号挨近的节点在范畴结构上也更为类似。随后调整边的次序,对边数据进行分块和编码,发生“节点-分块索引-邻接边”层次的图数据文件(如下图7所示)。终究,假如数据包含节点特征或边特征,还需求将特征与紧缩后的图对齐。

  图的随机查询:查询操作分为两步:首要定位所需的边数据块,然后在内存中解压数据块,读取所查询的数据。例如在查询节点

  是否相连时,首要依据两个节点的编号核算边数据块的地址,解压数据块后取得少数候选邻接边(一般不多于16条),然后查找是否包含边

  经过紧缩,加载MAG240M-LSC数据集仅需15GB内存。百亿乃至千亿边规划图的内存占用明显下降,到达单机可承载的程度,如下图8所示:

  子图采样是GNN模型练习的功用瓶颈之一。咱们发现在某些事务图中,子图采样的耗时乃至占练习全体的80%以上。咱们别离针对静态图和动态图,规划完结了多种高效的街坊节点采样算法。首要的优化手法包含:

  随机数发生器:比较于通讯加密等运用,图上的采样关于随机数发生器的“随机性”并没有严苛的要求。咱们恰当放松了对随机性的要求,规划完结了更快速的随机数发生器,能够直接运用在有放回和无放回的采样操作中。

  概率量化:有权重的采样中,在可接受的精度丢失下,将浮点数表明的概率值量化为更为紧凑的整型。不只下降了采样器的内存耗费,也能够将部分浮点数操作转化为整型操作。

  时刻戳索引:动态图的子图采样操作要求限定边的时刻规模。采样器首要对边上的时刻戳构建索引,采样时先依据索引确认可采样边的规模,然后再履行实践的采样操作。

  经过以上优化,子图采样速度相较于DGL取得了2到4倍的提高(如下图9所示)。某事务场景图A(2亿节点40亿边)运用DGL练习耗时2.5小时/epoch,经过优化可达0.5小时/epoch。某事务场景图B(2.5亿节点124亿边)本来只能分布式练习,耗时6小时/epoch;经过优化,单机即可练习,速度可达2小时/epoch。

  图学习渠道旨在简化离线的模型开发迭代进程,一起简化事务体系的对接流程。一个完好的模型开发迭代进程至少包含三个阶段:预备数据集、界说模型和练习使命、练习和评测模型。咱们剖析用户在这三个阶段的需求,供给相应东西提高开发功率:

  数据集办理:从事务数据结构图是模型开发的第一步,图学习渠道供给依据Spark的构图功用,能够将Hive中存储的事务数据转化为Tulong自界说的图数据格式。事务数据经常以事情日志的方法存储,怎么从中笼统出图,有很多的挑选。例如,在引荐场景中,事务日志包含用户对商家的点击和下单记载,除了把用户-点击-商家的事情描写为图以外,还能够考虑描写短时刻内一起点击商家的联系。除此之外,还能够引进额定的数据,比方商家的地理位置、商家在售的菜品等。终究运用何种构图计划,需求经过试验才干确认。对此,图学习渠道供给了图形化的构图东西(如下图10所示),协助用户整理构图计划;一起还供给图数据集的版别办理,便利比较不同构图计划的作用。

  试验办理:确认图数据之后,建模计划和练习战略是影响终究作用的要害。例如,应该用何种GNN模型?丢失函数怎么选取?模型超参和练习超参怎么确认?这些问题也需求经过很多试验才干答复。依据Tulong结构,建模计划和练习战略能够经过一拼装备来操控。图学习渠道供给装备的可视化编辑器和版别办理功用,便利比较不同的计划的好坏。

  流程办理:有了图数据集和建模/练习计划后,还需求让整个流程自动化。这是模型上线的必要条件,一起也有利于团队成员复现互相的计划。图学习渠道针对常见的“构图、练习、评测、导出”流程供给了自动化的调度,在恰当的时分能够复用前一阶段的成果,以提高功率。例如,假如数据集的界说没有改变,能够越过Spark构图阶段直接运用已有的图数据。此外,针对模型上线的需求,渠道供给构图和建模计划整合和守时调度等功用。

  本文介绍了美团查找与NLP团队在图神经网络结构建造方面的实践经验,包含GNN模型概括笼统、根本结构、功用优化,以及上层东西等方面的考虑和要害规划。结构的规划思路来源于事务落地所遇到的实践问题,例如针对大规划图的优化、多人协作中的流程办理等;一起也吸收学习了学术界的最新研讨进展,例如动态图的核算范式等。除了技能层面的优化,结构的建造也得益于工程团队和算法团队的紧密配合,依据一起的、有深度的认知才得以让项目顺畅推动。

  凭借于Tulong结构,图神经网络技能已在美团查找、引荐、广告、配送多个事务场景落地运用,并取得了较为可观的事务收益。咱们信任图神经网络还有愈加宽广的运用远景,作为根底设施的图神经网络结构也值得持续优化完善。

地址:北京市海淀区丰秀中路3号院12号楼 / 邮编:100094 / 电话:010-82695000 010-82883933 / 传真:010-82883858

版权所有: 京ICP备05008170号 京公网安备11010802029694号
© All rights reserved by 火狐app

扫一扫,关注