一个基于 C++、提供 Python 接口的稠密向量相似度搜索与聚类库,可选 GPU 加速。
NVIDIA/raft
面向 NVIDIA GPU 的 CUDA 加速可复用基础算法与原语库,涵盖机器学习、线性代数和信息检索。
- Star
- 1,052
- Fork
- 256
- 未关闭 Issue
- 446
- 最近提交
- 18小时前
这是什么?
RAFT 提供机器学习与信息检索中常用的基础算法和原语,实现基于 CUDA 加速,可作为编写高性能 GPU 应用的构建模块。内容涵盖稠密与稀疏线性代数、求解器、统计与采样、距离计算、数据格式转换,并包含多节点多 GPU 通信基础设施。
RAFT 是以 C++ 头文件为主的模板库,同时提供可选的共享库,可缩短常见模板类型的编译时间,并提供无需 CUDA 编译器即可调用的主机端运行时 API。内存管理基于 CCCL 或 NVIDIA RMM 资源,输入使用 mdspan 视图,并提供拥有内存的 mdarray 封装。Python 用户可使用 pylibraft 包装运行时 API,它接受任何支持 __cuda_array_interface__ 的数组对象;raft-dask 则用于在 Dask 集群上构建分布式 GPU 算法。
RAFT 面向开发库和应用的工程师,而非用于探索性分析的数据科学家。软件包可通过 Conda 安装,也提供面向 CUDA 12 和 13 的实验性 pip 包。
核心功能
- 01以 C++ 头文件为主的模板库,可选共享库以加快编译。
- 02提供无需 CUDA 编译器即可调用的主机端运行时 API。
- 03包含稠密与稀疏线性代数、求解器和统计等原语。
- 04通过 pylibraft 提供 Python 封装,可与 CuPy、PyTorch、Numba、cuDF 互操作。
- 05借助 raft-dask 在 Dask 集群上实现多节点多 GPU 通信。
适用场景
- 在更大的系统中构建 GPU 加速的向量检索或最近邻组件。
- 编写自定义 CUDA 算法时复用已有的线性代数与归约原语。
- 借助 Dask 在多节点上运行分布式 GPU 算法。
- 在 Python 中调用 GPU 原语,无需编写 CUDA 代码。
快速上手
- 1
通过 conda 安装 RAFT(CUDA 13)
mamba install -c rapidsai -c conda-forge raft-dask pylibraft cuda-version=13.3 - 2
或通过 pip 安装 pylibraft(CUDA 12)
pip install pylibraft-cu12
使用前须知
- 需要支持 CUDA 的 NVIDIA GPU,无法在纯 CPU 设备上使用。
- 它面向底层原语,而非直接用于数据科学探索。
- pip 安装包为实验性质,且不包含 C++ 头文件。
收录于专题
标签
常见问题
- raft 是什么?
- 面向 NVIDIA GPU 的 CUDA 加速可复用基础算法与原语库,涵盖机器学习、线性代数和信息检索。 RAFT 提供机器学习与信息检索中常用的基础算法和原语,实现基于 CUDA 加速,可作为编写高性能 GPU 应用的构建模块。内容涵盖稠密与稀疏线性代数、求解器、统计与采样、距离计算、数据格式转换,并包含多节点多 GPU 通信基础设施。
- raft 可以免费使用吗?用的什么许可证?
- raft 以 Apache-2.0 许可证开源。用于商业产品前,请先确认许可证条款。
- raft 还在维护吗?
- 活跃维护中。raft 最近一次提交是在 2026年11月6日。
- raft 适合用来做什么?
- 在更大的系统中构建 GPU 加速的向量检索或最近邻组件。 编写自定义 CUDA 算法时复用已有的线性代数与归约原语。 借助 Dask 在多节点上运行分布式 GPU 算法。 在 Python 中调用 GPU 原语,无需编写 CUDA 代码。
- raft 怎么安装和运行?
- 通过 conda 安装 RAFT(CUDA 13): mamba install -c rapidsai -c conda-forge raft-dask pylibraft cuda-version=13.3 或通过 pip 安装 pylibraft(CUDA 12): pip install pylibraft-cu12
- 在哪里获取 raft?
- 源代码和安装说明在 GitHub 上:https://github.com/NVIDIA/raft
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
面向 NVIDIA GPU 的 CUDA C++ 模板库与 Python DSL,用于编写高性能矩阵乘法等线性代数内核。
基于 C++20 的头文件库,以 NumPy 风格的张量表达式在 NVIDIA GPU 或多线程 CPU 上进行数值计算,支持可选的内核融合。
用 Nim 编写的高性能 N 维张量库,支持 CPU、CUDA 和 OpenCL,面向数值计算与深度学习。
一个基于 Python 的库,用于在 CPU 上快速聚类大规模高维嵌入向量,接口兼容 scikit-learn。
基于图与树索引的 C++ 高维向量近似最近邻搜索库及命令行工具。