使用 Modin 扩展你的 Pandas 工作流





0/5 (0投票)
本文介绍了 Intel Distribution of Modin,它是 Intel oneAPI AI Analytics Toolkit (AI Kit) 的一部分,现已可从 Anaconda 的“defaults”频道(也可从 conda-forge 获取)下载。
人工智能和数据科学正在快速发展,这带来了越来越多 ever-increasing 的数据,使我们能够获得日益复杂的研究思路和解决方案。但另一方面,我们看到这些进步正将重心从价值提取转移到系统工程。此外,硬件能力的增长速度可能比人们学习如何正确利用它们的速度更快。
这一趋势要么需要增设一个新职位,即所谓的“数据工程师”,要么需要数据科学家处理与基础设施相关的问题,而不是专注于数据科学的核心——生成见解。造成这种情况的主要原因之一是,对于并非天生就是软件工程师的数据科学家来说,缺乏优化的数据科学和机器学习基础设施——这些可以被视为两种不同的、有时重叠的技能集。
我们知道,数据科学家是习惯性生物。他们喜欢他们熟悉的 Python 数据栈中的工具,例如 pandas、Scikit-learn、NumPy、PyTorch 等。然而,这些工具对于并行处理或海量数据来说通常并不适用。
Anaconda® 和 Intel® 正在合作解决数据科学家最关键的核心问题:如何使他们熟悉的软件栈和 API 变得可扩展且更快速?本文介绍了 Intel Distribution of Modin,它是 Intel oneAPI AI Analytics Toolkit (AI Kit) 的一部分,现已可从 Anaconda 的“defaults”频道(也可从 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 通过网格分割 DataFrame 来更好地利用硬件,从而允许某些操作以并行分布式的方式运行,无论是逐单元、逐列还是逐行(图 2)。对于某些操作,可以利用与 OmniSci 引擎的实验性集成来更好地利用多核的处理能力。
通过从 AI Kit 或 Anaconda defaults(或 conda-forge)频道安装 Modin,还可以获得一个实验性的、速度更快的 Modin OmniSci 后端。只需进行一些简单的代码更改即可激活。
import modin.config as cfg cfg.Engine.put('native') cfg.Backend.put('omnisci') import modin.experimental.pandas as pd
看数字!
言归正传,让我们来看看基准测试。有关不同 Modin 引擎的详细比较,请参阅 社区测量的微基准测试,该测试会跟踪 Modin 存储库提交过程中不同数据科学操作的性能。
为了演示这种方法的可扩展性,让我们使用运行在基于 Intel Xeon® 8368 Platinum 的服务器上的一个更大、更端到端的(请参阅下面的完整硬件信息)工作负载,通过 Modin 使用 OmniSci(图 3-5)。
硬件信息:两块 Intel Xeon 8368 Platinum 第三代处理器,基于 C620 主板,总 DDR4 内存 512GB(16 插槽/32GB/3200),微码 0xd0002a0,超线程开启,睿频开启,CentOS 7.9.2009,3.10.0-1160.36.2.el7.x86_64,一块 Intel 960 GB SSD 操作系统驱动器,三块 Intel 1.9 TB SSD 数据驱动器。软件信息:Python 3.8.10,Pandas 1.3.2,Modin 0.10.2,OmnisciDB 5.7.0,Docker 20.10.8,Intel 于 2021/10/05 测试。
等等,还有更多
如果单节点运行不足以处理您的数据,Modin 支持在 Ray 集群或 Dask 集群上进行分布式运行。您还可以使用实验性的 XGBoost 集成,它将自动利用基于 Ray 的集群为您服务,无需任何特殊设置!
参考文献
- Intel oneAPI AI Analytics Toolkit 安装:conda install intel-aikit -c intel
- Modin 文档
- Modin 源代码和问题跟踪器
- 将 Modin 切换到 OmniSci 后端
本文最初发表于 Anaconda.com,经许可转载。