kylinfires's picture
Sync main: low-VRAM live test results (624x360)
b9fc164 verified
Raw History Blame Contribute Delete
1.11 kB
"""Distributed process setup for data-parallel and FSDP training."""
import os
from datetime import timedelta
import torch
import torch.distributed as dist
def print_rank0(message: str) -> None:
if int(os.getenv("RANK", "0")) == 0:
print(message)
def init_distributed_environment(backend: str = "nccl") -> None:
if dist.is_initialized():
return
global_rank = int(os.getenv("RANK", "0"))
world_size = int(os.getenv("WORLD_SIZE", "1"))
print_rank0(f"Initializing distributed environment with world_size={world_size}")
dist.init_process_group(
backend=backend, world_size=world_size, rank=global_rank,
timeout=timedelta(minutes=30),
)
def setup_distributed_training() -> tuple[int, int, int, torch.device]:
local_rank = int(os.getenv("LOCAL_RANK", "0"))
torch.cuda.set_device(local_rank)
device = torch.device("cuda", local_rank)
init_distributed_environment()
return local_rank, dist.get_rank(), dist.get_world_size(), device
def clean_dist_env() -> None:
if dist.is_initialized():
dist.destroy_process_group()