从图引擎平台技术,看华为云 EI 的决心和野心

  • 曹倩芸

2017 年 12 月 14 日

话题:语言 & 开发架构文化 & 方法

今年 9 月 HUAWEI CONNECT 2017 大会上,华为 Cloud BU 总裁兼 IT 产品线总裁郑叶来宣布华为面向企业市场首次发布企业智能(Enterprise Intelligence, 简称 EI),12 月初,华为 EI 企业智能服务在华为云官网全新上线。华为云 EI 囊括了基础平台服务、通用 AI 服务、场景解决方案这三大类智能云服务,每一分支大类中包含了针对视觉、语音、图像、NLP 等垂直领域的解决方案或技术。当各厂都在大谈“AI”之时,华为云为何要另辟蹊径做 EI?华为云 EI 的决心和野心又剑指何方?我们试图以其战略中的一款图引擎平台来揭幕这场 AI 暗战背后的「可能」或「未来」。

大幕揭起:图引擎服务的诞生

图是抽象能力很强的模型,能用来建模各种场景。在 Facebook 和 Twitter 这类社交网络中,以个体为单位的社会关系构成了盘根错节的一张网。如果将这张网看作为图(这里的图指代的是通过图来组织数据,做关系计算),那么其构造中「点」就是人,「边」即为人与人之间的关系。

在数据规模极其庞大、数据结构愈加复杂的时代,许多应用场景都包含了大量具有相互联系的不同实体;而这些实体之间的关系可以通过图上的节点、边及刻画这些点和边的属性数据来直观表达。各类基于图模型的智能分析技术和数据存储查询技术也受到业界更多的关注与重视,在其他不同的场景之下,图模型还被应用于交通网络、通信网络、合作关系网、金融交易、用户商品推荐等诸多领域。 

那么,图引擎平台为何会在以通讯产品起家的华为被瞄上浓墨重彩的一笔呢?

华为云 EI 图引擎首席架构师夏应龙开篇即解释道,华为内部有大量的网络规划需求,同时外部面向的电商、金融等行业也有广泛的图上建模及分析查询需求,这就使图计算工具的诞生成为了必然。此外,整个图计算领域可进一步细分为查询分析、计算引擎、存储管理、可视化等子方向,但截至目前并没有一种高效涵盖所有子方向的图引擎。所以,图引擎平台的产生之意也是为了让普通用户、开发者和 ISV 能快速建模、高效计算,从而提升图分析与计算的质效和速度。

华为云将其自研的图引擎平台命名为 EYWA。

EYWA 提供了从底层图存储和管理、核心的高性能计算引擎,到面向上层的图分析、图查询这样一整套解决方案。在华为云 EI 整体战略中,图引擎是基础平台服务之一,主要为之上的通用服务和行业服务提供基础的建模和计算能力。

但,如果把关系数据模型比做火车的话,那么现在的图数据建模或许可被比喻成高铁——其发展仍面临一系列技术挑战,夏应龙在访谈中同时谈到了图计算领域所存在的诸多挑战:

  • 图的标准化查询:目前主流的有 Gremlin 和 Cypher,但与此同时还不断有新的开源查询语言衍生,例如今年 2 月微软亚洲研究院就开源了 LIKQ。而语言的多样化也为查询分析带来了不小的难度。
  • 图的分布式计算:同时,在大数据时代,往往需要分布式系统来处理规模巨大的图(如社交网的数据就高达数十亿点、数百亿边),分布式系统带来的图切分也是一大难题——切的太散会带来大量的通信开销,导致查询效率低下。因此,在查询和分析过程中如何减少计算和通信开销,保证伸缩和性能也是图计算框架着力改进之处。
  • 大规模图的可视化:例如,大规模图中因边交叉和节点覆盖所带来的视觉混乱,亦或无法显式揭示埋没于边中的节点连接细节信息等问题,都让大规模图的可视化研究具备长足发展空间。

随着业界对图分析及计算的重视加深,夏应龙也相信不久的将来,图的查询语言或许会做到统一,计算模型也会得以不断发展;从主流的 BSP、GAS 到 MEGA model,计算框架会逐渐被优化;硬件上对 GPU、SSD 等的探索也会使计算性能进一步提升。

尽管华为云在图引擎上仅是跨出了第一步,但其远景绝不止于此。

华为云 AI 的两个重要方向一是视觉,一是语音。当视觉、语音被结构化成数据和数组之后,后面就是向量,向量的也可以利用图的技术来处理。因此可见,图引擎或许是华为云 EI 战略中非常重要的一枚棋子,成与败,或皆由这匹马车拉动。

抛砖引玉:从图引擎平台技术创新谈「EI」

