由 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上提出问题,项目贡献者将尽快回复。