[NSDI 17] TuX2: 面向机器学习的分布式图计算系统 学习总结

        今天要讲的文章NSDI 2017年的一篇文章,TUX2: Distributed Graph Computation for Machine Learning。本文主要想解决的问题就是:在图形引擎(如GraphLab [29])上的早期工作是基于机器学习的动机,基于观察到许多机器学习问题可以用图形自然而有效地建模,并通过迭代收敛算法解决。 然而,大多数后续的图形引擎工作都采用简单的图计算模型,由PageRank等基本图形基准测试驱动。 由此产生的图形引擎缺乏高效分布式机器学习的灵活性和其他关键功能。

1.BackGround

        正如我们所知道的那样,机器学习被广泛应用到现实生活中。比如推荐系统将推荐一些用户喜欢观看的电影,在推荐系统中可以将User和Item 建模 Model 作为图中的顶点。用户的评分可以被考虑为图中的Edge 边上的评分。在Topic Model中,文档自然的包括多个单词,这样Paper和单词之间的联系可以被建模为Graph。在点击预测问题中,每个样本可以联系多个Futures特性,因此Smaple、Futures和他们之间的联系可以被表示成一个图结构。

[NSDI 17] TuX2: 面向机器学习的分布式图计算系统 学习总结_第1张图片

2. Distributed Graph Computation

        许多机器学习问题都可以被建模为图结构,那么分布式图计算就是一个好的选择。分布式图计算可以采用一个非常简单的图计算引擎,比如说GAS 计算模型。用户只需要编写Gather、Apply、Scatter三个函数,系统就能够按顺序的调度这三个阶段,并且调用用户定义的这三个函数。因此许多图算法都可以用GAS模型来编程,比如说PageRank、Shortest Path等等。接下来要说的就是图计算引擎都可以用一些有意识的图优化技术优化图计算引擎。

[NSDI 17] TuX2: 面向机器学习的分布式图计算系统 学习总结_第2张图片

        第三点就可伸缩性,SoCC2015年提出了GraM能够解决如此大的系统问题。

3. Gaps for ML On Graph Engine

        即使这些机器学习算法可以在图形模型中进行投影,我们仍然可以观察到电流图引擎中的缺陷,从而不能自然而有效地支持它们。 这些差距涉及数据模型,编程模型和执行计划。

3.1 Data Model

        标准图模型假设一组性质一样的顶点,但模拟机器学习问题的图自然具有不同类型的扮演不同角色的顶点(例如,用户顶点和项目顶点)。 异质感知数据模型和布局对性能至关重要。

3.2 Program Model

        对于机器学习计算,图形计算的迭代可能涉及不同类型顶点之间的多轮传播,而不是简单的一系列GAS阶段。 标准的GAS模型无法有效地表达这种计算模式。 这是LR的情况,其中特征顶点的数据(权重)首先传播到样本顶点以计算目标函数,梯度传播回特征顶点以更新权重。 在GAS中实施这一过程将不必要地需要两个连续的GAS阶段,有两个障碍。

3.3 Executon Sheduling

        已经证明机器学习框架可以从Stale Synchronous Parallel(SSP)模型中受益,该模型是一种宽松的一致性模型,具有有限的陈旧性以提高并行性。这是因为机器学习算法通常描述根据目标函数收敛到“良好”解决方案的过程,并且收敛过程本身对变化和冗余的稳健性可用于提高效率和并行性。小批量是另一个重要的调度概念,通常用于随机梯度下降(SGD),其中一小批样本一起处理以提高效率,但代价是迭代次数较慢。小批量大小是这些算法的重要参数,需要进行调整才能找到最佳平衡。图形引擎通常在单个顶点上运行[29],或者在整个图形[30]上定义一个“迭代”或批次,而小批量提供了更多的灵活性。

        由于这些众多的因素,作者提出了面向机器学习的分布式图计算框架--TuX2

4. System Architecture

4.1 Vertex-Cut 点切分策略

[NSDI 17] TuX2: 面向机器学习的分布式图计算系统 学习总结_第3张图片

        TuX2采用点切分的方法,点切分的方法被证实对于这种Power-law图来说有很好的高效性,并且它很适合这种Master-Mirror模型。

5. Key Desgin

5.1 Scheduling:Stale Synchronous Parallel (SSP)Based Scheduling

