Euler简介
2019-04-09 本文已影响0人
飞驰2019
最近几年,图模型受到的关注越来越多。在图模型的视角下,数据被定义为由节点和节点间的关系(或边)构成的网络。这种结构在现实中具有强大的表现力,比如在社交场景下,可以将人与人之间的关系定义成图,再比如在电商场景下,将人与商品之间关系定义成图。相对传统的算法模型,图模型能够有效的提取数据的结构化特征,使得它无论是作为独立的应用还是其他模型的补充,都具有巨大的潜力。

虽然图模型如此之重要,已有的开源框架往往都只能支持小规模数据集,因而难以在实际应用中使用,而Euler的定位正在于此。由于支持分布式图加载和训练,Euler能够应用于相当规模的图(根据Github上公开的文档显示,其在实际生产环境下支持的图规模已经达到数十亿节点之多)。
从架构上看,Euler大致分为两个部分,即图引擎和tensorflow worker,如下所示。

其中图引擎以分片的形式加载图数据,以rpc接口的形式供worker进程读取,而worker进程则负责训练模型。值得一提的是,图引擎部分对图算法中最为常用的图数据读取操作(如近邻采样,全局采样,特征提取等)进行了良好的封装,使得大部分情况下(不排除部分算法需要对图引擎进行扩展)使用者可以仅仅关注算法模型层面的扩展,在保证性能的前提下大大提升了开发的效率。