量子位 授权转载 | 公众号 QbitAI

最近,纽约大学、纽约大学上海分校、AWS上海研究院以及AWS MXNet Science Team共同开源了一个面向图神经网络及图机器学习的全新框架,命名为Deep Graph Library(DGL)。

据介绍,这个框架在测试时表现出了良好的性能,能够既快又好地部署深度神经网络。

开源具体信息已经在今天召开的NeurIPS 2018 ML Sys Workshop(Workshop on Systems for ML and Open Source Software)上公布,量子位编辑如下:

深度神经网络在近年来的发展和成功有目共睹。这些网络架构成功的一个重要原因在于其能有效地捕捉到了数据内在的相关性,并在不同的抽象级别构建表示(representation)。

比如,CNN刻画了图片中相邻像素点间的空间不变性;RNN抓住了文本数据的有序线性结构。

CNN和RNN的成功让人思考——我们是否能将此思想拓展到其他结构的数据上呢?事实上,人们一直在探索如何将深度学习应用于更广泛的结构数据中。

早在2014年,Kai Sheng Tai等人就研究了能在文本语法树上训练的树神经网络模型TreeLSTM。这个工作在一定程度上冲击了大家用RNN处理文本的范式,并且用树型结构看待文本数据开创了很多新的研究可能。

从链表到树,从树到图:近年来,对于图神经网络(Graph Neural Network)的研究热潮使得神经网络的应用领域大大增加。

小到分子结构图([Gilmer et al., 2017], [Jin et al., 2018]),大到知识图谱([Schlichtkrull et al., 2017])、社交网络和推荐系统([Ying et al., 2018]),图神经网络都展现了强大的应用潜力。

广义上说,没有一个点的特征表达是孤立的;丰富特征的一个重要手段必然是融合该点和其他邻居点的互动。

从这个意义上来说,CNN和RNN分别把空间和时间上的相邻点看作互动对象是非常粗糙的。把图和深度学习结合的意义正在于突破这个局限。

由于结构数据的普适性,Google, Deepmind, Pinterest等公司也纷纷在这一领域发力。除了数据,深度神经网络模型的发展也有着更加动态和更加稀疏的趋势。

这源于目前深度神经网络对于算力的需求已经达到了一个惊人的地步。同时,我们观察到现在还没有一个框架既高效,又好用,能帮助开发新的模型。

(比如目前火热的BERT模型在一台8块V100的服务器上预计训练时间是42天。)

于是一个很现实的问题是如何设计“既快又好”的深度神经网络?也许更加动态和稀疏的模型会是答案所在。可见,不论是数据还是模型,“”应该成为一个核心概念。

基于这些思考,我们开发了Deep Graph Library(DGL),一款面向图神经网络以及图机器学习的全新框架。

在设计上,DGL秉承三项原则:

  1. DGL必须和目前的主流的深度学习框架(Pytorch, MXNet, Tensorflow等)无缝衔接。从而实现从传统的tensor运算到图运算的自由转换。

  2. DGL应该提供最少的API以降低用户的学习门槛。

  3. 在保证以上两点的基础之上,DGL能高效并透明地并行图上的计算,以及能很方便地扩展到巨图上。

这里,我们简单介绍DGL是如何实现以上目标的。

设计一:DGL是一个“框架上的框架”

神经网络计算的重要核心是稠密张量计算和自动求导。当前神经网络框架对此都已经有了非常良好的支持。此外,由于神经网络模型的日益模块化,用户对于这些深度学习的框架的黏性度也越来越高。

为了避免重复造轮子(build a wheel again),DGL在设计上采取了类似Keras的做法——基于主流框架之上进行开发。但又不同于Keras,DGL并不限制用户必须使用自己的语法。

相反,DGL鼓励用户在两者间灵活地使用。比如用户可以使用他们偏爱的框架编写常见的卷积层和注意力层,而当遇到图相关的计算时则可以切换为DGL。用户通过DGL调用的计算,经过系统优化,仍然调用底层框架的运算和自动求导等功能,因此开发和调试都能更快上手。

用户和DGL的交互主要通过自定义函数UDF(user-defined function)。在下一节编程模型我们将继续展开。目前DGL支持Pytorch以及MXNet/Gluon作为系统后端。

设计二:基于“消息传递”(message passing)编程模型

消息传递是图计算的经典编程模型。原因在于图上的计算往往可以表示成两步:

  1. 发送节点根据自身的特征(feature)计算需要向外分发的消息。

  2. 接受节点对收到的消息进行累和并更新自己的特征。

