动态分区分配的“首次适应算法_动态图划分复制算法:Leopard

e430cb80fe50255b3cccaa405c2cda5d.png

数据管理和系统实现课程上要分享的论文:《LEOPARD: Lightweight Edge-Oriented Partitioning and Replication for Dynamic Graphs》

背景

目前分析处理图数据已经成为一项重要的任务,例如,研究互联网结构,分析社会关系,或捕获蛋白质之间的关系等。在网上也有许多公开的数据集,可以看到图数据已经广泛应用在多个领域。

992f0f7fbda1daac92b76929a702e1e9.png

处理这类图是具有挑战性的,因为这些图往往十分巨大,甚至会有数万亿的边,如此庞大的数据在单机器上是很难处理的,典型的方法就是对数据进行划分,分布到多个机器上。因为我们最终是要在图上进行各种计算,所以图划分的速度、划分效果的好坏都将直接影响计算系统的运行效率。

c848f9d1df0b3b121049e1dbb5ef33a7.png
从划分方式上来看,图划分问题可以被分为两类:边划分和点划分。
点划分指将图中的点集合划分为若干部分,图中每个点及其相关信息(邻接列表等)存放于一个划分出的子图中,而图中的边则可能因为两个顶点被划分在 不同的子图中而成为割边,如图中的边 (d,z) 和 (b,z)。边割集的大小将直接影响分布式算法的通讯代价。
边划分则是将图中的边集合划分为若干部分,图中每条边及其相关信息存放 于一个划分出的子图中,而当一个点的邻边被划分在不同的子图中时,这个点将在多个子图中均存在,这样的点被称为割点, 如图中的点 d 和 z。与边割集相同,点割集的数量也将直接影响分布式算法的通讯代价。

图划分的目标有两个:负载均衡和最小割。负载均衡是为了使分布式系统中的多台机器有相近的任务负荷,负载不均会导致负载较小的处理器出现空等的情况而浪费资源。此外,要尽量减少分割,以便最小化由不同分区之间交换消息引起的通信成本。

03eff861ef0e49fced52a770f511d819.png

目前图划分算法主要可以分为三类:

  1. 静态图划分算法:它在获得整个图数据后进行全局划分,能取得很好的划分效果,但需要多次迭代运行时间长。
  2. 流式图划分算法:它将图数据看作是持续不断地数据流,当数据到达时基于当前的数据信息判断该数据的划分位置,可以获得较快的运行速度,但效果差于静态图划分。
  3. 动态图划分算法:上述的静态图划分算法不适合处于大规模图数据。除此之外,目前很多图是动态的,新的友谊出现,新的联系建立,或者蛋白质相互作用改变。那么原先通过静态图划分或流式图划分得到的初始良好划分会随着图结构的不断变化而恶化。动态图划分算法的作用就是在图结构变化的同时及时的调整划分,使得系统保持可以一个良好的划分。

研究现状

在动态图算法的研究方面,之前大部分的动态图划分研究集中在一批更改导致原始分区恶化之后再对图进行重新分区,然而这样的算法是重量级的。

最近也有一些关于轻量级的动态图划分算法,一些研究者不认为复制是一种改进边切的机制,当然他们这么认为是有道理的,因为保持副本之间的同步是需要巨大开销的。但是这篇论文引入了复制机制,所以它其实只适用于只读图计算,例如:子图模式匹配、三角计数、图遍历等。另外也有一些工作引入了复制机制,但是没有考虑动态重划分。

所以这篇论文的工作重点就是将动态重划分和复制紧密结合起来,每次增加或删除顶点、边后,检查分区情况,决定是否需要重新分配。同时,复制可以提供一定的容错性,并增加访问局部性,可以有效的减少边切割。

那么该方法需要考虑的问题有:

在划分方面:如何进行顶点的分配;顶点重分配计算的时机;哪些顶点需要重分配。

在复制方面:副本复制到哪些分区;副本复制的数量。

Leopard:划分

论文的划分算法借鉴了2014所提出的FENNEL算法,它是一种流式图划分算法。

FENNEL算法的主要思想:为了减少边切割,一个顶点应该被分配到有较多邻居的分区,同时还要加入一个惩罚因子,以防止一个分区变得过大。前面这部分就表示 v 节点在 i 分区的邻居数,后面项是对分区节点数的惩罚因子。

