OA0
OA0 是一个探索 AI 的社区
现在注册
已注册用户请  登录
OA0  ›  代码  ›  RAPIDS — GPU 加速的数据科学与机器学习工具集

RAPIDS — GPU 加速的数据科学与机器学习工具集

 
  encryption ·  2026-05-22 11:00:19 · 12 次点击  · 0 条评论  

 cuML - GPU 机器学习算法库

cuML 是一套实现机器学习算法和数学原语函数的库,其 API 与其它 RAPIDS 项目兼容。

cuML 使数据科学家、研究人员和软件工程师能够在 GPU 上运行传统的表格型机器学习任务,而无需深入了解 CUDA 编程。在大多数情况下,cuML 的 Python API 与 scikit-learn 的 API 相匹配。

对于大型数据集,这些基于 GPU 的实现比对应的 CPU 版本快 10-50 倍。性能详情可参考 cuML 基准测试 Notebook

以下示例展示了如何通过 cuDF 在 GPU 上加载输入数据并计算 DBSCAN 聚类结果:

import cudf
from cuml.cluster import DBSCAN

# 创建并填充 GPU DataFrame
gdf_float = cudf.DataFrame()
gdf_float['0'] = [1.0, 2.0, 5.0]
gdf_float['1'] = [4.0, 2.0, 1.0]
gdf_float['2'] = [4.0, 2.0, 1.0]

# 设置并拟合聚类
dbscan_float = DBSCAN(eps=1.0, min_samples=1)
dbscan_float.fit(gdf_float)

print(dbscan_float.labels_)

输出:

0    0
1    1
2    2
dtype: int32

cuML 还支持多 GPU 和多节点多 GPU 操作(基于 Dask),且支持的算法列表持续增长。以下 Python 代码示例从 CSV 文件读取数据,并在单节点多 GPU 的 Dask 集群上执行最近邻(NearestNeighbors)查询:

初始化一个配置了 UCXXLocalCUDACluster,用于快速传输 CUDA 数组:

from dask_cuda import LocalCUDACluster

# 创建单节点 CUDA 集群,每个设备一个 worker
cluster = LocalCUDACluster(protocol="ucx",
                           enable_tcp_over_ucx=True,
                           enable_nvlink=True,
                           enable_infiniband=False)

加载数据并执行 k-最近邻搜索。cuml.dask 的估计器也支持 Dask.Array 作为输入:

from dask.distributed import Client
client = Client(cluster)

# 跨 workers 并行读取 CSV 文件
import dask_cudf
df = dask_cudf.read_csv("/path/to/csv")

# 拟合 NearestNeighbors 模型并查询
from cuml.dask.neighbors import NearestNeighbors
nn = NearestNeighbors(n_neighbors = 10, client=client)
nn.fit(df)
neighbors = nn.kneighbors(df)

更多示例请浏览我们的完整 API 文档 或查看示例 教程 Notebook。此外,你还可以在 notebooks-contrib 仓库 中找到完整的端到端示例。

支持的算法

