cuML是一套用于实现与其他RAPIDS项目共享兼容API的机器学习算法和数学原语函数。 有关性能的详细信息,请参阅cuML基准测试笔记本。 官方文档: rapidsai/cuml cuML API Reference 官方案例还是蛮多的: ? 来看看有啥模型: ? ? 和cuML的结果一致。 : from cuml.neighbors import NearestNeighbors %%time knn_cuml = NearestNeighbors() knn_cuml.fit(train_features ) %%time distances_cuml, indices_cuml = knn_cuml.kneighbors(query_features, k=3) from sklearn.neighbors
在但NVIDIA V100 GPU上运行的cuML TSNE可以在同一数据集上3秒内就可以完成收敛。 ? 表1.在NVIDIA DGX-1上使用1个V100 GPU运行的cuML的TSNE时间。 表2. cuML和Scikit-Learn(DGX 1)之间的时间间隔(以秒为单位) 因此cuML的TSNE运行速度提高了1000倍,并且获得了相似的可信度评分. ? 请注意,即使在小型数据集上,cuML也可以更快。 ? 这是许多CUDA算法(包括cuML中的许多算法)使用的通用技术。 改善TSNE的数值稳定性 在CannyLab的原始实现中,cuML修复了一些罕见的数字稳定性问题,包括一些死循环和越界的内存访问。 现在将其与cuML进行比较: 由于cuML几乎是scikit-learn的直接替代品,因此sklearn.manifold包可以替换为cuml.manifold,其他所有功能都可以使用。
cuML,机器学习库的集合,将提供sciKit-learn中可用的GPU版本的算法;cuGraph,类似于NetworkX的加速图分析库[4]。 cuDF和cuML。 使用cuDF更快地加载1GB CSV 5倍 cuML:机器学习算法 cuML与其他RAPIDS项目集成,以实现机器学习算法和数学基元函数。 在大多数情况下,cuML的Python API与sciKit-learn中的 API匹配。 该项目仍然有一些局限性(例如,目前无法腌制cuML RandomForestClassifier实例),但是它们的发布周期很短,为期6周,因此它们总是会添加新功能。
bc.sql('SELECT * FROM data WHERE age>20')六、GPU加速分析与训练除了SQL查询,我们还可以使用RAPIDS在GPU上进行更复杂的分析和机器学习:导入cudf, cuml 用于GPU加速import cudf, cuml读取数据到GPU内存df = cudf.read_csv('data.csv') 在GPU上做聚合、排序、分组操作df_grouped = df.groupby ('dept').agg({'salary':'mean'})df_sorted = df.sort_values('salary', ascending=False)使用cuml在GPU上做机器学习from cuml.svm import SVC clf = SVC()clf.fit(X_train, y_train)y_pred = clf.predict(X_test)使用RAPIDS的cudf 和cuml组件,可以将数据库中数据加载到GPU内存,并使用GPU来进行聚合、排序、机器学习等复杂运算,可实现数十倍的加速效果。
我们将使用基于gpu的cuML来测试简单的建模,并将其性能与Sklearn进行比较。 import cudf from cuml import make_regression, train_test_split from cuml.linear_model import LinearRegression as cuLinearRegression from cuml.metrics.regression import r2_score from sklearn.linear_model import ) X_test = X_cudf_test.to_pandas() y_train = y_cudf.to_pandas() y_test = y_cudf_test.to_pandas() CuML 这里训练sklearn模型需要16.2秒,但是训练基于gpu的cuML模型只需要342毫秒!
cuML-cuGraph 机器学习库。它包含了 Scikit-Learn 拥有的许多 ML 算法,所有算法的格式都非常相似。 cuGraph-cuGraph 图处理库。 DBSCAN 的 cuML 版本的函数格式与 Scikit-Learn 的函数格式完全相同:相同的参数、相同的样式、相同的函数。 from cuml import DBSCAN as cumlDBSCAN db_gpu = cumlDBSCAN(eps=0.6, min_samples=2) 最后,我们可以在测量运行时间的同时运行 使用 cuML 在 GPU 上运行 DBSCAN 的结果 使用 Rapids GPU 获得超高速 我们从 Rapids 获得的加速量取决于我们正在处理的数据量。 我们将比较常规 CPU DBSCAN 和 cuML 的 GPU 版本的速度,同时增加和减少数据点的数量,以了解它如何影响我们的运行时间。
使用GPU加速方法和库(如某中心的cuML)可以显著提升训练和推理速度。其中,森林推理库(FIL)在批大小为1和大型批量推理时,分别能带来超过原生scikit-learn 150倍和190倍的加速。 虽然这些模型的原生库提供了越来越快的GPU加速训练,但cuML中的森林推理库可以显著加速任何可转换为Treelite的基于树模型的推理速度,例如XGBoost、scikit-learn和cuML的RandomForest 如需深入了解,请查看《在NVIDIA cuML中使用森林推理库超级加速基于树模型的推理》。模型可解释性:获得超越准确性的洞察基于树模型的最大优势之一是其透明度。 开始基于树的模型训练基于树的模型,尤其是当由像cuML这样的GPU优化库加速时,为制造业和运营数据科学提供了准确性、速度和可解释性的理想平衡。 了解更多关于cuML和扩展XGBoost的信息。如果你是加速数据科学的新手,请查看实践研讨会《零代码更改加速数据科学工作流》和《加速端到端数据科学工作流》。
cuML-cuGraph 机器学习库。它包含了 Scikit-Learn 拥有的许多 ML 算法,所有算法的格式都非常相似。 cuGraph-cuGraph 图处理库。 DBSCAN 的 cuML 版本的函数格式与 Scikit-Learn 的函数格式完全相同:相同的参数、相同的样式、相同的函数。 from cuml import DBSCAN as cumlDBSCAN db_gpu = cumlDBSCAN(eps=0.6, min_samples=2) 最后,我们可以在测量运行时间的同时运行 使用 cuML 在 GPU 上运行 DBSCAN 的结果 使用 Rapids GPU 获得超高速 我们从 Rapids 获得的加速量取决于我们正在处理的数据量。 我们将比较常规 CPU DBSCAN 和 cuML 的 GPU 版本的速度,同时增加和减少数据点的数量,以了解它如何影响我们的运行时间。
cuML-cuGraph 机器学习库。它包含了 Scikit-Learn 拥有的许多 ML 算法,所有算法的格式都非常相似。 cuGraph-cuGraph 图处理库。 ({'fea%d'%i: X[:, i] for i in range(X.shape[1])}) X_gpu = cudf.DataFrame.from_pandas(X_df) 然后我们将从 cuML DBSCAN 的 cuML 版本的函数格式与 Scikit-Learn 的函数格式完全相同:相同的参数、相同的样式、相同的函数。 使用 cuML 在 GPU 上运行 DBSCAN 的结果 使用 Rapids GPU 获得超高速 我们从 Rapids 获得的加速量取决于我们正在处理的数据量。 我们将比较常规 CPU DBSCAN 和 cuML 的 GPU 版本的速度,同时增加和减少数据点的数量,以了解它如何影响我们的运行时间。
RAPIDS(如下图)提供的cuDF、cuML和CuGraph则提供了对数据准备、机器学习算法以及图分析的GPU加速库。 ? cuML现在包含一个支持向量机分类器(SVC)模型,其速度比同等CPU版本快300倍。 从cuML 训练到推理 不仅是训练,要想真正在GPU上扩展数据科学,也需要加速端到端的应用程序。cuML 0.9 为我们带来了基于GPU的树模型支持的下一个发展,包括新的森林推理库(FIL)。 在开源Treelite软件包的基础上,下一个版本的FIL还将添加对scikit-learn和cuML随机森林模型的支持。 ? 图4:XGBoost CPU和FIL推理时间随批处理大小的增加而扩展(越低越好) 将来,cuML还将支持GPU上其他算法的推理。
特征选取方面,英伟达推出的 cuML 项目提供了一套异构加速的机器学习基础算法库。 数据集处理方面,cuML 提供了 train_test_split,与 sklearn 中的接口行为类似,用于划分训练集和测试集。 算法方面,cuML 提供了一套 GPU 加速的 ML 算法包。 在早期版本中,受制于显存容量,cuML 对于大模型或大训练集的支持不尽人意。 cuML 自 0.9 版本提供多节点 / 多卡方案(MNMG),当前已有的 MNMG 算法包括:K-means, SVD, PCA,KNN,random forest。 cuML 在近期的版本中也对基于树的算法进行了性能优化 [12],自 0.10 版本提供与 XGBoost GPU 加速算法的对接支持 [13]。
Rapids 利用了几个 Python 库: cuDF:Python GPU 版的 DataFrames,在数据处理和操作方面,它几乎可以做到 Pandas 所能做的一切; cuML:Python GPU conda create -n rapids-22.12 -c rapidsai -c conda-forge -c nvidia \ cudf=22.12 cuml=22.12 cugraph DBSCAN 的 cuML 版本的函数格式与 Scikit-Learn 的函数格式完全相同:相同的参数、相同的样式、相同的函数。 from cuml import DBSCAN as cumlDBSCAN db_gpu = cumlDBSCAN(eps=0.6, min_samples=2) # print(" ".join([ 我们将比较常规 CPU DBSCAN 和 cuML 的 GPU 版本的速度,同时增加和减少数据点的数量,以了解它如何影响我们的运行时间。
cuDF 与 cuML:讲解如何使用 cuDF 进行 GPU 加速的数据处理,以及使用 cuML 进行机器学习任务。
有关更多信息,请参见:< https://rapids.ai/ > RAPIDS库旨在替代常见的Python数据科学库,例如Pandas(cuDF),numpy(cuPy),sklearn(cuML)和 为了对RAPIDS cuDF数据帧使用`train_test_split`,我们改用`cuml`版本。 cuML但是没有“ StratifiedKFold”采样,因此我们将使用“ sklearn”版本。 但是,`StratifiedKFold`在计算上并不是很昂贵,因此我们不在GPU上运行也没关系。 同样,我们使用cuML版本,因此我们不必将数据传输回CPU。 XGBoost还具有GPU加速的特征重要性计算和SHAP计算,以提高解释性。
为了让整个链路留在 GPU 上,我们需要对 XGBClassifier 做一点小的封装,并结合 cuML 的指标计算。 sklearn.model_selection import StratifiedKFold, cross_val_score from sklearn.metrics import make_scorer from cuml.metrics
RAPIDS库,例如cuDF为dataframes和cuML机器学习基本上是他们的CPU同行panda和GPU版本scikit学习。这就像搬到一所新学校并发现你最好朋友的双胞胎在你家的房间里。 我将通过一系列图表展示从 pandas 和 scikit-learn 切换到 cuDF 和 cuML 时的实际速度改进。第一个比较 GPU 和 CPU 之间在较短任务上花费的秒数。 总之,cuDF 和 cuML 代码将运行时间减少了 98% !最重要的是,只需切换到 RAPIDS 库并更改几行代码即可。
#获取中国平安数据 tss=get_data('601318') #tss.head() 01 收益率计算 pyfinance的returns提供了年化收益率(anlzd_ret)、累计收益率(cuml_ret #年化收益率 anl_ret=tss.anlzd_ret() #累计收益率 cum_ret=tss.cuml_ret() #计算周期收益率 q_ret=tss.rollup('Q') a_ret=tss.rollup tss.index] dd={} #收益率 #年化收益率 dd['年化收益率']=tss.anlzd_ret() #累积收益率 dd['累计收益率']=tss.cuml_ret
= (off_x, curr_y + off_y, w, CUML_HEIGHT/2 - off_y * 2) if clip_visible (clip, cuml_rect): draw_cuml_graph(ctx, proc_tree, cuml_rect, duration, sec_w, STAT_TYPE_CPU) # draw a cumulative I /O-time-per-process graph if proc_tree.taskstats and options.cumulative: cuml_rect = (off_x , curr_y + off_y * 100, w, CUML_HEIGHT/2 - off_y * 2) if clip_visible (clip, cuml_rect): draw_cuml_graph(ctx, proc_tree, cuml_rect, duration, sec_w, STAT_TYPE_IO) [ ](javascript:void(0); "复制代码
Dask 可与 Rapids cuDF、XGBoost 和 Rapids cuML 集成,用于 GPU 加速的数据分析和机器学习。 Rapids 依赖于 Apache Arrow 柱状内存格式,包括cuDF(类似 Pandas 的 DataFrame 库);cuML(机器学习库集合,提供 Scikit-learn 中大多数算法的 GPU
关联文章: nvidia-rapids︱cuDF与pandas一样的DataFrame库 NVIDIA的python-GPU算法生态 ︱ RAPIDS 0.10 nvidia-rapids︱cuML