PowerMachine commited on
Commit
4a7dc19
·
verified ·
1 Parent(s): e057fbc

V6.7: upload src/bigru_t/utils/oom_guard.py (21.1KB) — FASE1+FASE2 training results

Browse files
Files changed (1) hide show
  1. 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
- # Instala signal handlers
443
- try:
444
- self._old_sigterm = signal.signal(signal.SIGTERM, self._signal_handler)
445
- except (ValueError, OSError):
446
- pass # não em thread principal
447
- try:
448
- self._old_sigint = signal.signal(signal.SIGINT, self._signal_handler)
449
- except (ValueError, OSError):
450
- pass
 
 
 
 
 
 
 
 
 
 
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