zerogpu-sdxlTrainer / toolkit /accelerator.py
HTBris's picture
Deploy Ostris AI-Toolkit ZeroGPU Trainer (Illustrious XL / SDXL / FLUX.1)
855e1f5
Raw History Blame Contribute Delete
929 Bytes
from accelerate import Accelerator
from diffusers.utils.torch_utils import is_compiled_module
import torch
global_accelerator = None
def get_accelerator() -> Accelerator:
global global_accelerator
if global_accelerator is None:
global_accelerator = Accelerator()
elif torch.cuda.is_available() and global_accelerator.device.type == 'cpu':
# Re-initialize if Accelerator was first created in a ZeroGPU CPU parent process
# before @spaces.GPU dynamically attached the CUDA device.
global_accelerator = Accelerator()
return global_accelerator
def reset_accelerator():
global global_accelerator
global_accelerator = None
def unwrap_model(model):
try:
accelerator = get_accelerator()
model = accelerator.unwrap_model(model)
model = model._orig_mod if is_compiled_module(model) else model
except Exception as e:
pass
return model