mirror of
https://github.com/vladmandic/automatic
synced 2026-08-25 22:20:46 +02:00
6375b42ff7
Reference entries for the bf16 repo and the sdnq uint4 quant load the modular pipeline through the standard dispatch. Image tabs run the model in still mode with audio off; the video tab keeps its own overrides through the shared per-generation hook. Detailer is not supported and is disabled with a warning.
187 lines
7.4 KiB
Python
187 lines
7.4 KiB
Python
import diffusers
|
|
|
|
|
|
class OnlinePipeline(diffusers.DiffusionPipeline):
|
|
pass
|
|
|
|
|
|
pipelines = {
|
|
'Autodetect': None,
|
|
'AutoPipeline': diffusers.AutoPipelineForText2Image,
|
|
'Diffusion': diffusers.DiffusionPipeline,
|
|
|
|
# standard diffusers pipelines
|
|
'Stable Diffusion': getattr(diffusers, 'StableDiffusionPipeline', None),
|
|
'Stable Diffusion Inpaint': getattr(diffusers, 'StableDiffusionInpaintPipeline', None),
|
|
'Stable Diffusion Instruct': getattr(diffusers, 'StableDiffusionInstructPix2PixPipeline', None),
|
|
'Stable Diffusion 1.5': getattr(diffusers, 'StableDiffusionPipeline', None),
|
|
'Stable Diffusion 2': getattr(diffusers, 'StableDiffusionPipeline', None),
|
|
'Stable Diffusion 2.x': getattr(diffusers, 'StableDiffusionPipeline', None),
|
|
'Stable Diffusion Upscale': getattr(diffusers, 'StableDiffusionUpscalePipeline', None),
|
|
'Stable Diffusion XL': getattr(diffusers, 'StableDiffusionXLPipeline', None),
|
|
'Stable Diffusion XL Inpaint': getattr(diffusers, 'StableDiffusionXLInpaintPipeline', None),
|
|
'Stable Diffusion XL Instruct': getattr(diffusers, 'StableDiffusionXLInstructPix2PixPipeline', None),
|
|
'Stable Diffusion XL Refiner': getattr(diffusers, 'StableDiffusionXLImg2ImgPipeline', None),
|
|
'Stable Cascade': getattr(diffusers, 'StableCascadeCombinedPipeline', None),
|
|
'Stable Diffusion 3': getattr(diffusers, 'StableDiffusion3Pipeline', None),
|
|
'Latent Consistency Model': getattr(diffusers, 'LatentConsistencyModelPipeline', None),
|
|
'AuraFlow': getattr(diffusers, 'AuraFlowPipeline', None),
|
|
'Chroma': getattr(diffusers, 'ChromaPipeline', None),
|
|
'ChronoEdit': getattr(diffusers, 'ChronoEditPipeline', None),
|
|
'CogView3': getattr(diffusers, 'CogView3PlusPipeline', None),
|
|
'CogView4': getattr(diffusers, 'CogView4Pipeline', None),
|
|
'Cosmos': getattr(diffusers, 'Cosmos2TextToImagePipeline', None),
|
|
'DeepFloydIF': getattr(diffusers, 'IFPipeline', None),
|
|
'ERNIEImage': getattr(diffusers, 'ErnieImagePipeline', None),
|
|
'FLUX': getattr(diffusers, 'FluxPipeline', None),
|
|
'FLUX2Klein': getattr(diffusers, 'Flux2KleinPipeline', None),
|
|
'FLUX2': getattr(diffusers, 'Flux2Pipeline', None),
|
|
'GLMImage': getattr(diffusers, 'GlmImagePipeline', None),
|
|
'HiDream': getattr(diffusers, 'HiDreamImagePipeline', None),
|
|
'HunyuanDiT': getattr(diffusers, 'HunyuanDiTPipeline', None),
|
|
'HunyuanImage': getattr(diffusers, 'HunyuanImagePipeline', None),
|
|
'JoyEdit': getattr(diffusers, 'JoyImageEditPipeline', None),
|
|
'Kandinsky21': getattr(diffusers, 'KandinskyCombinedPipeline', None),
|
|
'Kandinsky22': getattr(diffusers, 'KandinskyV22CombinedPipeline', None),
|
|
'Kandinsky30': getattr(diffusers, 'Kandinsky3Pipeline', None),
|
|
'Kandinsky50': getattr(diffusers, 'Kandinsky5T2IPipeline', None),
|
|
'Kolors': getattr(diffusers, 'KolorsPipeline', None),
|
|
'LongCat': getattr(diffusers, 'LongCatImagePipeline', None),
|
|
'Lumina2': getattr(diffusers, 'Lumina2Pipeline', None),
|
|
'LuminaNext': getattr(diffusers, 'LuminaText2ImgPipeline', None),
|
|
'NucleusImage': getattr(diffusers, 'NucleusMoEImagePipeline', None),
|
|
'OvisImage': getattr(diffusers, 'OvisImagePipeline', None),
|
|
'OmniGen': getattr(diffusers, 'OmniGenPipeline', None),
|
|
'PixArtAlpha': getattr(diffusers, 'PixArtAlphaPipeline', None),
|
|
'PixArtSigma': getattr(diffusers, 'PixArtSigmaPipeline', None),
|
|
'PRXPixel': getattr(diffusers, 'PRXPixelPipeline', None),
|
|
'MiniMaxH3': getattr(diffusers, 'MiniMaxH3ModularPipeline', None),
|
|
'Qwen': getattr(diffusers, 'QwenImagePipeline', None),
|
|
'Sana': getattr(diffusers, 'SanaPipeline', None),
|
|
'WanAI': getattr(diffusers, 'WanPipeline', None),
|
|
'ZImage': getattr(diffusers, 'ZImagePipeline', None),
|
|
|
|
# pipelines with custom code that is fetched online
|
|
'InstaFlow': OnlinePipeline,
|
|
'Anima': OnlinePipeline,
|
|
|
|
# sdnext custom pipelines are dynamically imported and redefined later
|
|
'Bria': None,
|
|
'FLite': None,
|
|
'FLEX': None,
|
|
'HiDreamO1': None,
|
|
'HunyuanImage3': None,
|
|
'Ideogram4': None,
|
|
'Krea2': None,
|
|
'Lens': None,
|
|
'LuminaDiMOO': None,
|
|
'Meissonic': None,
|
|
'OmniGen2': None,
|
|
'SDXS': None,
|
|
'SegMoE': None,
|
|
'Step1XEdit': None,
|
|
'UltraFlux': None,
|
|
'VIBE': None,
|
|
'XOmni': None,
|
|
'ZetaChroma': None,
|
|
'Boogu': None,
|
|
'SeFi': None,
|
|
'MageFlow': None,
|
|
}
|
|
|
|
|
|
def postprocessing_scripts():
|
|
import modules.scripts_manager
|
|
return modules.scripts_manager.scripts_postproc.scripts
|
|
|
|
|
|
def sd_vae_items():
|
|
import modules.sd_vae
|
|
return ["Automatic", "Default"] + list(modules.sd_vae.vae_dict)
|
|
|
|
|
|
def sd_taesd_items():
|
|
import modules.vae.sd_vae_taesd
|
|
return list(modules.vae.sd_vae_taesd.TAESD_MODELS.keys()) + list(modules.vae.sd_vae_taesd.CQYAN_MODELS.keys())
|
|
|
|
def refresh_vae_list():
|
|
import modules.sd_vae
|
|
modules.sd_vae.refresh_vae_list()
|
|
|
|
|
|
def sd_unet_items():
|
|
import modules.sd_unet
|
|
return ['Default'] + list(modules.sd_unet.unet_dict)
|
|
|
|
|
|
def refresh_unet_list():
|
|
import modules.sd_unet
|
|
modules.sd_unet.refresh_unet_list()
|
|
|
|
|
|
def sd_te_items():
|
|
import modules.model_te
|
|
predefined = ['Default']
|
|
return predefined + list(modules.model_te.te_dict)
|
|
|
|
|
|
def refresh_te_list():
|
|
import modules.model_te
|
|
modules.model_te.refresh_te_list()
|
|
|
|
|
|
def list_crossattention():
|
|
return [
|
|
"Disabled",
|
|
"Scaled-Dot-Product",
|
|
"xFormers",
|
|
"Batch matrix-matrix",
|
|
"Dynamic Attention BMM"
|
|
]
|
|
|
|
|
|
def get_pipelines():
|
|
from modules.logger import log
|
|
"""
|
|
if hasattr(diffusers, 'OnnxStableDiffusionPipeline') and 'ONNX Stable Diffusion' not in list(pipelines):
|
|
try:
|
|
from modules.onnx_impl import initialize_onnx
|
|
initialize_onnx()
|
|
onnx_pipelines = {
|
|
'ONNX Stable Diffusion': getattr(diffusers, 'OnnxStableDiffusionPipeline', None),
|
|
'ONNX Stable Diffusion Img2Img': getattr(diffusers, 'OnnxStableDiffusionImg2ImgPipeline', None),
|
|
'ONNX Stable Diffusion Inpaint': getattr(diffusers, 'OnnxStableDiffusionInpaintPipeline', None),
|
|
'ONNX Stable Diffusion Upscale': getattr(diffusers, 'OnnxStableDiffusionUpscalePipeline', None),
|
|
}
|
|
except Exception as e:
|
|
log.error(f'ONNX initialization error: {e}')
|
|
onnx_pipelines = {}
|
|
pipelines.update(onnx_pipelines)
|
|
"""
|
|
stats_builtin = 0
|
|
stats_custom = 0
|
|
for k, v in pipelines.copy().items():
|
|
if k != 'Autodetect' and v is None:
|
|
stats_custom += 1
|
|
pipelines[k] = diffusers.DiffusionPipeline
|
|
else:
|
|
stats_builtin += 1
|
|
if stats_custom > 0:
|
|
log.debug(f'Pipelines init: diffusers={stats_builtin} custom={stats_custom}')
|
|
return pipelines
|
|
|
|
|
|
def get_repo(model):
|
|
if model == 'StableDiffusionPipeline' or model == 'Stable Diffusion 1.5':
|
|
return 'stable-diffusion-v1-5/stable-diffusion-v1-5'
|
|
elif model == 'StableDiffusionXLPipeline' or model == 'Stable Diffusion XL':
|
|
return 'stabilityai/stable-diffusion-xl-base-1.0'
|
|
elif model == 'StableDiffusion3Pipeline' or model == 'Stable Diffusion 3':
|
|
return 'stabilityai/stable-diffusion-3.5-medium'
|
|
else:
|
|
return None
|
|
|
|
|
|
sdnq_quant_modes = ["int8", "uint8", "int6", "uint6", "uint5", "uint4", "uint3", "uint2", "float8_e4m3fn", "float8_e3m4fn", "float6_e3m2fn", "float5_e2m2fn", "float4_e2m1fn", "float3_e1m1fn", "float2_e1m0fn", "int16", "uint16", "float16"]
|
|
sdnq_matmul_modes = ["disabled", "enabled", "int8", "uint8", "float8_e4m3fn", "float16"]
|