cuGraph 介绍#

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

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

RAPIDS cuGraph 是一个图算法库,它无缝集成到 RAPIDS 数据科学生态系统中,使数据科学家能够轻松地使用存储在 GPU DataFrame、NetworkX 图,甚至 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