NVIDIA 的 RAPIDS cuDF 使 pandas 在大型数据集上的性能提升了 30 倍

realtime news  Aug 10, 2024 11:09  UTC 03:09

1 Min Read

NVIDIA 推出了 RAPIDS cuDF 的新功能,大大提升了 pandas 库在处理大型和文本密集型数据集时的性能。据 NVIDIA 技术博客 称,这些增强功能使数据科学家能够将工作负载加速高达 30 倍。

RAPIDS cuDF 和 pandas

RAPIDS 是一套开源 GPU 加速的数据科学和 AI 库,而 cuDF 是其用于数据加载、连接、聚合和过滤的 Python GPU DataFrame 库。pandas 是一个广泛使用的 Python 数据分析和操作库,在数据集规模增长时,尤其是在仅使用 CPU 系统时,处理速度和效率方面面临挑战。

在 GTC 2024 上,NVIDIA 宣布 RAPIDS cuDF 可以在无需更改代码的情况下将 pandas 加速近 150 倍。随后,Google 宣布 RAPIDS cuDF 默认在 Google Colab 上可用,使它对数据科学家更加可访问。

解决限制

用户对初始版 cuDF 的反馈指出了几个限制,特别是受加速影响的数据集的大小和类型:

  • 为了实现最大加速,数据集需要适应 GPU 内存,限制了可以执行的数据操作的大小和复杂性。
  • 文本密集型数据集面临约束,cuDF 最初版仅支持列中最多 21 亿个字符。

为了解决这些问题,最新发布的 RAPIDS cuDF 包括:

  • 优化的 CUDA 统一内存,允许对较大数据集和更复杂工作负载的加速高达 30 倍。
  • 扩展的字符串支持,从列中的 21 亿个字符扩展到 21 亿行的表格文本数据。

借助统一内存加速数据处理

cuDF 依靠 CPU 回退以确保无缝体验。当内存需求超过 GPU 容量时,cuDF 会将数据转移到 CPU 内存中并使用 pandas 进行处理。然而,为了避免频繁的 CPU 回退,数据集最好能适应 GPU 内存。

借助 CUDA 统一内存,cuDF 现在可以将 pandas 工作负载扩展到超过 GPU 内存。统一内存提供了覆盖 CPU 和 GPU 的单一地址空间,允许虚拟内存分配超过可用的 GPU 内存,并根据需要迁移数据。这有助于最大化性能,尽管数据集仍应适应 GPU 内存以实现峰值加速。

基准测试显示,在具有 16 GB 内存的 GPU 上使用 cuDF 对 10 GB 数据集进行数据连接时,与仅使用 CPU 的 pandas 相比,可以实现高达 30 倍的加速。这是一个显著的改进,尤其是在处理超过 4 GB 的数据集时,以前由于 GPU 内存限制而面临性能问题。

大规模处理表格文本数据

原始 cuDF 版本在列中具有 21 亿字符的限制,为大型数据集带来了挑战。随着新版本的发布,cuDF 现在可以处理多达 21 亿行的表格文本数据,使 pandas 成为生成式 AI 管道中数据准备的可行工具。

这些改进使 pandas 代码执行速度更快,特别是对于像产品评论、客户服务记录以及包含大量位置或用户 ID 数据的文本密集型数据集。

开始使用

这些功能可以通过 RAPIDS 24.08 获取,该版本可以从 RAPIDS 安装指南 下载。请注意,统一内存功能仅在基于 Linux 的系统上受支持。



Read More