Create delete_model_passthrough.py

This commit is contained in:
Isi
2025-08-28 10:42:49 +01:00
committed by GitHub
parent 3374dba84c
commit 34751007e7
+69
View File
@@ -0,0 +1,69 @@
import torch
import gc
import psutil
import os
import ctypes
class DeleteModelPassthrough:
"""
ComfyUI Custom Node that:
- Accepts any input (data) and a MODEL (`model`).
- Deletes the MODEL completely (VRAM + RAM).
- Passes through the data unchanged.
"""
@classmethod
def INPUT_TYPES(cls):
return {
"required": {
"data": ("*",), # any type (IMAGE, LATENT, CLIP, etc.)
"model": ("MODEL",), # model to delete
}
}
RETURN_TYPES = ("*",)
RETURN_NAMES = ("output",)
FUNCTION = "run"
CATEGORY = "Memory Management"
def _free_gpu_vram(self):
if not torch.cuda.is_available():
return "CUDA not available."
initial = torch.cuda.memory_allocated()
torch.cuda.empty_cache()
final = torch.cuda.memory_allocated()
freed = max(0, initial - final)
return f"GPU VRAM freed: {freed/1e9:.2f} GB"
def _free_system_ram(self):
before = psutil.virtual_memory().percent
collected = gc.collect()
after = psutil.virtual_memory().percent
freed = before - after
return f"System RAM freed: {freed:.2f}%, GC collected {collected} objects."
def run(self, data, model):
logs = []
try:
del model
torch.cuda.empty_cache()
gc.collect()
logs.append("Deleted MODEL completely from VRAM and RAM.")
except Exception as e:
logs.append(f"Failed to delete model: {e}")
logs.append(self._free_gpu_vram())
logs.append(self._free_system_ram())
return (data,)
NODE_CLASS_MAPPINGS = {
"DeleteModelPassthrough": DeleteModelPassthrough,
}
NODE_DISPLAY_NAME_MAPPINGS = {
"DeleteModelPassthrough": "Delete Model (Passthrough Any)",
}