Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >在gpu上运行Pandas和sklearn

在gpu上运行Pandas和sklearn

作者头像
deephub
发布于 2022-11-11 09:02:39
发布于 2022-11-11 09:02:39
1.8K00
代码可运行
举报
文章被收录于专栏:DeepHub IMBADeepHub IMBA
运行总次数:0
代码可运行

点击上方“Deephub Imba”,关注公众号,好文章不错过 !

当涉及大量数据时,Pandas 可以有效地处理数据。但是它使用CPU 进行计算操作。该过程可以通过并行处理加快,但处理大量数据仍然效率不高。

在以前过去,GPU 主要用于渲染视频和玩游戏。但是现在随着技术的进步大多数大型项目都依赖 GPU 支持,因为它具有提升深度学习算法的潜力。

Nvidia的开源库Rapids,可以让我们完全在 GPU 上执行数据科学计算。在本文中我们将 Rapids优化的 GPU 之上的DF、与普通Pandas 的性能进行比较。

我们将在 Google Colab 中对其进行测试。因为我们只需要很少的磁盘空间但是需要大内存 GPU (15GB),而Colab 正好可以提供我们的需求。我们将从在安装开始,请根据步骤完成整个过程。

开启GPU

在菜单栏Colab 的“Runtime”选项中选择“Change runtime type”。然后选择GPU作为硬件加速器。

NV的显卡是唯一支持CUDA的显卡,Rapids只支持谷歌Colab中基于P4、P100、T4或V100的gpu,在分配到GPU后我们执行以下命令确认:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 !nvidia-smi

可以看到,分配到了一块T4,有15G的内存。如果分配到了其他GPU(如p4),可以在“Runtime”菜单并选择“Factory Reset Runtimes”,来重新申请。

安装 Rapids

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 !git clone https://github.com/rapidsai/rapidsai-csp-utils.git
 !python rapidsai-csp-utils/colab/env-check.py

运行以下命令,会更新现有的colab文件并重新启动内核。运行此命令后,当前会话将自动重新启动。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 ! bash rapidsai-csp-utils/colab/update_gcc.sh
 import os
 os._exit(00)

安装CondaColab

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 import condacolab
 condacolab.install()

这条命令会让内核再次重启。重新启动后运行下面命令,确定安装是否成功:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 import condacolab
 condacolab.check()

下面就是在colab实例上安装Rapids了

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 !python rapidsai-csp-utils/colab/install_rapids.py stable

完成后,就可以测试GPU的性能了!

简单对比测试

创建一个大的DF可以让测试gpu的全部潜力。我们将创建cuDF(cuda dataframe),其大小为10000000行x 2列(10M x 2),首先导入需要的库:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 import cudf 
 import pandas as pd
 import numpy as np

创建DF

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 gpuDF = cudf.DataFrame({'col_1': np.random.randint(0, 10000000, size=10000000),
                           'col_2': np.random.randint(0, 10000000, size=10000000)})
 pandasDF = pd.DataFrame({'col_1': np.random.randint(0, 10000000, size=10000000),
                           'col_2': np.random.randint(0, 10000000, size=10000000)})

cuDF是在GPU之上的DataFrame。Pandas的几乎所有函数都可以在其上运行,因为它是作为Pandas的镜像进行构建的。与Pandas的函数操作一样,但是所有的操作都在GPU内存中执行。

我们看看创建时的时间对比:

现在让我们看看GPU是否通过对这些数据帧执行一些操作来提高性能!

对数运算

为了得到最好的平均值,我们将对两个df中的一列应用np.log函数,然后运行10个循环:

GPU的结果是32.8毫秒,而CPU(常规的pandas)则是2.55秒!基于gpu的处理快的多的多。

从" Int "到" String "的数据类型转换

通过将的“col_1”(包含从0到10M的整数值)转换为字符串值(对象)来进一步测试。

可以看到,速度差距更大了

线性回归模型测试

一个模特的训练可能要花很长时间。模型在GPU内存中的训练可能因其类型而异。我们将使用基于gpu的cuML来测试简单的建模,并将其性能与Sklearn进行比较。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 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 LinearRegression as skLinearRegression

