RAPIDS cuDF将pandas提速近150倍

描述

在 NVIDIA GTC 2024 上,NVIDIA 宣布,RAPIDS cuDF 当前已能够为 950 万 pandas 用户带来 GPU 加速,且无需修改代码。

目前,NVIDIA 再次对这一应用进行了更新:现在无需在 Google Colab 中修改代码,即可直接使用 RAPIDS cuDF 为 pandas 提供加速。现在即可尝试在 Colab notebook 中使用这一教程。

pandas 是一个灵活且强大的 Python 数据分析和处理程序库,因其是易于使用的 API,已成为数据科学家的首选。但随着数据集规模的扩大,其在仅使用 CPU 的系统中的处理速度和效率方面遇到了挑战。

RAPIDS 是一套开源的 GPU 加速 Python 程序库,旨在改进数据科学和分析工作流。RAPIDS cuDF 是一个 GPU DataFrame 程序库,其提供了一个类似 pandas 的 API,用于加载、过滤和操作数据。cuDF 的早期版本只适用于 GPU 开发工作流程。

去年秋季,RAPIDS 发布了 cuDF 版本。该版本通过开放测试版中统一的 CPU/GPU 用户体验,在不修改代码的情况下将加速计算引入到 pandas 工作流中。在 GTC 2024 上,NVIDIA 宣布在新发布的 RAPIDS v24.02 中正式推出 cuDF 加速 pandas 功能。NVIDIA AI Enterprise 5.0 将在晚些时候支持这一功能。

两个相同的 pandas 工作流在 Jupyter notebook 中并列运行。其中一个使用了仅搭载 CPU 的 pandas,另一个则加载了 cudf.pandas 扩展,以便可以使用 RAPIDS cuDF 加速 pandas。

将统一的 CPU/GPU 体验

引入 pandas 工作流

cuDF 一直使用类似于 pandas 的 API 为用户提供卓越的 DataFrame 程序库性能。但使用 cuDF 有时需要采取变通方法:

对 cuDF 中尚未实现或支持的任何 pandas 功能采取变通方法。

在必须在异构硬件上运行的代码库中,为执行 CPU 和 GPU 设计单独的代码路径。

在与其他 PyData 程序库或专为 pandas 设计的、特定于组织的工具进行交互时,需要手动切换 cuDF 和 pandas。

在 24.02 版本中,除了提供现有的仅 GPU 使用体验外,cuDF 还能在无需更改代码的情况下加速 pandas,以应对这些挑战。

该功能专为数据科学家而设计,旨在即使数据规模增长到千兆字节、性能降低时仍然可以继续使用 pandas。当 cuDF 加速 pandas 时,在可能的情况下操作将在 GPU 上运行,否则将在(使用 pandas 的)CPU 上运行。这实现了统一的 CPU/GPU 体验,为用户自己的 pandas 工作流带来了领先的性能。

随着 GA 版本的发布,cuDF 可提供以下功能:

无需更改代码的加速:只需加载 cuDF Jupyter Notebook 扩展或使用cuDF Python 模块选项。

兼容第三方程序库:pandas 加速器模式与大多数在 pandas 对象上运行的第三方程序库兼容,甚至可以加速这些库中的 pandas 操作。

统一的 CPU/GPU 工作流:使用单一代码路径进行开发、测试和生产运行,不受硬件限制。

如要将 GPU 加速功能引入 Jupyter notebook 中的 pandas 工作流,请加载 cudf.pandas 扩展:

 

%load_ext cudf.pandas
import pandas as pd

 

如要在运行 Python 脚本时访问,请使用 cudf.pandas 模块选项:

 

python -m cudf.pandas script.py

 

为 pandas 工作流带来顶尖的性能

当数据规模达到千兆字节时,pandas 往往会因为性能较慢而变得在使用过程中面临较多挑战,导致一些数据科学家不得不放弃他们喜爱的 pandas API。有了新的 RAPIDS cuDF,就可以继续将 pandas 作为主要工具使用并获得顶尖的性能。

用户可以通过运行流行的 DuckDB Database-like Ops Benchmark 中的 pandas 部分来了解这一点,该基准测试最初由 H2o.ai 开发。DuckDB 的基准测试方式是将一系列常见分析任务,例如将数据连接在一起或计算每组的统计量作为基准,来比较基于 CPU 的流行 DataFrame 和 SQL 引擎的性能。

在数据量为 5 GB 的情况下,pandas 的性能大幅下降,变得非常慢,仅仅执行一系列连接和高级分组操作就需要数分钟时间。

以往使用 cuDF 代替 pandas 运行此基准测试时,需要更改代码并解决功能缺失的问题。现在,借助 cuDF 的全新 pandas 加速模式,这个问题迎刃而解。用户可以在不改变pandas基准代码的情况下运行该基准测试,而且速度将大幅提升。其中的大部分操作由 GPU 执行,小部分操作由 CPU 执行,保证了工作流的顺利操作。

这样操作所取得的结果非常出色。cuDF 的统一 CPU/GPU 体验无需更改代码,即可将处理时间从原本几分钟缩短至 1 到 2 秒(图 1)。

NVIDIA

图 1.cuDF.pandas 与传统 pandas v2.2 在标准 DuckDB 数据基准测试(5 GB)中的性能比较

硬件:NVIDIA Grace Hopper;CPU:英特尔 Xeon Platinum 8480C|软件:pandas v2.2、RAPIDS cuDF 23.10

结语

pandas 是 Python 生态系统中最流行的 DataFrame 程序库,但它的速度会随着 CPU 上数据量的增加而变慢。

现在只需一条命令,用户就可以在无需更改代码的情况下,使用 cuDF 将加速计算引入到其 pandas 工作流中。根据数据集大小为 5 GB 的分析基准测试结果,处理时间缩短到原来的 150 分之一。

您可参考详细的教程在 Google Colab 上的免费 GPU 环境中试用 cuDF 的 pandas 加速功能。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分