引言#
cuML 加速 GPU 上的机器学习。该库遵循几个关键原则,理解这些原则将帮助您充分利用 cuML。
1. 在可能的情况下,匹配 scikit-learn API#
cuML 估算器看起来和感觉就像 scikit-learn 估算器一样。您使用关键参数初始化它们,使用 fit
方法进行拟合,然后调用 predict
或 transform
进行推理。
import cuml.LinearRegression
model = cuml.LinearRegression()
model.fit(X_train, y)
y_prediction = model.predict(X_test)
您可以在入门笔记本和 cuML API 文档中找到更多完整的示例。
2. 接受灵活的输入类型,返回可预测的输出类型#
cuML 估算器可以接受 NumPy 数组、cuDF 数据框、cuPy 数组、2d PyTorch 张量,以及几乎任何基于标准的 Python 数组输入。这依赖于 __array__
和 __cuda_array_interface__
标准,这些标准在 PyData 社区中广泛使用。
默认情况下,输出将镜像您提供的数据类型。因此,如果您使用 NumPy 数组拟合模型,则包含拟合系数的 model.coef_
属性也将是 NumPy 数组。如果您使用 cuDF 的基于 GPU 的 DataFrame 和 Series 对象拟合模型,则模型的输出属性将是 cuDF 对象。您始终可以使用 memory_utils.set_global_output_type 函数覆盖此行为并选择默认数据类型。
RAPIDS 可配置输入和输出类型博客文章更详细地解释了这种方法。
3. 快速!#
cuML 的估算器依赖于 libcuml
中高度优化的 CUDA 原语和算法。在现代 GPU 上,它们的性能可以超过基于 CPU 的等效项 4 倍(对于中等大小的线性回归)到 1000 倍以上(对于大规模 tSNE 降维)。cuml.benchmark 模块提供了易于使用的接口来测试您自己的硬件。
为了最大化性能,请记住 - 现代 GPU 可以拥有超过 5000 个核心,因此请确保您提供足够的数据以使其保持忙碌!在许多情况下,性能优势随着数据集的增长而出现。
了解更多#
要开始学习 cuML,请仔细阅读入门笔记本。然后尝试仓库 notebooks
目录中的其他笔记本示例。最后,通过cuML 博客进行更深入的探索。