在许多情况下,使大多数动态图变化的是新添加的顶点和边。因此,在任何时间点,动态图都可以被认为是该算法的中间状态。该算法对于顶点只分配一次,后续不再变更。但是Leopard会不断地重新访问由单次划分所分配的顶点和边,以此来实现重新分配。

如何进行重分配一个最简单的办法就是在添加或删除边后,去重新计算每个顶点的值,但这样肯定太傻了。事实上,当一个节点发生变化时,基本上只有它的邻居节点才会受到较大的影响。所以这里我们可以设立一个候选集,逐步将更改节点的邻居加入候选集。这个过程其实有点像BFS。

接下来再考虑一个问题,就是重新进行分配计算其实也是很耗时间的,事实上,对于候选集中的节点,如果它在分区内已经拥有大量邻居节点时,其重新分配的概率就相对较小,所以我们也没有必要每次都计算检测,给定顶点 v 和阈值 t ,如果跳过的计算与v的总邻居的比率小于t,则函数跳过重新分配分数的计算。但同时随着计数的增大,每个节点都可以保证被定时的检测。

d266aea6ec8793708777144ea512b885.png
Algorithm for deciding when to examine a vertexfor reassignment

Leopard:复制

论文提出了一种称为MAP的方法,也就是包含两个参数,即最小复制数和平均复制数。最小数量的拷贝确保了容错性,任何超出最小数量的额外拷贝都提供了额外的访问局部性,可以减小边切割率。Leopard首先运行顶点分配算法。第二,将第一步计算得到的分数与最近其他顶点计算得到的分数进行排序。排名越是靠前,复制的概率就越大。

3b2224c0bb3b471992d7d2ddffc68be7.png
An algorithm to choose partitions for the primaryand secondary copies for a vertex

首先计算主节点的划分,直接将其分配至分数最高的分区上。然后对副本节点计算分数,因为有最小复制数的规定,所以top(min-1) 的分区会复制该节点的副本。同时该方案也还有平均复制数,将剩下的计算分数与最近计算得到分数进行排序,如果分区的分数在top内,就在该分区复制节点副本。这里用滑动窗口维护最近最近计算得到的分数。

(【注】这里主节点的分配计算和副本节点的分配计算都是用的FENNEL算法,但是由于引入了复制,所以论文中重新定义了邻居,这里就省略了,详细的看论文。总之,它们的区别就是FENNEL算法中邻居的数量会不一样,所以结果也就会不一样。)

实验

最后论文在多个不同的图形上进行了实验评估,包括社交图、协作图、网络图、电子邮件图等等。总共比较了5种不同的方法:

b7404574f779c216a03c7b2c47ae667f.png
Statistics of the graphs used in the experiments. Diameter is reported at 90th-percentile to eliminate outliers

1 Leopard:论文所提出的方法

2 FENNEL:没有涉及顶点重分配,用来比较顶点重分配的好处

3 METIS: state-of-the-art静态图划分算法,METIS需要所有的更新请求完成后,也就是得到最终的图后对其进行静态分区,在分区时拥有最终图形的全局视图是一个很大的优势。因此,METIS被用作分区质量的近似上限,Leopard的目标是获得与METIS相似的最终分区。

4 ParMETIS: ParMETIS先允许分区恶化,然后再批量重新分区操作。而Leopard持续保持对图形的良好分区,所以也对它们进行比较。

5 哈希划分算法:哈希划分算法简单,容易实现负载均衡,缺点是会产生大量割边,但是现在仍然是在广泛使用着,所以也和它进行比较。

我们采用两个评估指标:

1 边切割率 λ :λ = 切割边的数量除以边的总数(对于复制数据,切割边的定义按照论文所述的,这里没说,详情看论文)

2 负载不平衡 ρ :ρ = 分区中的最大顶点数除以分区中的平均顶点数

ac5a75c885272c5a02f9f037514aab04.png
Edge cut experiment. Cut ratio for hash partitioning is independent of the data set, and so it is displayedjust once on the left-hand side

首先评估没有复制时的分区质量,使用上面描述的五种划分生方法将我们上面所提到的11个真实世界的图形集划分成40个分区,该图仅显示了边切割率,因为负载不平衡率对于所有方法都大致相同(哈希划分:1.00,其它:1.02~1.03)。

