当前位置: 首页 > 编程日记 > 正文

那个分分钟处理10亿节点图计算的Plato,现在怎么样了?

受访者 | 于东海

记者 | 夕颜

出品 | CSDN(ID:CSDNnews)

「AI 技术生态论」 人物访谈栏目是 CSDN 发起的百万人学 AI 倡议下的重要组成部分。通过对 AI 生态顶级大咖、创业者、行业 KOL 的访谈,反映其对于行业的思考、未来趋势的判断、技术的实践,以及成长的经历。

本文为 「AI 技术生态论」系列访谈的第十八期,将对腾讯大规模开源图计算框架Plato进行详细解读,并预测图计算框架未来发展趋势。

百万人学 AI 你也有份!今日起点击阅读原文报名「2020 AI开发者万人大会」,使用优惠码“AIP211”,即可免费获得价值299元的大会在线直播门票一张。限量100张,先到先得!

2019 年 11 月,腾讯一口气宣布开源五个重磅项目,其中就包括图计算框架 Plato。图计算火了有一段时间了,随着 5G、IoT 等技术的发展,图计算的热度预计将只增不减。今天,我们将以腾讯开源的这款图计算框架 Plato为例,通过微信Plato高性能计算团队负责人于东海,剖析图计算框架构建的技术和未来发展趋势,希望为相关开发者提供参考。

何为图计算?

首先来了解一下图计算的概念。实际上,图计算与我们平常所说的图像识别、图像处理等技术不同,它所指并非普通的图像和照片,而是用于表示对象之间关联关系的一种抽象数据结构,使用顶点(Vertex)和边(Edge)进行描述:顶点表示对象,边表示对象之间的关系,可抽象成用图描述的数据即为图数据。图计算,便是以图作为数据模型来表达问题并予以解决的这一过程。

简单来讲,图计算就是研究如何高效计算、存储并管理大量图数据等问题的方法。

由于传统的关系型数据本身存在建模缺陷、水平伸缩等问题,而图数据具有更强大的表达能力,且可以将不同来源、不同类型的数据融合到同一个图里进行分析,得到原本独立分析难以发现的结果,因此,图计算受到业界的重视,尤其是在社交网络、推荐系统、网络安全、文本检索和生物医疗等领域,更是应用广泛。

腾讯图计算框架 Plato 诞生始末

图计算开源框架其实不少,比如图计算的鼻祖Pregel,Spark GraphX,Hadoop Giraph等,为什么腾讯决定要造一个自己的图计算框架呢?

于东海接受采访时说到腾讯做 Plato 的初衷,原来,这是因为原有的主流图计算开源框架的如果要完成腾讯数据量级的超大规模图计算,需要花费超长的时间或者需要大量的计算资源,这都是无法接受的。腾讯的业务场景要求超大规模图计算必须在有限时间和有限资源内完成。于是,在来自加州大学、清华大学、北京大学等世界知名学府组成的高性能计算团队的努力下,号称能够进行 10 亿节点图计算的 Plato 高性能分布式图计算框架就此诞生,给国产图计算框架又添一员“大将”。

关于 Plato 框架,这些你不一定知道

关于 Plato,早在发布之初就已经有过各种解读,但 CSDN 今天将回顾并补充拓展一下 Plato 的技术解读,查漏补缺。

Plato 是腾讯开源的高性能分布式图计算框架,提供超大规模图数据的离线图计算和图表示学习两大核心能力。


  • 图计算引擎支持新的计算通信模式

Plato 的核心是图计算引擎,包含了图划分、图表示以及多层级计算通信协同调度等模块,并设计了多层次接口支持接入新的计算通信模式,从底层的 API,到图算法库,再到为具体业务量身打造的图工具集。通过这些应用层的接口和工具,Plato 还可以把离线计算结果与其他机器学习算法相结合,共同支撑顶层的不同业务。

  • 计算模型借鉴Gemini、KnightKing、Cyclops 等图计算系统设计

