HyperAI超神经
Back to Headlines

Polars GPU引擎新技巧:轻松处理超大显存数据集

3 days ago

在金融量化、算法交易和欺诈检测等领域,数据处理者经常需要处理数百吉字节(GB)的数据以做出快速且明智的决策。Polars 是一个快速增长的数据处理库,它通过 NVIDIA cuDF 驱动的 GPU 引擎来加速这些领域的计算密集型查询。然而,当数据集的大小超过 GPU 的显存容量(VRAM)时,会遇到问题。本文介绍了两种在 Polars GPU 引擎中克服这一限制的方法:统一虚拟内存(UVM)和多 GPU 流式执行。 统一虚拟内存(UVM):单 GPU 灵活性 当数据集大小开始超出 GPU 显存时,可以利用 NVIDIA 的 UVM 技术。UVM 在系统 RAM(主机内存)和 GPU VRAM(设备内存)之间创建了一个统一的内存空间。这使得 Polars GPU 引擎可以在显存不足时将数据溢出到系统 RAM,从而防止内存不足错误,并允许处理大于显存容量的数据集。当 GPU 需要访问当前位于系统 RAM 中的数据时,这些数据会自动传输到显存中进行处理。 这种方法适用于单个 GPU 的场景,尤其适合处理比可用显存稍大的数据集。虽然 UVM 可以几乎不修改代码就提供无缝体验,但数据在系统 RAM 和显存之间的迁移可能会导致性能开销。通过使用 RAPIDS 内存管理器(RMM),可以对 GPU 内存分配进行精细控制,从而显著减少这种性能成本。 多 GPU 流式执行:TB 级性能 对于处理几百 GB 到几 TB 规模数据集的用户,Polars GPU 引擎现在提供了一个实验性的多 GPU 流式执行配置。与标准的内存执行方式不同,流式执行器引入了数据分区和并行处理能力,旨在跨多个 GPU 分布工作负载。 流式执行器的核心机制是将 Polars 生成的优化内部表示(IR)图重写为分批执行的图,然后根据数据大小和可用工作的数量进行分区。流式执行器采用基于任务的执行模型,每个分区独立处理,允许多个任务并行执行。 在测试中,团队使用 PDS-H 基准在 3TB 规模上展示了强大的性能,处理所有 22 个查询仅需几秒钟。感兴趣的用户可以查看示例笔记本,尝试在自己的数据集上使用多 GPU 流式执行。 如何选择合适的方案 UVM 和多 GPU 流式执行都是 powerful 方法,可以在 Polars GPU 引擎中处理超出 GPU 显存容量的数据。最佳选择取决于具体需求。如果数据集规模较小且仅需单个 GPU 处理,UVM 是一种灵活且简单的解决方案;而多 GPU 流式执行则更适合处理超大规模数据集。 业内评价与公司背景 Polars 的 GPU 引擎凭借其高效的数据处理能力,迅速获得了金融和技术行业的认可。NVIDIA cuDF 的支持进一步提升了其处理大数据的能力,使其成为处理复杂数据任务的理想工具。业内专家认为,这两种方法的引入不仅解决了现有技术的瓶颈,还为未来的数据处理技术发展奠定了基础。Polars 的目标是让数据科学家和工程师能够更高效地处理大规模数据集,而这些新的功能正朝着这个方向迈进。

Related Links