SeFi-Image / sefi /distributed.py
WaveCut's picture
Add SeFi Image ZeroGPU app
f085bc2 verified
Raw
History Blame Contribute Delete
994 Bytes
"""Small distributed helpers for CLI inference."""
from __future__ import annotations
import torch
def setup_distributed():
try:
from accelerate import Accelerator
except ModuleNotFoundError:
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
return 0, 1, device, True, None
accelerator = Accelerator()
return (
int(accelerator.process_index),
int(accelerator.num_processes),
accelerator.device,
bool(accelerator.is_main_process),
accelerator,
)
def wait_for_everyone(accelerator) -> None:
if accelerator is not None:
accelerator.wait_for_everyone()
def shard_indices_interleaved(total: int, rank: int, world_size: int) -> list[int]:
return list(range(int(rank), int(total), int(world_size)))
def build_rank_generator(device: torch.device, seed: int, rank: int) -> torch.Generator:
return torch.Generator(device=str(device)).manual_seed(int(seed) + int(rank))