类别 算法 备注
聚类 基于密度的噪声应用空间聚类(DBSCAN) 通过 Dask 支持多节点多GPU
层次密度聚类(HDBSCAN)
K-Means 通过 Dask 支持多节点多GPU
单链路凝聚聚类
谱聚类
降维 主成分分析(PCA) 通过 Dask 支持多节点多GPU
增量 PCA
截断奇异值分解(tSVD) 通过 Dask 支持多节点多GPU
统一流形逼近与投影(UMAP) 通过 Dask 支持多节点多GPU推理
随机投影
t-SNE
谱嵌入
回归或分类的线性模型 线性回归(OLS) 通过 Dask 支持多节点多GPU
带 Lasso 或 Ridge 正则化的线性回归 通过 Dask 支持多节点多GPU
ElasticNet 回归
LARS 回归 (实验性)
逻辑回归 通过 Dask-GLM 演示 支持多节点多GPU
朴素贝叶斯 通过 Dask 支持多节点多GPU
随机梯度下降(SGD)、坐标下降(CD)和拟牛顿(QN,包括 L-BFGS 和 OWL-QN)求解器
回归或分类的非线性模型 随机森林(RF)分类 实验性多节点多GPU支持(通过 Dask)
随机森林(RF)回归 实验性多节点多GPU支持(通过 Dask)
基于决策树模型的推理 Forest Inference Library (FIL)
K-最近邻(KNN)分类 通过 Dask+UCXX 支持多节点多GPU,使用 Faiss 进行最近邻查询。
K-最近邻(KNN)回归 通过 Dask+UCXX 支持多节点多GPU,使用 Faiss 进行最近邻查询。
支持向量机分类器(SVC)
Epsilon-支持向量回归(SVR)
预处理 标准化(去均值与方差缩放)/ 归一化 / 类别特征编码 / 离散化 / 缺失值填充 / 多项式特征生成等(即将支持自定义变换和非线性变换) 基于 Scikit-Learn 预处理模块
时间序列 Holt-Winters 指数平滑
自回归积分滑动平均(ARIMA) 支持季节性(SARIMA)
模型解释 SHAP 核解释器 基于 SHAP
SHAP 排列解释器 基于 SHAP
执行设备互操作 少量代码更改即可在主机/CPU 或设备/GPU 间互换使用估计器 演示
其他 K-最近邻(KNN)搜索 通过 Dask+UCXX 支持多节点多GPU,使用 Faiss 进行最近邻查询。

安装

请参考 RAPIDS 版本选择器 获取通过 conda、pip 或 Docker 安装 nightly 版或正式版 cuML 包的命令行。

从源码构建/安装

请参考构建指南

Scikit-learn 兼容性

cuML 兼容 scikit-learn 1.4 及以上版本。

模型序列化与安全

cuML 模型可以使用 picklejoblib 序列化,并在之后加载用于推理。cuML 使用 cloudpickle,以便使用 cuml.accel 训练的模型可以被加载并在 scikit-learn 中使用。

仅从可信来源反序列化模型。 pickle 模块(以及其扩展 joblib)并不安全:恶意载荷可以在反序列化过程中执行任意代码并危害你的系统。请勿从不可信或已被篡改的来源 unpickle 或加载数据。 这包括 pickle.load() / pickle.loads()joblib.load() 以及任何基于文件的模型加载。详情与模式请参考 模型序列化与持久化 笔记本和 Python pickle 安全文档

贡献

请参阅我们的 贡献指南

参考资料

RAPIDS 团队发布了一系列包含深入技术解析和示例的博客文章。你可以在 Medium 上找到它们。

有关 cuML 背后技术的更多细节,以及 Python 机器学习领域的更广泛概述,请参阅 Machine Learning in Python: Main developments and technology trends in data science, machine learning, and artificial intelligence (2020),作者 Sebastian Raschka, Joshua Patterson 和 Corey Nolet。

在项目中使用 cuML 时,请考虑引用该论文。你可以使用以下 BibTeX 引用:

@article{raschka2020machine,
  title={Machine Learning in Python: Main developments and technology trends in data science, machine learning, and artificial intelligence},
  author={Raschka, Sebastian and Patterson, Joshua and Nolet, Corey},
  journal={arXiv preprint arXiv:2002.04803},
  year={2020}
}

联系方式

更多详情请访问 RAPIDS 网站

开放式 GPU 数据科学

RAPIDS 开源软件库套件旨在使端到端的数据科学和分析流程完全在 GPU 上执行。它依赖 NVIDIA® CUDA® 原语进行底层计算优化,并通过用户友好的 Python 接口暴露 GPU 的并行性和高带宽内存速度。

12 次点击  ∙  0 人收藏  
登录后收藏  
0 条回复
关于 ·  帮助 ·  PING ·  隐私 ·  条款   
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
耗时 22 ms
Developed with Cursor