RAPIDS RAFT 教程:加速机器学习与数据分析的构建块
在数据分析和机器学习算法中,计算瓶颈往往来自控制端到端性能的一小部分步骤。这些步骤的可重用解决方案通常需要低级别的基元,而这些基元非常简单且耗时。RAPIDS RAFT 正是为解决这些瓶颈而生,它是一套高度优化的计算模式库,旨在为多维数据构建算法时最大限度地重用代码。无论你是 C++ 开发者还是 Python 用户,RAFT 都能提供模块化的嵌入式翻跟斗目录,帮助你快速组合新算法或加速现有库,同时确保随着新 GPU 架构的发布,组件持续优化,让你始终从硬件中获得最佳性能。
RAFT 的作用与定位
NVIDIA 构建 RAFT,为开发者提供基本元素作为构建块。这些构建块覆盖了机器学习和数据分析中最常见且计算密集的任务。例如,最近邻(Nearest Neighbors)就是一个典型:它常见、有用且计算量巨大。邻域方法涵盖了大量算法,如聚类和降维。RAFT 还支持线性代数、稀疏矩阵运算、采样、优化和统计矩等应用数学的核心工具。
事实上,RAFT 构成了 RAPIDS cuML 中几乎所有算法的基础,包括流行的 HDBSCAN、TSNE、UMAP 以及所有其他用于聚类和可视化的算法。
看到这里你可能想问:这与 cuDF、cuGraph、cuML 是什么关系?RAPIDS 是 GPU 上一套用于数据科学和机器学习的加速库,其中:
- cuDF —— 类似 pandas 的数据结构
- cuGraph —— 用于图数据
- cuML —— 用于机器学习
而 RAFT 则是这些库底层的计算模式库,提供了高度优化的基元。
RAFT 的核心构建块
RAFT 包含多个不同类别的构建块,下表展示了主要分类及示例:
| Category | Examples |
| Data Formats | Sparse and dense, conversions, data generation |
| Dense Operations | Linear algebra, matrix and vector operations, slicing, norms, factorization, least squares, svd, and eigenvalue problems |
| Sparse Operations | Linear algebra, eigenvalue problems, slicing, symmetrization, components, and labeling |
| Spatial | Pairwise distances, nearest neighbors, neighborhood graph construction |
| Basic Clustering | Spectral clustering, hierarchical clustering, k-means |
| Solvers | Combinatorial optimization, iterative solvers |
| Statistics | Sampling, moments and summary statistics, metrics |
| Tools and Utilities | Common utilities for developing CUDA applications, multi-node multi-gpu infrastructure |
如果你想在绝对最快的作品基础上创作新作品,那么你现在只会受到创造力的限制。除了所有基本方法外,向量搜索领域的最佳方法在搜索大型语言模型(LLM)和推荐系统方面取得了令人兴奋的进展。
图 1. NVIDIA H100 GPU 上的新 RAFT IVF-PQ 算法与 CPU 上的 HNSW 算法的比较
图 1 重点介绍了一种新的 RAFT 最先进的近似最近邻算法,它属于 inverted file indexes (IVF) 系列中的 product quantization (PQ) 变体,称为 IVF-PQ。RAFT IVF-PQ 实现已针对生产向量相似性搜索系统所需的小批量查询进行了优化。与当前 CPU 上最先进的 HNSW 算法相比,新 RAFT IVF-PQ 算法的训练速度快 95 倍,小批量查询速度快 3 倍。