据于东海介绍,在计算模型上,Plato 借鉴了包括Gemini[1]、KnightKing[2]和Cyclops[3]在内的多个学术界提出的图计算系统设计。Plato 图计算引擎提供了稀疏稠密自适应计算模式、共享内存计算模式和流水线计算模式等。因为不同类型的图算法,算法执行过程差别很大,单一计算模式不能使所有算法的性能达到最优,于是 Plato 对不同类型图算法执行过程加以归纳和提炼,经过计算模式逐步增加和抽象,不断迭代,得到一系列最优的计算模式。

  • 10 亿节点图计算几分钟搞定的秘诀

Plato 最吸引人特点之一,无非是可以处理 10 亿节点图计算,如此大的处理规模,正是业界所需要的。Plato是如何保证提升数据处理的吞吐量和规模的同时保持速度的?另外,与Giraph/GraphLab/GraphX/Gelly 等主流图计算开源框架相比,Plato 的两大核心能力是腾讯数据量级下的离线图计算和腾讯数据量级下的图表示学习,这两大能力具体是如何实现的?

于东海解释道,这是因为 Plato 作为高性能分布式图计算框架,有着很好的平行扩展能力,也就是说,随着数据规模的增加,Plato 计算集群可以平行加入更多的服务器来分担数据的存储和计算。

在原有的主流图计算开源框架下,如果要完成 10 亿节点规模的图计算,需要花费数天时间和大量计算资源。而 Plato 通过存储、计算、通信和调度等各方面精巧的设计和优化,压缩数据存储、提升计算效率、优化通信调度,使得 Plato 内存消耗比 GraphX 降低了 1-2 个数量级,同时计算性能也提升了 1-2 个数量级,这意味着,只需中小规模的集群(10台服务器左右)即可在分钟级完成腾讯数据量级的超大规模图计算。

  • 自适应图计算引擎进行自动匹配算法的机制

CSDN 好奇的另一个点,是 Plato 的自适应图计算引擎是如何进行自动匹配算法的。

据于东海解释,Plato 自适应图计算引擎指的是稀疏稠密自适应的计算模式(该方法由 Ligra[4] 首次提出),Plato 会根据算法执行过程中活跃顶点的数量变化来自动选择是执行稠密计算模式还是稀疏计算模式,由此完成自动匹配算法。

Plato 落地难点和痛点在哪?

图计算作为一种表示和分析大数据的有效方法,已成为社交网络、推荐系统、网络安全、文本检索、金融和医疗等领域至关重要的数据分析和挖掘工具。例如,定期对网页进行影响力排序以提升用户的搜索体验;基于图的认知分析用于提升金融风控能力;通过子图匹配等方式了解蛋白质间的相互作用从而研制更有效的临床医药,等等。

然而,任何新兴的技术在落地时难免会遇到困境,图计算也不例外,比如 Plato 离线图计算作为整个数据处理链条的一部分,需要和其他框架结合在一起使用,这样就需要数据衔接,由此会产生数据流转效率的问题。

对于这个问题,Plato 有应对的办法,通过分析各个上下游框架的执行过程,优化它们和 Plato 之间的数据衔接,减少数据落地和拷贝,就可以实现高效的数据处理。

当然,图计算落地的难点还有很多,需要在底层技术和应用、市场等各个层面继续完善。

自 2019 年 11 月开源以来,Plato 已经集成到腾讯云,通过腾讯云大数据套件、智能钛、腾讯云知识图谱等解决方案对外提供服务能力,已有很多业界著名的互联网公司和高校在使用。

目前,Plato已支持图特征、图表示学习等算法,未来将开源更多的算法,比如Network Embedding 和 GNN 算法,同时会持续进行维护和更新,探索和其他框架的结合使用。

关于 Plato 的讲解到这里就结束了,接下来是解答一下关于图计算框架大家会有的几个常见疑问,以及对图计算技术发展趋势做出预测。

图计算框架与通用计算引擎一定要结合才好用吗?

第一个疑问,是关于图计算框架与计算引擎的结合问题,比如Giraph是基于Hadoop做的,GraphX基于Spark,那么大家可能会有疑问,图计算框架与通用计算引擎结合起来是否全是优点?未来是否所有的图计算框架都这样做才是最好的选择?

