依赖项如何到达 Ray 集群?

How do dependencies get to a Ray cluster?

我正在尝试弄清楚 Ray 是否适用于某个应用程序,并且我正在尝试了解依赖项如何影响 Ray 集群中的工作程序。例如:假设我有

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

如何确保工作人员可以访问 pandas(第三方 python 软件包)和 openmpi(非 python 软件包,通常通过 OS 包管理器)?我是否只需要确保工作人员从 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 安装在集群中的每个节点上。