Interactive Graph Stream Analytics in Arkouda

文章目录

  • Abstract & Introduction
  • 1. Related Work
    • 1.1 Graph Stream Sketch
    • 1.2 Complete Graph Stream Processing Method
    • 1.3 Triangle Counting Algorithm
  • 2. Arkouda Framework
  • 3 Succinct Data Structure
    • 3.1 Edge Index and Vertex Index
    • 3.2 Time and Space Complexity Analysis
    • 3.3 Edge Oriented Sparse Graph Partition
    • 3.4 Comparison with CSR
  • 4. Single Pass Regression Analysis Stream Model
    • 4.1 Building the Sketch as a Multi-Partition Graph
    • 4.2. Edge-Vertex Iterator Based Triangle Counting Algorithm
    • 4.3 Real-World Graph Distribution Based Regression Model
  • 5. Integration with Arkouda
  • 6. Experiments
  • 7. Conclusions


Abstract & Introduction

交互式图流分析的挑战性问题是如何快速响应来自终端用户的tb或tb以上的图流数据的查询。本文设计了一种简洁高效的双索引数据结构来构建图流sketch,以满足一般查询。建立了包含通用sketch构建、基于分布式sketch的分析算法和基于回归的近似解生成的单遍流模型,并实现了一个典型的图算法——三角形计数来评价所提出的方法。所有提出的方法都集成到一个开源框架Arkouda中,这项工作为规模庞大且快速增长的Python社区提供了一种强大的方法,可以使用笔记本电脑处理tb甚至更大的图流数据。


1. Related Work

处理图流主要有确切方法和近似方法。确切方法对于空间资源要求大,而近似方法只需要次线性空间,但结果不精确。

1.1 Graph Stream Sketch

大部分的sketch将流元素独立开,没有保持元素的关系。且它们大多只针对特定的问题,不够通用。而TCM虽然通用,但在一些实际的数据集上(例如实际的稀疏图流),不如DI sketch。

1.2 Complete Graph Stream Processing Method

(这些是精确的处理方法,在大型图流中并不可行)诸如LLAMA、Aspen和GraphOne等系统专注于设计高效的动态图形数据结构,它们的处理单元不支持增量计算。支持增量计算的有KickStarter,GraphBolt和DZiG。

1.3 Triangle Counting Algorithm

一种是基于静态图的准确三角计数,一种是基于动态图的近似三角计数。本文主要针对静态图,分为三个平台:使用快速并行包的共享内存方法,使用GPU大规模并行细粒度硬件线程方法,使用启发式,优化通信库和图结构的分布式内存方法。
图流分析的基本思想是根据采样结果估计图流的准确查询结果。接着本文介绍了几种三角形计数方法,并分析了各自的优劣。

2. Arkouda Framework

Arkouda是一个开源框架,旨在支持灵活、高效、高性能的大规模数据分析。主要有前端、后端和通信部分构成。它将数据分为两部分,一部分是元数据(只包括属性信息),另一部分是原始数据。如果待处理的数据是元数据,可以在本地被快速处理。如果是原始数据,则传递信息从前端到通信区再到后端,再将结果返回。
Interactive Graph Stream Analytics in Arkouda_第1张图片

3 Succinct Data Structure

3.1 Edge Index and Vertex Index

Interactive Graph Stream Analytics in Arkouda_第2张图片

3.2 Time and Space Complexity Analysis

给定M条边和N个顶点,则需要2(M+N)个整数(64位),如果是无向图,则再乘2,再加上权重,则还需要M,N个整数。

3.3 Edge Oriented Sparse Graph Partition

Interactive Graph Stream Analytics in Arkouda_第3张图片
将边均匀划分到每个处理单元,以均衡负载。同时NEI和STR数组的顶点项分配给与边数组对应的处理器,达到提高局部性的目的。

3.4 Comparison with CSR

基本和CSR一样,只不过比CSR多了从给定边查询相关联顶点的功能,还有DI使用NEI数组记录顶点的邻居数量,使得STR数组具有清晰的语义。

4. Single Pass Regression Analysis Stream Model

模型框架主要分为三部分

  • 将图流映射为sketch,并划分为多个子sketch
  • 设计在子sketch上的算法求出部分解
  • 基于不同的部分解,设计回归模型求出近似解

4.1 Building the Sketch as a Multi-Partition Graph

  • Sliding Window Stream
    边(点)映射过程
    Interactive Graph Stream Analytics in Arkouda_第4张图片

  • Insert-Only and Insert-Delete Streams
    维护一个权重数组,记录原始图中有多少边映射到sketch中的该条边。

4.2. Edge-Vertex Iterator Based Triangle Counting Algorithm

对DI sketch边进行均等划分,并使连接同一顶点的边放在一块,提高局部性。再按照点去迭代,称作edge-vertex迭代法。
具体计算步骤为:

  • 将DI中的数据按照边划分到各个计算节点
  • 每个计算节点按照顶点计算三角形
  • 再将所有的三角形数目累加

具体算法如下:
Interactive Graph Stream Analytics in Arkouda_第5张图片
在第7行,我们将确保所有的区间将覆盖所有的顶点而不重叠。

4.3 Real-World Graph Distribution Based Regression Model

正态分布回归模型
在这里插入图片描述
幂律分布(无序)

在这里插入图片描述
幂律分布(有序)
在这里插入图片描述

5. Integration with Arkouda

主要工作是在Python和Chapel包中实现图数据结构和相应的分析函数

  • Graph Classes Definition in Python and Chapel
    在Python和Chapel端各自定义了有向图、有向权图、无向图和无向权图。
  • Triangle Counting Benchmark
    一种是提出的三角计数算法返回的精确解,另一种是回归模型下的近似解(在幂律分布下具有更高的准确性)

6. Experiments

  • 实验设置
  • 数据集描述和分析
  • 实验结果-准确度
    Interactive Graph Stream Analytics in Arkouda_第6张图片
    Interactive Graph Stream Analytics in Arkouda_第7张图片
    • 针对不同的分布采用不同的回归模型,效果都挺好。
    • 同时有序回归比无序回归准确率更好。
    • 幂律分布对于收缩因子变化不敏感。
  • 实验结果(表现)
    由于本文提出的三角计数方法负载均衡且局部性较好,性能得到较高提升。实验结果还表明,加速程度随收缩系数的增大几乎呈线性增加。

7. Conclusions

  • 开源框架Arkouda

  • 双索引数据结构,减少稀疏图内存占用

  • 多划分sketch,收缩因子控制大小

  • 两个回归模型(正态分布和幂律分布)

  • 基于DI数据结构的多区域分布式三角形计数算法
    原图G->多划分sketch - >对每个sketch建立一个DI - >每个DI分给多个区域计算节点处理

  • 算法整合到开源框架里,用户可以便捷去驱动

你可能感兴趣的:(数据挖掘,算法)