EYWA 的底层为图存储和管理模块,负责数据的「接入」;中间层是负责数据「运算」的核心的高性能计算引擎以及负责数据「处理」的面向上层应用的图分析和图查询模块;最上面是通过标准接口输出负责数据结果「呈现」。

EYWA 整体技术架构

当用户往图引擎中导入数据以及数据加载完毕后,即可通过 Gremlin 语言进行数据查询或选择内置算法对图数据进行分析。目前,EYWA 已内置 20 余种拓扑度量和基本图分析算法,并通过服务化 API 将图引擎的能力开放。然后,开发者可以调用 REST API,获得 JSON 格式的返回数据。当然,在华为云上图引擎对接了前端(console),普通用户可以在网页上看到可视化结果。

结合目前图计算领域的特性和需求来看,平台可用性和易用性的关键点或许在于四点:

1. 支持大规模的超大图计算和查询;

2. 兼顾图计算和图查询的高并发、低延时要求;

3. 能对接标准的查询接口和查询语言;

4. 可集成实现计算、查询、存储等一体化需求(例如,Neo4j、Titan 等擅长于图数据的实时查询,但并不能高效地对图数据进行离线分析;Turi、GraphX 侧重图数据的离线分析和挖掘,却不能对属性图进行管理,且不支持实时查询)。

另外,结合华为云曾在大图查询和分析上遇到的诸多挑战(如当提供了百亿边以上规模的大图且需要秒级返回多跳查询结果时),华为云图引擎在技术上做了如下创新及优化:

  • 分布式优化 Parallel Sliding Window(PSW) 的图计算框架,高效加载图数据,以满足业务大规模的计算需要;
  • 兼顾图计算与点查询效率,开发基于边集流(edge-set)的块状数据组织以合理组织数据;
  • 通过边集合的 prefetch 策略来隐藏磁盘的 IO 操作以及松弛的 BSP 模型来隐藏通信 IO,从而提升性能;

正如上文所说,图计算领域目前要想实现集计算、查询、存储等于一体的平台也并非易事。华为云曾挑选、测试了几款主流的图计算平台及图数据库,并详细分析了它们的优劣势:例如 Neo4j、Titan 等具备数据持久化能力,但在数据量大的情况下性能剧烈退化且分析功能较弱,Pregel、Powergraph 和 GraphX 又不能有效支持在线分析和查询扩展。

因此,EYWA 结合一体化目标和实际需求,最终选型 GAS 计算框架扩展到我们的 PSW 计算框架。考虑到 Java GC 问题,图引擎采用 C++ 对自研系统进行实现,对图的切分(点切、边切)和数据组织(edge-set)进行优化,提升性能,算法上优先实现常用的图算法(PageRank、SSSP、 K-core 等)。通过支持点查、边查、属性过滤等基本查询和上述常用图算法,则将查询存储等功能全集成。而且这些结果可回写到图的某一属性中,便于后续查询。

实际上,图引擎的这种诞生和创新很大程度上反映了华为云的 AI 战略。

在国内其他几大云厂商的 AI 战略布局中,可以看到针对消费级 AI 的产品及技术演进会更为密集,其中原因多样。AI 的研究和应用,至今更多地分散在单点技术上,还无法满足众多企业,特别是大中型企业的供应链、制造、经营管理等复杂生产系统的需求。但郑叶来认为,人工智能要为企业创造更多价值,则必须将这些分散的单点技术集成起来——这也解释了华为云为何要选择不同的市场和打法。他在发言中进一步阐释说,AI 在企业最终要解决两类问题,一类是确定性问题,即确定的规则空间;另一类是不确定问题,即无明确规则空间。对于不确定性事情,AI 要做的是模糊性识别和智能化处理。

对照而言,图引擎基础平台更多的是解决规则不太确定的问题,无论是借助图模型关系分析制定决策也好,还是为行业图计算发展提供新的解决方案也好,EYWA 对应的终归是空间和规则的不确定性,基于对图的分析计算与建模,用于指导研发设计、运维运营等。而这,也为华为云 EI 两条落地方向敲下一记重锤。

追本溯源:图引擎的迭代勾勒着「EI」的难与痛

目前,大部分 AI 公司的业务涉及到的是上游的任务、模型及算法,但落地实现还需要操心更深层次的软件实现、系统以及设备硬件的选择。于是 AI 实现的成本高昂又或者一个解决方案无法复用,这就使得技术无法产品化,产品无法解决方案化。

另外,企业级 AI 对于解决方案完备性具有更高要求,可以看到,无论 BAT 还是科大讯飞,都在快速铺建围绕自身技术的生态和产业链。同样,同一平台解决方案的完备性对产品走向市场而言具有重要价值。

这也是 AI 的落地总是伴随着所谓的泡沫的原因。

采访中,夏应龙为我们讲述了 EYWA 一共经历的三次迭代,我们或许可以管中窥豹,看出 EI 实现的不易与艰难:

第一次迭代:最开始图引擎团队采用了开源系统进行二次开发,尽管刚开始容易上手,也取得一定的性能提升(20%+),但由于系统约束太多导致无法匹配一体化的设计目标。其后尝试过 Powergraph 和 Titan+GraphX 的二次开发,前者不具备查询扩展能力,后者在数据量大的情况下性能剧烈退化。

第二次迭代:此后,团队开始重构图切分、计算框架等核心模块,将整个平台服务化。这个过程中又遇到了分布式编程困难(进程同步、数据一致等),开发调试过程漫长等困难。期间,图引擎团队摸索和总结了 PSW 框架、边集流组织等创新技术,而这时的系统性能也已比开源系统性能提速了数倍。

第三次迭代:目前,团队让 EYWA 融合了查询和计算一体化的能力,加入了并发能力优化通信等。服务化之后,开发和调试也加速了许多(不需要重复加载图),并且针对具体算法,图引擎团队又进一步优化数据结构,以使通信开销最小化。

可以看出,EYWA 的每一轮优化与迭代都可谓是一次「重生」。但创新就意味着挑战,华为创始人兼 CEO 任正非在今年 10 月《一杯咖啡吸收宇宙能量,一桶浆糊粘接世界智慧》的讲话中说,“华为采取的是改良方式进行技术改进,否则就要抛弃大量的存量市场,这会是个很大的浪费……随着技术与社会进步的速度越来越快,变化时间短,就成了颠覆。”相对应,EYWA 无论是实现一体化设计目标还是加入新的能力优化,都彷佛是在极短的时间内做「再造工程」,从而抢为人先。

例如,当前图计算领域巨大数据量的情况下,实现高效高并发的查询是一大难点。于是,EYWA 开启了一项通过扩线查询模拟对社交网络节点的 ego-net 的探索。为测试探索结果,华为云用全球计算机排名 Graph500 提供的 Kronecker 代码在对该数据集进行扩展,形成了具有 2.5 亿点 110 亿边的大图和 5.2 亿点和 1011 亿边的超大图,优化后的实验结果显示在百亿边图 100 并发下的 3 跳扩线查询总响应时间基本维持在 0.1 秒以内。 

图引擎的落地与展望:怎么看 EI 的未来

谈到 EYWA 在华为内部的落地(当然 EYWA 也同时在金融、公共安全等行业均有应用),夏应龙举例说,华为内部有大量的网络规划场景(例如将北京地区的基站、路由等线路进行重新规划),站点、路由就是图的节点,光缆、道路就是图的边,在规划中有大量的约束条件。用户的核心痛点就是图计算效率低下,在大规模图上使用当前最流行的某开源图数据库,子图查询需要耗费数小时,不借助 EYWA 独立开发的规划算法也需要花费 7.8 小时。而 EYWA 的使用则将子图查询和路径规划计算时间降到了几分钟。 

为何要以内部落地来举例,根源在于华为自身是其 EI 应用的天然场景之一。华为供应链每年都需要处理大量的单据或用技术支撑物流等业务的发展。它也将 EI 服务能力延展到了多个行业场景中,千亿规模图数据复杂计算与处理就是其中重要一项。

同时,夏应龙也为我们规划了华为云蓝图中 EYWA 的未来图景。

他说,未来 EYWA 计划加入更多的智能技术,其中包括:

  • 具有半监督 / 无监督学习的 ML 能力(Google 有团队在此方向上发力);
  • 高阶图算法,图嵌入,影响力模型;
  • 概率图模型,对推理、故障定界、异常检测、行为检查都有用。

此外,EYWA 未来也会提供一整套的工具链帮助用户更好的开发。比如提供数据转换工具,帮助用户从不同的数据源(HDFS、MySQL)往图引擎加载数据;提供 schema 工具帮助用户定义数据格式,提供 SDK 供用户二次开发等等。

技术演进层面上,EYWA 下一步的努力方向是提供更好的图切分、更快的数据加载等;优化任务并行和任务调度;进行系统性能优化和架构升级以及探索 GPU、FPGA 对计算加速的帮助。 

那么话说过来,在各家都在大谈 AI,AI 也仍是泡沫满天飞的今天,华为云 EI 是否有「可能」和「未来」呢?任正非在《一杯咖啡吸收宇宙能量,一桶浆糊粘接世界智慧》说过这句话,“人工智能虽然我们晚了,但我们现在将着力点用在简化管理和产品竞争力提升上,这样可以让使能工程部汇聚起几千人马,奋起追赶。”所以,无论未来是「五朵云」中哪朵云或哪些云的天下,但华为云一直在用野心做着 EI 这件事儿。

语言 & 开发架构文化 & 方法