Spaces:
Paused
Paused
| import torch | |
| class GPUManager: | |
| def __init__(self, allocation_map): | |
| self.map = allocation_map | |
| self.device_count = torch.cuda.device_count() | |
| def get_device(self, agent_name): | |
| gpu_id = self.map.get(agent_name, 0) | |
| if gpu_id >= self.device_count: | |
| gpu_id = 0 | |
| return f"cuda:{gpu_id}" | |
| def get_vram_info(self, gpu_id): | |
| if not torch.cuda.is_available(): | |
| return {"total": 0, "free": 0, "used": 0} | |
| total = torch.cuda.get_device_properties(gpu_id).total_memory | |
| reserved = torch.cuda.memory_reserved(gpu_id) | |
| allocated = torch.cuda.memory_allocated(gpu_id) | |
| return { | |
| "total": total / 1024**3, | |
| "used": allocated / 1024**3, | |
| "free": (total - reserved) / 1024**3, | |
| } | |
| def all_devices(self): | |
| return [f"cuda:{i}" for i in range(self.device_count)] | |
| gpu_manager = GPUManager({ | |
| "orchestrator": 7, | |
| "video_primary": 0, | |
| "video_backup": 1, | |
| "face_restore": 2, | |
| "frame_interpolate": 3, | |
| "video_upscale": 4, | |
| "image_generator": 5, | |
| "audio_generator": 6, | |
| "quality_evaluator": 6, | |
| }) |