由 cuDF 驱动的 Polars GPU 引擎 [开放测试版]

将加速计算带入 Polars

零代码改动

在 Polars 的 collect API 中传递 engine="gpu",即可为您的数据处理任务(如数据聚合、合并、窗口函数等)添加 GPU 加速。


生态系统兼容

Polars 不断发展的生态系统,包括数据可视化、IO 和机器学习库,都可以通过 GPU 引擎获得加速。

无缝 CPU 回退

对于 cuDF 不支持一个或多个操作的查询,整个查询执行将平稳回退到默认的 CPU 引擎。


查询优化器

GPU 引擎利用 Polars 的查询优化器,确保高效执行并最大限度地减少内存使用。

在数秒内处理数亿行数据

性能随数据规模增长而提高

将 Polars 工作流加速高达 13 倍

PDS-H 基准测试 | GPU: NVIDIA H100 | CPU: Intel Xeon W9-3495X (Sapphire Rapids) | 存储:本地 NVMe
注意:PDS-H 源自 TPC-H,但这些结果与 TPC-H 结果不可比。了解更多

入门

使用 pip 安装 Polars,并指定 GPU 引擎“extra”及 NVIDIA PyPI 索引

pip install polars[gpu] --extra-index-url=https://pypi.nvidia.com

默认 GPU 引擎

通过调用 .collect(engine="gpu"),使用默认 GPU 引擎配置将 Polars LazyFrame 具化为 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 引擎

为了更精细地控制引擎,您可以将一个 GPUEngine 对象作为 engine= 参数传递,其中包含设备详细信息和日志级别等额外配置。

import polars as pl

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

gpu_engine = pl.GPUEngine(
    device=0,  # 这是默认值
    raise_on_fail=True,  # 如果无法在 GPU 上执行则大声报错
)

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

常见问题

以下命令将安装 Polars 及所需的 RAPIDS 软件包
pip install polars[gpu] --extra-index-url=https://pypi.nvidia.com

是的,您可以通过安装 WSL2(需要 Windows 11 或更高版本)在 Windows 机器上使用 Polars GPU 引擎。有关下载和故障排除说明,请访问 RAPIDS 安装页面。

目前,GPU 引擎仅支持 Polars 的 Python API。

GPU 引擎目前支持大多数核心表达式和数据类型,但并非全部。有关支持表达式的详细列表,请访问 Polars 网站上的GPU 支持页面

Polars GitHub上提出问题,项目贡献者将尽快回复。

用 RAPIDS 加速 Polars

立即试用

Google Colab 上试用 Polars GPU 引擎

了解更多

Polars GPU 支持页面 上了解更多

分享反馈

Polars GitHub 仓库 上分享反馈