Spaces:
Paused
Paused
Search commited on
Commit ·
a367cb2
1
Parent(s): 3505a30
fix: conditional GPU decorator + 2h CPU timeout for overnight runs
Browse files
app.py
CHANGED
|
@@ -239,7 +239,18 @@ def _run_inprocess_cached(
|
|
| 239 |
}
|
| 240 |
|
| 241 |
|
| 242 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 243 |
def run_experiment(request_json: str) -> str:
|
| 244 |
"""
|
| 245 |
Запускает эксперимент на GPU. Принимает и возвращает JSON строки.
|
|
@@ -259,7 +270,8 @@ def run_experiment(request_json: str) -> str:
|
|
| 259 |
script = req.get("script", "")
|
| 260 |
args = dict(req.get("args", {}))
|
| 261 |
model = req.get("model", "Qwen/Qwen3.5-4B")
|
| 262 |
-
|
|
|
|
| 263 |
args.setdefault("device", _default_device())
|
| 264 |
os.environ.setdefault("ATTN_IMPL", "sdpa") # save VRAM on ZeroGPU
|
| 265 |
|
|
|
|
| 239 |
}
|
| 240 |
|
| 241 |
|
| 242 |
+
def _gpu_decorator(fn):
|
| 243 |
+
"""Apply @spaces.GPU only when ZeroGPU is available."""
|
| 244 |
+
try:
|
| 245 |
+
import torch
|
| 246 |
+
if torch.cuda.is_available() or os.environ.get("SPACES_ZERO_GPU"):
|
| 247 |
+
return spaces.GPU(duration=600)(fn)
|
| 248 |
+
except Exception:
|
| 249 |
+
pass
|
| 250 |
+
return fn
|
| 251 |
+
|
| 252 |
+
|
| 253 |
+
@_gpu_decorator
|
| 254 |
def run_experiment(request_json: str) -> str:
|
| 255 |
"""
|
| 256 |
Запускает эксперимент на GPU. Принимает и возвращает JSON строки.
|
|
|
|
| 270 |
script = req.get("script", "")
|
| 271 |
args = dict(req.get("args", {}))
|
| 272 |
model = req.get("model", "Qwen/Qwen3.5-4B")
|
| 273 |
+
max_timeout = 580 if os.environ.get("SPACES_ZERO_GPU") else 7200 # 580s GPU, 2h CPU
|
| 274 |
+
timeout = min(req.get("timeout", max_timeout), max_timeout)
|
| 275 |
args.setdefault("device", _default_device())
|
| 276 |
os.environ.setdefault("ATTN_IMPL", "sdpa") # save VRAM on ZeroGPU
|
| 277 |
|