cuGraph 简介#

数据科学家在他们的工具箱中拥有一系列技术。数据工程、统计分析和机器学习是最常见的。然而,在许多情况下,分析的重点是数据元素之间的关系。在这些情况下,数据最好表示为图。图分析,也称为网络分析,是一组用于回答针对图数据提出的问题的算法。图分析并不新鲜。

第一个图问题是由欧拉在1736年提出的,即柯尼斯堡七桥问题,并为图论这一数学领域奠定了基础。图分析的应用涵盖了广泛的领域,包括市场营销、生物学、物理学、计算机科学、社会学以及网络等。

RAPIDS cuGraph 是一个图算法库,它无缝集成到 RAPIDS 数据科学生态系统中,使数据科学家能够轻松调用图算法,使用存储在 GPU DataFrame、NetworkX Graphs 甚至 CuPy 或 SciPy 稀疏矩阵中的数据。

愿景#

RAPIDS cuGraph 的愿景是使图分析无处不在,以至于用户只需考虑分析,而不必考虑技术或框架。这是 cuGraph 团队中许多人近二十年来一直在努力实现的目标。早期的许多尝试集中在解决一个问题或使用一种技术上。这些早期的尝试在最初的目标上是成功的,但随着范围的改变(例如,转向使用静态图解决方案解决动态图问题),它们往往会失效。限制因素通常归结为计算能力、易用性或选择不适合所有问题的数据结构。NVIDIA GPU、CUDA 和 RAPIDS 彻底改变了这一范式,现在实现一个加速的统一图分析库的目标已成为可能。

最新NVIDIA GPU的计算能力(RAPIDS支持Pascal及以后的GPU架构)使得图分析平均比NetworkX快1000倍。此外,GPU内部的内存速度使cuGraph能够快速切换数据结构,以最好地满足分析需求,而不是局限于单一的数据结构。cuGraph正在与多个框架合作,用于静态和动态图数据结构,以便我们始终能够解决任何图问题。由于Python已成为数据科学的事实标准语言,允许在Python中进行交互性和运行图分析的能力使cuGraph变得熟悉且易于接近。RAPIDS将上述所有图分析优势与执行高速ETL、统计和机器学习的能力结合在一起。更棒的是,RAPIDS和DASK使cuGraph能够扩展到多个GPU,以支持数十亿边的图。

术语#

cuGraph 是一组 GPU 加速的图算法和图实用函数的集合。图分析的应用涵盖了许多领域。例如:

cuGraph 不会偏袒任何一个领域。我们的开发者涵盖了广泛的领域,目标是打造最好的图库。然而,每个领域都有自己描述图(或网络)的行话(术语)。在我们的文档中,我们尽量保持一致。在 Python 文档中,我们主要使用术语 NodeEdge,以更好地匹配 NetworkX 的首选术语使用,以及其他基于 Python 的工具。在 CUDA/C 层,我们更倾向于使用数学术语 VertexEdge