NVIDIA cuDF:GPU 加速的 DataFrame

NVIDIA cuDF 是一个开源 CUDA-X™ 数据科学库,可在 NVIDIA GPU 上加速 pandas、Polars 和 Apache Spark 等热门库,无需更改代码即可大幅加速 DataFrame 操作。cuDF 基于高度优化的 CUDA® 基元构建,可利用 GPU 并行和内存带宽来加速数据处理和分析工作流程。

开始使用:

加速 pandas加速 Polars加速 Apache Spark


主要特性

借助 NVIDIA GPU 更大限度地提高性能

cuDF 旨在更大限度地提高 GPU 性能,并使用低级 CUDA 基元优化核心 DataFrame 操作,这些基元充分利用了 NVIDIA GPU 的并行性和内存带宽。

无需更改代码即可加速

GPU 加速可以使用 cudf.pandas 和 Polars GPU 引擎等 API 兼容层无缝集成到现有的 pandas、Polars 或 Apache Spark 工作流中,无需更改代码。

与 Python 数据科学生态系统集成

cuDF 可轻松与 cuPy、Numba 和 scikit-learn 等热门 Python 数据科学库进行互操作,从而构建端到端 GPU 加速工作流。

高效处理内存

cuDF 基于 Apache Arrow 格式构建,可利用高效的列式数据结构、向量处理以及与其他加速库的零复制接口,从而更大限度地减少数据移动开销。

使用统一虚拟内存 (UVM) 处理更大的数据集

UVM 允许 cuDF 透明地管理系统 RAM 和 GPU 显存之间的数据传输,使您能够处理超过单个 GPU 显存的数据集,而无需显式显存管理。

扩展到分布式架构

DataFrame 工作流可通过 cuDF 跨多个 GPU 和计算节点进行扩展,cuDF 专为 Apache Spark 等环境中的分布式处理而构建。


开启 cuDF 可大幅提升 GPU 性能


试用 cuDF

pandas

pandas 提供灵活的数据操作 API。cuDF 通过加速 GPU 上的操作,使 pandas 更适用于大中型数据集,而无需更改代码。

Polars

Polars 以其性能和内存优化而闻名。经验 当您调用由 cuDF 提供支持的 GPU 引擎时,执行速度会更快。

Apache Spark

Apache Spark 是用于大规模数据处理的强大引擎。学习 如何使用 GPU 显著提升性能和成本效益。


通过 cuDF 加速 pandas

本节详细介绍 cuDF 如何无缝集成并加速您现有的 pandas 工作流程。

将 cuDF 直接集成到您的环境中,以加速 pandas。请按照以下步骤开始操作。

为 pandas 安装 cuDF

使用 conda 快速安装

1. 如果未安装,请下载并运行安装脚本。这将安装最新的 miniforge:

wget
"https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-$(uname)-$(uname -m).sh"
bash Miniforge3-$(uname)-$(uname -m).sh

2. 然后使用以下命令进行安装:

conda create -n rapids-25.06 -c rapidsai -c conda-forge -c nvidia  \
    cudf=25.06 python=3.13 'cuda-version>=12.0,<=12.8'

使用 pip 快速安装

Install via the NVIDIA PyPI index:

pip install \
    --extra-index-url=https://pypi.nvidia.com \
    "cudf-cu12==25.6.*"

请参阅 docker、WSL2 和各个库的完整安装选择器。

安装 Selector

无需更改代码即可实现 pandas 的 cuDF 加速

cuDF 通过 cuDF.pandas 模块实现零代码更改加速。此模块是 cuDF 包的一部分。加载以无缝加速您现有的 pandas 代码。在导入或使用 pandas 之前,请使用其中一种方法启用该功能。有关分步视觉指南,请观看视频

要加速 IPython 或 Jupyter Notebook,请使用魔术命令:

%load_ext cudf.pandas
import pandas as pd
...

要加速 Python 脚本,请在命令行中使用 Python 模块标志:

python -m cudf.pandas script.py
import pandas as pd
...

如果您无法使用命令行标志,请通过导入显式启用 cudf.pandas:

python -m cudf.pandas script.py
import pandas as pd
...

从分钟到秒:cuDF 加速 pandas

cudf.pandas 与传统 pandas v2.2 之间的标准 DuckDB 数据基准测试 (5 GB) 性能对比 (越低越好) 。

A chart showing how cuDF accelerates pandas from minutes to seconds

规格:硬件:NVIDIA L4,CPU:英特尔至强 8480CL | 软件:pandas v2.2.1、NVIDIA RAPIDS+ cuDF 24.02

在此处运行基准测试。

实战教程:在 Colab 上加速 pandas

