DataLearner 标志DataLearnerAI
最新AI资讯
大模型评测
大模型列表
大模型对比
资源中心
AI工具导航

加载中...

DataLearner 标志DataLearner AI

专注大模型评测、数据资源与实践教学的知识平台,持续更新可落地的 AI 能力图谱。

产品

  • 评测榜单
  • 模型对比
  • 数据资源

资源

  • 部署教程
  • 原创内容
  • 工具导航

关于

  • 关于我们
  • 隐私政策
  • 数据收集方法
  • 联系我们

© 2026 DataLearner AI. DataLearner 持续整合行业数据与案例,为科研、企业与开发者提供可靠的大模型情报与实践指南。

隐私政策服务条款
  1. 首页/
  2. 博客列表/
  3. 博客详情

基于GPU的机器学习Python库——RAPIDS简介及其使用方法

2019/07/06 10:58:40
14,971 阅读
GPU机器学习深度学习

随着深度学习的火热,对计算机算力的要求越来越高。从2012年AlexNet以来,人们越来越多开始使用GPU加速深度学习的计算。

然而,一些传统的机器学习方法对GPU的利用却很少,这浪费了很多的资源和探索的可能。在这里,我们介绍一个非常优秀的项目——RAPIDS,这是一个致力于将GPU加速带给传统算法的项目,并且提供了与Pandas和scikit-learn一致的用法和体验,非常值得大家尝试。如果需要使用传统机器学习方法处理大规模的数据,这是非常值得使用的库。这里列举的只是少部分功能,它的强大远远超过你的想象。

目前,RAPIDS提供三个模块处理数据:cuDF相当于Pandas,cuML相当于scikit-learn,cuGraph则是处理图数据的(如PageRank算法)。由于它的兼容性很好,我们可以把RAPIDS与深度学习框架结合,用cuDF来利用GPU加速处理数据,然后使用PyTorch的深度学习模型处理任务。这也是可以的。所以,它非常灵活而且强大。

RAPIDS在Medium上也有博客,介绍了很多使用RAPIDS处理任务的技巧,如使用RAPIDS处理金融数据、使用cuDF加速协同过滤等。链接可以看参考一章。

  • 一、为什么使用GPU
  • 二、RAPIDS简介
  • 2.1、cuDF
  • 2.2、cuML
  • 2.3、cuGraph
  • 三、使用方法
  • Create and populate a GPU DataFrame
  • Setup and fit clusters

一、为什么使用GPU

相比较CPU而言,GPU是由很多个简单的核组成的计算单元,它可以并行处理很多个任务(而CPU是有较少的复杂的核心组成,执行序列任务,只能同时执行很少的线程)。同时,GPU也比CPU有更好的带宽优化。而深度学习的基本算子则是矩阵乘法、向量加减和单值运算,它的特点是基本算子计算简单,但是对算力的需求较高。这正好与GPU的特点相结合。因此,GPU是目前加速深度学习最合适的硬件。

当然,这里不得不提到的是CUDA。CUDA是一个直接运行在GPU上的并行计算平台和编程模型。它是由Nvidia开发的,目的是为了充分利用Nvidia家的GPU计算能力。虽然基于GPU的并行计算平台和编程框架还有很多,如OpenCL等。但是,CUDA是目前应用最广泛的一个。

在CUDA之上,我们可以使用C、C++和Fortran编程语言,但这类语言的入门门槛较高,所以很多框架都在此之上提供了Python的用户编程入口。如TensorFlow,它的底层就是使用C语言编写,可以运行在CUDA上,因而可以充分利用GPU的并行计算能力。下图是TensorFlow的架构:

尽管如此,目前只有深度学习框架比较充分利用了GPU的加速功能。而很多传统机器学习算法大多数只能运行在CPU上,为了加速传统机器学习算法的运行速度,现在也有一些组织开始提供类似的框架了。而RAPIDS就是其中非常优秀的一个。

二、RAPIDS简介

RAPIDS是一个开源的库,它提供了端到端的数据科学和分析流程,以及一些传统的经典机器学习算法,可以完全运行在GPU上。它与一些主流的库完美兼容,如Pandas等,因此,入门不高。

