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 文档中,我们主要使用术语Node和Edge,以便更好地与 NetworkX 以及其他基于 Python 的工具首选的术语用法保持一致。在 CUDA/C 层,我们倾向于使用数学术语Vertex和Edge。