数据科学

RAPIDS cuDF 可将 pandas 加速近 150 倍,且无需更改代码

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

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

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

去年秋天,RAPIDS 发布了 cuDF 的公测版,通过统一的 CPU/GPU 用户体验,将加速计算引入 Pandas 工作流程,且无需更改代码。在 GTC 2024 上,NVIDIA 宣布 Pandas 的 cuDF 加速现已在最新版本 RAPIDS v24.02 中正式推出。此功能将由 NVIDIA AI Enterprise 5.0 在春季晚些时候推出。

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

在视频中,您可以看到相同的 pandas 工作流在 Jupyter Notebook 中并行运行:一个使用仅支持 CPU 的 pandas,另一个加载 cudf.pandas 扩展程序以使用 RAPIDS cuDF 加速 pandas。

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

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

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

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

此功能专为希望在数据大小增加到千兆字节且性能降低时继续使用 pandas 的数据科学家而构建。当 cuDF 加速 pandas 时,如果可能,操作将在 GPU 上运行,否则将在 CPU (使用 pandas) 上运行。cuDF 根据需要在 GPU 和 CPU 之间进行同步。这可实现统一的 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 数据库的操作基准测试来比较不同 DataFrame 和 SQL 引擎在一系列常见分析任务(如数据连接或按组计算统计测量)上的性能。该基准测试最初由 H2O.ai 开发。

借助 5 GB 的数据,pandas 的性能会变得缓慢,需要几分钟的时间才能按运算执行一系列加入和高级分组。

过去,使用 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.
图 1、 标准 DuckDB 数据基准测试 (5 GB) cuDF.pandas 与传统 pandas v2.2 的性能比较

硬件: NVIDIA Grace Hopper,CPU:英特尔至强铂金 8480C | 软件:pandas v2.2、RAPIDS cuDF 23.10

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

结束语

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

只需一个命令,您就可以使用 cuDF 将加速计算引入 pandas 工作流程,而无需更改代码。基于处理 5 GB 数据集的分析基准测试,您可以将处理速度提高 150 倍。

尝试使用 pandas 的 cuDF 加速功能,通过以下链接在 Google Colab 的免费 GPU 支持环境中打开详细的 Notebook:http://nvda.ws/rapids-cudf

想要了解更多相关信息,请访问 RAPIDS 网站上的 cuDF pandas 页面。

 

Tags