Skip to content

Conversation

@chenpipi0807
Copy link

只是在你的基础上增加了一些代码

@VipCrazyMaster
Copy link

Well done! Reusing the parameters of Wan2.1-T2V-14B-ret-mode can increase the speed by about 30%.

@VipCrazyMaster
Copy link

comfyui更新后,修改后的文件已失效
AttributeError: 'QwenImageTransformer2DModel' object has no attribute 'pos_embeds'

@chenpipi0807
Copy link
Author

我本地版本是0.3.49
你的版本是什么我拉齐一下试试看~

@VipCrazyMaster
Copy link

我本地版本是0.3.49 你的版本是什么我拉齐一下试试看~
这个版本:
ComfyUI: v0.3.50-24-g7f3b9b16
(2025-08-17)
Manager: V3.36

@chenpipi0807
Copy link
Author

commit d8c51ba15aef6b0df86a7ea0203881be55d7579b (HEAD -> master, origin/master)
Author: comfyanonymous 121283862+comfyanonymous@users.noreply.github.com
Date: Tue Aug 5 04:41:18 2025 -0700

Add Qwen Image model to readme. (#9191)

修复了升级后报错QwenImageTransformer2DModel' object has no attribute 'pos_embeds'。
@chenpipi0807
Copy link
Author

我看了一下,是comfyui升级后上游接口变了,我已经完成了我本地的测试,是可行的了

commit 4977f203fa8e9e3ab22884c8ace8f9b540d48952 (HEAD -> master, origin/master)
Author: comfyanonymous 121283862+comfyanonymous@users.noreply.github.com
Date: Mon Aug 18 19:38:34 2025 -0700

@Dontdrunk
Copy link

准备支持Qwen-Image-Edit吗

@chenpipi0807
Copy link
Author

准备支持Qwen-Image-Edit吗

目前我的时间不是特别充裕,所以无法给出肯定的答案。希望会有其他开发者出手~

@chenpipi0807
Copy link
Author

image

我的测试版本:
commit 9fa1036f60b5264302072453be524aa55928bbaf (HEAD -> master, origin/master)
Author: comfyanonymous 121283862+comfyanonymous@users.noreply.github.com
Date: Wed Aug 20 20:09:35 2025 -0700

@VipCrazyMaster
Copy link

It's so strange that no one is maintaining this project anymore. What's the branch merge application that hasn't been processed for a long time

@chenpipi0807
Copy link
Author

It's so strange that no one is maintaining this project anymore. What's the branch merge application that hasn't been processed for a long time

也许原项目作者忘记了github的登录密码哈哈哈哈哈

@menahem121
Copy link

menahem121 commented Aug 26, 2025

The quality downgrade is massive with qwen-image-edit and your implementation

without:
ComfyUI_temp_avdpu_00013_

with:
ComfyUI_temp_avdpu_00011_

same prompt same seed. And this is only with rel_l1_thresh: 0.2 with a stronger value its even worse

@chenpipi0807
Copy link
Author

The quality downgrade is massive with qwen-image-edit and your implementation

without: ComfyUI_temp_avdpu_00013_

with: ComfyUI_temp_avdpu_00011_

same prompt same seed. And this is only with rel_l1_thresh: 0.2 with a stronger value its even worse

存在这种情况,我更推荐使用加速lora其实,如果你的显存足够的话。
这个分支主要对于qwen-image可能更友好。
同时我认为这个折损和核心可能是teacache这个方法本身的问题。
当然也不排除我代码存在问题,如果接下来有时间我会再看看。

@VipCrazyMaster
Copy link

VipCrazyMaster commented Aug 26, 2025

The quality downgrade is massive with qwen-image-edit and your implementation

without: ComfyUI_temp_avdpu_00013_

with: ComfyUI_temp_avdpu_00011_

same prompt same seed. And this is only with rel_l1_thresh: 0.2 with a stronger value its even worse

是不是你的设置有问题?我使用gwenimagebf16.safetensors测试了3组
without:width="576" height="1024" ,4张图 67.78s
ComfyUI_04712_

with:width="576" height="1024" ,4张图 rel_l1_thresh: 0.2 47.79s
ComfyUI_04717_

with:width="576" height="1024" ,4张图 rel_l1_thresh: 0.35 44.44s
ComfyUI_04721_

wechat_2025-08-26_204625_500

@gmf1982
Copy link

gmf1982 commented Sep 13, 2025

你好,我使用了你的修改,但是teacache节点的模型列表里没有qwen-image和qwen-image-edit。
comyfui版本是0.3.59
PixPin_2025-09-13_13-50-49

@menahem121
Copy link

是不是你的设置有问题?我使用gwenimagebf16.safetensors测试了3组

Did you use the lightning lora in your tests? because i was

@VipCrazyMaster
Copy link

是不是你的设置有问题?我使用gwenimagebf16.safetensors测试了3组

Did you use the lightning lora in your tests? because i was

加了lora和teacache后毛发没那么细密,但整体质量基本保持一致,速度也提升了300%
wechat_2025-11-05_120550_738

@VipCrazyMaster
Copy link

手贱。。。comfyui更新后无法使用了:# ComfyUI Error Report ## Error Details - Node ID: 108 - Node Type: KSampler - Exception Type: RuntimeError - Exception Message: The size of tensor a (2367) must match the size of tensor b (24) at non-singleton dimension 1 ## Stack Trace
File "/home/tys/ComfyUI/execution.py", line 510, in execute
output_data, output_ui, has_subgraph, has_pending_tasks = await get_output_data(prompt_id, unique_id, obj, input_data_all, execution_block_cb=execution_block_cb, pre_execute_cb=pre_execute_cb, hidden_inputs=hidden_inputs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "/home/tys/ComfyUI/execution.py", line 324, in get_output_data
return_values = await _async_map_node_over_list(prompt_id, unique_id, obj, input_data_all, obj.FUNCTION, allow_interrupt=True, execution_block_cb=execution_block_cb, pre_execute_cb=pre_execute_cb, hidden_inputs=hidden_inputs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "/home/tys/ComfyUI/execution.py", line 298, in _async_map_node_over_list
await process_inputs(input_dict, i)

File "/home/tys/ComfyUI/execution.py", line 286, in process_inputs
result = f(**inputs)
^^^^^^^^^^^

File "/home/tys/ComfyUI/nodes.py", line 1525, in sample
return common_ksampler(model, seed, steps, cfg, sampler_name, scheduler, positive, negative, latent_image, denoise=denoise)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "/home/tys/ComfyUI/nodes.py", line 1492, in common_ksampler
samples = comfy.sample.sample(model, noise, steps, cfg, sampler_name, scheduler, positive, negative, latent_image,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "/home/tys/ComfyUI/comfy/sample.py", line 60, in sample
samples = sampler.sample(noise, positive, negative, cfg=cfg, latent_image=latent_image, start_step=start_step, last_step=last_step, force_full_denoise=force_full_denoise, denoise_mask=noise_mask, sigmas=sigmas, callback=callback, disable_pbar=disable_pbar, seed=seed)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "/home/tys/ComfyUI/custom_nodes/ComfyUI-TiledDiffusion/utils.py", line 51, in KSampler_sample
return orig_fn(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^

File "/home/tys/ComfyUI/comfy/samplers.py", line 1163, in sample
return sample(self.model, noise, positive, negative, cfg, self.device, sampler, sigmas, self.model_options, latent_image=latent_image, denoise_mask=denoise_mask, callback=callback, disable_pbar=disable_pbar, seed=seed)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "/home/tys/ComfyUI/comfy/samplers.py", line 1053, in sample
return cfg_guider.sample(noise, latent_image, sampler, sigmas, denoise_mask, callback, disable_pbar, seed)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "/home/tys/ComfyUI/comfy/samplers.py", line 1035, in sample
output = executor.execute(noise, latent_image, sampler, sigmas, denoise_mask, callback, disable_pbar, seed, latent_shapes=latent_shapes)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "/home/tys/ComfyUI/comfy/patcher_extension.py", line 112, in execute
return self.original(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "/home/tys/ComfyUI/comfy/samplers.py", line 997, in outer_sample
output = self.inner_sample(noise, latent_image, device, sampler, sigmas, denoise_mask, callback, disable_pbar, seed, latent_shapes=latent_shapes)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "/home/tys/ComfyUI/comfy/samplers.py", line 980, in inner_sample
samples = executor.execute(self, sigmas, extra_args, callback, noise, latent_image, denoise_mask, disable_pbar)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "/home/tys/ComfyUI/comfy/patcher_extension.py", line 112, in execute
return self.original(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "/home/tys/ComfyUI/custom_nodes/ComfyUI-TiledDiffusion/utils.py", line 34, in KSAMPLER_sample
return orig_fn(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^

File "/home/tys/ComfyUI/comfy/samplers.py", line 752, in sample
samples = self.sampler_function(model_k, noise, sigmas, extra_args=extra_args, callback=k_callback, disable=disable_pbar, **self.extra_options)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "/home/tys/miniconda3/envs/py312/lib/python3.12/site-packages/torch/utils/_contextlib.py", line 116, in decorate_context
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^

File "/home/tys/ComfyUI/comfy/k_diffusion/sampling.py", line 199, in sample_euler
denoised = model(x, sigma_hat * s_in, **extra_args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "/home/tys/ComfyUI/comfy/samplers.py", line 401, in call
out = self.inner_model(x, sigma, model_options=model_options, seed=seed)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "/home/tys/ComfyUI/comfy/samplers.py", line 953, in call
return self.outer_predict_noise(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "/home/tys/ComfyUI/comfy/samplers.py", line 960, in outer_predict_noise
).execute(x, timestep, model_options, seed)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "/home/tys/ComfyUI/comfy/patcher_extension.py", line 112, in execute
return self.original(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "/home/tys/ComfyUI/comfy/samplers.py", line 963, in predict_noise
return sampling_function(self.inner_model, x, timestep, self.conds.get("negative", None), self.conds.get("positive", None), self.cfg, model_options=model_options, seed=seed)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "/home/tys/ComfyUI/comfy/samplers.py", line 381, in sampling_function
out = calc_cond_batch(model, conds, x, timestep, model_options)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "/home/tys/ComfyUI/comfy/samplers.py", line 206, in calc_cond_batch
return _calc_cond_batch_outer(model, conds, x_in, timestep, model_options)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "/home/tys/ComfyUI/comfy/samplers.py", line 214, in _calc_cond_batch_outer
return executor.execute(model, conds, x_in, timestep, model_options)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "/home/tys/ComfyUI/comfy/patcher_extension.py", line 112, in execute
return self.original(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "/home/tys/ComfyUI/comfy/samplers.py", line 324, in calc_cond_batch
output = model_options['model_function_wrapper'](model.apply_model, {"input": input_x, "timestep": timestep
, "c": c, "cond_or_uncond": cond_or_uncond}).chunk(batch_chunks)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "/home/tys/ComfyUI/custom_nodes/teacache/nodes.py", line 1279, in unet_wrapper_function
return model_function(input, timestep, **c)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "/home/tys/ComfyUI/comfy/model_base.py", line 161, in apply_model
return comfy.patcher_extension.WrapperExecutor.new_class_executor(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "/home/tys/ComfyUI/comfy/patcher_extension.py", line 112, in execute
return self.original(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "/home/tys/ComfyUI/comfy/model_base.py", line 203, in _apply_model
model_output = self.diffusion_model(xc, t, context=context, control=control, transformer_options=transformer_options, **extra_conds)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "/home/tys/miniconda3/envs/py312/lib/python3.12/site-packages/torch/nn/modules/module.py", line 1751, in _wrapped_call_impl
return self._call_impl(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "/home/tys/miniconda3/envs/py312/lib/python3.12/site-packages/torch/nn/modules/module.py", line 1762, in _call_impl
return forward_call(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "/home/tys/ComfyUI/custom_nodes/teacache/nodes.py", line 959, in teacache_qwen_image_forward
encoder_hidden_states, hidden_states = block(
^^^^^^

File "/home/tys/miniconda3/envs/py312/lib/python3.12/site-packages/torch/nn/modules/module.py", line 1751, in _wrapped_call_impl
return self._call_impl(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "/home/tys/miniconda3/envs/py312/lib/python3.12/site-packages/torch/nn/modules/module.py", line 1762, in _call_impl
return forward_call(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "/home/tys/ComfyUI/comfy/ldm/qwen_image/model.py", line 244, in forward
img_attn_output, txt_attn_output = self.attn(
^^^^^^^^^^

File "/home/tys/miniconda3/envs/py312/lib/python3.12/site-packages/torch/nn/modules/module.py", line 1751, in _wrapped_call_impl
return self._call_impl(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "/home/tys/miniconda3/envs/py312/lib/python3.12/site-packages/torch/nn/modules/module.py", line 1762, in _call_impl
return forward_call(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "/home/tys/ComfyUI/comfy/ldm/qwen_image/model.py", line 160, in forward
joint_query = apply_rope1(joint_query, image_rotary_emb)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "/home/tys/ComfyUI/comfy/ldm/flux/math.py", line 33, in apply_rope1
x_out = freqs_cis[..., 0] * x_[..., 0]
~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~

@VipCrazyMaster
Copy link

ComfyUI version: 0.3.68 ,哪位大神指导这怎么修复?

@Dontdrunk
Copy link

我现在用官方EasyCache节点,效果差不多,速度还更快

@VipCrazyMaster
Copy link

自己修复了下,不理想,可跑了像多个图像拼接的

@VipCrazyMaster
Copy link

我现在用官方EasyCache节点,效果差不多,速度还更快

的确,目前感觉是速度差不多,效果还没试

@VipCrazyMaster
Copy link

我现在用官方EasyCache节点,效果差不多,速度还更快

的确,目前感觉是速度差不多,效果还没试
质量要糟糕很多。。。[

ScreenShot_2025-11-11_171533_418 ](url)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants