-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
2 changed files
with
122 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
# text_append_node.py | ||
|
||
class TextAppendNode: | ||
def __init__(self): | ||
pass | ||
|
||
@classmethod | ||
def INPUT_TYPES(cls): | ||
return { | ||
"required": { | ||
"current_text": ("STRING", {"multiline": True}), | ||
"append_text": ("STRING", {"multiline": True}), | ||
}, | ||
} | ||
|
||
RETURN_TYPES = ("STRING",) | ||
FUNCTION = "append_text" | ||
CATEGORY = "🧔🏻♂️🇰 🇪 🇼 🇰 " | ||
|
||
def append_text(self, current_text, append_text): | ||
current_lines = [line.strip() for line in current_text.split('\n') if line.strip()] | ||
append_lines = [line.strip() for line in append_text.split('\n') if line.strip()] | ||
|
||
result = [] | ||
|
||
# If current_text is empty, start with append_text | ||
if not current_lines: | ||
return (append_text,) | ||
|
||
# Append new text to each line of the current text | ||
for current_line in current_lines: | ||
for append_line in append_lines: | ||
result.append(f"{current_line} {append_line}") | ||
|
||
return ('\n'.join(result),) | ||
|
||
NODE_CLASS_MAPPINGS = { | ||
"TextAppendNode": TextAppendNode | ||
} | ||
|
||
NODE_DISPLAY_NAME_MAPPINGS = { | ||
"TextAppendNode": "Text Append" | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,79 @@ | ||
# with all due respect to cubiq for the original code https://github.com/cubiq/ComfyUI_essentials | ||
import model_management | ||
import torch | ||
import gc | ||
import psutil | ||
|
||
class VRAM_Debug_Plus: | ||
def __init__(self): | ||
pass | ||
|
||
@classmethod | ||
def INPUT_TYPES(s): | ||
return { | ||
"required": { | ||
"empty_cache": ("BOOLEAN", {"default": True}), | ||
"gc_collect": ("BOOLEAN", {"default": True}), | ||
"unload_all_models": ("BOOLEAN", {"default": False}), | ||
"display_mode": (["Simple", "Detailed"], {"default": "Simple"}), | ||
}, | ||
"optional": { | ||
"any_input": ("*", {}), | ||
"image_pass": ("IMAGE",), | ||
"model_pass": ("MODEL",), | ||
} | ||
} | ||
|
||
RETURN_TYPES = ("*", "IMAGE", "MODEL", "INT", "INT", "STRING") | ||
RETURN_NAMES = ("any_output", "image_pass", "model_pass", "freemem_before", "freemem_after", "memory_report") | ||
FUNCTION = "VRAMdebug" | ||
CATEGORY = "🧔🏻♂️🇰 🇪 🇼 🇰 " | ||
DESCRIPTION = """ | ||
Performs VRAM management operations and provides detailed memory usage reports. | ||
Returns inputs unchanged, used as triggers. Reports free VRAM before and after operations. | ||
""" | ||
|
||
def VRAMdebug(self, empty_cache, gc_collect, unload_all_models, display_mode, image_pass=None, model_pass=None, any_input=None): | ||
freemem_before = model_management.get_free_memory() | ||
total_memory = torch.cuda.get_device_properties(0).total_memory | ||
|
||
if empty_cache: | ||
torch.cuda.empty_cache() | ||
model_management.soft_empty_cache() | ||
if unload_all_models: | ||
model_management.unload_all_models() | ||
if gc_collect: | ||
gc.collect() | ||
|
||
freemem_after = model_management.get_free_memory() | ||
|
||
memory_report = self.generate_memory_report(freemem_before, freemem_after, total_memory, display_mode) | ||
|
||
return (any_input, image_pass, model_pass, int(freemem_before), int(freemem_after), memory_report) | ||
|
||
def generate_memory_report(self, freemem_before, freemem_after, total_memory, display_mode): | ||
used_before = total_memory - freemem_before | ||
used_after = total_memory - freemem_after | ||
freed_memory = freemem_after - freemem_before | ||
|
||
if display_mode == "Simple": | ||
return f"Free VRAM: {freemem_before:,.0f} -> {freemem_after:,.0f} ({freed_memory:+,.0f})" | ||
else: | ||
report = f"VRAM Report:\n" | ||
report += f"Total VRAM: {total_memory:,.0f}\n" | ||
report += f"Free VRAM Before: {freemem_before:,.0f} ({freemem_before/total_memory:.1%})\n" | ||
report += f"Free VRAM After: {freemem_after:,.0f} ({freemem_after/total_memory:.1%})\n" | ||
report += f"Used VRAM Before: {used_before:,.0f} ({used_before/total_memory:.1%})\n" | ||
report += f"Used VRAM After: {used_after:,.0f} ({used_after/total_memory:.1%})\n" | ||
report += f"VRAM Freed: {freed_memory:,.0f} ({freed_memory/total_memory:.1%})\n" | ||
report += f"System RAM Usage: {psutil.virtual_memory().percent:.1f}%" | ||
return report | ||
|
||
# Node class mappings | ||
NODE_CLASS_MAPPINGS = { | ||
"VRAM_Debug_Plus": VRAM_Debug_Plus | ||
} | ||
|
||
NODE_DISPLAY_NAME_MAPPINGS = { | ||
"VRAM_Debug_Plus": "VRAM Debug+" | ||
} |