Implementation of
- Perturbed-Attention Guidance from Self-Rectifying Diffusion Sampling with Perturbed-Attention Guidance (D. Ahn et al.)
- Smoothed Energy Guidance: Guiding Diffusion Models with Reduced Energy Curvature of Attention (Susung Hong)
- Sliding Window Guidance from The Unreasonable Effectiveness of Guidance for Diffusion Models (Kaiser et al.)
- PLADIS: Pushing the Limits of Attention in Diffusion Models at Inference Time by Leveraging Sparsity (ComfyUI-only)
- Normalized Attention Guidance: Universal Negative Guidance for Diffusion Models (ComfyUI-only, has a description inside ComfyUI)
- Token Perturbation Guidance for Diffusion Models (ComfyUI-only)
as an extension for ComfyUI and SD WebUI (reForge).
Works with SD1.5 and SDXL.
You can either:
-
git clone https://github.com/pamparamm/sd-perturbed-attention.gitintoComfyUI/custom-nodes/folder. -
Install it via ComfyUI Manager (search for custom node named "Perturbed-Attention Guidance").
-
Install it via comfy-cli with
comfy node registry-install sd-perturbed-attention
git clone https://github.com/pamparamm/sd-perturbed-attention.git into stable-diffusion-webui-forge/extensions/ folder.
As an alternative for A1111 WebUI you can use PAG implementation from sd-webui-incantations extension.
Note
You can override CFG Scale and PAG Scale/SEG Scale for Hires. fix by opening/enabling Override for Hires. fix tab.
To disable PAG during Hires. fix, you can set PAG Scale under Override to 0.
scale: Guidance scale, higher values can both increase structural coherence of an image and oversaturate/fry it entirely.adaptive_scale(PAG only): PAG dampening factor, it penalizes PAG during late denoising stages, resulting in overall speedup: 0.0 means no penalty and 1.0 completely removes PAG.blur_sigma(SEG only): Normal deviation of Gaussian blur, higher values increase "clarity" of an image. Negative values setblur_sigmato infinity.unet_block: Part of U-Net to which Guidance is applied, original paper suggests to usemiddle.unet_block_id: Id of U-Net layer in a selected block to which Guidance is applied. Guidance can be applied only to layers containing Self-attention blocks.sigma_start/sigma_end: Guidance will be active only betweensigma_startandsigma_end. Set both values to negative to disable this feature.rescale: Acts similar to RescaleCFG node - it prevents over-exposure on highscalevalues. Based on Algorithm 2 from Common Diffusion Noise Schedules and Sample Steps are Flawed (Lin et al.). Set to 0 to disable this feature.rescale_mode:full- takes into account both CFG and Guidance.partial- depends only on Guidance.snf- Saliency-adaptive Noise Fusion from High-fidelity Person-centric Subject-to-Image Synthesis (Wang et al.). Should increase image quality on high guidance scales. Ignoresrescalevalue.
unet_block_list: Optional input, replaces bothunet_blockandunet_block_idand allows you to select multiple U-Net layers separated with commas. SDXL U-Net has multiple indices for layers, you can specify them by using dot symbol (if not specified, Guidance will be applied to the whole layer). Example value:m0,u0.4(it applies Guidance to middle block 0 and to output block 0 with index 4)- In terms of U-Net
dmeansinput,mmeansmiddleandumeansoutput. - SD1.5 U-Net has layers
d0-d5,m0,u0-u8. - SDXL U-Net has layers
d0-d3,m0,u0-u5. In addition, each block exceptd0andd1has0-9index values (likem0.7oru0.4).d0andd1have0-1index values. - Supports block ranges (
d0-d3corresponds tod0,d1,d2,d3) and index value ranges (d2.2-9corresponds to all index values ofd2with the exclusion ofd2.0andd2.1).
- In terms of U-Net
To use PAG together with ComfyUI_TensorRT, you'll need to:
- Have 24GB of VRAM.
- Build static/dynamic TRT engine of a desired model.
- Build static/dynamic TRT engine of the same model with the same TRT parameters, but with fixed PAG injection in selected UNET blocks (
TensorRT Attach PAGnode). - Use
TensorRT Perturbed-Attention Guidancenode with two model inputs: one for base engine and one for PAG engine.






