NVIDIA 宣布推出 cuDF pandas 加速器模式

A comprehensive repository of Taiwan's data and information.
Post Reply
mostakimvip06
Posts: 324
Joined: Mon Dec 23, 2024 5:03 am

NVIDIA 宣布推出 cuDF pandas 加速器模式

Post by mostakimvip06 »

今天,NVIDIA 宣布为其 cuDF 软件包推出“pandas 加速器模式”,让您能够用 Python 编写高性能 pandas 代码来处理数据。这是朝着编写可读性强且运行速度快(即使在大型数据集上)的 Python 代码的梦想迈出的又一步。

在这篇文章中,我们将阐述它如何帮助您、如何开始以及有哪些替代方案。

迈向高性能 pandas 代码的梦想
熊猫的问题
pandas 是最受欢迎的 Python 数据处理包,上个月下载量达1.44 亿次。pandas 的受欢迎程度很大程度上源于其易用性和丰富的数据处理功能。

不幸的是,Pandas 的开发历史很长(2011 年首次公开发布),这意味着它早于高性能计算 (HPC) 领域的许多创新。这意味着 Pandas 代码运行速度太慢,不适用于大型数据集。

多次尝试让 Pandas 运行得更快
已经有很多尝试来解决这个问题。目标是能 土耳其赌博数据 够编写数百万用户熟悉的相同 pandas 代码,但运行速度更快。一些高性能 pandas 替代品包括Polars,它通过用 Rust 重写后端来加快速度;PySpark,它为 Spark HPC 平台提供 Python 接口;Vaex,它使用内存外计算;以及DuckDB,它在分析优化的数据库中执行计算。

查看这些教程,其中更详细地讨论了一些替代方案:

Python 中的高性能数据处理:pandas 2.0 与 polars
对高性能 pandas 替代品进行基准测试
DuckDB 简介:它是什么以及为什么要使用它?
NVIDIA 为加快熊猫速度提供的解决方案
NVIDIA 一直在开发一套名为RAPIDS的高性能数据科学工具。该工具箱包括cuDF,这是 NVIDIA 用于高性能 pandas 代码的 Python 包。(该名称结合了CUDA (NVIDIA 用于构建支持 GPU 的应用程序的低级工具包)和 DataFrame(用于存储分析数据的 pandas 对象)。后者启发了 DataCamp 的DataFramed播客的名称。)

cuDF 加速数据操作代码的诀窍是让代码在 GPU 而不是 CPU 上运行。虽然 GPU 最初是为显示图形的计算而设计的,但它在数据科学计算方面非常有效。

cuDF 存在问题
尽管 cuDF 在让您更快地运行 pandas 代码方面非常成功,但它仍存在一些阻碍其广泛采用的问题。

并非所有 Pandas 都受支持
一个很大的障碍是 cuDF 仅实现了大约 60% 的 Pandas API。也就是说,在 pandas 中编写的所有可能代码中,只有大约 60% 可以在 cuDF 中运行。可以运行的 60% 代码自然是大多数人想要运行的最常见的 60% 代码。这意味着对于日常分析,cuDF 代码应该没问题。但是,如果你想做一些不寻常的事情,你会遇到 cuDF 的问题。

开发和测试需要 GPU
cuDF 仅支持在 GPU 上运行代码。这意味着您在开发代码和测试代码时都需要 GPU。如果您想在笔记本电脑上本地运行代码,这通常是不可行的,如果您想在云端运行代码,则成本高昂。

与其他 Python 包交互需要处理器交换
另一个问题是,绝大多数 Python 软件包不支持 GPU。这意味着,对于使用其他软件包的任何分析(例如,或多或少任何机器学习工作流程),您都必须弄清楚如何将计算从 GPU 转移到 CPU 并再转回。

现有的解决 GPU 不足的解决方案非常繁琐
总之,这三个问题意味着你必须编写两个版本的代码:一个版本在有 GPU 可用且 cuDF 可以计算所有内容时运行;另一个版本在没有 GPU 可用的情况下运行。

大多数数据科学家更希望专注于从数据中获取见解,而不是代码细节。从历史上看,这使得使用 cuDF 完成许多数据科学任务都存在问题。

pandas 加速器模式如何改进 cuDF
pandas Accelerator Mode 针对这些问题提供的解决方案是,你只需要编写一行代码来启用 GPU 支持,然后就可以编写标准的 pandas 代码了。

当支持 GPU 计算时(有可用的 NVIDIA GPU,并且 cuDF 知道如何运行 pandas 代码),您的代码将在 GPU 上运行。如果无法做到这一点,cuDF 会自动切换到在 CPU 上运行。您无需编写两个版本的代码,也无需手动处理 GPU 和 CPU 之间的切换。
Post Reply