Spaces:
Sleeping
Sleeping
File size: 806 Bytes
aae92d4 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | import os, torch
from torch.distributed import init_process_group, destroy_process_group
def ddp_env():
"""
Reads ranks from torchrun env vars.
"""
if "RANK" not in os.environ:
os.environ["RANK"] = "0"
os.environ["WORLD_SIZE"] = "1"
os.environ["LOCAL_RANK"] = "0"
rank = int(os.environ["RANK"])
world_size = int(os.environ["WORLD_SIZE"])
local_rank = int(os.environ["LOCAL_RANK"])
return rank, world_size, local_rank
def ddp_setup_from_env():
rank, world_size, local_rank = ddp_env()
use_ddp = world_size > 1
if torch.cuda.is_available():
torch.cuda.set_device(local_rank)
if use_ddp:
init_process_group(backend="nccl") # rank/world_size inferred from env
return rank, world_size, local_rank, use_ddp |