shiimizu / ComfyUI_smZNodes

Custom nodes for ComfyUI such as CLIP Text Encode++
GNU General Public License v3.0
190 stars 14 forks source link

Text Encode nodes causing an error #25

Closed bazettfraga closed 10 months ago

bazettfraga commented 10 months ago

Hi, I'm currently on ComfyUI commit https://github.com/comfyanonymous/ComfyUI/commit/2a134bfab9788b6a0a70aea3172d8e3fc904b414 and the CLIP Text Encode is causing errors when trying to use it.

comfy and comfy++ give the following error:

Error occurred when executing smZ CLIPTextEncode:

'SD1Tokenizer' object has no attribute 'pad_with_end'

  File "/mnt/2TBDa/SDSoftware/ComfyUI/execution.py", line 153, in recursive_execute
    output_data, output_ui = get_output_data(obj, input_data_all)
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/mnt/2TBDa/SDSoftware/ComfyUI/execution.py", line 83, in get_output_data
    return_values = map_node_over_list(obj, input_data_all, obj.FUNCTION, allow_interrupt=True)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/mnt/2TBDa/SDSoftware/ComfyUI/execution.py", line 76, in map_node_over_list
    results.append(getattr(obj, func)(**slice_dict(input_data_all, i)))
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/mnt/2TBDa/SDSoftware/ComfyUI/custom_nodes/ComfyUI_smZNodes/nodes.py", line 85, in encode
    result = run(**params)
             ^^^^^^^^^^^^^
  File "/mnt/2TBDa/SDSoftware/ComfyUI/custom_nodes/ComfyUI_smZNodes/smZNodes.py", line 595, in run
    out = CLIPTextEncode().encode(clip, text)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/mnt/2TBDa/SDSoftware/ComfyUI/nodes.py", line 55, in encode
    tokens = clip.tokenize(text)
             ^^^^^^^^^^^^^^^^^^^
  File "/mnt/2TBDa/SDSoftware/ComfyUI/comfy/sd.py", line 111, in tokenize
    return self.tokenizer.tokenize_with_weights(text, return_word_ids)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/mnt/2TBDa/SDSoftware/ComfyUI/custom_nodes/ComfyUI_smZNodes/smZNodes.py", line 249, in tokenize_with_weights_custom
    if self.pad_with_end:
       ^^^^^^^^^^^^^^^^^

A1111, full, compel and fixed attention will cause this:

Error occurred when executing smZ CLIPTextEncode:

'StableDiffusionModelHijack' object has no attribute 'cond_stage_model'

  File "/mnt/2TBDa/SDSoftware/ComfyUI/execution.py", line 153, in recursive_execute
    output_data, output_ui = get_output_data(obj, input_data_all)
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/mnt/2TBDa/SDSoftware/ComfyUI/execution.py", line 83, in get_output_data
    return_values = map_node_over_list(obj, input_data_all, obj.FUNCTION, allow_interrupt=True)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/mnt/2TBDa/SDSoftware/ComfyUI/execution.py", line 76, in map_node_over_list
    results.append(getattr(obj, func)(**slice_dict(input_data_all, i)))
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/mnt/2TBDa/SDSoftware/ComfyUI/custom_nodes/ComfyUI_smZNodes/nodes.py", line 85, in encode
    result = run(**params)
             ^^^^^^^^^^^^^
  File "/mnt/2TBDa/SDSoftware/ComfyUI/custom_nodes/ComfyUI_smZNodes/smZNodes.py", line 637, in run
    cond, pooled = clip_clone.encode_from_tokens(tokens, True)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/mnt/2TBDa/SDSoftware/ComfyUI/comfy/sd.py", line 120, in encode_from_tokens
    cond, pooled = self.cond_stage_model.encode_token_weights(tokens)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/mnt/2TBDa/SDSoftware/ComfyUI/custom_nodes/ComfyUI_smZNodes/smZNodes.py", line 445, in encode_token_weights
    model_hijack.undo_hijack(model_hijack.cond_stage_model)
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Reverting back to https://github.com/comfyanonymous/ComfyUI/commit/6ec3f12c6e2e1d214c41f5713308818541da52a4 fixes it, and the issue only exists starting from https://github.com/comfyanonymous/ComfyUI/commit/e60ca6929a999f53a4eeb62cc80f70b1cd7a0acf onward as my testing would indicate, causing me to believe the tokenizer code changes are the root to this issue.

Thank you in advance!

shiimizu commented 10 months ago

Should be fixed in https://github.com/shiimizu/ComfyUI_smZNodes/commit/e529e5f63ffa56e373e9b881a34e8d40ed1958b8

bazettfraga commented 10 months ago

Currently on https://github.com/comfyanonymous/ComfyUI/commit/2a134bfab9788b6a0a70aea3172d8e3fc904b414 and I can confirm that it works, thanks!