invoke-ai/InvokeAI · error · NotImplementedError

Regional prompting is not yet supported in Multi-Diffusion.

Error message

Regional prompting is not yet supported in Multi-Diffusion.

What it means

Multi-diffusion tiles the canvas and denoises each tile with its own conditioning, but regional prompt conditioning (per-region text masks) is only implemented for the standard pipeline. _check_regional_prompting raises NotImplementedError if any region's conditioning carries cond_regions or uncond_regions.

Source

Thrown at invokeai/backend/stable_diffusion/multi_diffusion_pipeline.py:37

@dataclass
class MultiDiffusionRegionConditioning:
    # Region coords in latent space.
    region: Tile
    text_conditioning_data: TextConditioningData
    control_data: list[ControlNetData]


class MultiDiffusionPipeline(StableDiffusionGeneratorPipeline):
    """A Stable Diffusion pipeline that uses Multi-Diffusion (https://arxiv.org/pdf/2302.08113) for denoising."""

    def _check_regional_prompting(self, multi_diffusion_conditioning: list[MultiDiffusionRegionConditioning]):
        """Validate that regional conditioning is not used."""
        for region_conditioning in multi_diffusion_conditioning:
            if (
                region_conditioning.text_conditioning_data.cond_regions is not None
                or region_conditioning.text_conditioning_data.uncond_regions is not None
            ):
                raise NotImplementedError("Regional prompting is not yet supported in Multi-Diffusion.")

    def multi_diffusion_denoise(
        self,
        multi_diffusion_conditioning: list[MultiDiffusionRegionConditioning],
        target_overlap: int,
        latents: torch.Tensor,
        scheduler_step_kwargs: dict[str, Any],
        noise: Optional[torch.Tensor],
        timesteps: torch.Tensor,
        init_timestep: torch.Tensor,
        callback: Callable[[PipelineIntermediateState], None],
    ) -> torch.Tensor:
        self._check_regional_prompting(multi_diffusion_conditioning)

        if init_timestep.shape[0] == 0:
            return latents

        batch_size, _, latent_height, latent_width = latents.shape

View on GitHub (pinned to 0b6a024f2f)

Solutions

  1. Disable regional prompting or remove region layers when using multi-diffusion.
  2. Switch the denoising method from multi-diffusion to standard denoising to keep regional prompts.
  3. Split the job: run regional prompts in the normal pipeline, and use multi-diffusion only for unconditioned tiling.
  4. Check the InvokeAI changelog for added regional+multi-diffusion support before attempting the combination.

Example fix

// before
pipeline.multi_diffusion_denoise(regions_with_prompts, overlap, latents)
// after
regions_without_regions = [
    MultiDiffusionRegionConditioning(PositiveBasicConditioningData(cond.embeds, None), cond.noise_level)
    for cond in conditions
]
pipeline.multi_diffusion_denoise(regions_without_regions, overlap, latents)
Defensive patterns

Strategy: fallback

Validate before calling

has_regions = any(
    rc.text_conditioning_data.cond_regions is not None
    or rc.text_conditioning_data.uncond_regions is not None
    for rc in multi_diffusion_conditioning
)
if has_regions:
    use_standard_pipeline = True

Type guard

def is_multi_diffusion_compatible(rcs) -> bool:
    return all(
        rc.text_conditioning_data.cond_regions is None
        and rc.text_conditioning_data.uncond_regions is None
        for rc in rcs
    )

Try / catch

try:
    latents = pipeline.multi_diffusion_denoise(regions, overlap, latents)
except NotImplementedError:
    latents = run_standard_denoising(pipeline, regions, latents)

Prevention

When it happens

Trigger: Running multi_diffusion_denoise with a MultiDiffusionRegionConditioning list where any text_conditioning_data has cond_regions or uncond_regions set (i.e. a regional prompt graph used with multi-diffusion).

Common situations: Users combining regional prompting (canvas regions) with the multi-diffusion denoiser; a UI automatically enabling multi-diffusion for large canvases while regional layers exist; config flag mismatch.

Related errors


AI-assisted analysis of invoke-ai/InvokeAI@0b6a024f2f (2026-08-29). Data as JSON: /api/errors/211b600fcc6a5f37. Report an issue: GitHub.