SHERWYNLUCIAN commited on
Commit
e373611
·
verified ·
1 Parent(s): 9de0ba3

Upload shared_metrics.py

Browse files
Files changed (1) hide show
  1. shared_metrics.py +53 -0
shared_metrics.py ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Shared metrics helper for all EvoNet mini nodes
2
+ import os
3
+ import platform
4
+
5
+ # HuggingFace Spaces hardware specs (chính xác theo docs HF)
6
+ HF_HARDWARE_SPECS = {
7
+ "cpu-basic": {"ram_gb": 16, "cpu": 2, "gpu": None},
8
+ "cpu-upgrade": {"ram_gb": 32, "cpu": 8, "gpu": None},
9
+ "t4-small": {"ram_gb": 16, "cpu": 4, "gpu": "T4-16GB"},
10
+ "t4-medium": {"ram_gb": 30, "cpu": 8, "gpu": "T4-16GB×2"},
11
+ "a10g-small": {"ram_gb": 24, "cpu": 4, "gpu": "A10G-24GB"},
12
+ "a10g-large": {"ram_gb": 48, "cpu": 12, "gpu": "A10G-24GB×4"},
13
+ "a100-large": {"ram_gb": 142, "cpu": 12, "gpu": "A100-80GB"},
14
+ "zero-a10g": {"ram_gb": 24, "cpu": 4, "gpu": "A10G-24GB"},
15
+ "zero-t4": {"ram_gb": 16, "cpu": 4, "gpu": "T4-16GB"},
16
+ }
17
+
18
+ def get_hf_metrics():
19
+ """
20
+ Lấy thông số phần cứng dựa trên SPACE_HARDWARE env var của HuggingFace.
21
+ Tránh đọc psutil vì nó trả về RAM của HOST máy chủ vật lý (~128GB),
22
+ không phải RAM được cấp cho container Space.
23
+ """
24
+ hardware_tier = os.environ.get("SPACE_HARDWARE", "cpu-basic").strip()
25
+ spec = HF_HARDWARE_SPECS.get(hardware_tier, {"ram_gb": 16, "cpu": 2, "gpu": None})
26
+
27
+ ram_mb = spec["ram_gb"] * 1024
28
+ cpu_count = spec["cpu"]
29
+
30
+ # Ước tính RAM đã dùng (dùng psutil nếu có, giới hạn trong spec)
31
+ used_mb = 0
32
+ try:
33
+ import psutil
34
+ real_used = psutil.virtual_memory().used / 1024 / 1024
35
+ # Cap ở spec của tier để tránh hiển thị sai
36
+ used_mb = min(round(real_used), ram_mb)
37
+ except Exception:
38
+ used_mb = round(ram_mb * 0.25) # Giả sử 25% nếu không có psutil
39
+
40
+ # Max concurrent workers: mỗi worker ~2GB RAM
41
+ available_mb = max(0, ram_mb - used_mb)
42
+ max_workers = max(1, available_mb // 2048)
43
+
44
+ return {
45
+ "total_memory_mb": ram_mb,
46
+ "used_memory_mb": used_mb,
47
+ "cpu_count": cpu_count,
48
+ "cpu_percent": 0,
49
+ "platform": platform.system(),
50
+ "max_workers": max_workers,
51
+ "hardware_tier": hardware_tier,
52
+ "gpu": spec.get("gpu"),
53
+ }