于东海告诉 CSDN,图计算框架与通用计算引擎的结合有好处,但也有劣势,好处是方便和通用,可以在一处完成数据处理、数据挖掘、数据应用的整个过程,但是缺陷也很明显,那就是通用计算引擎没有针对图算法做特定优化,超大规模图数据处理的性能较差。

他认为,这其实这就是性能和通用的平衡问题,如果对性能要求不高,从通用的角度来看可以选择通用计算引擎,如果对性能要求较高,那么高性能图计算框架才是最好的选择。

图计算技术热点有哪些?图计算框架有哪些发展趋势?

第二个疑问,是在未来,整个图计算领域有哪些值得期待和关注的技术点呢?以及就图计算框架来说,未来还有有哪些发展趋势?

他表示,GNN 目前是图计算领域的热点方向,业界著名的互联网企业和高校都相继推出了自研的 GNN 计算框架经网络框架 TF-GNN,阿里开源的 Graph-Learn 等。

GNN 即图神经网络(Graph Neural Network),这是一种直接在图结构上运行的神经网络,因为在对图形中节点间的依赖关系进行建模方面能力强大,使得图分析相关的研究领域取得了突破性进展,为学界和业界关注的重点技术。

另外,当前已经有些框架可以与深度学习框架结合使用,这也许是图深度学习框架的一个发展方向。


推荐阅读

  • 大促下的智能运维挑战:阿里如何抗住“双11猫晚”?

  • 黑客用上机器学习你慌不慌?这 7 种窃取数据的新手段快来认识一下!

  • 当莎士比亚遇见Google Flax:教你用字符级语言模型和归递神经网络写“莎士比亚”式句子

  • Hyperledger Fabric 和企业级以太坊,谁才是企业首选?

  • 面试时遇到「看门狗」脖子上挂着「时间轮」,我就问你怕不怕?

  • 同期两篇 Nature:运行温度高于 1K 的量子计算平台问世!

  • GitHub 标星 10,000+,Apache 顶级项目 ShardingSphere 的开源之路

  • 你点的每个“在看”,我都认真当成了AI

相关文章:

android TextView里边实现图文混配效果

做的游戏攻略中的图文载入已经用TextView实现。但看到网易新闻里的内容。点击图片能够调到一个新的Activity ,感觉也像Textview 实现的,但不知道怎么弄,想想能够通过动态载入Textview和ImageView 布局实现,但当量大的时候回事很复…

《异步处理在分布式系统中的优化作用》学习笔记

原文地址:http://www.infoq.com/cn/presentations/optimization-of-asynchronous-processing-in-distributed-systems 视频地址:http://v.qq.com/boke/page/l/0/6/l0196plsvp6.html 主讲人:赵海平 Facebook hiphop HHVM 阿里巴巴技术保障部…

CISCO设备上DHCP实例

Cisco设备上设置DHCP实例 -------------------------------------------------------------------------------- 一位客户想把DHCP SERVER迁移到6509交换机的MSFC上,要求还挺复杂: 1.同时为多个VLAN的客户机分配地址 2.VLAN内有部分地址采用手工分配的…

360金融翟政:科技成就金融场景零容错

翟政,拥有超过20年的互联网经验,我国第三方支付第一批从业者,是多个知名第三方支付公司产品研发团队的组建者,核心系统的主设计师,管理层核心成员。设计搭建的支付系统过去这十年来一直在服务着各行各业的在线支付需求…

OSSIM平台安全事件关联分析实践

OSSIM平台安全事件关联分析实践在《开源安全运维平台OSSIM最佳实践》一书中叙述到,事件关联是整个OSSIM关联分析的核心,对于OSSIM的事件关联需要海量处理能力,主要便于现在需要及时存储从设备采集到的日志,并能关联匹配和输出&…

《Apache Kafka》学习笔记

1.什么是Kafka Kafka是一个高通过率的分布式消息系统 2.消息队列(Message Queue)MQ的模型 消息队列的简单架构图 3个核心概念: Sender Application:消息队列的发送者,也叫生产者producer Message Queue Receiver Application…

4 月 24 日开播!基于神经网络建模的信息传播预测

