依赖如何到达 Ray 集群?

问题描述

我试图弄清楚 Ray 是否适用于某个应用程序,并且我试图了解依赖关系如何到达 Ray 集群中的 worker。例如:假设我有

@ray.remote
def foo():
    a = do_something_requiring_pandas()
    b = do_something_requiring_openmpi()
    return a + b

我如何确保工作人员可以访问 pandas(第三方 python 包)和 openmpi(通常通过操作系统包管理器安装的非 python 包)?我是否必须确保工作人员让他们从 Ray 的“带外”安装?或者,Ray 是否对它与任务一起发送给工作人员的依赖项进行了一些自动打包(我可以看到这在 Pandas 情况下是如何工作的,但不是 openmpi 情况)?我实际上并不特别关心 pandas 或 openmpi,它们只是两种不同类型依赖项的方便示例。

解决方法

对于 pip 和 conda 依赖项,运行时环境 (https://docs.ray.io/en/master/advanced.html#runtime-environments-experimental) 看起来就像您正在寻找的功能。非常新,欢迎提供反馈!

对于 openmpi 之类的东西,您可以尝试 https://docs.ray.io/en/master/cluster/config.html#setup-commands 以确保在集群中的每个节点上都安装了 openmpi。