cuDF 预安装在 Google Colab 中,因此入门非常简单。只需切换到 GPU 运行时,并在笔记本顶部启用 cudf.pandas,即可立即加速您的 pandas 工作流。探索这些入门套件,获取实战示例:

入门套件:构建交互式数据分析控制面板

此套件演示了如何使用 pandas 代码和 PyViz 库创建响应式控制面板,从而直接解决探索大规模数据 (例如,超过 730 万行的地理空间数据) 时的延迟问题。了解 cuDF 如何通过 GPU 加速实现几乎即时的交互式滤镜更新,且无需更改代码。

入门套件:处理 1800 万行库存数据

此套件展示了 cuDF 如何处理 pandas 中的大量时间序列数据,解决使用 groupby () .rolling () 计算简单移动平均线等瓶颈问题。了解 GPU 加速如何将处理时间从几分钟缩短到几秒。

入门套件:处理 8 GB 文本数据

此套件解决了 pandas 在大型字符串字段以及读取文件、计算字符串长度和合并 DataFrame 等内存密集型操作中遇到的减速问题,从而实现了大规模的端到端加速。

cuDF 如何加速 pandas

启用 cudf.pandas 后,它会转换 pandas 操作的执行方式,充当透明拦截 pandas 调用的代理。它尝试首先在 GPU 上执行这些操作,利用 cuDF 高度优化的 GPU 加速功能。如果 GPU 不支持特定操作,它会回退到 CPU,从而确保您的代码继续运行而不会出错。这种无缝的“GPU 优先,CPU 回退”机制允许您继续使用熟悉的 pandas 语法和功能,同时受益于显著的性能提升。

此方法可确保您现有的 pandas 代码 (包括使用 pandas 的第三方库中的操作) 通常按原样运行,而无需针对 GPU 进行手动修改。

如需详细了解底层架构以及 cudf.pandas 如何实现这种无缝加速,请参阅我们的文档

A flowchart of how cuDF accelerates pandas

使用 cuDF 加速 Polars

本节详细介绍由 cuDF 提供支持的 Polars GPU 引擎如何无缝集成和加速您的 Polars 工作流。

将 Polars GPU 引擎直接集成到您的环境中,以加速 Polars。请按照以下步骤开始操作。

安装支持 GPU 的 Polars

只需使用 GPU 功能标志来安装 Polars 即可。

pip install polars[gpu]

将 Polars 配置为使用 GPU 引擎

通过配置引擎,为 Polars 运算激活 GPU 加速。您可以使用默认的 GPU 引擎,也可以对其进行自定义以实现更精细的控制。

默认 GPU 引擎

通过调用 .collect (engine = "gpu") ,将 Polars LazyFrame 具体化为具有默认 GPU 引擎配置的 DataFrame:

import polars as pl

ldf = pl.LazyFrame({"a": [1.242, 1.535]})

print(
    ldf.select(
        pl.col("a").round(1)
    ).collect(engine="gpu")
)

自定义 GPU 引擎

为了更好地控制引擎,您可以将具有设备详细信息和详细程度等其他配置的 GPU 引擎对象传递给 engine = 参数:

import polars as pl

ldf = pl.LazyFrame({"a": [1.242, 1.535]})

gpu_engine = pl.GPUEngine(
    device=0,  # This is the default
    raise_on_fail=True,  # Fail loudly if can't execute on the GPU
)

print(
    ldf.select(
        pl.col("a").round(1)
    ).collect(engine=gpu_engine)
)

将 Polars 工作流程加速高达 13 倍

在复杂的 groupby 和 join 操作中执行计算量最大的查询
( PDS-H 基准测试 | 80 GB 数据集)

 A chart showing how cuDF accelerate Polars workflows up to 13x

查询编号

性能随着数据规模的增长而提升

各种数据集的查询处理时间

A chart showing how cuDF improves Polars performance as data size grows

规格:PDS-H 基准测试 | GPU:NVIDIA H100 | CPU:英特尔至强 W9-3495X ( Sapphire Rapids) | 存储:本地 NVME
注意:注意:PDS-H 源自 TPC-H,但这些结果无法与 TPC - H 结果相美。

在此处运行基准测试。

实战教程:在 Colab 上加速 Polars

Polars GPU 引擎预安装在 Google Colab 中,因此入门非常简单。只需切换到 GPU 运行时,GPU 引擎即可立即加速您的 Polars 工作流。探索以下实战资源:

入门套件:在数秒内处理 1 亿行交易数据

此套件展示了 Polars GPU 引擎如何在两秒内处理 1 亿行数据。了解如何使用它处理通常会导致减速的大型交易数据集。

cuDF 如何加速 Polars

