cuGraph用GPU加速图分析

LIBRARY Nov 6, 2024

随着 ChatGPT 和生成式 AI 的不断发展,图分析(和图神经网络)在研究人员中越来越受欢迎。NVIDIA cuGraph采用GPU加速图分析,可以将图分析速度提高多达 500 倍。

1、为什么需要图分析?

图分析为何重要?

  • 理解关系:图形有效地表示了实体之间的复杂关系,使分析它们如何相互作用和相互影响变得更加容易。
  • 实时分析:它们支持实时数据分析,这对于金融和安全等各个领域的及时决策至关重要。
  • 多样化应用:图形分析应用于各个行业,包括社交网络分析、欺诈检测、供应链优化和生物研究
  • ……还有更多

但是,有时图数据可能非常庞大。例如:

  • 社交网络:Facebook 分析 29 亿用户和 18 亿每日活跃用户之间的关系,导致数万亿条边需要快速处理。
  • 搜索引擎:Google 的知识图谱包含超过 5000 亿个有关实体的事实,需要高效的实时查询算法。
  • 交通网络:Uber 每天处理超过 1500 万次行程的数据,需要快速计算以获得最佳路线。

因此,图分析或训练图形神经网络可能非常慢。

2、如何加速图分析?

RAPIDS cuGraph 是由 NVIDIA 开发的一个功能强大的库,专注于使用 NetworkX 进行 GPU 加速的图形分析。

它是更广泛的 RAPIDS 套件的一部分,旨在促进 GPU 上的数据科学工作流程。 RAPIDS 包含多个库,包括用于数据处理的 cuDF、用于机器学习的 cuML 和用于图形分析的 cuGraph:

  • GPU 加速允许 NetworkX 扩展到远大于 100k 个节点和 1M 条边的图形,而不会出现与 NetworkX 在 CPU 上相关的性能下降。
  • cuGraph 项目支持各种图形类型,包括传统的有向和无向图以及对图形神经网络 (GNN) 框架的支持,并与其他 RAPIDS 库(如 cuDF 和 cuML)无缝集成。
  • 零代码更改:NetworkX 代码无需更改,只需启用 cuGraph 后端,NetworkX 即可使用 GPU 加速运行。
  • 新的 cuGraph NetworkX 后端支持大约 60 种算法,例如最短路径、Louvain 社区检测、中间中心性和 PageRank 等

cuGraph 可以将图分析速度提高多达 500 倍。

3、如何将cuGraph用于 NetworkX?

只需在现有代码中添加一行

是的,你没看错。只需进行最少的更改即可为 NetworkX 启用 GPU 加速。

让我们看下面的示例,了解如何在 jupyter 笔记本中使用 cuGraph 进行 Networkx

注意:NetworkX 是用于创建、操作和分析复杂网络的最流行的 Python 库。如果你使用过图结构,一定听说过它的名字

安装cuGraph:

!pip install nx-cugraph-cu12 --extra-index-url=https://pypi.nvidia.com

设置以下环境变量:

%env NX_CUGRAPH_AUTOCONFIG=True

为什么?此变量有助于在使用 NetworkX 时默认使用 GPU,你无需明确切换到 GPU

运行以下代码来计算默认图形数据集的中介中心性,NetworkX 中提供的空手道俱乐部用于演示目的。

import networkx as nx
print(f"using networkx version {nx.__version__}")

nx.config.warnings_to_ignore.add("cache")

#load karate club graph

G = nx.karate_club_graph()
%%time
nxcg_bc_results = nx.betweenness_centrality(G)

就是这样,NetworkX 现在默认使用 GPU 进行任何分析。因此,您也可以使用上面分享的 Google Colab 笔记本尝试其他示例。

注意:如果你处理的是小型数据集,可能会注意到使用默认实现(不使用 GPU)会稍微快一些。当处理这么小的图表时,这并不奇怪,因为在这种情况下,在 GPU 上启动算法内核的开销超过了计算时间本身。

但是如果数据集很大,时间差异可能会很大,正如你在下面的运行中看到的那样:

单元格 1:使用 CPU,单元格 2:使用 GPU

因此,正如你在使用 cuGraph 时所看到的,所用时间约为 1.3 秒,如果没有 cuGraph,则约为 83 秒。

考虑到图数据集通常很大,这非常快

你可以在笔记本中探索许多其他示例,这些示例与 Google Colab 的免费层兼容。

4、结束语

总之,NVIDIA cuGraph 通过利用 GPU 功能加速处理速度,彻底改变了图分析,使复杂图的实时分析变得更加容易。它与 NetworkX 等熟悉的库无缝集成,只需进行最少的代码更改即可快速过渡到 GPU 加速的工作流程。


原文链接:NVIDIA cuGraph: Accelerate Graph Analytics with GPUs

汇智网翻译整理,转载请标明出处

Tags