cuML是一套实现机器学习算法和数学基元函数的库,它们与其他RAPIDS项目共享兼容的API。
cuML使数据科学家、研究人员和软件工程师能够在GPU上运行传统的表格式机器学习任务,而无需深入了解CUDA编程的细节。在大多数情况下,cuML的Python API与scikit-learn的API相匹配。
对于大型数据集,这些基于GPU的实现可以比其CPU等效实现快10-50倍。有关性能的详细信息,请参阅cuML基准测试笔记本。
例如,以下Python代码片段加载输入并使用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工作集群执行最近邻查询:
初始化配置了UCX的LocalCUDACluster
,以实现CUDA数组的快速传输
# 初始化UCX以实现CUDA数组的高速传输 from dask_cuda import LocalCUDACluster # 创建Dask单节点CUDA集群,每个设备一个工作进程 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) # 在工作进程间并行读取CSV文件 import dask_cudf df = dask_cudf.read_csv("/path/to/csv") # 拟合最近邻模型并查询 from cuml.dask.neighbors import NearestNeighbors nn = NearestNeighbors(n_neighbors = 10, client=client) nn.fit(df) neighbors = nn.kneighbors(df)
如需更多示例,请浏览我们完整的API文档,或查看我们的示例演示笔记本。最后,您可以在notebooks-contrib仓库中找到完整的端到端示例。
类别 | 算法 | 说明 |
---|---|---|
聚类 | 基于密度的空间聚类应用噪声(DBSCAN) | 通过Dask实现多节点多GPU |
基于密度的空间聚类应用噪声的层次结构(HDBSCAN) | ||
K-均值 | 通过Dask实现多节点多GPU | |
单链接凝聚聚类 | ||
降维 |