[NSDI 17] TuX2: 面向机器学习的分布式图计算系统 学习总结_第4张图片
        TUX2支持陈旧同步并行(SSP)模型[11],具有有界陈旧性和小批量。 SSP基于每时钟工作的概念,其中时钟对应于由一组并发任务执行的小批量迭代。 迭代批处理可以被认为是每次迭代使用所有输入数据的特殊情况。 SSP引入了一个明确的松弛参数,该参数在时钟中指定了全局共享状态的任务视图的陈旧程度。 松弛因此决定了在任何任务可能进行的最慢任务之前有多远。 随着s的松弛,时钟t处的任务保证看到从时钟1到t-s-1的所有更新,并且它可以看到从时钟t-s到t-1的更新。 图4显示了一个松弛为1的SSP执行。
        TUX2在指定大小的小批量上执行每次迭代。 每个工人首先选择一组版本或边作为当前的小批量执行。 在小批量执行完成后,TUX2通常会继续枚举顶点或边缘阵列的连续分段,从而为下一个小批量获取另一组顶点或边。 TUX2支持小批量粒度的SSP。 它跟踪每个小批量迭代的进度以启用时钟的计算。 如果相应的最小批次在所有工作人员上完成(包括Master和Mirror之间的同步),并且生成的更新已应用到并反映在状态中,则工人认为时钟t已完成。 只有当知道所有达到t-s-1的时钟已经完成时,工人才能在时钟t执行任务,其中s是允许的松弛。

5.2 DataModel :  Heterogenouc data Model

[NSDI 17] TuX2: 面向机器学习的分布式图计算系统 学习总结_第5张图片

5.3 Programming: MEGA graph Model

[NSDI 17] TuX2: 面向机器学习的分布式图计算系统 学习总结_第6张图片

        TUX2引入了一个新的基于阶段的MEGA模型,其中每个阶段是对一组顶点及其边缘的计算。每个阶段都有用户定义的函数(UDF)应用于顶点或在其中访问的边。 TUX2支持四种类型:小批量,Exchange,GlobalSync和Apply(因此命名为MEGA);它允许用户构建任意阶段的序列。该引擎负责调度每个阶段中多个核心和/或机器上UDF的并行执行。

        MEGA模型保留了GAS模型的简单性,同时引入了更多灵活性来解决支持机器学习算法的GAS模型的缺陷。例如,在诸如MF和LDA的算法中,处理边缘涉及更新两个顶点。这需要两个GAS阶段,但是可以在我们的模型的一个交换阶段中完成。对于LR,两个方向上的顶点数据传播之后应该跟一个Apply阶段,但是不需要Scatter阶段;这可以在MEGA模型中避免,因为MEGA允许任意阶段的顺序。接下来我们详细阐述不同类型的阶段.

        Exchange: 


        Exchange()在每个枚举的边上执行。 Du和Dv分别是顶点u和v的数据.D(u,v)是与边(u,v)相关的数据。 au,av和a(u,v)是顶点数据和边缘数据的对应累计增量,τ是与每个工作线程相关的用户定义的共享上下文,并在整个计算过程中保持不变。所有这些参数都允许在此UDF中更新。用户可以使用它为顶点和边缘生成新的积累变化量,或者直接更新它们的状态。考虑到顶点切割图的位置,Exchange()只能更新顶点的镜像版本数据(即局部状态)。用户还可以使用τ来计算和存储一些算法特定的非图上下文数据,这些数据可以通过全局聚合来共享。默认情况下,未为枚举指定的顶点由顶点级锁定保护,但TUX2还允许用户为某些应用程序实现其自己的无锁语义[14,21,37]。这个阶段比GAS模型中的聚集/散布阶段更灵活,因为它不暗示或强制顶点数据沿着边缘传播的方向,并且它可以更新同一UDF中两个顶点的状态。从而提高LDA和MF等算法的效率。

        Apply : 这个阶段枚举一组顶点并同步它们的Master版本和Mirror版本。 对于每个顶点,主人从镜像中累积增量,调用Apply(Du,au,τ)来更新其全局状态,然后更新镜像上的状态。 为了支持主机和镜像之间的异构,TUX2允许用户为需要同步的顶点的全局状态定义基类VertexDataSync; 主人和镜像可以定义不同的子类,每个子类继承自基类,以包含其他信息。 引擎仅同步主顶点和镜像顶点之间的VertexDataSync中的数据。

        GlobalSync : 该阶段负责同步跨作业者线程的上下文和/或通过一组顶点聚合数据。

[NSDI 17] TuX2: 面向机器学习的分布式图计算系统 学习总结_第7张图片

        Mini-Batch: 这是一个包含一系列其他阶段的复合阶段; 它定义了每个小批量迭代执行的阶段。 MiniBatch根据要在每个最小批次中枚举的版本或边的数量来确定最小批量的大小,并且在双边图的情况下,确定要使用哪种类型的顶点.

6. Evaluation

[NSDI 17] TuX2: 面向机器学习的分布式图计算系统 学习总结_第8张图片

你可能感兴趣的:(图计算,图计算)