Spaces:
Paused
Paused
| import psutil | |
| import torch | |
| from pathlib import Path | |
| from typing import Dict, Any | |
| def get_system_info() -> Dict[str, Any]: | |
| """Get system resource information""" | |
| return { | |
| "cpu_percent": psutil.cpu_percent(), | |
| "memory_percent": psutil.virtual_memory().percent, | |
| "gpu_available": torch.cuda.is_available(), | |
| "gpu_memory_used": torch.cuda.memory_allocated() if torch.cuda.is_available() else 0, | |
| "gpu_memory_total": torch.cuda.get_device_properties(0).total_memory if torch.cuda.is_available() else 0 | |
| } | |
| def calculate_optimal_batch_size(model_size: int, available_memory: int) -> int: | |
| """Calculate optimal batch size based on model size and available memory""" | |
| memory_per_sample = model_size * 1.5 # Rough estimate including overhead | |
| return max(1, available_memory // memory_per_sample) | |
| def ensure_folder_structure(config: Dict) -> None: | |
| """Ensure all necessary folders exist""" | |
| folders = [ | |
| Path(config["folders"]["models"]), | |
| Path(config["folders"]["cache"]), | |
| Path(config["folders"]["logs"]) | |
| ] | |
| for folder in folders: | |
| folder.mkdir(parents=True, exist_ok=True) | |
| def format_memory_size(size_bytes: int) -> str: | |
| """Format memory size to human readable format""" | |
| for unit in ['B', 'KB', 'MB', 'GB', 'TB']: | |
| if size_bytes < 1024: | |
| return f"{size_bytes:.2f}{unit}" | |
| size_bytes /= 1024 |