Polars 已经是一个高性能的 DataFrame 库,其设计具有多线程执行、高级内存优化和延迟评估功能。借助这些功能,Polars 可以高效地处理开箱即用的大中型数据

Polars GPU 引擎进一步发挥了这些优势。通过将 cuDF 的速度提升到 Polars 的效率,您可以实现更快的执行速度,在数秒内处理数亿行。

GPU 引擎直接内置于 Polars Lazy API 中,其工作原理是先尝试在 GPU 上执行运算,然后在必要时退回到 CPU。这种方法可确保您可以继续使用熟悉的 Polars 语法和函数,同时受益于增强的 GPU 加速。

如需深入了解 Polars GPU 引擎的架构和基础机制,请查看 Polars 官方博客文章


使用 cuDF 加速 Apache Spark

本节详细介绍 cuDF 如何利用 NVIDIA GPU 无缝集成并显著增强 Apache Spark 工作负载的性能和成本效益。

无论您是在本地部署还是在云端部署,Apache Spark 提取、转换、加载 (ETL) 和机器学习工作负载的加速均设计为简单直接。

启动路径

按照我们的指南操作。请参阅下文,了解总体概述:

使用 RAPIDS Accelerator for Apache Spark 插件 jar 启动 Spark,并启用配置设置:

spark.conf.set('spark.rapids.sql.enabled','true')

以下是在 GPU 上运行运算符的物理规划示例:

== Physical Plan ==
GpuColumnarToRow false
+- GpuProject [cast(c_customer_sk#0 as string) AS c_customer_sk#40]
   +- GpuFileGpuScan parquet [c_customer_sk#0] Batched: true, DataFilters: [], Format: Parquet, Location: InMemoryFileIndex[file:/tmp/customer], PartitionFilters: [], PushedFilters: [], ReadSchema: struct<c_customer_sk:int>

以远低于成本实现出色性能

NVIDIA 决策支持基准测试3 TB
AWS EC2、Apache Spark 3.4.1、Spark RAPIDS 版本 24.04

A chart showing how cuDF leverages NVIDIA GPUs to enhance performance of Apache Spark workloads A chart showing how cuDF leverages NVIDIA GPUs to reduce costs of Apache Spark workloads

每个设置中包含 8 个节点的集群:
CPU - r6id.8 xlarge - 32 vCPU,256GB,1x1900 NVMe SSD,12.5 Gb/s 网络
GPU - g6.8 xlarge - 32vCPU,1 个 L4 GPU,128GB,NVMe SSD,25 Gb/s 网络
* 包含 NVAIE,每 GPU/ 小时 1 美元

在此处运行基准测试。

开始使用 Apache Spark 的 cuDF 加速

了解如何显著加速企业级数据工作负载,从而大幅节省成本。

使用 Apache Spark 扩展数据分析

了解 GPU 如何加速企业级 Apache Spark 工作流程,从而推动成本节约。

cuDF 如何加速 Apache Spark

NVIDIA cuDF 通过集成为 Spark 插件来增强 Apache Spark 工作流。安装和配置后,它会自动检测可用的 GPU,并利用它们执行受支持的操作。

其工作原理是将 Spark SQL 和 DataFrame 操作的后端替换为 GPU 加速版本。如果 GPU 不支持某项操作,加速器会回退到标准 Spark CPU 实现。这种基于插件的方法可以轻松与主要的 Spark 平台集成,包括 AWS EMR、GCP Dataproc、OCI 和 Databricks。

如需深入了解底层架构、支持的操作和集成,请参阅用户指南

  A flowchart of how cuDF accelerates Apache Spark

NVIDIA 数据科学培训

Data Science Learning Path From the NVIDIA DLI

NVIDIA 深度学习培训中心 (DLI) 的数据科学学习路径

Self-Paced Course: Accelerate Data Science Workflows With Zero Code Changes

自主课程:无需更改代码即可加速数据科学工作流程

Get Certified in Accelerated Data Science

获得加速数据科学认证

加入社区

Join NVIDIA CUDA-X Data Science Libraries Slack Community

加入 Slack 上的加速数据科学社区

Sign Up for NVIDIA Data Science Newsletter

注册以接收数据科学时事通讯


伦理 AI

NVIDIA 认为值得信赖的 AI 需要大家共同承担责任,因此我们已建立政策和规范,帮助各类 AI 应用的开发。在依据我们的服务条款下载或使用相关内容时,开发者应与团队协作,确保应用符合所在行业和使用场景的各项要求,并应重视意外产品滥用的问题。

如需报告安全漏洞或就 NVIDIA AI 表达疑虑,请单击此处提交反馈。

立即开始使用 NVIDIA cuDF。

文档