Функция distributed.get_global_rank
Функция distributed.get_global_rank возвращает
глобальный ранг процесса в группе по его локальному рангу.
Первым параметром функция принимает группу процессов group,
вторым - локальный ранг local_rank внутри этой группы.
Функция полезна когда нужно узнать соответствующий глобальный ранг
для локального ранга в подгруппе.
Синтаксис
torch.distributed.get_global_rank(group, local_rank)
Пример
Давайте создадим группу процессов и получим глобальные ранги для каждого локального ранга внутри группы:
import torch
import torch.distributed as dist
dist.init_process_group(backend="gloo")
world_size = dist.get_world_size()
local_group = dist.new_group([0, 1])
if dist.get_rank() in [0, 1]:
global_rank = dist.get_global_rank(local_group, dist.get_rank())
print(f"Local rank: {dist.get_rank()}, Global rank: {global_rank}")
Результат выполнения кода для процесса с локальным рангом 0 внутри группы:
"Local rank: 0, Global rank: 0"
Пример
Используем функцию get_global_rank для определения глобального ранга при сборе данных из подгруппы процессов:
import torch
import torch.distributed as dist
dist.init_process_group(backend="gloo")
subgroup = dist.new_group([1, 2, 3])
if dist.get_rank() in [1, 2, 3]:
local_rank = dist.get_rank()
global_rank = dist.get_global_rank(subgroup, local_rank)
print(f"Process local rank {local_rank} has global rank {global_rank} in subgroup")
Результат выполнения кода для одного из процессов подгруппы:
"Process local rank 2 has global rank 2 in subgroup"
Пример
Используем get_global_rank для создания маппинга локальных рангов в глобальные:
import torch
import torch.distributed as dist
dist.init_process_group(backend="gloo")
ranks = [0, 2, 4]
subgroup = dist.new_group(ranks)
if dist.get_rank() in ranks:
local_rank = dist.get_rank()
global_rank = dist.get_global_rank(subgroup, local_rank)
print(f"Local rank mapping: {local_rank} -> {global_rank}")
Результат выполнения кода для процесса с локальным рангом 2 в подгруппе:
"Local rank mapping: 2 -> 2"
Смотрите также
-
функцию
get_rank,
которая возвращает ранг текущего процесса в группе -
функцию
get_world_size,
которая возвращает количество процессов в группе -
функцию
new_group,
которая создает новую группу процессов -
функцию
get_group_rank,
которая возвращает локальный ранг в группе по глобальному