Giter Site home page Giter Site logo

lucianocirino / efficiency-nodes-comfyui Goto Github PK

View Code? Open in Web Editor NEW
576.0 576.0 119.0 246.8 MB

A collection of ComfyUI custom nodes. ⚠️ WARNING: This repo is no longer maintained.

Home Page: https://civitai.com/models/32342

License: GNU General Public License v3.0

Python 74.58% JavaScript 24.99% CSS 0.43%
comfyui custom-nodes xy-plot

efficiency-nodes-comfyui's People

Contributors

drjkl avatar edgargracia avatar jaredtherriault avatar jteijema avatar ltdrdata avatar lucianocirino avatar mijago avatar pgadoury avatar philhk avatar shiny1708 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

efficiency-nodes-comfyui's Issues

XY SCRIPT

Script generated preview images cannot preview multiple images at the same time, previous versions were able to do so in blender -comfyui

optional overlay mask not optional

This used to work properly before, but seems to be broken now, had to change line 2490 from

width, height, x_offset, y_offset, rotation, opacity, optional_mask):
to
width, height, x_offset, y_offset, rotation, opacity, optional_mask=None):

Pillow can't find `arial.tff` font if it's not in comfyUI root

Error:

Traceback (most recent call last):
  File "/opt/comfy_ui/execution.py", line 182, in execute
    executed += recursive_execute(self.server, prompt, self.outputs, x, extra_data)
  File "/opt/comfy_ui/execution.py", line 67, in recursive_execute
    outputs[unique_id] = getattr(obj, obj.FUNCTION)(**input_data_all)
  File "/opt/comfy_ui/custom_nodes/efficiency/efficiency_nodes.py", line 625, in sample
    font_size = adjusted_font_size(text, initial_font_size, img.width)
  File "/opt/comfy_ui/custom_nodes/efficiency/efficiency_nodes.py", line 549, in adjusted_font_size
    font = ImageFont.truetype('arial.ttf', initial_font_size)
  File "/usr/local/lib/python3.10/site-packages/PIL/ImageFont.py", line 996, in truetype
    return freetype(font)
  File "/usr/local/lib/python3.10/site-packages/PIL/ImageFont.py", line 993, in freetype
    return FreeTypeFont(font, size, index, encoding, layout_engine)
  File "/usr/local/lib/python3.10/site-packages/PIL/ImageFont.py", line 248, in __init__
    self.font = core.getfont(
OSError: cannot open resource

The README file does not say that you need to download the font

How about adding the font to the root of the plugin?
efficiency_nodes.py:

from pathlib import Path
FONT_PATH = Path(__file__).parent / "arial.ttf"

(IMPORT FAILED) error when first importing

Hi, I am new to comfyui and was trying to use your nodes since it's seems very orderly and simple.
However I was having an issue when I tried to import the nodes.
I was wondering if you can help with this. Your help is much appreciated.
Below is the cmd log,

Efficiency Nodes: Installing required package 'simpleeval'...Traceback (most recent call last):
File "D:\AI\ComfyUI\ComfyUI_windows_portable\ComfyUI\nodes.py", line 1647, in load_custom_node
module_spec.loader.exec_module(module)
File "", line 883, in exec_module
File "", line 241, in call_with_frames_removed
File "D:\AI\ComfyUI\ComfyUI_windows_portable\ComfyUI\custom_nodes\efficiency-nodes-comfyui_init
.py", line 1, in
from .efficiency_nodes import NODE_CLASS_MAPPINGS
File "D:\AI\ComfyUI\ComfyUI_windows_portable\ComfyUI\custom_nodes\efficiency-nodes-comfyui\efficiency_nodes.py", line 43, in
from tsc_utils import *
File "D:\AI\ComfyUI\ComfyUI_windows_portable\ComfyUI\custom_nodes\efficiency-nodes-comfyui\tsc_utils.py", line 500, in
install_packages(my_dir)
File "D:\AI\ComfyUI\ComfyUI_windows_portable\ComfyUI\custom_nodes\efficiency-nodes-comfyui\tsc_utils.py", line 485, in install_packages
subprocess.check_call(['pip', 'install', pkg, '--target=' + target_dir, '--no-warn-script-location',
File "subprocess.py", line 369, in check_call
subprocess.CalledProcessError: Command '['pip', 'install', 'simpleeval', '--target=D:\AI\ComfyUI\ComfyUI_windows_portable\python_embeded\Lib\site-packages', '--no-warn-script-location', '--disable-pip-version-check']' returned non-zero exit status 1.

Cannot import D:\AI\ComfyUI\ComfyUI_windows_portable\ComfyUI\custom_nodes\efficiency-nodes-comfyui module for custom nodes: Command '['pip', 'install', 'simpleeval', '--target=D:\AI\ComfyUI\ComfyUI_windows_portable\python_embeded\Lib\site-packages', '--no-warn-script-location', '--disable-pip-version-check']' returned non-zero exit status 1.

Import times for custom nodes:
1.8 seconds (IMPORT FAILED): D:\AI\ComfyUI\ComfyUI_windows_portable\ComfyUI\custom_nodes\efficiency-nodes-comfyui

"1.5 update" broke using Efficient Loader with CLIP nodes

Specifically 41afbf2

  1. CLIP output is no longer explicitly exposed
  2. I don't see any way to get the CLIP datatype out of DEPENDENCIES

E.g. the following pre-1.5 connection is no longer possible, and I for one use the Advanced CLIP Text Encode nodes extensively (although I usually use better prompts than this 😝). I could load CLIP some other way, but then... what's the point of using this loader...
image

Weird image/preview output

I just tested attaching Efficient Loader to KSampler (Efficient) , then image ouput linked to a save image node and a preview image node. No loras, connected all the KSample inputs except script.

If I leave preview_image as disabled - I still get a preview in the KSampler (Efficient), but the preview image node shows nothing, the save image shows nothing, and it saves a 1x1 pixel image!

If I enable preview_image, I get 2 previews of the same image in KSampler (Efficient), the preview image node shows a preview, but the save image node is empty. It does actually save the image in this case though...

I've got a nuch of other custom nodes so perhaps it's a conflict, any ideas?

ComfyUI-Impact-Pack
ComfyUI_Comfyroll_CustomNodes
ComfyUI_SeeCoder
ComfyUI_UltimateSDUpscale
comfy_controlnet_preprocessors
Derfuu_ComfyUI_ModdedNodes
efficiency-nodes-comfyui
images-grid-comfy-plugin
masquerade-nodes-comfyui
SeargeSDXL
was-node-suite-comfyui

With the last update i have IMPORT FAILED: No module named 'websockets'

First of all thank you for your work.
Like i wrote from the last update i receive import failed error with this specification:
File "E:\AI\ComfyUI\ComfyUI\custom_nodes\efficiency-nodes-comfyui_init_.py", line 1, in
from .efficiency_nodes import NODE_CLASS_MAPPINGS
File "E:\AI\ComfyUI\ComfyUI\custom_nodes\efficiency-nodes-comfyui\efficiency_nodes.py", line 43, in
from tsc_utils import *
File "E:\AI\ComfyUI\ComfyUI\custom_nodes\efficiency-nodes-comfyui\tsc_utils.py", line 500, in
import websockets #https://github.com/python-websockets/websockets
ModuleNotFoundError: No module named 'websockets'

Cannot import E:\AI\ComfyUI\ComfyUI\custom_nodes\efficiency-nodes-comfyui module for custom nodes: No module named 'websockets'

Of course i update to the last version the Comfyui this morning too.

Not activate preview image,

The preview of the illustration generated with KSampler Efficient is not being displayed. What should I do?

cmd log is here.

E:\AI\ComfyUI_windows_portable>.\python_embeded\python.exe -s ComfyUI\main.py --windows-standalone-build
xformers version: 0.0.17+c36468d.d20230316
Set vram state to: NORMAL_VRAM
Using xformers cross attention
Adding extra search path checkpoints C:/AI/stable-diffusion-webui/models/Stable-diffusion
Adding extra search path configs C:/AI/stable-diffusion-webui/models/Stable-diffusion
Adding extra search path vae C:/AI/stable-diffusion-webui/models/VAE
Adding extra search path loras C:/AI/stable-diffusion-webui/models/Lora
Adding extra search path upscale_models C:/AI/stable-diffusion-webui/models/ESRGAN
Adding extra search path upscale_models C:/AI/stable-diffusion-webui/models/SwinIR
Adding extra search path embeddings C:/AI/stable-diffusion-webui/embeddings
Adding extra search path controlnet C:/AI/stable-diffusion-webui/models/ControlNet
Davemane42 Custom Nodes: Loaded
xformers version: 0.0.17+c36468d.d20230316
Set vram state to: NORMAL_VRAM
WAS Node Suite Running At: E:\AI\ComfyUI_windows_portable\ComfyUI\custom_nodes\was-node-suite-comfyui-main\WAS_Node_Suite.py
WAS Node Suite Running From: E:\AI\ComfyUI_windows_portable\ComfyUI\custom_nodes\was-node-suite-comfyui-main
WAS Node Suite Warning: use_legacy_ascii_text is True in was_suite_config.json. ASCII type is deprecated and the default will be TEXT in the future.
WAS Node Suite: Loaded
Starting server

To see the GUI go to: http://127.0.0.1:8188
got prompt
E:\AI\ComfyUI_windows_portable\python_embeded\lib\site-packages\safetensors\torch.py:99: UserWarning: TypedStorage is deprecated. It will be removed in the future and UntypedStorage will be the only storage class. This should only matter to you if you are using storages directly. To access UntypedStorage directly, use tensor.untyped_storage() instead of tensor.storage()
with safe_open(filename, framework="pt", device=device) as f:
E:\AI\ComfyUI_windows_portable\python_embeded\lib\site-packages\torch_utils.py:776: UserWarning: TypedStorage is deprecated. It will be removed in the future and UntypedStorage will be the only storage class. This should only matter to you if you are using storages directly. To access UntypedStorage directly, use tensor.untyped_storage() instead of tensor.storage()
return self.fget.get(instance, owner)()
E:\AI\ComfyUI_windows_portable\python_embeded\lib\site-packages\torch\storage.py:899: UserWarning: TypedStorage is deprecated. It will be removed in the future and UntypedStorage will be the only storage class. This should only matter to you if you are using storages directly. To access UntypedStorage directly, use tensor.untyped_storage() instead of tensor.storage()
storage = cls(wrap_storage=untyped_storage)
making attention of type 'vanilla-xformers' with 512 in_channels
building MemoryEfficientAttnBlock with 512 in_channels...
Working with z of shape (1, 4, 32, 32) = 4096 dimensions.
making attention of type 'vanilla-xformers' with 512 in_channels
building MemoryEfficientAttnBlock with 512 in_channels...
LatentDiffusion: Running in eps-prediction mode
Setting up MemoryEfficientCrossAttention. Query dim is 320, context_dim is None and using 8 heads.
Setting up MemoryEfficientCrossAttention. Query dim is 320, context_dim is 768 and using 8 heads.
Setting up MemoryEfficientCrossAttention. Query dim is 320, context_dim is None and using 8 heads.
Setting up MemoryEfficientCrossAttention. Query dim is 320, context_dim is 768 and using 8 heads.
Setting up MemoryEfficientCrossAttention. Query dim is 640, context_dim is None and using 8 heads.
Setting up MemoryEfficientCrossAttention. Query dim is 640, context_dim is 768 and using 8 heads.
Setting up MemoryEfficientCrossAttention. Query dim is 640, context_dim is None and using 8 heads.
Setting up MemoryEfficientCrossAttention. Query dim is 640, context_dim is 768 and using 8 heads.
Setting up MemoryEfficientCrossAttention. Query dim is 1280, context_dim is None and using 8 heads.
Setting up MemoryEfficientCrossAttention. Query dim is 1280, context_dim is 768 and using 8 heads.
Setting up MemoryEfficientCrossAttention. Query dim is 1280, context_dim is None and using 8 heads.
Setting up MemoryEfficientCrossAttention. Query dim is 1280, context_dim is 768 and using 8 heads.
Setting up MemoryEfficientCrossAttention. Query dim is 1280, context_dim is None and using 8 heads.
Setting up MemoryEfficientCrossAttention. Query dim is 1280, context_dim is 768 and using 8 heads.
Setting up MemoryEfficientCrossAttention. Query dim is 1280, context_dim is None and using 8 heads.
Setting up MemoryEfficientCrossAttention. Query dim is 1280, context_dim is 768 and using 8 heads.
Setting up MemoryEfficientCrossAttention. Query dim is 1280, context_dim is None and using 8 heads.
Setting up MemoryEfficientCrossAttention. Query dim is 1280, context_dim is 768 and using 8 heads.
Setting up MemoryEfficientCrossAttention. Query dim is 1280, context_dim is None and using 8 heads.
Setting up MemoryEfficientCrossAttention. Query dim is 1280, context_dim is 768 and using 8 heads.
Setting up MemoryEfficientCrossAttention. Query dim is 640, context_dim is None and using 8 heads.
Setting up MemoryEfficientCrossAttention. Query dim is 640, context_dim is 768 and using 8 heads.
Setting up MemoryEfficientCrossAttention. Query dim is 640, context_dim is None and using 8 heads.
Setting up MemoryEfficientCrossAttention. Query dim is 640, context_dim is 768 and using 8 heads.
Setting up MemoryEfficientCrossAttention. Query dim is 640, context_dim is None and using 8 heads.
Setting up MemoryEfficientCrossAttention. Query dim is 640, context_dim is 768 and using 8 heads.
Setting up MemoryEfficientCrossAttention. Query dim is 320, context_dim is None and using 8 heads.
Setting up MemoryEfficientCrossAttention. Query dim is 320, context_dim is 768 and using 8 heads.
Setting up MemoryEfficientCrossAttention. Query dim is 320, context_dim is None and using 8 heads.
Setting up MemoryEfficientCrossAttention. Query dim is 320, context_dim is 768 and using 8 heads.
Setting up MemoryEfficientCrossAttention. Query dim is 320, context_dim is None and using 8 heads.
Setting up MemoryEfficientCrossAttention. Query dim is 320, context_dim is 768 and using 8 heads.
DiffusionWrapper has 859.52 M params.
making attention of type 'vanilla-xformers' with 512 in_channels
building MemoryEfficientAttnBlock with 512 in_channels...
Working with z of shape (1, 4, 32, 32) = 4096 dimensions.
making attention of type 'vanilla-xformers' with 512 in_channels
building MemoryEfficientAttnBlock with 512 in_channels...
Restored from C:/AI/stable-diffusion-webui/models/VAE\kl-f8-anime2.ckpt
DDIM Sampler: 100%|████████████████████████████████████████████████████████████████████| 20/20 [00:02<00:00, 6.75it/s]

X/Y plot broken

Image generation works as expected and completes, but just before final image output, I get the traceback below

XY Plot Results:
img_count: 30
img_dims: 768 x 512
plot_dim: 10 x 3
ckpt: 
clip_skip: -1
lora(mod,clip): 000001.safetensors(1.0,1.0), 000002.safetensors(1.0,1.0), 000003.safetensors(1.0,1.0), 000004.safetensors(1.0,1.0),  000005.safetensors(1.0,1.0),  000006.safetensors(1.0,1.0),  000007.safetensors(1.0,1.0),  000008.safetensors(1.0,1.0),  000009.safetensors(1.0,1.0)
vae: 
seed: 599774203296300
steps: 30
cfg: 6.0, 7.0, 8.0
sampler: dpmpp_2m
scheduler: karras
denoise: 1.0
!!! Exception during processing !!!
Traceback (most recent call last):
  File "D:\ComfyUI\execution.py", line 145, in recursive_execute
    output_data, output_ui = get_output_data(obj, input_data_all)
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\ComfyUI\execution.py", line 75, in get_output_data
    return_values = map_node_over_list(obj, input_data_all, obj.FUNCTION, allow_interrupt=True)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\ComfyUI\execution.py", line 68, in map_node_over_list
    results.append(getattr(obj, func)(**slice_dict(input_data_all, i)))
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\ComfyUI\custom_nodes\Efficiency\efficiency_nodes.py", line 1433, in sample
    font_size = adjusted_font_size(text, initial_font_size, img.width)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\ComfyUI\custom_nodes\Efficiency\efficiency_nodes.py", line 1314, in adjusted_font_size
    text_width, _ = font.getsize(text)
                    ^^^^^^^^^^^^
AttributeError: 'FreeTypeFont' object has no attribute 'getsize'

I tried working around the above, but get new TBs and decided I didn't want to end up as a maintainer in here.

Rolling back to this X/Y Plot node (as soon as I find its commit), given that it actually works

[Feature request] - Add token normalisation and interpolation from Advanced CLIP text encode

First, allow me to thank you for your terrific work greatly simplifying my workflow.

Recently I saw and tried the Advanced CLIP text encode from BlenderNeko.
It has a great feature to change the token normalisation and interpolation which would be amazing to add to your Efficient Loader officially. It supports A1111, Comfy, Compel and Comfy++ interpolations - so it is easier to achieve the same result that A1111 produces, but with only 2 nodes. (I added it locally but unfortunately, I am not familiar with licences and how to start this cooperation with BlenderNeko.)

I added the 2 new params at the bottom, so no messing with the values above if Efficient Loader is already used in a workflow. They apply for both positive and negative prompts.

What do you think? Is this feasible?

[Bug] External seed input causes type error

Using an external node (i.e not a primitive) as the seed input of a KSampler (Efficient) node throws a typeError;

Traceback (most recent call last):
File "T:\AI\Comfy\ComfyUI\execution.py", line 183, in execute
recursive_execute(self.server, prompt, self.outputs, x, extra_data, executed)
File "T:\AI\Comfy\ComfyUI\execution.py", line 67, in recursive_execute
outputs[unique_id] = getattr(obj, obj.FUNCTION)(**input_data_all)
File "T:\AI\Comfy\ComfyUI\custom_nodes\efficiency-nodes-comfyui\efficiency_nodes.py", line 433, in sample
last_results = get_value_by_id("results", my_unique_id)
TypeError: int() argument must be a string, a bytes-like object or a real number, not 'NoneType'

The only thing I can see changing is inside the prompt input - Sampler_state, 'seed' is a reference to a node instead of an integer.

This version of the prompt input works:

prompt: {'1': {'inputs': {'ckpt_name': 'Good\deliberate_v2.safetensors', 'vae_name': 'vae-ft-mse-840000-ema-pruned.safetensors', 'clip_skip': -1, 'lora_name': 'None', 'lora_model_strength': 1.0, 'lora_clip_strength': 1.0, 'positive': 'cat', 'negative': 'dog', 'empty_latent_width': 512, 'empty_latent_height': 512, 'batch_size': 1}, 'class_type': 'Efficient Loader'}, '23': {'inputs': {'sampler_state': 'Sample', 'seed': 819386554663363, 'steps': 3, 'cfg': 8.0, 'sampler_name': 'euler', 'scheduler': 'karras', 'denoise': 1.0, 'preview_image': 'Enabled', 'model': ['1', 0], 'positive': ['1', 1], 'negative': ['1', 2], 'latent_image': ['1', 3], 'optional_vae': ['1', 4]}, 'class_type': 'KSampler (Efficient)'}, '28': {'inputs': {'model': ['1', 0], 'pos': ['1', 1], 'neg': ['1', 2], 'latent': ['1', 3], 'vae': ['1', 4]}, 'class_type': 't Pipe IN t'}, '29': {'inputs': {'pipe': ['28', 0]}, 'class_type': 't Pipe OUT t'}}

and this one doesn't:

prompt: {'1': {'inputs': {'ckpt_name': 'Good\deliberate_v2.safetensors', 'vae_name': 'vae-ft-mse-840000-ema-pruned.safetensors', 'clip_skip': -1, 'lora_name': 'None', 'lora_model_strength': 1.0, 'lora_clip_strength': 1.0, 'positive': 'cat', 'negative': 'dog', 'empty_latent_width': 512, 'empty_latent_height': 512, 'batch_size': 1}, 'class_type': 'Efficient Loader'}, '23': {'inputs': {'sampler_state': 'Sample', 'seed': ['29', 6], 'steps': 3, 'cfg': 8.0, 'sampler_name': 'euler', 'scheduler': 'karras', 'denoise': 1.0, 'preview_image': 'Enabled', 'model': ['1', 0], 'positive': ['1', 1], 'negative': ['1', 2], 'latent_image': ['1', 3], 'optional_vae': ['1', 4]}, 'class_type': 'KSampler (Efficient)'}, '28': {'inputs': {'seed': 819386554663363, 'model': ['1', 0], 'pos': ['1', 1], 'neg': ['1', 2], 'latent': ['1', 3], 'vae': ['1', 4]}, 'class_type': 't Pipe IN t'}, '29': {'inputs': {'pipe': ['28', 0]}, 'class_type': 't Pipe OUT t'}}

'type' object is not subscriptable

Been getting this error whenever I try to use these nodes recently

Traceback (most recent call last):
  File "/home/USER/ComfyUI/nodes.py", line 1273, in load_custom_node
    module_spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 843, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/home/david/ComfyUI/custom_nodes/efficiency_nodes.py", line 302, in <module>
    last_helds: dict[str, list] = {
TypeError: 'type' object is not subscriptable

Cannot import /home/USER/ComfyUI/custom_nodes/efficiency_nodes.py module for custom nodes: 'type' object is not subscriptable

[WinError 6] The handle is invalid

Looks like some great stuff here! Unfortunately, I'm having trouble installing it both manually and using the ComfyUI Manager. I have removed all other custom nodes, to rule out any possible conflict. I'm pretty new to this space, so I'm assuming it's probably something I'm doing wrong. Do you have any suggestions? Thanks!

Logs here
C:\Users\Public\comfyui>.\python_embeded\python.exe -s ComfyUI\main.py --listen 
Total VRAM 8192 MB, total RAM 16314 MB
xformers version: 0.0.20
Set vram state to: NORMAL_VRAM
Device: cuda:0 NVIDIA GeForce RTX 2080 SUPER : cudaMallocAsync
Using xformers cross attention
Adding extra search path checkpoints C:\Users\Public\stable-diffusion-webui\models/Stable-diffusion
Adding extra search path configs C:\Users\Public\stable-diffusion-webui\models/Stable-diffusion
Adding extra search path vae C:\Users\Public\stable-diffusion-webui\models/VAE
Adding extra search path loras C:\Users\Public\stable-diffusion-webui\models/Lora
Adding extra search path loras C:\Users\Public\stable-diffusion-webui\models/LyCORIS
Adding extra search path upscale_models C:\Users\Public\stable-diffusion-webui\models/ESRGAN
Adding extra search path upscale_models C:\Users\Public\stable-diffusion-webui\models/RealESRGAN
Adding extra search path upscale_models C:\Users\Public\stable-diffusion-webui\models/SwinIR
Adding extra search path embeddings C:\Users\Public\stable-diffusion-webui\embeddings
Adding extra search path hypernetworks C:\Users\Public\stable-diffusion-webui\models/hypernetworks
Adding extra search path controlnet C:\Users\Public\stable-diffusion-webui\models/ControlNet
Traceback (most recent call last):
  File "C:\Users\Public\comfyui\ComfyUI\nodes.py", line 1516, in load_custom_node
    module_spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 883, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\Users\Public\comfyui\ComfyUI\custom_nodes\efficiency-nodes-comfyui\__init__.py", line 1, in <module>
    from .efficiency_nodes import NODE_CLASS_MAPPINGS
  File "C:\Users\Public\comfyui\ComfyUI\custom_nodes\efficiency-nodes-comfyui\efficiency_nodes.py", line 2334, in <module>
    install_simpleeval()
  File "C:\Users\Public\comfyui\ComfyUI\custom_nodes\efficiency-nodes-comfyui\efficiency_nodes.py", line 2327, in install_simpleeval
    if 'simpleeval' not in packages():
  File "C:\Users\Public\comfyui\ComfyUI\custom_nodes\efficiency-nodes-comfyui\efficiency_nodes.py", line 2332, in packages
    return [(r.decode().split('==')[0] if not versions else r.decode()) for r in subprocess.check_output([sys.executable, '-m', 'pip', 'freeze']).split()]
  File "subprocess.py", line 421, in check_output
  File "subprocess.py", line 503, in run
  File "subprocess.py", line 837, in __init__
  File "subprocess.py", line 1272, in _get_handles
OSError: [WinError 6] The handle is invalid

Cannot import C:\Users\Public\comfyui\ComfyUI\custom_nodes\efficiency-nodes-comfyui module for custom nodes: [WinError 6] The handle is invalid

Import times for custom nodes:
   0.0 seconds (IMPORT FAILED): C:\Users\Public\comfyui\ComfyUI\custom_nodes\efficiency-nodes-comfyui

Starting server

To see the GUI go to: http://0.0.0.0:8188

Updated pack, now Evaluate Integer node won't work

Created an image2image workflow which automatically adjusts steps across multiple ksamplers using the evaluateinteger node. Everything worked great, uploaded flow to CivitAI, over 130 downloads.
Tonight went to do more work on it, updated everything (been a few weeks since last doing that), and now the first evaluateinteger node in line is throwing this error.
image
image

Support for mixed output of several different lora

Previously I was using the original lora loader to mix the different lora, but now the clip and CLIP connection is indicating a type discrepancy
After the update I found that the Ksampler node can add lora directly, is it possible to support mixing different lora directly?

Error on startup fresh install

Got this error on a fresh install, latest version of ComfyUI and folder from the direct download link.

Traceback (most recent call last):
File "/home/mario/Desktop/AI/ComfyUI/nodes.py", line 1647, in load_custom_node
module_spec.loader.exec_module(module)
File "", line 848, in exec_module
File "", line 219, in _call_with_frames_removed
File "/home/mario/Desktop/AI/ComfyUI/custom_nodes/efficiency-nodes-comfyui/init.py", line 1, in
from .efficiency_nodes import NODE_CLASS_MAPPINGS
File "/home/mario/Desktop/AI/ComfyUI/custom_nodes/efficiency-nodes-comfyui/efficiency_nodes.py", line 43, in
from tsc_utils import *
File "/home/mario/Desktop/AI/ComfyUI/custom_nodes/efficiency-nodes-comfyui/tsc_utils.py", line 41, in
last_helds: dict[str, list] = {
TypeError: 'type' object is not subscriptable

Does not work with SDXL 1.0 Base or Refiner

As the title says, it doesn't work at all with sdxl 1.0 base or the refiner model, at least it doesn't for me. I have to fall back to the original nodes to generate sdxl images.

Error occurred when executing LoraLoader: 'dict' object has no attribute 'lower'

https://github.com/LucianoCirino/efficiency-nodes-comfyui/blob/71b461738284e117786c04a2f22d4ca54f2068db/lora_patch.py#L50C6-L50C6

`Error occurred when executing LoraLoader:

'dict' object has no attribute 'lower'

File ".\ComfyUI\execution.py", line 145, in recursive_execute
output_data, output_ui = get_output_data(obj, input_data_all)
File ".\ComfyUI\execution.py", line 75, in get_output_data
return_values = map_node_over_list(obj, input_data_all, obj.FUNCTION, allow_interrupt=True)
File ".\ComfyUI\execution.py", line 68, in map_node_over_list
results.append(getattr(obj, func)(**slice_dict(input_data_all, i)))
File ".\ComfyUI\nodes.py", line 505, in load_lora
model_lora, clip_lora = comfy.sd.load_lora_for_models(model, clip, lora, strength_model, strength_clip)
File ".\ComfyUI\custom_nodes\efficiency-nodes-comfyui\lora_patch.py", line 250, in load_lora_for_models
loaded = load_lora(lora_path, key_map)
File ".\ComfyUI\custom_nodes\efficiency-nodes-comfyui\lora_patch.py", line 50, in load_lora
lora = utils.load_torch_file(path)
File ".\ComfyUI\comfy\utils.py", line 8, in load_torch_file
if ckpt.lower().endswith(".safetensors"):`

Can not use negative values in XY Input: Manual XY Entry

I tried the manual scrip node for x/z/y plot, and it works fine, except went wanting to use negative values…it gives "XY Plot Error" -1.0 is not valid strength number must be between 0 and 10... BUT... If I use the XY Input: LoRA Adv node, then negative values like -1 or -0.9 work fine… Any idea what the issue is ?
XYZ-Plot Error

Cannot unpack non-iterable CLIP object

Trying to run the example XY plot, I just swapped out models, and swapped from a XY model to an XY steps, and I can't get it to work, I keep getting error:

cannot unpack non-iterable CLIP object

Might be another conflict as per previous issue I just posted?? (but unsure)

I've attached workflow (I think?!)

cannot unpack non-iterable CLIP object.json.txt

Error in GUI:

Error occurred when executing KSampler (Efficient):

cannot unpack non-iterable CLIP object

File "C:\SDAI\ComfyUI\ComfyUI\execution.py", line 144, in recursive_execute
output_data, output_ui = get_output_data(obj, input_data_all)
File "C:\SDAI\ComfyUI\ComfyUI\execution.py", line 74, in get_output_data
return_values = map_node_over_list(obj, input_data_all, obj.FUNCTION, allow_interrupt=True)
File "C:\SDAI\ComfyUI\ComfyUI\execution.py", line 67, in map_node_over_list
results.append(getattr(obj, func)(**slice_dict(input_data_all, i)))
File "C:\SDAI\ComfyUI\ComfyUI\custom_nodes\efficiency-nodes-comfyui\efficiency_nodes.py", line 806, in sample
vae_name, ckpt_name, clip, clip_skip, positive_prompt, negative_prompt,
Queue size: 0
Extra options

In console:

got prompt
!!! Exception during processing !!!
Traceback (most recent call last):
File "C:\SDAI\ComfyUI\ComfyUI\execution.py", line 144, in recursive_execute
output_data, output_ui = get_output_data(obj, input_data_all)
File "C:\SDAI\ComfyUI\ComfyUI\execution.py", line 74, in get_output_data
return_values = map_node_over_list(obj, input_data_all, obj.FUNCTION, allow_interrupt=True)
File "C:\SDAI\ComfyUI\ComfyUI\execution.py", line 67, in map_node_over_list
results.append(getattr(obj, func)(**slice_dict(input_data_all, i)))
File "C:\SDAI\ComfyUI\ComfyUI\custom_nodes\efficiency-nodes-comfyui\efficiency_nodes.py", line 806, in sample
vae_name, ckpt_name, clip, clip_skip, positive_prompt, negative_prompt,
TypeError: cannot unpack non-iterable CLIP object

simpleeval not defined

I'm using version 1.74
I get this error when using the evaluate nodes:

Error occurred when executing Evaluate Strings:

name 'simpleeval' is not defined

File "D:\ComfyUI_windows_portable\ComfyUI\execution.py", line 151, in recursive_execute
output_data, output_ui = get_output_data(obj, input_data_all)
File "D:\ComfyUI_windows_portable\ComfyUI\execution.py", line 81, in get_output_data
return_values = map_node_over_list(obj, input_data_all, obj.FUNCTION, allow_interrupt=True)
File "D:\ComfyUI_windows_portable\ComfyUI\execution.py", line 74, in map_node_over_list
results.append(getattr(obj, func)(**slice_dict(input_data_all, i)))
File "D:\ComfyUI_windows_portable\ComfyUI\custom_nodes\efficiency-nodes-comfyui\efficiency_nodes.py", line 2873, in evaluate
functions = simpleeval.DEFAULT_FUNCTIONS.copy()

and

Error occurred when executing Evaluate Floats:

name 'simpleeval' is not defined

File "D:\ComfyUI_windows_portable\ComfyUI\execution.py", line 151, in recursive_execute
output_data, output_ui = get_output_data(obj, input_data_all)
File "D:\ComfyUI_windows_portable\ComfyUI\execution.py", line 81, in get_output_data
return_values = map_node_over_list(obj, input_data_all, obj.FUNCTION, allow_interrupt=True)
File "D:\ComfyUI_windows_portable\ComfyUI\execution.py", line 74, in map_node_over_list
results.append(getattr(obj, func)(**slice_dict(input_data_all, i)))
File "D:\ComfyUI_windows_portable\ComfyUI\custom_nodes\efficiency-nodes-comfyui\efficiency_nodes.py", line 2841, in evaluate
result = simpleeval.simple_eval(python_expression, names={'a': a, 'b': b, 'c': c})

Multi KSampler (Efficient) use case

Hi,

I have a use case that require multi KSampler. Appreciate if we can have XY script that control common values of these 2 in the same run. Currently it only affect the 2nd KSampler, if I link the Script to 1st KSampler. It causes error.

telegram-cloud-photo-size-5-6186013917684283070-y

telegram-cloud-photo-size-5-6186013917684283068-y

Efficient Loader ignoring SDXL LORAs ?

I'm trying to use the Offset LORA that comes with SDXL and it is not picked up at all. No errors, it just acts as if it isn't present. I've also tried plugging in a LORA stack node and the LORA gets ignored there as well.

Startup Failure with latest update

Newest update cause this startup issue?
Traceback (most recent call last):
File "C:\AI_Files\ComfyUI\nodes.py", line 1647, in load_custom_node
module_spec.loader.exec_module(module)
File "", line 883, in exec_module
File "", line 241, in call_with_frames_removed
File "C:\AI_Files\ComfyUI\custom_nodes\efficiency-nodes-comfyui_init
.py", line 1, in
from .efficiency_nodes import NODE_CLASS_MAPPINGS
File "C:\AI_Files\ComfyUI\custom_nodes\efficiency-nodes-comfyui\efficiency_nodes.py", line 43, in
from tsc_utils import *
File "C:\AI_Files\ComfyUI\custom_nodes\efficiency-nodes-comfyui\tsc_utils.py", line 493, in
install_packages(my_dir)
File "C:\AI_Files\ComfyUI\custom_nodes\efficiency-nodes-comfyui\tsc_utils.py", line 479, in install_packages
installed_packages = packages(embedded_python_exe, versions=False)
File "C:\AI_Files\ComfyUI\custom_nodes\efficiency-nodes-comfyui\tsc_utils.py", line 490, in packages
subprocess.check_output([python_exe, '-m', 'pip', 'freeze']).split()]
File "C:\Programs\Python\Python310\lib\subprocess.py", line 421, in check_output
return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
File "C:\Programs\Python\Python310\lib\subprocess.py", line 503, in run
with Popen(*popenargs, **kwargs) as process:
File "C:\Programs\Python\Python310\lib\subprocess.py", line 971, in init
self._execute_child(args, executable, preexec_fn, close_fds,
File "C:\Programs\Python\Python310\lib\subprocess.py", line 1440, in _execute_child
hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
FileNotFoundError: [WinError 2] The system cannot find the file specified

Cannot import C:\AI_Files\ComfyUI\custom_nodes\efficiency-nodes-comfyui module for custom nodes: [WinError 2] The system cannot find the file specified

Multiple LORAs

Hello,

I'm wondering if it's possible to use multiple LORAs with the Efficient Loader?

[Feature Request] Add Lora and Hypernetwork plus CLIP textboxes to KSampler and add Hypernetworks to Loader.

Support for hypernetworks has been added to ComfyUI as of 12 hours ago so this is now possible.
The efficient KSampler would benefit from having lora and hypernetwork strengths added along with the clip textboxes because that would result in being able to use less nodes when doing multiple sampling stages (most basic being 2 step like HiRes) in which you might want to condition CLIP differently and set different lora/hypernetwork strengths, or perhaps even load additional LORAs further into the sampling.

I assume this should be doable as it's nothing new, rather it would just be features from the Efficient Loader moved over to the KSampler.

XY plot to simultaneously vary LoRA number and strength?

I recently started using this plugin, and I was able to use the manual XY entry node to achieve individually iterating over LoRAs with incremental epoch names or varying the strength of a single LoRA.

prodigy_02
prodigy_01

However, I was wondering if it was possible to replicate this workflow from AUTOMATIC1111 xyz scripts.

functionality_01

Basically, I would be combining both manual XY entries so that I can see the variation in LoRA epoch and LoRA strength. In A1111, I would use Prompt S/R to replace both the epoch number and the LoRA strength, but I'm not sure how to achieve that using efficiency nodes.

Efficiency node not avail in the contextual menu

Hi, I did install this node using the comfy mngr. I see the correct folder inside the custom_nodes as expected. however, under the menu Add node-sampling> there are only the defaul
Capture
ts, see pic. Refreshed, restarted, checked for missing etc...

comfyui hangs when stopping

Since the update this morning comfy hangs when quitting "python main.py". You have to press another ctrl-c to end:

Stopped server
^CException ignored in: <module 'threading' from '/opt/homebrew/Cellar/[email protected]/3.10.12_1/Frameworks/Python.framework/Versions/3.10/lib/python3.10/threading.py'>
Traceback (most recent call last):
File "/opt/homebrew/Cellar/[email protected]/3.10.12_1/Frameworks/Python.framework/Versions/3.10/lib/python3.10/threading.py", line 1567, in _shutdown
lock.acquire()
KeyboardInterrupt:

This did not happen before the update.

X/Y Plot - TypeError: sample() got an unexpected keyword argument 'seed'

Setup X/Y plot as shown in example, executing returns:

!!! Exception during processing !!! Traceback (most recent call last): File "/home/user/Downloads/Git/External/ComfyUI/execution.py", line 141, in recursive_execute output_data, output_ui = get_output_data(obj, input_data_all) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/user/Downloads/Git/External/ComfyUI/execution.py", line 75, in get_output_data return_values = map_node_over_list(obj, input_data_all, obj.FUNCTION, allow_interrupt=True) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/user/Downloads/Git/External/ComfyUI/execution.py", line 68, in map_node_over_list results.append(getattr(obj, func)(**slice_dict(input_data_all, i))) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/user/Downloads/Git/External/ComfyUI/custom_nodes/efficiency-nodes-comfyui/efficiency_nodes.py", line 1197, in sample process_values(model, seed_updated, steps, cfg, sampler_name, scheduler[0], File "/home/user/Downloads/Git/External/ComfyUI/custom_nodes/efficiency-nodes-comfyui/efficiency_nodes.py", line 1105, in process_values samples = common_ksampler(model, seed, steps, cfg, sampler_name, scheduler, positive, negative, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/user/Downloads/Git/External/ComfyUI/nodes.py", line 966, in common_ksampler samples = comfy.sample.sample(model, noise, steps, cfg, sampler_name, scheduler, positive, negative, latent_image, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ TypeError: sample() got an unexpected keyword argument 'seed'

Multiple Loras or enabling a different Loader for XY plot node

Hi, I would like to request a feature.

I have multi lora setup, and I would like to test other loras (157 styles) against it, with XY plot, but Efficient Loader doesn't allow for multiple Loras, and other loaders don't have the "dependencies" output.

Would it be possible to either allow EfficientLoader to have multiple Loras or create something like a 'dependencies input node', that could be connected with basic ComfyUI nodes, to satisfy the dependencies input on the "XY Plot" node?

It would be incredibly helpful but I am not a programmer, so please excuse me, if it's an unfeasible idea.

Example:
photobash

Scalable input for X/Y Input node.

Currently that node relies on multiple combos.

How about change just simple multiline text box?
And separate them by line break.

Then we can adjust plot data more flexibly.

[Enhancement] Passing Seed Values

Would it be considerable to add seeds to input/output nodes here? It would make things a lot tidy when you want to control seed values across large generation maps.

[Error][New X/Y Plot]When the calculation is completed and the final step of merging images is reached, an error occurs

`Error occurred when executing KSampler (Efficient):

unsupported operand type(s) for *: 'int' and 'NoneType'

File "D:\Blender_ComfyUI\ComfyUI\execution.py", line 141, in recursive_execute
output_data, output_ui = get_output_data(obj, input_data_all)
File "D:\Blender_ComfyUI\ComfyUI\execution.py", line 75, in get_output_data
return_values = map_node_over_list(obj, input_data_all, obj.FUNCTION, allow_interrupt=True)
File "D:\Blender_ComfyUI\ComfyUI\execution.py", line 68, in map_node_over_list
results.append(getattr(obj, func)(**slice_dict(input_data_all, i)))
File "D:\Blender_ComfyUI\ComfyUI\custom_nodes\efficiency-nodes-comfyui\efficiency_nodes.py", line 1199, in sample
bg_width = num_cols * latent_width + (num_cols - 1) * grid_spacing + border_size_left`
image
When the calculation is completed and the final step of merging images is reached, an error occurs
@LucianoCirino @DrJKL

Error occurred when executing XY Input: CFG Scale

afbeelding

Error occurred when executing XY Input: CFG Scale:

TSC_XYplot_CFG.xy_value() missing 1 required positional argument: 'select_count'

  File "/home/ubuntu/ComfyUI/execution.py", line 145, in recursive_execute
    output_data, output_ui = get_output_data(obj, input_data_all)
  File "/home/ubuntu/ComfyUI/execution.py", line 75, in get_output_data
    return_values = map_node_over_list(obj, input_data_all, obj.FUNCTION, allow_interrupt=True)
  File "/home/ubuntu/ComfyUI/execution.py", line 68, in map_node_over_list
    results.append(getattr(obj, func)(**slice_dict(input_data_all, i)))

Using 30a5625, the CFG Scale doesn't pass the selection count, even when it is set.

[ControlNet] X/Y plot

Hi @LucianoCirino ,

Your efficiency custom nodes helped me a lot, thanks for the great work.

Would you consider to add ControlNet params as well?

I seem not able to find even in the manual annotation nodes.

image

image

KSampler Advanced (Efficient)

Hi,
Just wonder if we can control the KSampler Advanced params via script?

Or create a KSampler Advanced (efficient) that take the advance params:

  • start_at_step
  • end_at_step
  • return_with_leftover_noise
  • add_noise

To be more efficient in R&D

Scalable XY Input Node.

Would it be worth considering replacing the current dependency on multiple combos in the XY Input Node with a single multiline textbox?

This change could provide us with greater flexibility in generating XY plots.

How to use X/Y Plot with the SDXL 2-step workflow ?

With the 2-step workflow, you need to use 2 KSampler Adv. (Efficient) nodes. In which of the 2 should the X/Y Plot node be used ? Or in both of them at once ?

And would it be worthwhile to make a new custom SDXL KSampler that does the 2-step workflow in one node ? That would reduce a lot of spaghetti...

asyncio.exceptions.CancelledError

After the updating to the new version I'm getting this error seconds after I start ComfyUI:

connection handler failed
Traceback (most recent call last):
File "Z:\ComfyUI_portable_broken\python_embeded\lib\site-packages\websockets\legacy\protocol.py", line 959, in transfer_data
message = await self.read_message()
File "Z:\ComfyUI_portable_broken\python_embeded\lib\site-packages\websockets\legacy\protocol.py", line 1029, in read_message
frame = await self.read_data_frame(max_size=self.max_size)
File "Z:\ComfyUI_portable_broken\python_embeded\lib\site-packages\websockets\legacy\protocol.py", line 1104, in read_data_frame
frame = await self.read_frame(max_size)
File "Z:\ComfyUI_portable_broken\python_embeded\lib\site-packages\websockets\legacy\protocol.py", line 1161, in read_frame
frame = await Frame.read(
File "Z:\ComfyUI_portable_broken\python_embeded\lib\site-packages\websockets\legacy\framing.py", line 68, in read
data = await reader(2)
File "asyncio\streams.py", line 707, in readexactly
File "asyncio\streams.py", line 501, in _wait_for_data
asyncio.exceptions.CancelledError

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "Z:\ComfyUI_portable_broken\python_embeded\lib\site-packages\websockets\legacy\server.py", line 240, in handler
await self.ws_handler(self)
File "Z:\ComfyUI_portable_broken\python_embeded\lib\site-packages\websockets\legacy\server.py", line 1186, in _ws_handler
return await cast(
File "Z:\ComfyUI_portable_broken\ComfyUI\custom_nodes\efficiency-nodes-comfyui\tsc_utils.py", line 536, in server_logic
async for message in websocket:
File "Z:\ComfyUI_portable_broken\python_embeded\lib\site-packages\websockets\legacy\protocol.py", line 497, in aiter
yield await self.recv()
File "Z:\ComfyUI_portable_broken\python_embeded\lib\site-packages\websockets\legacy\protocol.py", line 568, in recv
await self.ensure_open()
File "Z:\ComfyUI_portable_broken\python_embeded\lib\site-packages\websockets\legacy\protocol.py", line 944, in ensure_open
raise self.connection_closed_exc()
websockets.exceptions.ConnectionClosedError: sent 1011 (unexpected error) keepalive ping timeout; no close frame received

If I uninstall the extension the error goes away. If I roll back to the previuos release, it works fine. I already tried reinstalling comfy from zero, both the embedded and venv versions but the error persists.

When I try to process an image, I get the following error from the browser UI during execution:

Error occurred when executing KSampler (Efficient):

sent 1011 (unexpected error) keepalive ping timeout; no close frame received

File "Z:\ComfyUI_portable_broken\ComfyUI\execution.py", line 151, in recursive_execute
output_data, output_ui = get_output_data(obj, input_data_all)
File "Z:\ComfyUI_portable_broken\ComfyUI\execution.py", line 81, in get_output_data
return_values = map_node_over_list(obj, input_data_all, obj.FUNCTION, allow_interrupt=True)
File "Z:\ComfyUI_portable_broken\ComfyUI\execution.py", line 74, in map_node_over_list
results.append(getattr(obj, func)(**slice_dict(input_data_all, i)))
File "Z:\ComfyUI_portable_broken\ComfyUI\custom_nodes\efficiency-nodes-comfyui\efficiency_nodes.py", line 500, in sample
send_command_to_frontend(startListening=False)
File "Z:\ComfyUI_portable_broken\ComfyUI\custom_nodes\efficiency-nodes-comfyui\tsc_utils.py", line 557, in send_command_to_frontend
asyncio.run(connected_client.send(json.dumps({
File "asyncio\runners.py", line 44, in run
File "asyncio\base_events.py", line 649, in run_until_complete
File "Z:\ComfyUI_portable_broken\python_embeded\lib\site-packages\websockets\legacy\protocol.py", line 635, in send
await self.ensure_open()
File "Z:\ComfyUI_portable_broken\python_embeded\lib\site-packages\websockets\legacy\protocol.py", line 935, in ensure_open
raise self.connection_closed_exc()

support for controlNet's start_percent and end_percent

Could you consider the start_percent and end_percent support for controlNet in XY Plot? When I was testing the effects of different end_percent on the image under different strengths, I thought I could use KSampler Adv. (Efficient) to achieve it, but it still didn't work, or I did something wrong?

XY plot manual script error

error-json.txt

!!! Exception during processing !!!
Traceback (most recent call last):
  File "C:\Users\drltdata\git\ComfyUI\worklist_execution.py", line 42, in exception_helper
    task()
  File "C:\Users\drltdata\git\ComfyUI\worklist_execution.py", line 254, in task
    output_data, output_ui = get_output_data(obj, input_data_all)
  File "C:\Users\drltdata\git\ComfyUI\execution.py", line 94, in get_output_data
    return_values = map_node_over_list(obj, input_data_all, obj.FUNCTION, allow_interrupt=True)
  File "C:\Users\drltdata\git\ComfyUI\execution.py", line 87, in map_node_over_list
    results.append(getattr(obj, func)(**params))
  File "C:\Users\drltdata\git\ComfyUI\custom_nodes\efficiency-nodes-comfyui\efficiency_nodes.py", line 1056, in sample
    image_pil_list = rearrange_list_A(image_pil_list, num_rows, num_cols)
UnboundLocalError: local variable 'image_pil_list' referenced before assignment

lora strength test script cause errors on latest version.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.