cuGraph用GPU加速图分析
随着 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 上启动算法内核的开销超过了计算时间本身。
但是如果数据集很大,时间差异可能会很大,正如你在下面的运行中看到的那样:
因此,正如你在使用 cuGraph 时所看到的,所用时间约为 1.3 秒,如果没有 cuGraph,则约为 83 秒。
考虑到图数据集通常很大,这非常快
你可以在笔记本中探索许多其他示例,这些示例与 Google Colab 的免费层兼容。
4、结束语
总之,NVIDIA cuGraph 通过利用 GPU 功能加速处理速度,彻底改变了图分析,使复杂图的实时分析变得更加容易。它与 NetworkX 等熟悉的库无缝集成,只需进行最少的代码更改即可快速过渡到 GPU 加速的工作流程。
原文链接:NVIDIA cuGraph: Accelerate Graph Analytics with GPUs
汇智网翻译整理,转载请标明出处