信息传播在我们的日常生活中无处不在,例如谣言的扩散、产品的推广以及新思想和新技术的普及等等,其建模和预测已经在多个重要领域内得到了广泛的研究。近年来,很多研究者利用以循环神经网络为主的深度学习模型对信息传播过程进行建模&#xf…

并行计算圆周率

看到这个题目,俗了,大家都在计算圆周率。不过咱们的目的是看一下并行计算的基本流程。 书上计算PI用的是精确的数值计算方法,我这里再给出一种概率计算方法。 OpenMP和MPI将同时亮相。 计算PI的方法 1.tan(PI/4)1 > PI4arctan1。知…

kafka-manager 的编译和使用(附安装包)

2019独角兽企业重金招聘Python工程师标准>>> kafka-manager是一个非常好用的kafka web管理工具,yahoo开源。 地址:github.com/yahoo/kafka-manager 1、编译过程比较简单,重点是能翻墙,如果网络环境不允许,可…

匿名函数应用-多线程测试代码

多线程测试代码&#xff0c;不用单独再写一个类&#xff0c;比较方面而已。 public class MainThread { static int a0; for (int x 0;x<100;x){ Thread t new Thread(new Runnable() { Override public void run() { while(true){ try { a;System.out.println(a);…

YOLOv4来了,大型调优现场,速度和准确率俱佳

作者 | VincentLee来源 | 晓飞的算法工程笔记简介论文提出YOLOv4&#xff0c;从图1的结果来看&#xff0c;相对于YOLOv3在准确率上提升了近10个点&#xff0c;然而速度并几乎没有下降&#xff0c;论文主要贡献如下&#xff1a;提出速度更快、精度更好的检测模型&#xff0c;仅需…

关于对J2EE几点误解和错误认识的澄清

转自&#xff1a;http://www.jdon.com .Net和J2EE的争论一直没有停止&#xff0c;我也参加过“程序员”杂志主持的“.Net和Java之争”之类的讨论&#xff0c;本来这两种技术都是为用户提供了竞争性的选择&#xff0c;对于用户来说是一件好事&#xff0c;多种选择远胜于单一选择…

org.springframework.dao.InvalidDataAccessApiUsageException: Write operations are not allowed in r...

2019独角兽企业重金招聘Python工程师标准>>> Struts Problem Report Struts has detected an unhandled exception: Messages: Write operations are not allowed in read-only mode (FlushMode.NEVER/MANUAL): Turn your Session into FlushMode.COMMIT/AUTO or re…

Java的Redis连接池代码性能不错

其实这个是引用自网友http://blog.csdn.net/tuposky/article/details/45340183&#xff0c;有2个版本&#xff0c;差别就是ReentrantLock和synchronized。另外原作者使用了断言&#xff0c;我觉得这个还是不用为好。 ReentrantLock版 import java.util.concurrent.locks.Reent…

降低预测过程计算成本,这些NLP模型压缩方法要知道

编译 | 凯隐出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;近年来&#xff0c;基于谷歌Transformer的语言模型在神经机器翻译&#xff0c;自然语言推理和其他自然语言理解任务上取得了长足进展。通过多种语言模型的平均损失进行自我监督预训练&#xff0c;使得在大范…

政府要尽快对应用商店出台管理办法

前两天联想的开发者大会&#xff0c;我和联想的CTO贺志强先生联合接受了一个视频访谈&#xff0c;贺先生谈到联想的乐园软件商店&#xff0c;组织大量的人力对于软件进行检测&#xff0c;以保证软件是合格产品&#xff0c;不会给用户一路带来侵害&#xff0c;对于联想这种负责态…

antlr-2.7.6.jar的作用

项目中没有添加antlr-2.7.6.jar,hibernate不会执行hql语句 并且会报NoClassDefFoundError: antlr/ANTLRException错误

junit集成Hamcrest测试集合中某个属性是否包含特定值

junit已经集成Hamcrest但是还是需要引用hamcrest-library&#xff0c;不然只有基本方法&#xff0c;高级的没有 <dependency> <groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test<…

腾讯第100个开源项目:微信开源推理加速工具TurboTransformers

