NVIDIA/cudf

cuDF - GPU DataFrame Library

NVIDIA cuDF – GPU加速数据帧

是什么 – cuDF是一组库,让你能够在NVIDIA GPU上处理表格数据(CSV、Parquet等)。它镜像了pandas API,因此你可以直接替换pandas代码,并将相同的操作(读取、过滤、分组、连接等)在GPU而不是CPU上运行。核心是一个C++库(libcudf),具有Arrow兼容的列式结构,并通过pylibcudf和高层cudf包提供Python绑定。额外的适配器让cuDF支持Polars(cudf-polars)和Dask(dask-cudf)。

为什么对AI/ML重要 – 大多数数据科学流程从需要清洗、重塑和聚合的大规模表格开始,然后才能输入模型。cuDF加速了这些步骤,通常将预处理时间从数分钟缩短到数秒,从而加快模型迭代并支持更大数据集。

关键组件

  • libcudf – 带有Arrow兼容列容器和低级算法的CUDA C++核心。
  • pylibcudf – 将核心暴露给Python的Cython绑定。
  • cudf – 与pandas兼容的DataFrame库;还提供cudf.pandas,实现现有pandas脚本的零代码更改加速。
  • cudf-polars – Polars DataFrame库的GPU引擎。
  • dask-cudf – 支持GPU的Dask DataFrames,用于分布式工作负载。

安装(选择一种)

# 通过pip – 选择与CUDA版本匹配的后缀
pip install cudf-cu13   # 适用于CUDA 13
pip install dask-cudf-cu13
# …或适用于CUDA 12
pip install cudf-cu12
# 通过conda – 使用RAPIDS频道
conda install -c rapidsai cudf dask-cudf

对于开发版本,请添加夜间频道(-c rapidsai-nightly)。

快速示例 – 与pandas相同的代码,但在GPU上运行:

import cudf

# 将Parquet文件直接加载到GPU内存
df = cudf.read_parquet('data.parquet')

# 删除包含任何null的行,按两列分组并计算平均值
result = df.dropna().groupby(['A', 'B']).mean()
print(result)

你也可以不加修改地运行现有的pandas脚本:

python -m cudf.pandas my_script.py

或者在Jupyter笔记本中:

%load_ext cudf.pandas
import pandas as pd   # 现在在GPU上运行

对于Polars用户:

import polars as pl
lf = pl.scan_parquet('data.parquet')
out = lf.drop_nulls().group_by(['A', 'B']).mean().collect(engine='gpu')

社区与贡献 – 错误和功能请求通过GitHub问题跟踪器提交。讨论在RAPIDS Slack工作区进行。我们欢迎按照标准的NVIDIA RAPIDS贡献指南进行贡献。


cuDF是一个真正的、生产级的GPU数据处理库,完美契合现代AI/ML流程。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目