在 Ray 上使用 Mars#

Mars 是一个基于张量的大规模数据计算统一框架,它扩展了 Numpy、Pandas 和 Scikit-learn。Mars on Ray 使得使用 Ray 集群扩展程序变得容易。目前,Mars on Ray 支持 Ray 执行器和任务作为执行后端。如果使用 Ray 执行器,任务将由 mars 调度器调度。此模式可以重用所有 mars 调度器的优化。如果使用 ray 任务模式,所有任务将由 ray 调度,这可以重用 ray 未来提供的故障转移和管道能力。

安装#

你可以通过 pip 简单地安装 Mars:

pip install pymars>=0.8.3

入门#

在 Ray 集群上运行 Mars 作业非常简单。

通过以下方式在本地启动一个新的 Mars on Ray 运行时:

import ray
ray.init()
import mars
mars.new_ray_session()
import mars.tensor as mt
mt.random.RandomState(0).rand(1000_0000, 5).sum().execute()

或者连接到一个已经初始化的Ray运行时的火星:

import mars
mars.new_ray_session('http://<web_ip>:<ui_port>')
# perform computation

与数据集交互:

import mars.tensor as mt
import mars.dataframe as md
df = md.DataFrame(
    mt.random.rand(1000_0000, 4),
    columns=list('abcd'))
# Convert mars dataframe to ray dataset
import ray
# ds = md.to_ray_dataset(df)
ds = ray.data.from_mars(df)
print(ds.schema(), ds.count())
ds.filter(lambda row: row["a"] > 0.5).show(5)
# Convert ray dataset to mars dataframe
# df2 = md.read_ray_dataset(ds)
df2 = ds.to_mars()
print(df2.head(5).execute())

更多信息请参考 Mars on Ray: https://mars-project.readthedocs.io/en/latest/installation/ray.html#mars-ray