比如常见的卷积图神经网络GCN(Graph Convolutional Network)可以用下图中的消息传递模式进行表示(图中h表示节点各自的特征)。 用户可以定制化消息函数(message function),以及节点的累和更新函数(reduce function)来构造新的模型。事实上,在Google的2017年的论文中 [Gilmer et al. 2017] 将很多图神经网络都归纳到了这一体系内。

DGL的编程模型正基于此。以下是图卷积网络在DGL中的实现(使用Pytorch后端):

可以看到,用户可以在整个程序中灵活地使用Pytorch运算。而DGL则只是辅助地提供了诸如mailbox, send, recv等形象的消息传递API来帮助用户完成图上的计算。在我们内部的项目预演中,我们发现熟悉深度学习框架的用户可以很快上手DGL并着手开发新模型。

设计三:DGL的自动批处理(auto-batching)

好的系统设计应该是简单透明的。在提供用户最大的自由度的同时,将系统优化最大程度地隐藏起来。图计算的主要难点在于并行。

我们根据模型特点将问题划分为三类。首先是处理单一静态图的模型(比如citation graph),其重点是如何并行计算多个节点或者多条边。DGL通过分析图结构能够高效地将可以并行的节点分组,然后调用用户自定义函数进行批处理。相比于现有的解决方案(比如Dynet和TensorflowFold),DGL能大大降低自动批处理的开销从而大幅提高性能。

第二类是处理许多图的模型(比如module graph),其重点是如何并行不同图间的计算。DGL的解决方案是将多张图合并为一张大图的多个连通分量,从而将该类模型转化为了第一类。

第三类是巨图模型(比如knowledge graph),对此,DGL提供了高效的图采样接口,将巨图变为小图样本,从而转化为第一类问题。

目前DGL提供了10个示例模型,涵盖了以上三种类别。其中除了TreeLSTM,其余都是2017年以后新鲜出炉的图神经网络,其中包括几个逻辑上相当复杂的生成模型(DGMG、JTNN)我们也尝试用图计算的方式重写传统模型比如Capsue和Universal Transformer,让模型简单易懂,帮助进一步扩展思路。

我们也对DGL的性能进行了测试:

可以看到,DGL能在这些模型上都取得了相当好的效果。我们也对DGL在巨图上的性能进行了测试。在使用MXNet/Gluon作为后端时,DGL能支持在千万级规模的图上进行神经网络训练。

传送门

DGL现已开源,感兴趣可查主页地址:

http://dgl.ai

项目地址:
https://github.com/jermainewang/dgl

对于想了解DGL的初学者,我们推荐从这些教程开始:
https://docs.dgl.ai/tutorials/basics/index.html

同时,所有示例模型,我们都提供了详细的从零开始的教程:
https://docs.dgl.ai/tutorials/models/index.html

我们欢迎任何来自社区的贡献,同时也希望能和大家一起学习进步,推动结构化深度学习这一个新方向。

