Skip to content

Commit d337de6

Browse files
committed
Changes to _apply_standard_conditioning_sequentially() and _apply_cross_attention_controlled_conditioning() to reflect changes to T2I-Adapter implementation to allow usage of T2I-Adapter and ControlNet at the same time.
Also, the PREVIOUS commit (@8d3885d, which was already pushed to github repo) was wrongly commented, but too late to fix without a force push or other mucking that I'm reluctant to do. That commit is actually the one that has all the changes to diffusers_pipeline.py to use additional arg down_intrablock_additional_residuals (introduced in diffusers PR huggingface/diffusers#5362) to detangle T2I-Adapter from ControlNet inputs to main UNet.
1 parent 8d3885d commit d337de6

File tree

1 file changed

+23
-1
lines changed

1 file changed

+23
-1
lines changed

invokeai/backend/stable_diffusion/diffusion/shared_invokeai_diffusion.py

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -260,7 +260,6 @@ def do_unet_step(
260260
conditioning_data,
261261
**kwargs,
262262
)
263-
264263
else:
265264
(
266265
unconditioned_next_x,
@@ -407,6 +406,16 @@ def _apply_standard_conditioning_sequentially(
407406
uncond_down_block.append(_uncond_down)
408407
cond_down_block.append(_cond_down)
409408

409+
uncond_down_intrablock, cond_down_intrablock = None, None
410+
down_intrablock_additional_residuals = kwargs.pop("down_intrablock_additional_residuals", None)
411+
if down_intrablock_additional_residuals is not None:
412+
uncond_down_intrablock, cond_down_intrablock = [], []
413+
for down_intrablock in down_intrablock_additional_residuals:
414+
print("down_intrablock shape: ", down_intrablock.shape)
415+
_uncond_down, _cond_down = down_intrablock.chunk(2)
416+
uncond_down_intrablock.append(_uncond_down)
417+
cond_down_intrablock.append(_cond_down)
418+
410419
uncond_mid_block, cond_mid_block = None, None
411420
mid_block_additional_residual = kwargs.pop("mid_block_additional_residual", None)
412421
if mid_block_additional_residual is not None:
@@ -437,6 +446,7 @@ def _apply_standard_conditioning_sequentially(
437446
cross_attention_kwargs=cross_attention_kwargs,
438447
down_block_additional_residuals=uncond_down_block,
439448
mid_block_additional_residual=uncond_mid_block,
449+
down_intrablock_additional_residuals=uncond_down_intrablock,
440450
added_cond_kwargs=added_cond_kwargs,
441451
**kwargs,
442452
)
@@ -465,6 +475,7 @@ def _apply_standard_conditioning_sequentially(
465475
cross_attention_kwargs=cross_attention_kwargs,
466476
down_block_additional_residuals=cond_down_block,
467477
mid_block_additional_residual=cond_mid_block,
478+
down_intrablock_additional_residuals=cond_down_intrablock,
468479
added_cond_kwargs=added_cond_kwargs,
469480
**kwargs,
470481
)
@@ -489,6 +500,15 @@ def _apply_cross_attention_controlled_conditioning(
489500
uncond_down_block.append(_uncond_down)
490501
cond_down_block.append(_cond_down)
491502

503+
uncond_down_intrablock, cond_down_intrablock = None, None
504+
down_intrablock_additional_residuals = kwargs.pop("down_intrablock_additional_residuals", None)
505+
if down_intrablock_additional_residuals is not None:
506+
uncond_down_intrablock, cond_down_intrablock = [], []
507+
for down_intrablock in down_intrablock_additional_residuals:
508+
_uncond_down, _cond_down = down_intrablock.chunk(2)
509+
uncond_down_intrablock.append(_uncond_down)
510+
cond_down_intrablock.append(_cond_down)
511+
492512
uncond_mid_block, cond_mid_block = None, None
493513
mid_block_additional_residual = kwargs.pop("mid_block_additional_residual", None)
494514
if mid_block_additional_residual is not None:
@@ -517,6 +537,7 @@ def _apply_cross_attention_controlled_conditioning(
517537
{"swap_cross_attn_context": cross_attn_processor_context},
518538
down_block_additional_residuals=uncond_down_block,
519539
mid_block_additional_residual=uncond_mid_block,
540+
down_intrablock_additional_residuals=uncond_down_intrablock,
520541
added_cond_kwargs=added_cond_kwargs,
521542
**kwargs,
522543
)
@@ -536,6 +557,7 @@ def _apply_cross_attention_controlled_conditioning(
536557
{"swap_cross_attn_context": cross_attn_processor_context},
537558
down_block_additional_residuals=cond_down_block,
538559
mid_block_additional_residual=cond_mid_block,
560+
down_intrablock_additional_residuals=cond_down_intrablock,
539561
added_cond_kwargs=added_cond_kwargs,
540562
**kwargs,
541563
)

0 commit comments

Comments
 (0)