如何为远程主机中的每个工作人员指定 env 变量?

问题描述

我是最近从 python 多处理库转换到 ray 的转换器。 我有一个带有四个芯片的自定义资源,我需要指定环境变量。例如VISIBLE_DEVICE=0 并行使用它们。

所以在多处理中,我总是创建 4 个进程,每个进程获取 1 个芯片

class P(Process):
    def run(self,chip_id):
        os.environ['VISIBLE_DEVICE']=chip_id
        fn()

有没有办法在 ray 中做类似的事情?喜欢

  1. 仅在每个主机中生成 4 个 ray 远程工作人员
  2. 在运行函数之前,每个 worker 都会获得不同的 env 变量。

解决方法

要在每个主机中仅生成一个工作器,您可以尝试针对归置组使用 STRICT_SPREAD 策略:https://docs.ray.io/en/master/placement-group.html

要将环境变量传递给光线任务或 Actor,您可以使用参数 override_environment_variables (https://docs.ray.io/en/master/package-ref.html#ray-remote)。例如:

my_task.options(override_environment_variables={'VISIBLE_DEVICE': 1234}).remote()