在 Ray 上使用 Pandas (Modin)#
Modin ,以前称为 Pandas on Ray,是一个数据帧操作库,允许用户通过作为替代品来加速他们的 pandas 工作负载。Modin 还支持其他 API(例如电子表格)和库,如 xgboost。
import modin.pandas as pd
import ray
ray.init()
df = pd.read_parquet("s3://my-bucket/big.parquet")
您可以在笔记本电脑或集群上使用 Modin 和 Ray。在本文件中,我们展示了如何设置一个与 Modin 兼容的 Ray 集群,并将 Modin 连接到 Ray 的说明。
备注
在 Modin 的早期版本中,您必须在导入 Modin 之前初始化 Ray。从 Modin 0.9.0 开始,情况不再如此。
使用 Modin 与 Ray 的自动扩展器#
为了在使用 Ray 的自动扩展器 时使用 Modin,您需要在启动时确保安装了正确的依赖项。Modin 的仓库中有一个示例 yaml 文件和一组教程笔记本,以确保 Ray 集群具有正确的依赖项。一旦集群启动,只需导入即可连接 Modin。
import modin.pandas as pd
import ray
ray.init(address="auto")
df = pd.read_parquet("s3://my-bucket/big.parquet")
只要在创建任何数据框之前初始化 Ray,Modin 就能够连接并使用 Ray 集群。
Modin 如何使用 Ray#
Modin 具有分层架构,数据操作的核心抽象是 Modin Dataframe,它实现了一种新颖的代数,使 Modin 能够处理所有 pandas 操作(有关架构的更多信息,请参阅 Modin 的文档)。Modin 的内部 dataframe 对象具有一个调度层,能够使用 Ray 对数据进行分区和操作。
数据框操作#
Modin Dataframe 使用 Ray 任务来执行数据操作。与数据操作的 actor 模型相比,Ray 任务具有许多优势:
多个任务可能同时操作相同的对象
Ray 对象存储中的对象是不可变的,这使得来源和血统更容易追踪。
随着新工人上线,数据的重新分配将在新节点上安排任务时发生
相同的分区不需要被复制,这对于选择性修改数据的操作(例如
fillna
)特别有益。更细粒度的并行性与更细粒度的放置控制
机器学习#
Modin 使用 Ray Actors 来支持其当前提供的机器学习功能。Modin 对 XGBoost 的实现能够为每个节点启动一个 actor,并将该节点上的所有分区聚合到 XGBoost Actor。Modin 能够在创建时为每个 actor 精确指定节点 IP,从而对放置进行精细控制——这对于分布式训练性能是必须的。