| |
| import os |
| import platform |
|
|
| |
| HF_HARDWARE_SPECS = { |
| "cpu-basic": {"ram_gb": 16, "cpu": 2, "gpu": None}, |
| "cpu-upgrade": {"ram_gb": 32, "cpu": 8, "gpu": None}, |
| "t4-small": {"ram_gb": 16, "cpu": 4, "gpu": "T4-16GB"}, |
| "t4-medium": {"ram_gb": 30, "cpu": 8, "gpu": "T4-16GB×2"}, |
| "a10g-small": {"ram_gb": 24, "cpu": 4, "gpu": "A10G-24GB"}, |
| "a10g-large": {"ram_gb": 48, "cpu": 12, "gpu": "A10G-24GB×4"}, |
| "a100-large": {"ram_gb": 142, "cpu": 12, "gpu": "A100-80GB"}, |
| "zero-a10g": {"ram_gb": 24, "cpu": 4, "gpu": "A10G-24GB"}, |
| "zero-t4": {"ram_gb": 16, "cpu": 4, "gpu": "T4-16GB"}, |
| } |
|
|
| def get_hf_metrics(): |
| """ |
| Lấy thông số phần cứng dựa trên SPACE_HARDWARE env var của HuggingFace. |
| Tránh đọc psutil vì nó trả về RAM của HOST máy chủ vật lý (~128GB), |
| không phải RAM được cấp cho container Space. |
| """ |
| hardware_tier = os.environ.get("SPACE_HARDWARE", "cpu-basic").strip() |
| spec = HF_HARDWARE_SPECS.get(hardware_tier, {"ram_gb": 16, "cpu": 2, "gpu": None}) |
| |
| ram_mb = spec["ram_gb"] * 1024 |
| cpu_count = spec["cpu"] |
| |
| |
| used_mb = 0 |
| try: |
| import psutil |
| real_used = psutil.Process().memory_info().rss / 1024 / 1024 |
| |
| used_mb = min(round(real_used), ram_mb) |
| except Exception: |
| used_mb = round(ram_mb * 0.25) |
| |
| |
| available_mb = max(0, ram_mb - used_mb) |
| max_workers = max(1, available_mb // 2048) |
| |
| return { |
| "total_memory_mb": ram_mb, |
| "used_memory_mb": used_mb, |
| "cpu_count": cpu_count, |
| "cpu_percent": 0, |
| "platform": platform.system(), |
| "max_workers": max_workers, |
| "hardware_tier": hardware_tier, |
| "gpu": spec.get("gpu"), |
| } |
|
|