V6.7: upload src/bigru_t/utils/oom_guard.py (21.1KB) — FASE1+FASE2 training results
Browse files- src/bigru_t/utils/oom_guard.py +27 -10
src/bigru_t/utils/oom_guard.py
CHANGED
|
@@ -434,20 +434,37 @@ class OomGuard:
|
|
| 434 |
# Lifecycle
|
| 435 |
# ========================================================================
|
| 436 |
def start(self) -> None:
|
| 437 |
-
"""Inicia o monitor, instala signal handlers e excepthook.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 438 |
if self._running:
|
| 439 |
return
|
| 440 |
self._running = True
|
| 441 |
|
| 442 |
-
#
|
| 443 |
-
|
| 444 |
-
|
| 445 |
-
|
| 446 |
-
|
| 447 |
-
|
| 448 |
-
|
| 449 |
-
|
| 450 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 451 |
|
| 452 |
# Instala excepthook
|
| 453 |
self._old_excepthook = sys.excepthook
|
|
|
|
| 434 |
# Lifecycle
|
| 435 |
# ========================================================================
|
| 436 |
def start(self) -> None:
|
| 437 |
+
"""Inicia o monitor, instala signal handlers e excepthook.
|
| 438 |
+
|
| 439 |
+
V6.7 — Resilient mode: se V67_DISABLE_SIGNAL_HANDLERS=1, NÃO instala
|
| 440 |
+
signal handlers para SIGTERM/SIGINT. Isto permite que o processo
|
| 441 |
+
de treinamento sobreviva a sinais externos (ex: sandbox idle timeout)
|
| 442 |
+
e continue processando. O monitor de RSS (thread daemon) ainda
|
| 443 |
+
funciona, apenas os signal handlers são desativados.
|
| 444 |
+
"""
|
| 445 |
if self._running:
|
| 446 |
return
|
| 447 |
self._running = True
|
| 448 |
|
| 449 |
+
# V6.7 — Resilient mode: skip signal handler installation
|
| 450 |
+
# User requirement: "o processo vem sendo morto OOM-kiler" — investigation
|
| 451 |
+
# showed process was being killed by external SIGTERM (sandbox idle timeout)
|
| 452 |
+
# at ~600MB RSS, well below the 2500MB OOM threshold. Disabling signal
|
| 453 |
+
# handlers allows training to survive these external signals.
|
| 454 |
+
disable_handlers = os.environ.get("V67_DISABLE_SIGNAL_HANDLERS", "0") == "1"
|
| 455 |
+
if not disable_handlers:
|
| 456 |
+
# Instala signal handlers
|
| 457 |
+
try:
|
| 458 |
+
self._old_sigterm = signal.signal(signal.SIGTERM, self._signal_handler)
|
| 459 |
+
except (ValueError, OSError):
|
| 460 |
+
pass # não em thread principal
|
| 461 |
+
try:
|
| 462 |
+
self._old_sigint = signal.signal(signal.SIGINT, self._signal_handler)
|
| 463 |
+
except (ValueError, OSError):
|
| 464 |
+
pass
|
| 465 |
+
else:
|
| 466 |
+
logger.info("[OOM-GUARD] V6.7 resilient mode: signal handlers NOT installed "
|
| 467 |
+
"(V67_DISABLE_SIGNAL_HANDLERS=1)")
|
| 468 |
|
| 469 |
# Instala excepthook
|
| 470 |
self._old_excepthook = sys.excepthook
|