Получите местный размер в обучении факелам - PullRequest
0 голосов
/ 04 апреля 2020

Предположим, у меня есть 2 машины с 4 графическими процессорами в каждой. Предположим, что для каждого экземпляра алгоритма обучения требуется 2 графических процессора. Я хотел бы запустить 4 процесса, по 2 для каждой машины, причем каждый процесс использует 2 графических процессора.

Как я могу заставить каждый процесс получать количество локальных процессов, запущенных на одной машине? Я могу обнаружить world size с

torch.distributed.get_world_size()

и global rank с

torch.distributed.get_rank()

Но, учитывая, что я не хотел бы жестко программировать параметры, есть ли способ восстановить что на каждом узле работают 2 процесса? Мне будет полезно назначать графические процессоры каждому процессу в равной степени.

Пример : Предположим, я знаю, что на машине установлено 4 графических процессора и на ней 2 процесса, я назначу графические процессоры. [0, 1] для обработки с local rank 0 и графическими процессорами [2, 3] для обработки с локальным рангом 1. Я знаю общее количество процессов, но не могу понять, если они находятся на одной машине, поэтому я не могу решить, сколько графических процессоров им разрешено использовать.

Мне нужна функция, которая будет называться torch.distributed.get_local_world_size()

...