由这张图可以看出黑色的哈希算法效果是最差的,除此之外最差的就是红色的FENNEL算法了,论文的Leopard边切割率比起FENNEL来低了不少,这显示出了动态重新分配的重要性。这里面静态图划分算法METIS的效果是最好的,虽然Leopard的效果没它好,但已经十分接近了。只有在最后面四个网络图的划分中,Leopard与METIS的划分效果相差较大,因为网络图往往具有较大的直径,更容易划分。而Leopard没有全局的图,容易陷入局部最优,导致更多的边被切割。

需要注意的是,这里没有考虑运行的时间,事实上,FENNEL算法的速度是Leopard的44.6倍,但是如果使用论文所提到的优化技术的话,就可以降至2。

583d1558fe3759530ed185f1240113c0.png
Effects of skipping examination on edge cut ratio AND Computation savings vs. skipping threshold

3659c1e64239dff1f17bc2c094fd733f.png
Run time improvement vs. skipping threshold

我们这里定义

为节点跳过检查计算的比例,可以看到,当把跳过阈值设为0.1~0.2左右的时候,边的切割不会增加多少,但是却可以跳过十分多的节点检查计算。这可以直接反映在运算时间上,最左边的1就是永远不会跳过,对于一些稠密图来说,它甚至都缩短至了原来的0.1及以下。

afffffbfa99ef7d1b208760a14236b4a.png
Effect of number of partitions on edge-cut on theTwitter graph

然后考虑分区数量对划分效果的影响,在实验中分区数量从2逐渐增至256,但METIS和Leopard的差异并没有太大的改变,这说明Leopard对于不同的分区数量都能有较好的划分效果。

a44e2e7fd9aba32486c536ccc4178566.png
Effect of replication on edge-cut

最后,我们再加入复制,由于Leopard是第一个(据他们所知)将复制与动态分区集成在一起的系统,所以这里是将带有复制的Leopard与不带复制的Leopard进行了比较。负载不平衡 $rho$ 的值还是和之前差不多的,但是切割率却可以达到一个显著的下降。

总结

Leopard是为大规模、不断变化的图所设计的算法,通过将动态图的划分和复制紧密结合,能够很好的实现访问局部性和容错性。但是它也有一个很大的局限性,因为复制机制的引入,所以其只适用于只读图计算。

个人想法

副本是否要重分配?副本的个数是否会改变?这些问题论文里好像并没有提到。

参考

【1】J. Huang and D. J. Abadi. Leopard: Lightweight edge-oriented partitioning and replication for dynamic graphs. Proceedings of the VLDB Endowment, 9(7):540–551, 2016

【2】C. Tsourakakis, C. Gkantsidis, B. Radunovic, and M. Vojnovic. Fennel: Streaming graph partitioning for massive scale graphs. In WSDM ’14

【3】许金凤,董一鸿,王诗懿等. 大规模图数据划分算法综述. 电信科学,2014,30(7);100-106

【4】M. Besta, M. Fischer, V. Kalavri, M. Kapralov, and T. Hoefler, “Practice of streaming and dynamic graphs: Concepts, models, systems, and parallelism,” arXiv preprint arXiv:1912.12740, 2019.

【5】图流划分算法综述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/434982.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微软工程院院长:1万多应聘者挑不出100人

微软工程院院长:1万多应聘者挑不出100人“过去两三个月,我最主要的精力都花在了雇人上。遗憾的是,1万多名应聘者中,居然招不到足够合适的人。”今天,在北京中关村希格玛大厦微软亚洲工程院总部,新任院长张宏…

广义典型相关分析_重复测量数据分析及结果详解(之二)——广义估计方程

上一篇文章主要介绍了重复测量方差分析的基本思想是什么、它能做什么、怎么做、结果怎么解释,这几个问题。最后同时指出重复测量方差分析还是有一定局限,起码不够灵活。所以本文在上一篇文章基础上继续介绍医学重复测量数据中第二种常用方法:…

机器学习复制粘贴笔记要点

逻辑回归对特征的规模很敏感。重新调整数据使每个特征的均值为 0 和方差为 1 通常被认为是好的做法 zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。 如果各个迭代器的元素个数不一致&#x…

YUV422格式信号格式(以备学习之用)

YUV信号有很多种,一般YUV420和YUV422用的比较多, YUV422格式,又分为很多小类,按照U、V的排列可以有YUYV,YVYU,UYVY,VYUY四种,其中,YUYVY一般又称作yuv2格式。 而这四种YUV422格式,每种又可以分为…

