使用 Modin 扩展您的 pandas 工作流程 - 无需重写

这篇文章由英特尔 AI 框架工程师 Vasilij Litvinov 撰写。


介绍

AI 和数据科学正在快速发展,这带来了越来越多的数据,使我们能够获得不断变得更加复杂的想法和解决方案。

但另一方面,我们看到这些进步正在将重点从价值提取转移到系统工程。此外,硬件能力的增长速度可能快于人们学习如何正确利用它们的速度。

这种趋势要么需要增加一个新的职位,即所谓的“数据工程师”,要么需要数据科学家处理基础设施相关问题,而不是专注于数据科学的核心部分——生成洞察。造成这种情况的主要原因之一是,对于并非天生就是软件工程师的数据科学家来说,缺乏优化的数据科学和机器学习基础设施——这些可以被认为是两个不同的、有时会重叠的技能集。

我们知道,数据科学家是习惯的动物。他们喜欢他们在 Python 数据堆栈中熟悉的工具,例如 pandas、Scikit-learn、NumPy、PyTorch 等。但是,这些工具通常不适合并行处理或数 TB 的数据。

Anaconda 和英特尔正在合作解决数据科学家最关键和最核心的问题:如何使他们熟悉的软件堆栈和 API 可扩展且更快?

本文旨在介绍 Modin(也称为英特尔® Modin 发行版),它是英特尔® oneAPI AI 分析工具包(AI 工具包)的一部分,现在可从 Anaconda 的默认频道(以及 conda-forge)获得。

为什么 pandas 不够

虽然 pandas 是“行业标准”,但它在很多情况下本质上是单线程的,这使得它在处理大型数据时速度很慢(甚至无法处理无法容纳在内存中的数据集)。

虽然有许多其他旨在解决这些问题的替代方案(如 Dask、pySpark、vaex.io 等),但这些库都没有提供完全与 pandas 兼容的接口——用户必须相应地“修复”他们的工作负载。

Modin 作为最终用户能为您提供什么?它试图坚持“工具应该为数据科学家工作,而不是反过来”的理念。因此,它提供了一个非常简单、直接替换 pandas 的方案——您只需将“import pandas as pd”语句替换为“import modin.pandas as pd”,即可在许多用例中获得更好的可扩展性。

Modin 提供了什么

通过消除“将 pandas 工作流程重写为 X 框架”的步骤,可以加快洞察的开发周期。

图 1. 在持续开发周期中使用 Modin。

Modin 通过对数据帧进行网格分割来更好地利用硬件,这使得能够以并行分布式方式运行某些操作,无论是以单元为单位、以列为单位还是以行为单位。

对于某些操作,可以利用 OmniSci 引擎的实验性集成,以更好地利用多个内核的强大功能。

图 2. 比较 pandas DataFrame 和 Modin DataFrame。

通过 AI 工具包或 Anaconda 默认频道(或 conda-forge)安装 Modin,还提供了一个实验性的、更快的 OmniSci 后端,只需进行一些简单的代码更改即可激活它。


import modin.config as cfg
cfg.Engine.put('native')
cfg.Backend.put('omnisci')
import modin.experimental.pandas as pd

给我看看数据!

少说废话,让我们看看基准测试结果。

有关不同 Modin 引擎的详细比较,请参阅社区测量的微基准测试:https://modin.org/modin-bench/,该测试跟踪 Modin 存储库提交对不同数据科学操作的性能。

对于这篇文章,让我们使用更端到端相关的、更大的基准测试,在基于英特尔® 至强® 铂金 8368 的服务器上运行(见下文硬件信息),使用 OmniSci 通过 Modin。

图 3. 运行 NYC Taxi(2 亿条记录,79.2 GB 输入数据集)

图 4. 运行 Census(2100 万条记录,2.1 GB 输入数据集)

图 5. 运行 PlastiCC(4.6 亿条记录,20 GB 输入数据集)

硬件信息:1 个节点,2 个第三代英特尔® 至强® 铂金 8368,C620 主板,总共 512 GB(16 个插槽/32 GB/3200)DDR4 内存,微码 0xd0002a0,HT 启用,Turbo 启用,Centos 7.9.2009,3.10.0-1160.36.2.el7.x86_64,1 个英特尔 960 GB SSD 操作系统驱动器,3 个英特尔 1.9 TB SSD 数据驱动器。软件信息:Python 3.8.10,Pandas 1.3.2,Modin 0.10.2,OmnisciDB 5.7.0,Docker 20.10.8,英特尔于 2021 年 10 月 5 日测试。

等等,还有更多

如果在一个节点上运行不够您的数据,Modin 支持在集群上运行,设置非常简单(对于 Ray 驱动的集群,请参阅 https://docs.ray.io/en/latest/cluster/cloud.html#manual-ray-cluster-setup 进行设置;有关 Dask,请参阅 https://docs.dask.org/en/latest/how-to/deploy-dask-clusters.html)。

您还可以利用实验性的 XGBoost 集成,它会自动为您利用基于 Ray 的集群,无需任何特殊设置!

有了所有这些新信息,请立即尝试通过 Anaconda 安装 Modin 和英特尔® oneAPI AI 分析工具包!

参考资料


声明和免责声明

性能因使用情况、配置和其他因素而异。了解更多信息,请访问 www.Intel.com/PerformanceIndex

性能结果基于截至配置所示日期的测试,可能不反映所有公开可用的更新。有关详细信息,请参阅配置披露。

任何产品或组件都无法绝对安全。

您的成本和结果可能会有所不同。

英特尔技术可能需要启用硬件、软件或服务激活。

© 英特尔公司。英特尔、英特尔标识和其他英特尔标志是英特尔公司或其子公司的商标。其他名称和品牌可能被认定为属于他人的财产。

与专家交谈

与我们的专家交谈,为您的 AI 之旅寻找解决方案。

与专家交谈