与TensorFlow类似,RAPIDS的底层使用C语言编写,并利用NVIDIA的CUDA平台进行GPU的加速。在上层则提供Python的编程接口。RAPIDS架构如下:

RAPIDS起源于Apache Arrow和GoAi项目。目前包括了三个项目:

  • cuDF
  • cuML
  • cuGraph

我们分别简单介绍一下。

2.1、cuDF

cuDF是基于Apache Arrow构造(这是一种基于内存的数据处理的跨语言平台),但是一种GPU的DataFrame库。可以用来加载、过滤、表征数据。cuDF提供了类似Pandas的编程接口。上手非常容易。

如下面的官方示例:

import cudf

tips_df = cudf.read_csv(file)
tips_df['tip_percentage'] = tips_df['tip']/tips_df['total_bill']*100

可以看到,它与Pandas的处理方式几乎一模一样。

2.2、cuML

cuML是RAPIDS项目中实现机器学习算法和数学计算的库。它可以让我们在GPU上运行传统的机器学习算法。为了方便大家使用,cuML还提供了与scikit-learn像似的算法接口。

与在CPU上运行相比,cuML运行在GPU上要快10-50倍。下图给出了RAPIDS数据处理到算法运算的速度对比:

可以看到,RAPIDS的速度要比运行在CPU上的sklearn算法速度快很多。

2.3、cuGraph

cuGraph是一个用来处理图形数据的库,主要吹cuDF在GPU上的数据。它期望提供类似NetworkX接口的工具,可以帮助大家处理图挖掘问题。目前支持的算法包括PageRank、BSF等。

三、使用方法

RAPIDS依赖一些其他的基本库。因此,使用RAPIDS之前需要安装一些依赖的库。目前,RAPIDS需要的东西:

  • GPU: NVIDIA Pascal及更好的GPU,兼容6.0以上版本
  • OS:Ubuntu 16.04/18.04或者CentOS7(需要gcc5.4和7.3)
  • Docker: Docker CE v18+和NVIDIA-docker v2+
  • CUDA:9.2且驱动是v396.37以上,或者10.0驱动v410.48以上

cuDF的使用和Pandas基本一致,cuML的使用和sklearn的方法基本一致。所以上手非常简单。我们看一下官网运行DBSCAN的例子即可:

import cudf
from cuml.cluster import DBSCAN

# Create and populate a 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]

# Setup and fit clusters
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

参考: https://medium.com/shachishah.ce/do-we-really-need-gpu-for-deep-learning-47042c02efe2

https://towardsdatascience.com/heres-how-you-can-accelerate-your-data-science-on-gpu-4ecf99db3430

https://rapids.ai/

https://medium.com/rapids-ai

DataLearner 官方微信

欢迎关注 DataLearner 官方微信,获得最新 AI 技术推送

DataLearner 官方微信二维码
返回博客列表

相关博客

  • 各大企业和机构拥有的NVIDIA A100的GPU显卡数量
  • 大模型微调过程中的几个常见问题
  • 总结一下截止2023年中旬全球主要厂商拥有的GPU数量以及训练GPT-3/LLaMA2所需要的GPU数量
  • 好消息~Kaggle提高了免费的GPU和内存等计算资源的使用额度!
  • 一张图看全深度学习中下层软硬件体系结构
  • Ubuntu 命令行 指定GPU 运行 Python 程序
  • 7种交叉验证(Cross-validation)技术简介(附代码示例)
  • 目前正在举办的机器学习相关的比赛

热门博客

  • 1Dirichlet Distribution(狄利克雷分布)与Dirichlet Process(狄利克雷过程)
  • 2回归模型中的交互项简介(Interactions in Regression)
  • 3贝塔分布(Beta Distribution)简介及其应用
  • 4矩母函数简介(Moment-generating function)
  • 5普通最小二乘法(Ordinary Least Squares,OLS)的详细推导过程
  • 6使用R语言进行K-means聚类并分析结果
  • 7深度学习技巧之Early Stopping(早停法)
  • 8手把手教你本地部署清华大学的ChatGLM-6B模型——Windows+6GB显卡本地部署