excel怎么添加diy工具箱_这些Excel插件让你的Excel更好用!

Excel基本功不扎实临时学习也没时间这时候比起各种操作技巧Excel插件更实际更能切实提高你的效率今天就给大家推荐几款插件!方方格子说起Excel插件,就不能不提到它。方方格子支持Excel2007到2016各版本,而且对于WPS版本,也有专门的…

Arcgis自下而上从左到右进行编号

添加字段xmin和ymax !shape.extent.Xmin! !shape.extent.Ymax! 计算结果 对处理好的矢量按这个两个字段进行排序 排序结果后的objectid即可做为斜坡单元编号(如果项目中对编号有其他要求,请继续往下查看,如果没有的话,就不用往下…

Linux之V4L2基础编程

1. 定义 V4L2(Video For Linux Two) 是内核提供给应用程序访问音、视频驱动的统一接口。 2. 工作流程: 打开设备-> 检查和设置设备属性-> 设置帧格式-> 设置一种输入输出方法(缓冲 区管理)&…

ArcGIS如何在一个矢量上用不同颜色进行标注

在图层属性--标注里 选择“定义要素类并且为每个类加不同的标注” 点击添加 在类里面就会选择红色,此处作者添加了红色和黑色两个类 注意选择类是,查看是否标注次类 点击SQL查询,不同类进行不同的SQL查询

基于web的工作流设计器(多比图形控件)

多比图形控件是一款基于Web的矢量图形控件, 类似于网页上的Visio控件,是目前国内外最佳的基于web的工作流设计器、工作流流程监视器解决方案。 可广泛应用于包括:电力、军工、煤炭、化工、科研、能源等各种监控软件、基于web的工作流设计器&a…

earthdata数据的.nc4如何使用

原始数据 打开ArcGIS软件 参数如下,只需改变变量参数,选择自己所需变量,其他默认参数,点击确定 更具个人电脑性能,本人电脑反应比较慢

EXT.NET复杂布局(二)——报表

前面提到过工作台(《EXT.NET复杂布局(一)——工作台》)了,不知道各位看过之后有什么感想。这次就介绍介绍使用EXT.NET画几个报表。 看图写作从小学就开始了,如图: 图一 图二 图三(1&…

arcgis导出access数据库能打开的文件

arcgis有两种数据库 1.个人地理数据库(.mdb)(Access数据库可以打开查看属性) 2.文件地理数据库(.gdb) 其中个人地理数据库 (.mdb)可以用Access数据库打开 在文件中显示如下 打开文件如下 文件地理数据库如下 个人地理数据库(地质灾害建立数据库就要用这个数据库…

如何使用网上下载的arcgis工具箱,报错汇总

执行网格表达式错误 解决方法 更改环境变量里的并行处理设置成0即可

基于 Android NDK 的学习之旅-----环境搭建

工欲善其事 必先利其器 , 下面介绍下 Eclipse SDK NDK Cygwin CDT 集成开发环境的搭建。 1、Android 开发环境搭建 Android开发环境搭建不是重点,相信看此文章的很多人都已经搭建成功,这里随便概述性的说说。 1) 下载 JDK 2) 下载 Eclipse 3) 下载 Android…

arcgis将小于0的数值设置成0.01

原始范围 打开栅格计算器 主要利用的是栅格计算器的con条件函数 con用法 con(条件,满足条件的部分赋值赋值,不满足条件的部分赋值) 运行完的范围 0.0008<0.01所以显示0.0008

vivo怎么调时间_卡西欧手表怎么调时间 怎么评估卡西欧手表的价格档次

在以前的手表是戴在手上方便看时间的&#xff0c;但是随着科技的发展&#xff0c;手表也越来越智能&#xff0c;很多的手表都是多功能的&#xff0c;但是我们的知道&#xff0c;一样东西越好用就会显得它的复杂性越高&#xff0c;慢慢着就会使很多人都不会使用&#xff0c;就拿…

离职证明电子版_离职证明中说劳动者因违纪离职的怎么办?

作者&#xff1a;吕武茂 衣尚民 范涛1.律师有话说&#xff1a;根据法律规定&#xff0c;解除或终止劳动合同后&#xff0c;给员工开离职证明是企业的法定义务&#xff0c;离职证明内容仅包括&#xff1a;劳动合同期限、解除或者终止劳动合同的日期、工作岗位、在本单位的工作年…