数据科学

RAPIDS cuDF 可将 pandas 的速度提升近 150 倍,且无需更改代码

 

NVIDIA 宣布,RAPIDS cuDF 现在可以为 950 万 Pandas 用户带来 GPU 加速,而无需他们更改代码。

pandas 是一个灵活而强大的 Python 数据分析和操作库,由于其易于使用的 API,因此是数据科学家的首选。但是,随着数据集大小的增长,它在 CPU 系统中的处理速度和效率会受到影响。

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

随着最新版 RAPIDS v23.10 的发布,cuDF 现可通过其全新功能,在不更改代码的情况下,通过统一的 CPU / GPU 用户体验为 Pandas 工作流程带来加速计算,pandas 加速器模式。它现在已在开源平台中推出RAPIDS v23.10作为公测版发布,并将在NVIDIA AI Enterprise即将推出。

视频 1.借助 RAPIDS cuDF 将 Pandas 的运行速度提高近 150 倍

在视频中,您可以看到相同的 pandas 工作流并行运行:一个使用仅支持 CPU 的 pandas,另一个在 RAPIDS cuDF 中使用 pandas 加速器模式。

为 pandas 工作流程带来统一的 CPU/GPU 体验

cuDF 一直使用类似于 pandas 的 API 为用户提供出色的 DataFrame 库性能。但是,采用 cuDF 有时需要一些变通方法:

  • 处理 cuDF 中尚未实现或支持的任何 pandas 功能。
  • 为需要在异构硬件上运行的代码库中的 CPU 和 GPU 执行设计单独的代码路径。
  • 在与其他 PyData 库或专为 Pandas 设计的组织专用工具交互时,手动切换 cuDF 和 pandas.

从 RAPIDS 的v23.10 版本开始,除了现有的纯 GPU 体验之外,cuDF 现在还提供了 pandas 加速器模式来应对这些挑战。

此功能专为数据科学家而打造,随着数据大小增加到千兆字节,pandas 性能降低,他们希望继续使用 pandas.在 cuDF 的 pandas 加速器模式下,操作尽可能在 GPU 上执行,否则在 CPU (使用 pandas)上执行,根据需要在后台进行同步。这实现了统一的 CPU/GPU 体验,为您的 pandas 工作流程带来一流的性能。

在最新版本中,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 工作流程带来出色性能

随着数据大小扩展到 GB,由于性能较慢,使用 pandas 通常会变得具有挑战性,导致一些数据科学家勉强放弃他们喜欢的 pandas API.借助新的 RAPIDS cuDF,您可以继续将 pandas 用作主要工具,并获得更高性能。

您可以通过运行 pandas 部分的热门游戏,类似于 DuckDB 数据库的 Ops 基准测试,这是最初由 H2O.ai 开发的。DuckDB 的基准测试设置可以在一系列常见的分析任务(例如将数据连接在一起或按组计算统计测量)上比较基于 CPU 的热门 DataFrame 和 SQL 引擎。

使用 5 GB 数据时,pandas 的性能会变得缓慢,执行一系列 join 和高级 groupby 操作需要几分钟时间。

过去,使用 cuDF 而不是 pandas 运行此基准测试需要更改代码并解决缺失的功能。使用 cuDF 的新 pandas 加速器模式,这不再是问题。您可以保持不变地运行 pandas 基准测试代码并实现显著加速,在大多数操作中使用 GPU,在一小部分操作中使用 CPU,以确保工作流程成功。

结果非常出色。cuDF 统一的 CPU/GPU 体验可将处理时间缩短为 1 到 2 秒,且无需更改代码(图 1)。

Bar chart shows a 150x speed increase using pandas with RAPIDS cuDF on NVIDIA Grace Hopper. The 10 join operations take only 1 second with RAPIDS cuDF as opposed to 336 seconds with pandas on CPU, while the 10 groupby advanced operations take 2 seconds with RAPIDS cuDF compared to 288 seconds with pandas on CPU.
图 1. 性能比较传统 pandas英特尔至强铂金 8480CL CPU 上的 v1.5 和 NVIDIA Grace Hopper 上搭载 RAPIDS cuDF 的 pandas v1.5

如果您想了解更多关于这些基准测试结果以及如何重现这些结果的信息,请参阅 cuDF 文档

结束语

pandas 是 Python 生态系统中最热门的 DataFrame 库,但随着 CPU 上数据大小的增长,它的速度会降低。

随着 RAPIDS v23.10 版本中 cuDF 的 pandas 加速器模式现已提供公测版,您现在可以在无需更改代码的情况下将加速计算引入 pandas 工作流。基于处理 5 GB 数据集的分析基准测试,您可以将处理速度提高 150 倍。

采用 cuDF 的全新 pandas 加速器模式,在 Google Colab 上的免费 GPU 支持环境中运行使用此详细的 Notebook 演示试驾

如需获取更多信息,请参阅 cuDF pandas 加速器模式 在 RAPIDS 网站上的页面。

 

Tags