DGL项目由纽约大学,纽约大学上海分校,AWS上海研究院以及AWS MXNet Science Team共同开发(详见https://www.dgl.ai/ack) 。

年度评选申请

加入社群

量子位AI社群开始招募啦,欢迎对AI感兴趣的同学,在量子位公众号(QbitAI)对话界面回复关键字“交流群”,获取入群方式;

此外,量子位专业细分群(自动驾驶、CV、NLP、机器学习等)正在招募,面向正在从事相关领域的工程师及研究人员。

进专业群请在量子位公众号(QbitAI)对话界面回复关键字“专业群”,获取入群方式。(专业群审核较严,敬请谅解)

诚挚招聘

量子位正在招募编辑/记者,工作地点在北京中关村。期待有才气、有热情的同学加入我们!相关细节,请在量子位公众号(QbitAI)对话界面,回复“招聘”两个字。

量子位 QbitAI · 头条号签约作者

վ'ᴗ' ի 追踪AI技术和产品新动态

亚马逊+纽约大学开源图神经网络框架DGL:新手友好,与主流框架无缝衔接相关推荐

  1. 30多门免费课程上线,亚马逊“机器学习大学”开学了

    圆栗子 发自 凹非寺  量子位 报道 | 公众号 QbitAI 今天,亚马逊"机器学习大学"开课了. 团队昭告天下,那些用来培训亚马逊工程师的秘密课程,已经通过AWS免费向所有开发 ...

  2. python + selenium在亚马逊下载产品主图

    python + selenium 在亚马逊下载产品主图 下载的图片是1000像素的,即卖家上传的图片 import requests import xlwings from selenium imp ...

  3. 微虚拟机服务器,亚马逊AWS发布开源虚拟化技术,可125毫秒内启动微虚拟机!

    原标题:亚马逊AWS发布开源虚拟化技术,可125毫秒内启动微虚拟机! 在AWS Lambda发布4年后,每月为数十万活跃客户处理数万亿次执行,作为当下最热的无服务器计算技术,AWS没有停下探索的步伐. ...

  4. 探索“老药新用”最短路径:亚马逊AI Lab开源大规模药物重定位知识图谱DRKG

    本文经授权转载自机器之心(almosthuman2014),未经授权禁止二次转载与摘编. 本文长度为3200字,建议阅读9分钟 本文带你了解亚马逊AI实验室的开源机器学习工具. [ 摘要 ]最近,来自 ...

  5. 要闻君说:亚马逊也进击开源了吗?微软收购开源软件公司Citus Data,剑指云服务!投资15亿的数据中心忠德粤桂云来了!...

    关注并标星星CSDN云计算 每周三次,打卡即read 更快.更全了解泛云圈精彩news go go go  嗨,大家好!偶是要闻君.工作日的最后一周,有没有很兴奋?边学习边听歌吧! 文/要闻君 近日, ...

  6. 亚马逊FBA入仓要求及注意事项——新手跨境电商卖家须知

    亚马逊卖家的产品不符合亚马逊FBA物流商品的预处理要求.安全要求和商品限制,可能会产生以下结果:亚马逊运营中心拒绝入库.放弃库存或退回.以后将禁止向亚马逊运营中心运送货物.亚马逊运营中心还可以收取未完 ...

  7. 亚马逊服务器上传文件是什么类型,新手必看!亚马逊的三种产品上传方式对比...

    作为亚马逊卖家,如何快速.详尽并准确地上传产品是产品畅销与否的第一步,本篇文章为卖家介绍并对比亚马逊站内上传产品的三种方法. 一. 后台手动创建新商品 1.进入亚马逊卖家后台,如下图所示点击" ...

  8. 半小时训练亿级规模知识图谱,亚马逊AI开源知识图谱嵌入表示框架

    来源:AI 科技大本营 本文约2300字,建议阅读9分钟 亚马逊 AI 团队开源了一款专门针对大规模知识图谱嵌入表示的新训练框架 DGL-KE,能让研究人员和工业界用户方便.快速地在大规模知识图谱数据 ...

  9. 大神李沐被曝离职亚马逊,投身大模型创业!网友:“AI 已成创业致富新思路?”...

    整理 | 朱珂欣 出品 | AI科技大本营(ID:rgznai100) 横空出世的 ChatGPT 在火爆出圈之后,硅谷巨头.各大互联网大厂可谓是上演了一场群雄逐"ChatGPT" ...

最新文章

  1. 最完美的ASCII 表
  2. 单片机 多机通讯c语言,单片机多机串口通信.doc
  3. Smart Template tile的绘制原理
  4. P4151 [WC2011]最大XOR和路径(线性基应用)
  5. 使不安全变得更加安全
  6. java电脑运行视频演示_javaweb视频第一天(二)
  7. 2038: [2009国家集训队]小Z的袜子(hose)
  8. 基于lis3dh的简易倾角仪c源码_cm-23D柯尼卡美能达分光测色计色差仪CM-2300d
  9. java 104规约_电网104规约解包(java)
  10. Dreamweaver制作漂亮的网页Flash电子相册
  11. 方法重写与方法重载的区别详解
  12. 第十篇:React 中的“栈调和”(Stack Reconciler)过程是怎样的?
  13. c语言编译bss和data,深入理解BSS段与data段的区别
  14. 无线网技术——知识点
  15. 启动报错 Bean instantiation via factory method failed
  16. WebService 理论详解、JWS(Java Web Service) 快速入门
  17. 逻辑思维类面试题汇编七
  18. 大学物理·第5章【静电场】
  19. 微积分——Rolle定理的理解(罗尔定理)
  20. 用友如何控制打印次数

热门文章

  1. c语言按键中断程序,单片机C语言代码:外部中断,按下中断按键LED不亮,LED1正常亮...
  2. c语言 linux常用函数,C语言常用函数
  3. 点击文本框内容消失,移开内容自动显示(两种方法)(原创)
  4. python中的real是什么意思_为什么“1.real”语法错误,但“1 .real”在Python中有效?...
  5. godaddy mysql 乱码_Godaddy主机乱码的解决方法 | Godaddy美国主机中文指南
  6. js des加密 java_java JS DES互相加密解密 通用!!!
  7. python面向对象的含义_Python面向对象(一)
  8. Android修改高度,android – 如何在运行时更改软键盘的高度?
  9. React Router V6 新特性
  10. 18 个惊人的 GitHub 仓库