[diffusion] improve: skip negative prompt encoding when guidance_scale <= 1.0 or negative_prompt is None (#16919)

Signed-off-by: zhuyuhua-v <yuhzhu@amd.com>
This commit is contained in:
Zhu Yuhua
2026-01-21 20:01:55 +08:00
committed by GitHub
parent bcc6d84f93
commit 2c1b164a92
@@ -125,15 +125,16 @@ class ImageEncodingStage(PipelineStage):
elif self.text_encoder: elif self.text_encoder:
# if a text encoder is provided, e.g. Qwen-Image-Edit # if a text encoder is provided, e.g. Qwen-Image-Edit
# 1. neg prompt embeds # 1. neg prompt embeds
neg_image_processor_kwargs = ( if batch.do_classifier_free_guidance:
server_args.pipeline_config.prepare_image_processor_kwargs( neg_image_processor_kwargs = (
batch, neg=True server_args.pipeline_config.prepare_image_processor_kwargs(
batch, neg=True
)
) )
)
neg_image_inputs = self.image_processor( neg_image_inputs = self.image_processor(
images=image, return_tensors="pt", **neg_image_processor_kwargs images=image, return_tensors="pt", **neg_image_processor_kwargs
).to(cuda_device) ).to(cuda_device)
with set_forward_context(current_timestep=0, attn_metadata=None): with set_forward_context(current_timestep=0, attn_metadata=None):
outputs = self.text_encoder( outputs = self.text_encoder(
@@ -143,20 +144,22 @@ class ImageEncodingStage(PipelineStage):
image_grid_thw=image_inputs.image_grid_thw, image_grid_thw=image_inputs.image_grid_thw,
output_hidden_states=True, output_hidden_states=True,
) )
neg_outputs = self.text_encoder( if batch.do_classifier_free_guidance:
input_ids=neg_image_inputs.input_ids, neg_outputs = self.text_encoder(
attention_mask=neg_image_inputs.attention_mask, input_ids=neg_image_inputs.input_ids,
pixel_values=neg_image_inputs.pixel_values, attention_mask=neg_image_inputs.attention_mask,
image_grid_thw=neg_image_inputs.image_grid_thw, pixel_values=neg_image_inputs.pixel_values,
output_hidden_states=True, image_grid_thw=neg_image_inputs.image_grid_thw,
) output_hidden_states=True,
)
batch.prompt_embeds.append( batch.prompt_embeds.append(
self.encoding_qwen_image_edit(outputs, image_inputs) self.encoding_qwen_image_edit(outputs, image_inputs)
) )
batch.negative_prompt_embeds.append( if batch.do_classifier_free_guidance:
self.encoding_qwen_image_edit(neg_outputs, neg_image_inputs) batch.negative_prompt_embeds.append(
) self.encoding_qwen_image_edit(neg_outputs, neg_image_inputs)
)
self.offload_model() self.offload_model()