出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;4月24日&#xff0c;腾讯正式宣布开源Transformer推理加速工具TurboTransformers。该工具面向自然语言处理领域中Transformers相关模型丰富的线上预测场景&#xff0c;在微信、腾讯云、QQ看点等产品的线上服务中已经广…

程序员:提高编程效率的技巧

本文写给那些认为在项目上所花时间和效率成正比的程序员。我要说的是&#xff0c;事实并非如此。虽然你需要在电脑前敲键盘输入东西&#xff0c;但这只和编程沾上一点边。那么&#xff0c;程序员该如何利用时间呢&#xff1f; 俗话说&#xff0c;磨刀不误砍柴工&#xff0c;拿出…

Qunee for HTML5 V2.5新版本发布

为什么80%的码农都做不了架构师&#xff1f;>>> Qunee for HTMl5 V2.5 beta2版本正式发布,此次版本内核改动较大,采用了新的2D渲染引擎,增加了延迟绘制功能,大幅改善画布的浏览体验,此外重构了鼠标键盘以及触控交互监听处理,增加右键框选功能,改善了多点触控交互,增…

泛型推断类型不符合上限

程序报错推断类型不符合上限 springsecurity需要自定义用户服务 代码 Overrideprotected void configure(AuthenticationManagerBuilder auth) throws Exception {auth.userDetailsService(new CustomUserDetailsService());}public class CustomUserDetailsService implemen…

如何通过深度学习,完成计算机视觉中的所有工作?

Mask-RCNN做对象检测和实例分割作者 | George Seif译者 | 天道酬勤&#xff0c;责编 | Carol出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;Mask-RCNN做对象检测和实例分割&#xff1a;https://miro.medium.com/max/1200/1*s9raSe9mLeSSuxE3API-ZA.gif你想做计算机视…

Windows PowerShell 2.0语言之字面类型系统

PowerShell语言允许通过一个字面类型&#xff08;type Literals&#xff09;来访问类型&#xff0c;它是用括号抬起的类型名&#xff0c;返回.NET底层的System.Type对象实例&#xff0c;如&#xff1a; PS C:\> [System.Int32]IsPublic IsSerial Name …

建立名称server

一、实验的目的&#xff1a;实现DNSserver功能&#xff0c;提供正向、反向解析二、实验环境装有Linux的Windows系统IP为192.168.6.3的虚拟机三、实验目的建立gr.org域的主名称server。解析&#xff1a;名称 IP 用途ns.gr.org 192.168.…

Java的JSON操作存储List到Redis

使用jackson和json-lib都可以 <dependency> <groupId>org.codehaus.jackson</groupId><artifactId>jackson-mapper-asl</artifactId><version>1.9.13</version></dependency><dependency><groupId>net.sf.json-li…

关注基于云的下一代应用开发

接受经济和信息化的视频专访专访的主页地址为&#xff1a;http://www.enicn.com/article/2010-08-20/0R064b52010.shtml我的其他视频&#xff0c;请参考土豆空间&#xff0c;地址为http://www.tudou.com/home/larryvmw。

确认了!MySQL 狠甩 Oracle 稳居 Top1!

01几乎所有程序员都会用到的 MySQL稳居 Top 1科技长河&#xff0c;顺之者昌&#xff0c;错失者亡。在2019年&#xff0c;CSDN面向具备超强计算力的数字化世界&#xff0c;我们进行了「大数据技术应用现状分析」&#xff0c;并发布了《2019-2020 年中国开发者调查报告》。发现&a…

[AWK]使用AWK进行分割字符串以及截取字符串

如何split当前的字符串&#xff0c;用$0&#xff0c;例如&#xff1a; cat num.2012032911 | awk {print $2} | awk {split($0,b,".");print b[2]} | cut -c 3- 获取第二列&#xff0c;例如第二列是com.sb3456.you那么在split当前的这个字符串获得sb3456,最后截取sb3…

SpringMVC集成Tiles布局引擎框架

Tiles布局框架&#xff0c; http://tiles.apache.org/ Spring已经对Tiles进行了集成。页头页尾公共模板页要靠这个&#xff0c;不然重复代码太多。 <dependency><groupId>org.apache.tiles</groupId><artifactId>tiles-servlet</artifactId><…