Intel® Distribution of Modin 用法和性能调优指南
本文旨在为用户提供在使用 Intel® Distribution of Modin 时的最佳实践和建议。
要了解更多关于 Intel® Distribution of Modin 的信息以及如何开始使用,请访问 Intel® Distribution of Modin 入门指南。
何时使用 Intel® Distribution of Modin
Intel® Distribution of Modin* 是一种高性能、并行化和分布式的数据框系统,旨在通过对 Intel 硬件的专属优化,仅需一行代码的更改,即可让数据科学家更高效地使用他们喜爱的工具。该库与 Pandas API 完全兼容。
通常情况下,当开发人员使用默认的 Pandas 函数调用来处理和分析数据时,一旦数据规模增大,他们就会遇到性能和内存瓶颈,而 Pandas 通常无法处理。
Intel® Distribution of Modin 旨在解决这个问题。当开发人员遇到此瓶颈时,我们建议使用 Intel® Distribution of Modin,继续使用 Pandas API 调用,并能够快速、无限地扩展他们的 Pandas 数据框——所有这些都只需几行代码。
有关 Intel® Distribution of Modin 的更多信息,请访问 Intel® Distribution of Modin 主页。
使用 Modin
Intel® Distribution of Modin 兼容三种不同的后端计算引擎,Modin 利用这些引擎来分发和优化 Pandas API 调用和计算。
- Ray 后端(最推荐) – Ray* 后端是 Intel® Distribution of Modin 的推荐后端引擎。它启用了最多的 Pandas API 功能,并且与 Intel® Distribution of Modin 的实现最稳定。
- OmniSci 后端 – Intel® Distribution of Modin 与 OmniSci*(现为 Heavy.AI*)合作,支持 OmniSci 作为后端。这是一个非常高效的端到端分析框架,经过优化,能够利用现有和新兴 Intel® 硬件的计算能力。请注意,此后端目前处于实验阶段。
- Dask 后端 – Dask* 后端推荐用于在 Windows 操作系统、Intel® DevCloud for oneAPI 上运行的工作负载。
要了解更多关于如何开始使用 Modin 的信息,请参考 Intel® Distribution of Modin 入门指南。
使用 Intel® Distribution of Modin 进行性能调优
如何使用 Pandas 调优 Modin 函数调用
由于我们通过 Modin 为 Pandas 提供了开箱即用的性能优势,某些优化在 Modin 上可能存在限制或尚未完全支持。如果遇到性能下降,Modin 和 Pandas 提供了在运行时切换框架的能力。一些常见原因可以在 此处 找到。以下是一些可用的解决方法示例代码:
建议将 Modin 对象转换为 Pandas 对象,以便有效地利用这两个框架。下面提供了在 Pandas 和 Modin 对象之间移动的示例代码。
import ray ray.init() import modin.pandas as pd df_log=pd.concat([self.df_log]) df_log.to_csv(os.path.join(savePath, logName + '_structured.csv'), index=False)
现在处理 df_log
。只需使用对象 "_to_pandas()
" 将 df 转换为 Pandas 对象即可。
import pandas as pd occ_dict = dict(df_log['EventTemplate']._to_pandas().value_counts()) df_event = pd.DataFrame() df_event['EventTemplate'] = df_log['EventTemplate'].unique()
控制核心数量
如果您想控制 Intel® Distribution of Modin 将使用的核心数量(而不是默认使用设备上的所有可用核心),请访问相关 文档。
更多性能调优信息
有关使用 Intel® Distribution of Modin 进行性能调优的更多信息,请访问相关的 开源文档。
Modin 可能回退到 Pandas 的原因
如果 Intel® Distribution of Modin 回退到默认的 Pandas 功能,很可能是出于以下原因之一:
- 该函数已被 Pandas 优化,此时使用 Intel® Distribution of Modin 不会提供任何进一步的性能提升。
- 当前使用的后端尚未实现该方法。
有关更多信息,请访问 Modin 文档部分:回退到 Pandas。
如果根据 支持的 API 文档,您正在使用的 Intel® Distribution of Modin 后端引擎应该实现了该函数,请在 Modin GitHub 上相应地提出一个 issue。
使用默认 Pandas 实现
Intel® Distribution of Modin 旨在通过分发 Pandas 数据和计算,轻松加速 Pandas 工作负载。
当数据集非常小时,我们建议开发人员首先使用默认的 Pandas 导入和调用,而不是 Intel® Distribution of Modin。这是因为在此规模下,Intel® Distribution of Modin 的性能优势微乎其微,因为 Pandas 包本身就是针对小型数据集设计的。
在此数据规模下,用户在使用 Intel® Distribution of Modin 处理这些较小数据集时,也可能比默认的 Pandas 慢一些。这是因为 Modin® 需要额外的开销来分发数据,然后才能调用 Pandas 函数。Pandas 不需要这种开销,从而导致了这种差异,这种差异会随着数据集规模的不断增大而消失。
关于 Modin 警告
请注意,如果您在使用 Intel® Distribution of Modin 时看到一系列非关键警告,这并不意味着您使用该包不正确。这是使用 Intel® Distribution of Modin 时自动生成的“详细”日志,有助于调试问题。在未来的版本中,将通过“详细”模式提供一个选项来开启和关闭大多数这些警告。