[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:
@@ -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()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user