Как указать переменную env для каждого рабочего на удаленном хосте?

Я недавний преобразователь в лучи из многопроцессорной библиотеки python. У меня есть собственный ресурс с четырьмя микросхемами, и мне нужно указать переменную среды. например VISIBLE_DEVICE=0 использовать их параллельно.

Таким образом, при многопроцессорной обработке я всегда создавал 4 процесса, каждый из которых приобретал по 1 микросхеме.

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

Есть ли способ сделать что-то подобное в Ray? Нравиться

  1. Создайте 4 удаленных работника луча только на каждом хосте
  2. Каждый рабочий получает другую переменную env перед запуском функции.

ray
person user15488397    schedule 26.03.2021    source источник


Ответы (1)


Чтобы создать только одного воркера на каждом хосте, вы можете попробовать стратегию STRICT_SPREAD для групп размещения: https://docs.ray.io/en/master/placement-group.html

Чтобы передать переменную среды в Ray Task или 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()
person Archit Kulkarni    schedule 26.03.2021