今天,Polars 发布了一款由 RAPIDS cuDF 提供支持的新型 GPU 引擎,可在 NVIDIA GPUs 上将 Polars 工作流的速度提升高达 13 倍,使数据科学家能够在单台机器上在数秒内处理数亿行数据。
日益增长的数据挑战
像 pandas 这样的传统数据处理库是单线程的,超过数百万行数据的使用已变得不切实际。分布式数据处理系统可以处理数十亿行,但会增加处理中小型数据集的复杂性和开销。
在高效处理数十万行到数百万行数据的工具方面存在差距。此类工作负载在金融、零售和制造等行业的模型开发、需求预测和物流中很常见。
Polars 是面向数据科学家和工程师的发展最快的 Python 库之一,专为应对这些挑战而从头开始设计。它使用高级查询优化来减少不必要的数据移动和处理,使数据科学家能够在单台机器上大规模地顺利处理数以亿计行的工作负载。Polars弥合了单线程解决方案速度过慢与分布式系统增加不必要复杂性的差距,提供了一个有吸引力的“中等规模”数据处理解决方案。
将 NVIDIA 加速计算引入 Polars
与其他仅使用 CPU 的数据操作工具相比,Polars 可利用多线程执行、高级内存优化和延迟评估,提供开箱即用的显著加速。
然而,随着各行各业的组织面临着日益增长的数据处理需求——从分析数十亿笔金融交易到管理复杂的库存系统——甚至需要更高的性能。这正是加速计算发挥作用的地方:
cuDF 是 NVIDIA RAPIDS CUDA-X 库套件的一部分。这是一个 GPU 加速的 DataFrame 库,利用 GPU 的大规模并行性显著提高数据处理性能。
Polars 团队与 NVIDIA 合作,将 cuDF 的速度添加到 Polars 的效率中,从而进一步将性能提升至 CPU 上的 Polars 的 13 倍。这使用户能够在数据处理工作负载增长到数亿甚至数十亿行数据时,保持交互式体验。
用户直接内置于 Polars Lazy API 中,只需通过 pip 安装 polars[gpu]
并将 [engine=”gpu”]
传递给收集操作,即可为其工作流程实现 GPU 加速。在幕后,Polars 将尝试先在 GPU 上执行操作,然后在必要时返回 CPU。这种方法可确保:
- 使用 Polars 的查询优化器实现高效执行并尽可能减少内存占用。
- 用户无需更改现有Polars代码即可访问GPU引擎。
- 与 Polars 日益壮大的数据可视化、I/O 和机器学习库生态系统完全兼容
pip install polars[gpu] --extra-index-url=https://pypi.nvidia.com
import polars as pl
(transactions
.group_by("CUST_ID")
.agg(pl.col("AMOUNT").sum())
.sort(by="AMOUNT", descending=True)
.head()
.collect(engine="gpu"))
结束语
由 RAPIDS cuDF 提供支持的 Polars GPU 引擎现在已经推出公开测试版,为各行各业的数据科学家和工程师提供了一款强大的中等规模数据处理工具。它可以在 NVIDIA GPUs 上将 Polars 工作流加速高达 13 倍,高效地处理数亿行的数据集,而不会占用分布式系统的开销。Polars GPU 引擎直接内置于 Polars API 中,便于每位用户轻松访问。
Polars GPU 引擎入门
查看以下资源以了解详情并开始使用Polars GPU引擎:
- 入门 notebook 可在 GitHub 和 Colab 上获取。
- Polars 发布博客
- Polars 用户指南