feat: Implementar limpieza extrema de VRAM automática en SequentialLoopTrigger

- Añadir las dependencias gc, torch y comfy.model_management en loop.py.
- Implementar vaciado profundo de VRAM al finalizar la generación de frames en el método trigger_next.
- Asegurar reinicio del contador global_accumulated_frames.
- Incluir soporte multiplataforma para el vaciado de cachés de PyTorch (CUDA, ROCm y MPS para Mac).
This commit is contained in:
Meisoftcoltd
2026-04-02 07:05:16 +00:00
parent 128c2cf890
commit 9fa6057024
+24
View File
@@ -2,6 +2,9 @@ import random
import time
import urllib.request
import json
import gc
import torch
import comfy.model_management as mm
from . import register_node
global_loop_index = 0
@@ -114,5 +117,26 @@ class SequentialLoopTrigger:
global_loop_index = 0
global_accumulated_frames = 0
# --- LIMPIEZA EXTREMA DE VRAM AUTOMÁTICA (Multi-Plataforma) ---
print(f" -> 🧹 Iniciando vaciado automático de VRAM...")
try:
# 1. Obligamos al motor interno de ComfyUI a soltar los modelos
mm.unload_all_models()
mm.soft_empty_cache()
except Exception as e:
print(f" -> ⚠️ Aviso: No se pudo usar model_management: {e}")
# 2. Forzamos al recolector de basura de Python
gc.collect()
# 3. Le arrancamos a PyTorch la memoria reservada (CUDA, ROCm y Mac MPS)
if torch.cuda.is_available():
torch.cuda.empty_cache()
torch.cuda.ipc_collect()
elif hasattr(torch.backends, "mps") and torch.backends.mps.is_available():
torch.mps.empty_cache()
print(f" -> ✨ VRAM liberada con éxito. Gráfica lista para nuevos flujos.")
print(f"{'='*50}\n")
return ()