{"record":{"id":"211b600fcc6a5f37","repo":"invoke-ai/InvokeAI","slug":"regional-prompting-is-not-yet-supported-in-multi-d","errorCode":null,"errorMessage":"Regional prompting is not yet supported in Multi-Diffusion.","messagePattern":"Regional prompting is not yet supported in Multi-Diffusion\\.","errorType":"validation","errorClass":"NotImplementedError","httpStatus":null,"severity":"error","filePath":"invokeai/backend/stable_diffusion/multi_diffusion_pipeline.py","lineNumber":37,"sourceCode":"@dataclass\nclass MultiDiffusionRegionConditioning:\n    # Region coords in latent space.\n    region: Tile\n    text_conditioning_data: TextConditioningData\n    control_data: list[ControlNetData]\n\n\nclass MultiDiffusionPipeline(StableDiffusionGeneratorPipeline):\n    \"\"\"A Stable Diffusion pipeline that uses Multi-Diffusion (https://arxiv.org/pdf/2302.08113) for denoising.\"\"\"\n\n    def _check_regional_prompting(self, multi_diffusion_conditioning: list[MultiDiffusionRegionConditioning]):\n        \"\"\"Validate that regional conditioning is not used.\"\"\"\n        for region_conditioning in multi_diffusion_conditioning:\n            if (\n                region_conditioning.text_conditioning_data.cond_regions is not None\n                or region_conditioning.text_conditioning_data.uncond_regions is not None\n            ):\n                raise NotImplementedError(\"Regional prompting is not yet supported in Multi-Diffusion.\")\n\n    def multi_diffusion_denoise(\n        self,\n        multi_diffusion_conditioning: list[MultiDiffusionRegionConditioning],\n        target_overlap: int,\n        latents: torch.Tensor,\n        scheduler_step_kwargs: dict[str, Any],\n        noise: Optional[torch.Tensor],\n        timesteps: torch.Tensor,\n        init_timestep: torch.Tensor,\n        callback: Callable[[PipelineIntermediateState], None],\n    ) -> torch.Tensor:\n        self._check_regional_prompting(multi_diffusion_conditioning)\n\n        if init_timestep.shape[0] == 0:\n            return latents\n\n        batch_size, _, latent_height, latent_width = latents.shape","sourceCodeStart":19,"sourceCodeEnd":55,"githubUrl":"https://github.com/invoke-ai/InvokeAI/blob/0b6a024f2ff6a86bfb953dcdb9cc504ef7397a06/invokeai/backend/stable_diffusion/multi_diffusion_pipeline.py#L19-L55","documentation":"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.","triggerScenarios":"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).","commonSituations":"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.","solutions":["Disable regional prompting or remove region layers when using multi-diffusion.","Switch the denoising method from multi-diffusion to standard denoising to keep regional prompts.","Split the job: run regional prompts in the normal pipeline, and use multi-diffusion only for unconditioned tiling.","Check the InvokeAI changelog for added regional+multi-diffusion support before attempting the combination."],"exampleFix":"// before\npipeline.multi_diffusion_denoise(regions_with_prompts, overlap, latents)\n// after\nregions_without_regions = [\n    MultiDiffusionRegionConditioning(PositiveBasicConditioningData(cond.embeds, None), cond.noise_level)\n    for cond in conditions\n]\npipeline.multi_diffusion_denoise(regions_without_regions, overlap, latents)","handlingStrategy":"fallback","validationCode":"has_regions = any(\n    rc.text_conditioning_data.cond_regions is not None\n    or rc.text_conditioning_data.uncond_regions is not None\n    for rc in multi_diffusion_conditioning\n)\nif has_regions:\n    use_standard_pipeline = True","typeGuard":"def is_multi_diffusion_compatible(rcs) -> bool:\n    return all(\n        rc.text_conditioning_data.cond_regions is None\n        and rc.text_conditioning_data.uncond_regions is None\n        for rc in rcs\n    )","tryCatchPattern":"try:\n    latents = pipeline.multi_diffusion_denoise(regions, overlap, latents)\nexcept NotImplementedError:\n    latents = run_standard_denoising(pipeline, regions, latents)","preventionTips":["Don't combine regional prompting layers with multi-diffusion denoising","Offer a standard-denoising fallback in custom UIs/graphs","Check regions fields on conditioning data before choosing the denoiser","Track InvokeAI releases for regional multi-diffusion support"],"tags":["python","notimplemented","multi-diffusion","regional-prompting"],"backgroundTag":"feature-not-implemented","analyzedSha":"0b6a024f2ff6a86bfb953dcdb9cc504ef7397a06","analyzedAt":"2026-08-29T04:46:49.967Z","schemaVersion":2},"datasetVersion":"2026-08-29T07:17:48.351Z"}