cuml
NVIDIA/cuml加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
NVIDIA cuML 官方配图(图片源已失效)
图:cuML 25.02 发布会官方配图,展示了 GPU 加速机器学习的工作流程
设想这样一个场景:某电商平台的推荐团队工程师,需要用 100 万条用户行为数据训练一套随机森林模型,用来预测用户的购买意向。模型算法本身不复杂,代码也就几十行——但模型训练在 CPU 上跑了整整 72 小时。期间系统负载飙高,工程师不敢动代码,不敢关机,只能等待。
这并不是极端案例。在数据科学领域,机器学习算法(尤其是聚类、维度约减、集成树等)一旦数据量超过百万级别,CPU 计算就会成为明显的瓶颈。scikit-learn 很好用,但它诞生于 CPU 时代,面对大规模数据时速度感人。
NVIDIA cuML 正是为解决这个痛点而生。它将数据科学中最耗时的机器学习计算任务迁移到 GPU 上并行执行,实现数量级的速度提升。
cuML(CUDA Machine Learning)是 NVIDIA RAPIDS 开源套件的核心成员之一,2019 年随 RAPIDS 0.9 正式发布。RAPIDS 是一套基于 CUDA-X 的 GPU 加速数据科学库家族,成员包括:
cuML 的设计哲学是保持与 scikit-learn API 高度兼容,让数据科学家无需重新学习即可迁移到 GPU 加速赛道。截至 2025 年 9 月,该项目已获得 5,288 个 GitHub Stars,拥有 Apache-2.0 许可证,由 NVIDIA 官方团队持续维护更新,最新版本已达 25.08。
cuML 提供了两种使用方式,分别面向不同场景:
cuML 自己实现了一套完整的 GPU 加速机器学习算法,覆盖:
| 算法类别 | 包含算法 |
|---|---|
| 聚类(Clustering) | DBSCAN、K-Means、HDBSCAN |
| 维度约减(Dimensionality Reduction) | PCA、UMAP、t-SNE、Spectral Embedding |
| 分类(Classification) | Random Forest、SVM(SVC/SVR) |
| 回归(Regression) | Random Forest Regressor、KernelRidge |
| 最近邻(Nearest Neighbors) | KNN |
| 时间序列(Time Series) | ARIMA、Kalman Filter |
| 模型解释(Model Explanation) | SHAP 值计算 |
所有 API 遵循 scikit-learn 的 fit-predict-transform 风格,数据和计算全程保留在 GPU 上。
from cuml.datasets import make_blobs
from cuml.cluster import DBSCAN
# 生成样本数据
X, y = make_blobs(n_samples=100, centers=3, n_features=2, random_state=42)
# GPU 上执行 DBSCAN 聚类
dbscan = DBSCAN(eps=1.0, min_samples=5)
dbscan.fit(X)
print(dbscan.labels_)
这是 cuML 25.02(2025年3月)引入的杀手级功能。开发者只需要在脚本或 notebook 最开头加一行:
%load_ext cuml.accel
然后正常 import scikit-learn,cuML 会在运行时自动将兼容的算法透明替换为 GPU 执行版本,无需修改任何业务代码。对于尚不支持的算法,自动回退到 CPU 执行,保证流程不中断。
%load_ext cuml.accel
import sklearn.ensemble # 业务代码完全不变
from sklearn.ensemble import RandomForestClassifier
model = RandomForestClassifier(n_estimators=100)
model.fit(X_train, y_train) # 自动在 GPU 上执行
支持 cuml.accel 加速的算法覆盖:
来自 NVIDIA 官方和学术研究的 benchmark 数据:
NVIDIA 官方测试(Intel Xeon Platinum 8480CL CPU vs H100 80GB GPU):
学术研究验证(IoV 车联网入侵检测场景):
cuML 不局限于单卡。通过 cuml.dask API,可以将计算扩展到多 GPU 和多节点集群:
from dask.distributed import Client
from cuml.dask.models import KMeans
# 初始化 Dask 集群
client = Client('tcp://scheduler:8786')
# 分布式 K-Means
kmeans = KMeans(n_clusters=8, n_gpu_slaves=4)
kmeans.fit(X) # 自动分配到多个 GPU
这使得 cuML 可以处理 TB 级别的超大规模数据集。
cuML 25.04 对 Forest Inference Library 进行了全面重构,引入多项生产级特性:
.optimize()):自动寻找最优推理参数,无需手动调参.predict_per_tree()):获取每棵树的独立预测,用于高级集成分析.apply()):获取每棵树中样本落到的叶节点 ID,用于相似度分析性能方面:新版 FIL 在 H100 上相比 cuML 25.02 中位数提速 1.16x,最高 4.1x;与 scikit-learn 原生推理相比,中位数提速 147x,最高 882x。
cuML 并非银弹,以下几点需要特别注意:
cuML 要求 NVIDIA GPU + CUDA 环境,没有 NVIDIA 显卡的团队完全无法使用。最小推荐配置为:
cuML 与 scikit-learn 1.6+ 兼容,低版本用户需要先升级。
GPU 和 CPU 的浮点运算在极端情况下可能产生微小数值差异。cuML 通过自动调整参数和对齐输出来保持与 scikit-learn 的兼容性,但涉及高精度数值计算的场景仍需验证。
cuml.accel 在 2025 年初仍处于开放 Beta 阶段,API 可能随版本更新变化。生产环境建议锁定版本号。
cuML 相比 scikit-learn 算法覆盖仍不够全面,许多高级算法和预处理工具(如 ColumnTransformer、Pipeline 等)不支持 cuml.accel 自动加速。
cuML 的发展折射出 GPU 计算从深度学习向传统机器学习渗透的大趋势:
# RAPIDS 安装选择器:https://docs.nvidia.com/datascience/install#selector
# 选择对应 CUDA 版本后运行:
conda install -c rapidsai -c conda-forge -c nvidia cuml
%load_ext cuml.accel
import sklearn
# 直接使用,无需额外安装
# 在 notebook 开头运行
%load_ext cuml.accel
# 然后正常导入 scikit-learn
from sklearn.ensemble import RandomForestRegressor
总结:NVIDIA cuML 将 GPU 加速能力引入传统机器学习领域,通过零代码修改的 cuml.accel 极大降低了使用门槛。5,000+ Stars 的社区认可、持续活跃的 NVIDIA 官方维护,以及 2025 年以来的密集功能更新(Profiler、FIL 重构、Streaming Executor、新算法支持),使其成为大数据量机器学习任务的首选加速方案。唯一的硬性要求是必须拥有 NVIDIA GPU 环境。