创建虚拟数据并将其拆分(训练和测试)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 n_samples = 2**20 
 n_features = 399
 random_state = 23
 X, y = make_regression(n_samples=n_samples, n_features=n_features, random_state=random_state)
 X = cudf.DataFrame(X)
 y = cudf.DataFrame(y)[0]
 X_cudf, X_cudf_test, y_cudf, y_cudf_test = train_test_split(X, y, test_size = 0.2, random_state=random_state)
 X_train = X_cudf.to_pandas()
 X_test = X_cudf_test.to_pandas()
 y_train = y_cudf.to_pandas()
 y_test = y_cudf_test.to_pandas()

CuML库的make_regression函数和train_test_split都与与sklearn的同名函数函数相同使用.to_pandas()函数可以将gpu的数据转换为普通的pandas df。

训练一个基于skearn的模型:

训练一个基于gpu的模型和训练一个基于cpu的模型没有太大的区别。

这里训练sklearn模型需要16.2秒,但是训练基于gpu的cuML模型只需要342毫秒!

总结

Pandas和sklearn这两个是我们最常用的基本库,Rapids将Pandas和sklearn的功能完整的平移到了GPU之上,这对我们来说是非常有帮助的,如果你对这两个库感兴趣可以参考他官方的文档试一试吧:

https://github.com/rapidsai/

作者:Onepagecode


MORE

kaggle比赛交流和组队

加我的微信,邀你进群

喜欢就关注一下吧:

点个 在看 你最好看!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-10-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DeepHub IMBA 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
使用Python实现智能信用评分系统
我们将使用一个模拟的信用数据集。你可以创建一个包含客户信息和信用评分的虚拟数据集。
Echo_Wish
2024/09/07
2710
使用Python实现智能信用评分系统
nvidia-rapids︱cuML机器学习加速库
cuML是一套用于实现与其他RAPIDS项目共享兼容API的机器学习算法和数学原语函数。
悟乙己
2020/03/27
3.7K0
nvidia-rapids︱cuDF与pandas一样的DataFrame库
cuDF(https://github.com/rapidsai/cudf)是一个基于Python的GPU DataFrame库,用于处理数据,包括加载、连接、聚合和过滤数据。向GPU的转移允许大规模的加速,因为GPU比CPU拥有更多的内核。
悟乙己
2020/03/27
2.4K0
GPU加速数据分析和机器学习
作为这种转变的示范,越来越多的在线数据科学平台现在正在添加GPU解决方案。一些示例是:Kaggle,Google Colaboratory,Microsoft Azure和Amazon Web Services(AWS)。
代码医生工作室
2019/07/30
1.4K0
模型性能提升操作
考虑特征重要度的因素。遵循一个原则:特征重要度越高,对这一特征下的空缺值容忍程度越低。
Bo_hemian
2020/09/09
8740
多层感知器MLP模型介绍及训练示例
多层感知器(Multilayer Perceptron, MLP)是一种前馈神经网络模型,它由一个输入层、一个输出层以及至少一层隐藏层组成。每层中的节点(或称为神经元)通过加权连接与下一层的节点相连,并且这些连接具有可学习的权重和偏置。MLP中的“感知器”一词来源于早期的人工神经网络模型——感知器。
用户7353950
2024/11/23
6060
多层感知器MLP模型介绍及训练示例
RAPIDS cuDF,让数据处理飞起来~
众所周知,Pandas是Python数据科学领域最流行的数据处理库,每天的下载量接近百万,拥有千万级别的用户。
派大星的数据屋
2025/01/19
1530
RAPIDS cuDF,让数据处理飞起来~
Pandas 加速150倍!
Pandas是Python中一个强大的数据处理和分析库,特别适用于结构化数据。它提供了易于使用的数据结构和数据分析工具,使得处理和分析数据变得更加便捷和高效。
Ai学习的老章
2024/07/06
2070
Pandas 加速150倍!
CPU靠边站!使用cuDF在GPU加速Pandas
使用Pandas Dataframe执行数千甚至数百万次计算仍然是一项挑战。你不能简单的将数据丢进去,编写Python for循环,然后希望在合理的时间内处理数据。公众号在此之前的一篇文章专门介绍了一些方法,请点击查看:
量化投资与机器学习微信公众号
2019/09/29
8.9K0
CPU靠边站!使用cuDF在GPU加速Pandas
NumPy和Pandas入门指南
数据科学是当今数字时代中的一个重要领域,而Python是数据科学家们最喜爱的编程语言之一。在这篇博客中,我们将介绍Python中两个强大的库——NumPy和Pandas,它们在数据处理和分析中发挥着重要作用。
一键难忘
2024/04/16
7630
再见Pandas,又一数据处理神器!
cuDF (Pandas GPU 平替),用于加载、连接、聚合、过滤和其他数据操作。
小F
2023/12/11
4230
再见Pandas,又一数据处理神器!
数据处理(三)| 深入数据预处理:提升机器学习模型性能的关键步骤
今天要和大家继续讲解机器学习中一个看似枯燥但至关重要的环节——数据预处理。前面已经讲解过数据清洗和数据评质量评估(点击跳转),如果你已看过,那你已经打下了坚实的基础!今天这篇内容会更聚焦于预处理的核心技巧,手把手教你如何将原始数据“打磨”成模型的最爱。
CoovallyAIHub
2025/03/03
2270
数据处理(三)| 深入数据预处理:提升机器学习模型性能的关键步骤
如何通过Maingear的新型Data Science PC将NVIDIA GPU用于机器学习
深度学习使我们能够执行许多类似人类的任务,但是如果是数据科学家并且没有在FAANG公司工作(或者如果没有开发下一个AI初创公司),那么仍然有可能会使用和旧的(好吧,也许不是那么古老)机器学习来执行日常任务。
代码医生工作室
2019/10/31
2K0
如何通过Maingear的新型Data Science PC将NVIDIA GPU用于机器学习
Python 实用技能 RAPIDS | 利用 GPU 加速数据科学工作流程
CSDN 叶庭云:https://yetingyun.blog.csdn.net/
叶庭云
2022/12/25
2.5K0
Python 实用技能 RAPIDS | 利用 GPU 加速数据科学工作流程
nvidia-rapids︱cuGraph(NetworkX-like)关系图模型
RAPIDS cuGraph库是一组图形分析,用于处理GPU数据帧中的数据 - 请参阅cuDF。 cuGraph旨在提供类似NetworkX的API,这对数据科学家来说很熟悉,因此他们现在可以更轻松地构建GPU加速的工作流程
悟乙己
2020/03/27
1.8K0
异构计算系列(二):机器学习领域涌现的异构加速技术
“异构计算”(Heterogeneous computing),是指在系统中使用不同体系结构的处理器的联合计算方式。在 AI 领域,常见的处理器包括:CPU(X86,Arm,RISC-V 等),GPU,FPGA 和 ASIC。(按照通用性从高到低排序)本文是 异构计算系列 的第二篇文章,重点介绍机器学习领域涌现的异构加速技术。
Zilliz RDS
2020/04/01
1.2K0
异构计算系列(二):机器学习领域涌现的异构加速技术
如何在 GPU 上加速数据科学
数据科学家需要算力。无论您是用 pandas 处理一个大数据集,还是用 Numpy 在一个大矩阵上运行一些计算,您都需要一台强大的机器,以便在合理的时间内完成这项工作。
AI研习社
2019/08/16
2K0
我的XGBoost学习经历及动手实践
知乎地址:http://www.zhihu.com/people/meng-di-76-92
Datawhale
2020/06/23
1.7K0
Cloudera机器学习中的NVIDIA RAPIDS
在本系列的上一篇博客文章中,我们介绍了在Cloudera Machine Learning(CML)项目中利用深度学习的步骤。今年,我们扩大了与NVIDIA的合作伙伴关系,使您的数据团队能够使用RAPIDS AI无需更改任何代码即可大大加快数据工程和数据科学工作负载的计算流程。Cloudera Data Platform上的RAPIDS预先配置了所有必需的库和依赖项,以将RAPIDS的功能带到您的项目中。
大数据杂货铺
2021/07/02
9970
Pandas、Numpy性能优化秘籍(全)
pandas、numpy是Python数据科学中非常常用的库,numpy是Python的数值计算扩展,专门用来处理矩阵,它的运算效率比列表更高效。pandas是基于numpy的数据处理工具,能更方便的操作大型表格类型的数据集。但是,随着数据量的剧增,有时numpy和pandas的速度就成瓶颈。
算法进阶
2022/06/02
3K0
Pandas、Numpy性能优化秘籍(全)
相关推荐
使用Python实现智能信用评分系统
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验