mirror of
https://github.com/vladmandic/automatic
synced 2026-09-05 20:40:44 +02:00
5814d5c4b3
2.5 reuses the LTX-2 pipeline classes, so it is described through the capability table: Gemma 4 text encoder, cross-timestep conditioning, and the upsampler and stage 2 LoRA that now ship inside the model repo. The repo carries the distilled scheduler config, so Dev rows restore the terminal shift, and the Dev transformer sits in transformer_full. Distilled rows stop forcing dynamic shifting on, which remapped their sigma schedule. Auto duration hands the clip length to the duration head.
835 lines
41 KiB
Python
835 lines
41 KiB
Python
from dataclasses import dataclass
|
|
import sys
|
|
import time
|
|
from modules import errors
|
|
from modules.logger import log
|
|
|
|
|
|
@dataclass
|
|
class Model:
|
|
name: str
|
|
url: str = ''
|
|
repo: str = None
|
|
custom: str = None
|
|
repo_cls: classmethod = None
|
|
repo_revision: str = None
|
|
dit: str = None
|
|
dit_cls: classmethod = None
|
|
dit_folder: str = 'transformer'
|
|
dit_kwarg: str = None # pipeline argument the folder loads into, when the two differ
|
|
dit_revision: str = None
|
|
te: str = None
|
|
te_cls: classmethod = None
|
|
te_folder: str = 'text_encoder'
|
|
te_hijack: bool = True
|
|
te_revision: str = None
|
|
image_hijack: bool = True
|
|
vae_hijack: bool = True
|
|
vae_remote: bool = False
|
|
workflow: str = None
|
|
base: bool = False # also registered as a base model: caches into the diffusers folder so the model scan lists it in the dropdown
|
|
|
|
def __str__(self):
|
|
return f'name="{self.name}" url="{self.url}" repo="{self.repo}" repo_cls="{self.repo_cls}" dit="{self.dit}" dit_cls="{self.dit_cls}" dit_folder="{self.dit_folder}" te="{self.te}" te_cls="{self.te_cls}" te_folder="{self.te_folder}" te_hijack={self.te_hijack} vae_hijack={self.vae_hijack} vae_remote={self.vae_remote} workflow="{self.workflow}" base={self.base}'
|
|
|
|
|
|
def getpipe(package, name, _default=None):
|
|
if package is None:
|
|
return None
|
|
try:
|
|
cls = getattr(package, name, _default)
|
|
return cls
|
|
except Exception as e:
|
|
log.error(f'Load video: error loading class "{name}" from package "{package.__name__}": {e}')
|
|
return None
|
|
|
|
|
|
def init_overrides():
|
|
from pipelines.cosmos import safety_checker
|
|
sys.modules['cosmos_guardrail'] = safety_checker
|
|
|
|
|
|
try:
|
|
t0 = time.time()
|
|
init_overrides()
|
|
models = {
|
|
'None': [],
|
|
'Hunyuan Video': [
|
|
Model(name='None'),
|
|
Model(name='Hunyuan Video 1.5 T2V 720p',
|
|
url='https://huggingface.co/tencent/HunyuanVideo-1.5',
|
|
vae_remote=False,
|
|
repo='hunyuanvideo-community/HunyuanVideo-1.5-Diffusers-720p_t2v',
|
|
repo_cls='HunyuanVideo15Pipeline',
|
|
te_cls='Qwen2_5_VLTextModel',
|
|
dit_cls='HunyuanVideo15Transformer3DModel'),
|
|
Model(name='Hunyuan Video 1.5 I2V 720p',
|
|
url='https://huggingface.co/tencent/HunyuanVideo-1.5',
|
|
vae_remote=False,
|
|
repo='hunyuanvideo-community/HunyuanVideo-1.5-Diffusers-720p_i2v',
|
|
repo_cls='HunyuanVideo15ImageToVideoPipeline',
|
|
te_cls='Qwen2_5_VLTextModel',
|
|
dit_cls='HunyuanVideo15Transformer3DModel'),
|
|
Model(name='Hunyuan Video 1.5 I2V 720p Distilled',
|
|
url='https://huggingface.co/tencent/HunyuanVideo-1.5',
|
|
vae_remote=False,
|
|
repo='hunyuanvideo-community/HunyuanVideo-1.5-Diffusers-720p_i2v_distilled',
|
|
repo_cls='HunyuanVideo15ImageToVideoPipeline',
|
|
te_cls='Qwen2_5_VLTextModel',
|
|
dit_cls='HunyuanVideo15Transformer3DModel'),
|
|
Model(name='Hunyuan Video 1.5 T2V 480p',
|
|
url='https://huggingface.co/tencent/HunyuanVideo-1.5',
|
|
vae_remote=False,
|
|
repo='hunyuanvideo-community/HunyuanVideo-1.5-Diffusers-480p_t2v',
|
|
repo_cls='HunyuanVideo15Pipeline',
|
|
te_cls='Qwen2_5_VLTextModel',
|
|
dit_cls='HunyuanVideo15Transformer3DModel'),
|
|
Model(name='Hunyuan Video 1.5 T2V 480p Distilled',
|
|
url='https://huggingface.co/tencent/HunyuanVideo-1.5',
|
|
vae_remote=False,
|
|
repo='hunyuanvideo-community/HunyuanVideo-1.5-Diffusers-480p_t2v_distilled',
|
|
repo_cls='HunyuanVideo15Pipeline',
|
|
te_cls='Qwen2_5_VLTextModel',
|
|
dit_cls='HunyuanVideo15Transformer3DModel'),
|
|
Model(name='Hunyuan Video 1.5 I2V 480p',
|
|
url='https://huggingface.co/tencent/HunyuanVideo-1.5',
|
|
vae_remote=False,
|
|
repo='hunyuanvideo-community/HunyuanVideo-1.5-Diffusers-480p_i2v',
|
|
repo_cls='HunyuanVideo15ImageToVideoPipeline',
|
|
te_cls='Qwen2_5_VLTextModel',
|
|
dit_cls='HunyuanVideo15Transformer3DModel'),
|
|
Model(name='Hunyuan Video 1.5 I2V 480p Distilled',
|
|
url='https://huggingface.co/tencent/HunyuanVideo-1.5',
|
|
vae_remote=False,
|
|
repo='hunyuanvideo-community/HunyuanVideo-1.5-Diffusers-480p_i2v_distilled',
|
|
repo_cls='HunyuanVideo15ImageToVideoPipeline',
|
|
te_cls='Qwen2_5_VLTextModel',
|
|
dit_cls='HunyuanVideo15Transformer3DModel'),
|
|
Model(name='Hunyuan Video 1.0 T2V',
|
|
url='https://huggingface.co/tencent/HunyuanVideo',
|
|
vae_remote=True,
|
|
repo='hunyuanvideo-community/HunyuanVideo',
|
|
repo_cls='HunyuanVideoPipeline',
|
|
te_cls='LlamaModel',
|
|
dit_cls='HunyuanVideoTransformer3DModel'),
|
|
Model(name='Hunyuan Video 1.0 I2V', # https://github.com/huggingface/diffusers/pull/10983
|
|
url='https://huggingface.co/tencent/HunyuanVideo-I2V',
|
|
vae_remote=True,
|
|
repo='hunyuanvideo-community/HunyuanVideo-I2V',
|
|
repo_cls='HunyuanVideoImageToVideoPipeline',
|
|
te_cls='LlavaForConditionalGeneration',
|
|
dit_cls='HunyuanVideoTransformer3DModel'),
|
|
Model(name='SkyReels Hunyuan 1.0 T2V', # https://github.com/huggingface/diffusers/pull/10837
|
|
url='https://huggingface.co/Skywork/SkyReels-V1-Hunyuan-T2V',
|
|
vae_remote=True,
|
|
repo='hunyuanvideo-community/HunyuanVideo',
|
|
repo_cls='HunyuanVideoPipeline',
|
|
te_cls='LlamaModel',
|
|
dit='Skywork/SkyReels-V1-Hunyuan-T2V',
|
|
dit_folder=None,
|
|
dit_cls='HunyuanVideoTransformer3DModel'),
|
|
Model(name='SkyReels Hunyuan 1.0 I2V', # https://github.com/huggingface/diffusers/pull/10837
|
|
url='https://huggingface.co/Skywork/SkyReels-V1-Hunyuan-I2V',
|
|
vae_remote=True,
|
|
repo='hunyuanvideo-community/HunyuanVideo',
|
|
repo_cls='HunyuanSkyreelsImageToVideoPipeline',
|
|
te_cls='LlamaModel',
|
|
dit='Skywork/SkyReels-V1-Hunyuan-I2V',
|
|
dit_folder=None,
|
|
dit_cls='HunyuanVideoTransformer3DModel'),
|
|
Model(name='Fast Hunyuan 1.0 T2V', # https://github.com/hao-ai-lab/FastVideo/blob/8a77cf22c9b9e7f931f42bc4b35d21fd91d24e45/fastvideo/models/hunyuan/inference.py#L213
|
|
url='https://huggingface.co/FastVideo/FastHunyuan',
|
|
vae_remote=True,
|
|
repo='hunyuanvideo-community/HunyuanVideo',
|
|
repo_cls='HunyuanVideoPipeline',
|
|
te_cls='LlamaModel',
|
|
dit='FastVideo/FastHunyuan-diffusers',
|
|
dit_cls='HunyuanVideoTransformer3DModel'),
|
|
],
|
|
'LTX Video': [
|
|
Model(name='None'),
|
|
|
|
Model(name='─────── LTX-2.5 ───────'),
|
|
Model(name='─── Distilled ───'),
|
|
Model(name='LTXVideo 2.5 22B T2V Distilled',
|
|
url='https://huggingface.co/Lightricks/LTX-2.5',
|
|
repo='Lightricks/LTX-2.5-Diffusers',
|
|
repo_cls='LTX2Pipeline',
|
|
te_cls='Gemma4UnifiedForConditionalGeneration',
|
|
dit_cls='LTX2VideoTransformer3DModel'),
|
|
Model(name='LTXVideo 2.5 22B I2V Distilled',
|
|
url='https://huggingface.co/Lightricks/LTX-2.5',
|
|
repo='Lightricks/LTX-2.5-Diffusers',
|
|
repo_cls='LTX2ImageToVideoPipeline',
|
|
te_cls='Gemma4UnifiedForConditionalGeneration',
|
|
dit_cls='LTX2VideoTransformer3DModel'),
|
|
Model(name='LTXVideo 2.5 22B Condition Distilled',
|
|
url='https://huggingface.co/Lightricks/LTX-2.5',
|
|
repo='Lightricks/LTX-2.5-Diffusers',
|
|
repo_cls='LTX2ConditionPipeline',
|
|
te_cls='Gemma4UnifiedForConditionalGeneration',
|
|
dit_cls='LTX2VideoTransformer3DModel'),
|
|
Model(name='─── Dev ───'), # transformer_full is the guided model, transformer the distilled one
|
|
Model(name='LTXVideo 2.5 22B T2V Dev',
|
|
url='https://huggingface.co/Lightricks/LTX-2.5',
|
|
repo='Lightricks/LTX-2.5-Diffusers',
|
|
repo_cls='LTX2Pipeline',
|
|
te_cls='Gemma4UnifiedForConditionalGeneration',
|
|
dit_cls='LTX2VideoTransformer3DModel',
|
|
dit_folder='transformer_full',
|
|
dit_kwarg='transformer'),
|
|
Model(name='LTXVideo 2.5 22B I2V Dev',
|
|
url='https://huggingface.co/Lightricks/LTX-2.5',
|
|
repo='Lightricks/LTX-2.5-Diffusers',
|
|
repo_cls='LTX2ImageToVideoPipeline',
|
|
te_cls='Gemma4UnifiedForConditionalGeneration',
|
|
dit_cls='LTX2VideoTransformer3DModel',
|
|
dit_folder='transformer_full',
|
|
dit_kwarg='transformer'),
|
|
Model(name='LTXVideo 2.5 22B Condition Dev',
|
|
url='https://huggingface.co/Lightricks/LTX-2.5',
|
|
repo='Lightricks/LTX-2.5-Diffusers',
|
|
repo_cls='LTX2ConditionPipeline',
|
|
te_cls='Gemma4UnifiedForConditionalGeneration',
|
|
dit_cls='LTX2VideoTransformer3DModel',
|
|
dit_folder='transformer_full',
|
|
dit_kwarg='transformer'),
|
|
|
|
Model(name='─────── LTX-2.3 v1.1 ───────'),
|
|
Model(name='LTXVideo 2.3-1.1 22B T2V Distilled',
|
|
url='https://huggingface.co/Lightricks/LTX-2.3',
|
|
repo='OzzyGT/LTX-2.3-Distilled-1.1',
|
|
repo_cls='LTX2Pipeline',
|
|
te_cls='Gemma3ForConditionalGeneration',
|
|
dit_cls='LTX2VideoTransformer3DModel'),
|
|
Model(name='LTXVideo 2.3-1.1 22B I2V Distilled',
|
|
url='https://huggingface.co/Lightricks/LTX-2.3',
|
|
repo='OzzyGT/LTX-2.3-Distilled-1.1',
|
|
repo_cls='LTX2ImageToVideoPipeline',
|
|
te_cls='Gemma3ForConditionalGeneration',
|
|
dit_cls='LTX2VideoTransformer3DModel'),
|
|
Model(name='LTXVideo 2.3-1.1 22B T2V Distilled SDNQ-4Bit',
|
|
url='https://huggingface.co/Lightricks/LTX-2.3',
|
|
repo='OzzyGT/LTX-2.3-Distilled-1.1-sdnq-dynamic-int4',
|
|
repo_cls='LTX2Pipeline',
|
|
te_cls='Gemma3ForConditionalGeneration',
|
|
dit_cls='LTX2VideoTransformer3DModel'),
|
|
Model(name='LTXVideo 2.3-1.1 22B I2V Distilled SDNQ-4Bit',
|
|
url='https://huggingface.co/Lightricks/LTX-2.3',
|
|
repo='OzzyGT/LTX-2.3-Distilled-1.1-sdnq-dynamic-int4',
|
|
repo_cls='LTX2ImageToVideoPipeline',
|
|
te_cls='Gemma3ForConditionalGeneration',
|
|
dit_cls='LTX2VideoTransformer3DModel'),
|
|
|
|
Model(name='─────── LTX-2.3 v1.0 ───────'),
|
|
Model(name='─── Base ───'),
|
|
Model(name='LTXVideo 2.3 22B T2V',
|
|
url='https://huggingface.co/Lightricks/LTX-2.3',
|
|
repo='OzzyGT/LTX-2.3',
|
|
repo_cls='LTX2Pipeline',
|
|
te_cls='Gemma3ForConditionalGeneration',
|
|
dit_cls='LTX2VideoTransformer3DModel'),
|
|
Model(name='LTXVideo 2.3 22B I2V',
|
|
url='https://huggingface.co/Lightricks/LTX-2.3',
|
|
repo='OzzyGT/LTX-2.3',
|
|
repo_cls='LTX2ImageToVideoPipeline',
|
|
te_cls='Gemma3ForConditionalGeneration',
|
|
dit_cls='LTX2VideoTransformer3DModel'),
|
|
Model(name='LTXVideo 2.3 22B Condition',
|
|
url='https://huggingface.co/Lightricks/LTX-2.3',
|
|
repo='OzzyGT/LTX-2.3',
|
|
repo_cls='LTX2ConditionPipeline',
|
|
te_cls='Gemma3ForConditionalGeneration',
|
|
dit_cls='LTX2VideoTransformer3DModel'),
|
|
Model(name='LTXVideo 2.3 22B T2V SDNQ-4Bit',
|
|
url='https://huggingface.co/Lightricks/LTX-2.3',
|
|
repo='OzzyGT/LTX-2.3-sdnq-dynamic-int4',
|
|
repo_cls='LTX2Pipeline',
|
|
te_cls='Gemma3ForConditionalGeneration',
|
|
dit_cls='LTX2VideoTransformer3DModel'),
|
|
Model(name='LTXVideo 2.3 22B I2V SDNQ-4Bit',
|
|
url='https://huggingface.co/Lightricks/LTX-2.3',
|
|
repo='OzzyGT/LTX-2.3-sdnq-dynamic-int4',
|
|
repo_cls='LTX2ImageToVideoPipeline',
|
|
te_cls='Gemma3ForConditionalGeneration',
|
|
dit_cls='LTX2VideoTransformer3DModel'),
|
|
Model(name='LTXVideo 2.3 22B Condition SDNQ-4Bit',
|
|
url='https://huggingface.co/Lightricks/LTX-2.3',
|
|
repo='OzzyGT/LTX-2.3-sdnq-dynamic-int4',
|
|
repo_cls='LTX2ConditionPipeline',
|
|
te_cls='Gemma3ForConditionalGeneration',
|
|
dit_cls='LTX2VideoTransformer3DModel'),
|
|
Model(name='─── Distilled ───'),
|
|
Model(name='LTXVideo 2.3 22B T2V Distilled',
|
|
url='https://huggingface.co/Lightricks/LTX-2.3',
|
|
repo='OzzyGT/LTX-2.3-Distilled',
|
|
repo_cls='LTX2Pipeline',
|
|
te_cls='Gemma3ForConditionalGeneration',
|
|
dit_cls='LTX2VideoTransformer3DModel'),
|
|
Model(name='LTXVideo 2.3 22B I2V Distilled',
|
|
url='https://huggingface.co/Lightricks/LTX-2.3',
|
|
repo='OzzyGT/LTX-2.3-Distilled',
|
|
repo_cls='LTX2ImageToVideoPipeline',
|
|
te_cls='Gemma3ForConditionalGeneration',
|
|
dit_cls='LTX2VideoTransformer3DModel'),
|
|
Model(name='LTXVideo 2.3 22B Condition Distilled',
|
|
url='https://huggingface.co/Lightricks/LTX-2.3',
|
|
repo='OzzyGT/LTX-2.3-Distilled',
|
|
repo_cls='LTX2ConditionPipeline',
|
|
te_cls='Gemma3ForConditionalGeneration',
|
|
dit_cls='LTX2VideoTransformer3DModel'),
|
|
Model(name='LTXVideo 2.3 22B T2V Distilled SDNQ-4Bit',
|
|
url='https://huggingface.co/Lightricks/LTX-2.3',
|
|
repo='OzzyGT/LTX-2.3-Distilled-sdnq-dynamic-int4',
|
|
repo_cls='LTX2Pipeline',
|
|
te_cls='Gemma3ForConditionalGeneration',
|
|
dit_cls='LTX2VideoTransformer3DModel'),
|
|
Model(name='LTXVideo 2.3 22B I2V Distilled SDNQ-4Bit',
|
|
url='https://huggingface.co/Lightricks/LTX-2.3',
|
|
repo='OzzyGT/LTX-2.3-Distilled-sdnq-dynamic-int4',
|
|
repo_cls='LTX2ImageToVideoPipeline',
|
|
te_cls='Gemma3ForConditionalGeneration',
|
|
dit_cls='LTX2VideoTransformer3DModel'),
|
|
Model(name='LTXVideo 2.3 22B Condition Distilled SDNQ-4Bit',
|
|
url='https://huggingface.co/Lightricks/LTX-2.3',
|
|
repo='OzzyGT/LTX-2.3-Distilled-sdnq-dynamic-int4',
|
|
repo_cls='LTX2ConditionPipeline',
|
|
te_cls='Gemma3ForConditionalGeneration',
|
|
dit_cls='LTX2VideoTransformer3DModel'),
|
|
|
|
Model(name='─────── LTX-2.0 ───────'),
|
|
Model(name='LTXVideo 2.0 19B T2V Dev',
|
|
url='https://huggingface.co/Lightricks/LTX-2',
|
|
repo='Lightricks/LTX-2',
|
|
repo_cls='LTX2Pipeline',
|
|
te_cls='Gemma3ForConditionalGeneration',
|
|
dit_cls='LTX2VideoTransformer3DModel'),
|
|
Model(name='LTXVideo 2.0 19B I2V Dev',
|
|
url='https://huggingface.co/Lightricks/LTX-2',
|
|
repo='Lightricks/LTX-2',
|
|
repo_cls='LTX2ImageToVideoPipeline',
|
|
te_cls='Gemma3ForConditionalGeneration',
|
|
dit_cls='LTX2VideoTransformer3DModel'),
|
|
Model(name='LTXVideo 2.0 19B T2V Dev SDNQ-4Bit',
|
|
url='https://huggingface.co/Disty0/LTX-2-SDNQ-4bit-dynamic',
|
|
repo='Disty0/LTX-2-SDNQ-4bit-dynamic',
|
|
repo_cls='LTX2Pipeline',
|
|
te_cls='Gemma3ForConditionalGeneration',
|
|
dit_cls='LTX2VideoTransformer3DModel'),
|
|
Model(name='LTXVideo 2.0 19B I2V Dev SDNQ-4Bit',
|
|
url='https://huggingface.co/Disty0/LTX-2-SDNQ-4bit-dynamic',
|
|
repo='Disty0/LTX-2-SDNQ-4bit-dynamic',
|
|
repo_cls='LTX2ImageToVideoPipeline',
|
|
te_cls='Gemma3ForConditionalGeneration',
|
|
dit_cls='LTX2VideoTransformer3DModel'),
|
|
|
|
Model(name='─────── LTX-0.9.x ───────'),
|
|
Model(name='─── Base ───'),
|
|
Model(name='LTXVideo 0.9.7 13B Dev',
|
|
url='https://huggingface.co/Lightricks/LTX-Video-0.9.7-dev',
|
|
repo='a-r-r-o-w/LTX-Video-0.9.7-diffusers',
|
|
repo_cls='LTXConditionPipeline',
|
|
te_cls='T5EncoderModel',
|
|
dit_cls='LTXVideoTransformer3DModel'),
|
|
Model(name='LTXVideo 0.9.6 2B T2V',
|
|
url='https://huggingface.co/Lightricks/LTX-Video',
|
|
repo='Lightricks/LTX-Video',
|
|
repo_cls='LTXConditionPipeline',
|
|
te_cls='T5EncoderModel',
|
|
dit_cls='LTXVideoTransformer3DModel'),
|
|
Model(name='LTXVideo 0.9.6 2B I2V',
|
|
url='https://huggingface.co/Lightricks/LTX-Video',
|
|
repo='Lightricks/LTX-Video',
|
|
repo_cls='LTXConditionPipeline',
|
|
te_cls='T5EncoderModel',
|
|
dit_cls='LTXVideoTransformer3DModel'),
|
|
Model(name='LTXVideo 0.9.5 T2V', # https://github.com/huggingface/diffusers/pull/10968
|
|
url='https://huggingface.co/Lightricks/LTX-Video-0.9.5',
|
|
repo='Lightricks/LTX-Video-0.9.5',
|
|
repo_cls='LTXConditionPipeline',
|
|
te_cls='T5EncoderModel',
|
|
dit_cls='LTXVideoTransformer3DModel'),
|
|
Model(name='LTXVideo 0.9.5 I2V',
|
|
url='https://huggingface.co/Lightricks/LTX-Video-0.9.5',
|
|
repo='Lightricks/LTX-Video-0.9.5',
|
|
repo_cls='LTXConditionPipeline',
|
|
te_cls='T5EncoderModel',
|
|
dit_cls='LTXVideoTransformer3DModel'),
|
|
Model(name='LTXVideo 0.9.1 T2V',
|
|
url='https://huggingface.co/a-r-r-o-w/LTX-Video-0.9.1-diffusers',
|
|
repo='a-r-r-o-w/LTX-Video-0.9.1-diffusers',
|
|
repo_cls='LTXPipeline',
|
|
te_cls='T5EncoderModel',
|
|
dit_cls='LTXVideoTransformer3DModel'),
|
|
Model(name='LTXVideo 0.9.1 I2V',
|
|
url='https://huggingface.co/a-r-r-o-w/LTX-Video-0.9.1-diffusers',
|
|
repo='a-r-r-o-w/LTX-Video-0.9.1-diffusers',
|
|
repo_cls='LTXImageToVideoPipeline',
|
|
te_cls='T5EncoderModel',
|
|
dit_cls='LTXVideoTransformer3DModel'),
|
|
Model(name='LTXVideo 0.9.0 T2V',
|
|
url='https://huggingface.co/a-r-r-o-w/LTX-Video-diffusers',
|
|
repo='a-r-r-o-w/LTX-Video-diffusers',
|
|
repo_cls='LTXPipeline',
|
|
te_cls='T5EncoderModel',
|
|
dit_cls='LTXVideoTransformer3DModel'),
|
|
Model(name='LTXVideo 0.9.0 I2V',
|
|
url='https://huggingface.co/a-r-r-o-w/LTX-Video-diffusers',
|
|
repo='a-r-r-o-w/LTX-Video-diffusers',
|
|
repo_cls='LTXImageToVideoPipeline',
|
|
te_cls='T5EncoderModel',
|
|
dit_cls='LTXVideoTransformer3DModel'),
|
|
Model(name='─── Distilled ───'),
|
|
Model(name='LTXVideo 0.9.8 13B Distilled',
|
|
url='https://huggingface.co/Lightricks/LTX-Video-0.9.8-13B-distilled',
|
|
repo='Lightricks/LTX-Video-0.9.8-13B-distilled',
|
|
repo_cls='LTXConditionPipeline',
|
|
te_cls='T5EncoderModel',
|
|
dit_cls='LTXVideoTransformer3DModel'),
|
|
Model(name='LTXVideo 0.9.6 2B T2V Distilled',
|
|
url='https://huggingface.co/Lightricks/LTX-Video-2B-0.9.6-Distilled-04-25',
|
|
repo='Lightricks/LTX-Video-2B-0.9.6-Distilled-04-25',
|
|
repo_cls='LTXConditionPipeline',
|
|
te_cls='T5EncoderModel',
|
|
dit_cls='LTXVideoTransformer3DModel'),
|
|
Model(name='LTXVideo 0.9.6 2B I2V Distilled',
|
|
url='https://huggingface.co/Lightricks/LTX-Video-2B-0.9.6-Distilled-04-25',
|
|
repo='Lightricks/LTX-Video-2B-0.9.6-Distilled-04-25',
|
|
repo_cls='LTXConditionPipeline',
|
|
te_cls='T5EncoderModel',
|
|
dit_cls='LTXVideoTransformer3DModel'),
|
|
],
|
|
'WAN Video': [
|
|
Model(name='None'),
|
|
Model(name='WAN 2.2 5B T2V',
|
|
url='https://huggingface.co/Wan-AI/Wan2.2-TI2V-5B-Diffusers',
|
|
repo='Wan-AI/Wan2.2-TI2V-5B-Diffusers',
|
|
repo_cls='WanPipeline',
|
|
te_cls='UMT5EncoderModel',
|
|
dit_cls='WanTransformer3DModel'),
|
|
Model(name='WAN 2.2 5B I2V',
|
|
url='https://huggingface.co/Wan-AI/Wan2.2-TI2V-5B-Diffusers',
|
|
repo='Wan-AI/Wan2.2-TI2V-5B-Diffusers',
|
|
repo_cls='WanImageToVideoPipeline',
|
|
te_cls='UMT5EncoderModel',
|
|
dit_cls='WanTransformer3DModel'),
|
|
Model(name='WAN 2.2 A14B T2V',
|
|
url='https://huggingface.co/Wan-AI/Wan2.2-T2V-A14B-Diffusers',
|
|
repo='Wan-AI/Wan2.2-T2V-A14B-Diffusers',
|
|
repo_cls='WanPipeline',
|
|
te_cls='UMT5EncoderModel',
|
|
dit_cls='WanTransformer3DModel',
|
|
dit_folder=("transformer", "transformer_2")),
|
|
Model(name='WAN 2.2 A14B I2V',
|
|
url='https://huggingface.co/Wan-AI/Wan2.2-I2V-A14B-Diffusers',
|
|
repo='Wan-AI/Wan2.2-I2V-A14B-Diffusers',
|
|
repo_cls='WanImageToVideoPipeline',
|
|
te_cls='UMT5EncoderModel',
|
|
dit_cls='WanTransformer3DModel',
|
|
dit_folder=("transformer", "transformer_2")),
|
|
Model(name='WAN 2.2 A14B SDNQ T2V',
|
|
url='https://huggingface.co/Disty0/Wan2.2-T2V-A14B-SDNQ-uint4-svd-r32',
|
|
repo='Disty0/Wan2.2-T2V-A14B-SDNQ-uint4-svd-r32',
|
|
repo_cls='WanPipeline',
|
|
te_cls='UMT5EncoderModel',
|
|
dit_cls='WanTransformer3DModel',
|
|
dit_folder=("transformer", "transformer_2")),
|
|
Model(name='WAN 2.2 A14B SDNQ I2V',
|
|
url='https://huggingface.co/Disty0/Wan2.2-I2V-A14B-SDNQ-uint4-svd-r32',
|
|
repo='Disty0/Wan2.2-I2V-A14B-SDNQ-uint4-svd-r32',
|
|
repo_cls='WanImageToVideoPipeline',
|
|
te_cls='UMT5EncoderModel',
|
|
dit_cls='WanTransformer3DModel',
|
|
dit_folder=("transformer", "transformer_2")),
|
|
Model(name='WAN 2.2 14B VACE',
|
|
url='https://huggingface.co/linoyts/Wan2.2-VACE-Fun-14B-diffusers',
|
|
repo='linoyts/Wan2.2-VACE-Fun-14B-diffusers',
|
|
repo_cls='WanVACEPipeline',
|
|
te_cls='UMT5EncoderModel',
|
|
dit_cls='WanVACETransformer3DModel',
|
|
dit_folder=("transformer", "transformer_2")),
|
|
Model(name='WAN 2.1 1.3B T2V',
|
|
url='https://huggingface.co/Wan-AI/Wan2.1-T2V-1.3B-Diffusers',
|
|
repo='Wan-AI/Wan2.1-T2V-1.3B-Diffusers',
|
|
repo_cls='WanPipeline',
|
|
te_cls='UMT5EncoderModel',
|
|
dit_cls='WanTransformer3DModel'),
|
|
Model(name='WAN 2.1 14B T2V',
|
|
url='https://huggingface.co/Wan-AI/Wan2.1-T2V-14B-Diffusers',
|
|
repo='Wan-AI/Wan2.1-T2V-14B-Diffusers',
|
|
repo_cls='WanPipeline',
|
|
te_cls='UMT5EncoderModel',
|
|
dit_cls='WanTransformer3DModel'),
|
|
Model(name='WAN 2.1 14B I2V 480p',
|
|
url='https://huggingface.co/Wan-AI/Wan2.1-I2V-14B-480P-Diffusers',
|
|
repo='Wan-AI/Wan2.1-I2V-14B-480P-Diffusers',
|
|
repo_cls='WanImageToVideoPipeline',
|
|
te_cls='UMT5EncoderModel',
|
|
dit_cls='WanTransformer3DModel'),
|
|
Model(name='WAN 2.1 14B I2V 720p',
|
|
url='https://huggingface.co/Wan-AI/Wan2.1-I2V-14B-720P-Diffusers',
|
|
repo='Wan-AI/Wan2.1-I2V-14B-720P-Diffusers',
|
|
repo_cls='WanImageToVideoPipeline',
|
|
te_cls='UMT5EncoderModel',
|
|
dit_cls='WanTransformer3DModel'),
|
|
Model(name='WAN 2.1 14B FLF2V 720p',
|
|
url='https://huggingface.co/Wan-AI/Wan2.1-FLF2V-14B-720P',
|
|
repo='Wan-AI/Wan2.1-FLF2V-14B-720P-diffusers',
|
|
repo_cls='WanImageToVideoPipeline',
|
|
te_cls='UMT5EncoderModel',
|
|
dit_cls='WanTransformer3DModel'),
|
|
Model(name='WAN 2.1 VACE 1.3B',
|
|
url='https://huggingface.co/Wan-AI/Wan2.1-VACE-1.3B-diffusers',
|
|
repo='Wan-AI/Wan2.1-VACE-1.3B-diffusers',
|
|
repo_cls='WanVACEPipeline',
|
|
te_cls='UMT5EncoderModel',
|
|
dit_cls='WanVACETransformer3DModel'),
|
|
Model(name='WAN 2.1 VACE 14B',
|
|
url='https://huggingface.co/Wan-AI/Wan2.1-VACE-14B-diffusers',
|
|
repo='Wan-AI/Wan2.1-VACE-14B-diffusers',
|
|
repo_cls='WanVACEPipeline',
|
|
te_cls='UMT5EncoderModel',
|
|
dit_cls='WanVACETransformer3DModel'),
|
|
Model(name='WAN 2.2 Animate 14B',
|
|
url='https://huggingface.co/Wan-AI/Wan2.2-Animate-14B-Diffusers',
|
|
repo='Wan-AI/Wan2.2-Animate-14B-Diffusers',
|
|
repo_cls='WanAnimatePipeline',
|
|
te_cls='UMT5EncoderModel',
|
|
dit_cls='WanAnimateTransformer3DModel'),
|
|
],
|
|
'SkyReels V2': [
|
|
Model(name='None'),
|
|
Model(name='SkyReels-V2 T2V-DF 1.3B-540P',
|
|
url='https://huggingface.co/Skywork/SkyReels-V2-DF-1.3B-540P-Diffusers',
|
|
repo='Skywork/SkyReels-V2-DF-1.3B-540P-Diffusers',
|
|
repo_cls='SkyReelsV2DiffusionForcingPipeline',
|
|
repo_revision='refs/pr/1',
|
|
te_cls='UMT5EncoderModel',
|
|
dit_cls='SkyReelsV2Transformer3DModel'),
|
|
Model(name='SkyReels-V2 T2V-DF 14B-720P',
|
|
url='https://huggingface.co/Skywork/SkyReels-V2-DF-14B-720P-Diffusers',
|
|
repo='Skywork/SkyReels-V2-DF-14B-720P-Diffusers',
|
|
repo_cls='SkyReelsV2DiffusionForcingPipeline',
|
|
repo_revision='refs/pr/1',
|
|
te_cls='UMT5EncoderModel',
|
|
dit_cls='SkyReelsV2Transformer3DModel'),
|
|
Model(name='SkyReels-V2 I2V-DF 14B-720P',
|
|
url='https://huggingface.co/Skywork/SkyReels-V2-DF-14B-720P-Diffusers',
|
|
repo='Skywork/SkyReels-V2-DF-14B-720P-Diffusers',
|
|
repo_cls='SkyReelsV2DiffusionForcingImageToVideoPipeline',
|
|
repo_revision='refs/pr/1',
|
|
te_cls='UMT5EncoderModel',
|
|
dit_cls='SkyReelsV2Transformer3DModel'),
|
|
Model(name='SkyReels-V2 T2V 14B-720P',
|
|
url='https://huggingface.co/Skywork/SkyReels-V2-T2V-14B-720P-Diffusers',
|
|
repo='Skywork/SkyReels-V2-T2V-14B-720P-Diffusers',
|
|
repo_cls='SkyReelsV2Pipeline',
|
|
repo_revision='refs/pr/1',
|
|
te_cls='UMT5EncoderModel',
|
|
dit_cls='SkyReelsV2Transformer3DModel'),
|
|
Model(name='SkyReels-V2 I2V 14B-720P',
|
|
url='https://huggingface.co/Skywork/SkyReels-V2-I2V-14B-720P-Diffusers',
|
|
repo='Skywork/SkyReels-V2-I2V-14B-720P-Diffusers',
|
|
repo_cls='SkyReelsV2ImageToVideoPipeline',
|
|
repo_revision='refs/pr/1',
|
|
te_cls='UMT5EncoderModel',
|
|
dit_cls='SkyReelsV2Transformer3DModel'),
|
|
],
|
|
'Mochi Video': [
|
|
Model(name='None'),
|
|
Model(name='Mochi 1 T2V',
|
|
url='https://huggingface.co/genmo/mochi-1-preview',
|
|
repo='genmo/mochi-1-preview',
|
|
repo_cls='MochiPipeline',
|
|
te_cls='T5EncoderModel',
|
|
dit_cls='MochiTransformer3DModel'),
|
|
],
|
|
'Latte Video': [
|
|
Model(name='None'),
|
|
Model(name='Latte 1 T2V',
|
|
url='https://huggingface.co/maxin-cn/Latte-1',
|
|
repo='maxin-cn/Latte-1',
|
|
repo_cls='LattePipeline',
|
|
te_cls='T5EncoderModel',
|
|
dit_cls='LatteTransformer3DModel'),
|
|
],
|
|
'Allegro Video': [
|
|
Model(name='None'),
|
|
Model(name='Allegro T2V',
|
|
url='https://huggingface.co/rhymes-ai/Allegro',
|
|
repo='rhymes-ai/Allegro',
|
|
repo_cls='AllegroPipeline',
|
|
te_cls='T5EncoderModel',
|
|
dit_cls='AllegroTransformer3DModel'),
|
|
],
|
|
'Cog Video': [
|
|
Model(name='None'),
|
|
Model(name='CogVideoX 1.0 2B T2V',
|
|
url='https://huggingface.co/THUDM/CogVideoX-2b',
|
|
repo='THUDM/CogVideoX-2b',
|
|
repo_cls='CogVideoXPipeline',
|
|
te_cls='T5EncoderModel',
|
|
dit_cls='CogVideoXTransformer3DModel'),
|
|
Model(name='CogVideoX 1.0 5B T2V',
|
|
url='https://huggingface.co/THUDM/CogVideoX-5b',
|
|
repo='THUDM/CogVideoX-5b',
|
|
repo_cls='CogVideoXPipeline',
|
|
te_cls='T5EncoderModel',
|
|
dit_cls='CogVideoXTransformer3DModel'),
|
|
Model(name='CogVideoX 1.0 5B I2V',
|
|
url='https://huggingface.co/THUDM/CogVideoX-5b-I2V',
|
|
repo='THUDM/CogVideoX-5b-I2V',
|
|
repo_cls='CogVideoXImageToVideoPipeline',
|
|
te_cls='T5EncoderModel',
|
|
dit_cls='CogVideoXTransformer3DModel'),
|
|
Model(name='CogVideoX 1.5 5B T2V',
|
|
url='https://huggingface.co/THUDM/CogVideoX1.5-5B',
|
|
repo='THUDM/CogVideoX1.5-5B',
|
|
repo_cls='CogVideoXPipeline',
|
|
te_cls='T5EncoderModel',
|
|
dit_cls='CogVideoXTransformer3DModel'),
|
|
Model(name='CogVideoX 1.5 5B I2V',
|
|
url='https://huggingface.co/THUDM/CogVideoX1.5-5B-I2V',
|
|
repo='THUDM/CogVideoX1.5-5B-I2V',
|
|
repo_cls='CogVideoXImageToVideoPipeline',
|
|
te_cls='T5EncoderModel',
|
|
dit_cls='CogVideoXTransformer3DModel'),
|
|
Model(name='Index Anisora 1.0 5B I2V',
|
|
url='https://huggingface.co/Disty0/Index-anisora-5B-diffusers',
|
|
repo='Disty0/Index-anisora-5B-diffusers',
|
|
repo_cls='CogVideoXImageToVideoPipeline',
|
|
te_cls='T5EncoderModel',
|
|
dit_cls='CogVideoXTransformer3DModel'),
|
|
Model(name='Index Anisora 1.0 5B RL I2V',
|
|
url='https://huggingface.co/Disty0/Index-anisora-5B_RL-diffusers',
|
|
repo='Disty0/Index-anisora-5B_RL-diffusers',
|
|
repo_cls='CogVideoXImageToVideoPipeline',
|
|
te_cls='T5EncoderModel',
|
|
dit_cls='CogVideoXTransformer3DModel'),
|
|
],
|
|
'nVidia Cosmos': [
|
|
Model(name='nvidia Cosmos Predict2 2B I2V',
|
|
url='https://huggingface.co/nvidia/Cosmos-Predict2-2B-Text2Image',
|
|
repo='nvidia/Cosmos-Predict2-2B-Video2World',
|
|
repo_cls='Cosmos2VideoToWorldPipeline',
|
|
te_cls='T5EncoderModel',
|
|
dit_cls='CosmosTransformer3DModel'),
|
|
Model(name='nvidia Cosmos Predict2 2B I2V',
|
|
url='https://huggingface.co/nvidia/Cosmos-Predict2-2B-Text2Image',
|
|
repo='nvidia/Cosmos-Predict2-2B-Video2World',
|
|
repo_cls='Cosmos2VideoToWorldPipeline',
|
|
te_cls='T5EncoderModel',
|
|
dit_cls='CosmosTransformer3DModel'),
|
|
],
|
|
'nVidia SANA': [
|
|
Model(name='SANA Video 2B 480p T2V',
|
|
url='https://huggingface.co/Efficient-Large-Model/SANA-Video_2B_480p_diffusers',
|
|
repo='Efficient-Large-Model/SANA-Video_2B_480p_diffusers',
|
|
repo_cls='SanaVideoPipeline',
|
|
te_cls='Gemma2Model',
|
|
dit_cls='SanaVideoTransformer3DModel'),
|
|
],
|
|
'Kandinsky': [
|
|
Model(name='Kandinsky 5.0 Lite 5s SFT T2V',
|
|
url='https://huggingface.co/kandinskylab/Kandinsky-5.0-T2V-Lite-sft-5s-Diffusers',
|
|
repo='kandinskylab/Kandinsky-5.0-T2V-Lite-sft-5s-Diffusers',
|
|
repo_cls='Kandinsky5T2VPipeline',
|
|
te_cls='Qwen2_5_VLForConditionalGeneration',
|
|
dit_cls='Kandinsky5Transformer3DModel'),
|
|
Model(name='Kandinsky 5.0 Lite 5s CFG-distilled T2V',
|
|
url='https://huggingface.co/kandinskylab/Kandinsky-5.0-T2V-Lite-nocfg-5s-Diffusers',
|
|
repo='kandinskylab/Kandinsky-5.0-T2V-Lite-nocfg-5s-Diffusers',
|
|
repo_cls='Kandinsky5T2VPipeline',
|
|
te_cls='Qwen2_5_VLForConditionalGeneration',
|
|
dit_cls='Kandinsky5Transformer3DModel'),
|
|
Model(name='Kandinsky 5.0 Lite 5s Steps-distilled T2V',
|
|
url='https://huggingface.co/kandinskylab/Kandinsky-5.0-T2V-Lite-distilled16steps-5s-Diffusers',
|
|
repo='kandinskylab/Kandinsky-5.0-T2V-Lite-distilled16steps-5s-Diffusers',
|
|
repo_cls='Kandinsky5T2VPipeline',
|
|
te_cls='Qwen2_5_VLForConditionalGeneration',
|
|
dit_cls='Kandinsky5Transformer3DModel'),
|
|
Model(name='Kandinsky 5.0 Lite 10s SFT T2V',
|
|
url='https://huggingface.co/kandinskylab/Kandinsky-5.0-T2V-Lite-sft-10s-Diffusers',
|
|
repo='kandinskylab/Kandinsky-5.0-T2V-Lite-sft-10s-Diffusers',
|
|
repo_cls='Kandinsky5T2VPipeline',
|
|
te_cls='Qwen2_5_VLForConditionalGeneration',
|
|
dit_cls='Kandinsky5Transformer3DModel'),
|
|
Model(name='Kandinsky 5.0 Lite 10s CFG-distilled T2V',
|
|
url='https://huggingface.co/kandinskylab/Kandinsky-5.0-T2V-Lite-nocfg-10s-Diffusers',
|
|
repo='kandinskylab/Kandinsky-5.0-T2V-Lite-nocfg-10s-Diffusers',
|
|
repo_cls='Kandinsky5T2VPipeline',
|
|
te_cls='Qwen2_5_VLForConditionalGeneration',
|
|
dit_cls='Kandinsky5Transformer3DModel'),
|
|
Model(name='Kandinsky 5.0 Lite 10s Steps-distilled T2V',
|
|
url='https://huggingface.co/kandinskylab/Kandinsky-5.0-T2V-Lite-distilled16steps-10s-Diffusers',
|
|
repo='kandinskylab/Kandinsky-5.0-T2V-Lite-distilled16steps-10s-Diffusers',
|
|
repo_cls='Kandinsky5T2VPipeline',
|
|
te_cls='Qwen2_5_VLForConditionalGeneration',
|
|
dit_cls='Kandinsky5Transformer3DModel'),
|
|
Model(name='Kandinsky 5.0 Pro 5s SFT T2V',
|
|
url='https://huggingface.co/kandinskylab/Kandinsky-5.0-T2V-Pro-sft-5s-Diffusers',
|
|
repo='kandinskylab/Kandinsky-5.0-T2V-Pro-sft-5s-Diffusers',
|
|
repo_cls='Kandinsky5T2VPipeline',
|
|
te_cls='Qwen2_5_VLForConditionalGeneration',
|
|
dit_cls='Kandinsky5Transformer3DModel'),
|
|
Model(name='Kandinsky 5.0 Pro 5s SFT I2V',
|
|
url='https://huggingface.co/kandinskylab/Kandinsky-5.0-I2V-Pro-sft-5s-Diffusers',
|
|
repo='kandinskylab/Kandinsky-5.0-I2V-Pro-sft-5s-Diffusers',
|
|
repo_cls='Kandinsky5I2VPipeline',
|
|
te_cls='Qwen2_5_VLForConditionalGeneration',
|
|
dit_cls='Kandinsky5Transformer3DModel'),
|
|
],
|
|
'MiniMax': [
|
|
Model(name='None'),
|
|
Model(name='MiniMax H3 SDNQ uint4',
|
|
url='https://huggingface.co/MiniMaxAI/MiniMax-H3',
|
|
repo='OzzyGT/MiniMax_H3_sdnq_dynamic_4bit',
|
|
repo_cls='MiniMaxH3ModularPipeline',
|
|
workflow='fl2va',
|
|
base=True,
|
|
te_cls=None,
|
|
dit_cls=None,
|
|
te_hijack=False,
|
|
image_hijack=False,
|
|
vae_hijack=False,
|
|
vae_remote=False),
|
|
Model(name='MiniMax H3 SDNQ uint4 Ref2VA',
|
|
url='https://huggingface.co/MiniMaxAI/MiniMax-H3',
|
|
repo='OzzyGT/MiniMax_H3_sdnq_dynamic_4bit',
|
|
repo_cls='MiniMaxH3ModularPipeline',
|
|
workflow='ref2va',
|
|
base=True,
|
|
te_cls=None,
|
|
dit_cls=None,
|
|
te_hijack=False,
|
|
image_hijack=False,
|
|
vae_hijack=False,
|
|
vae_remote=False),
|
|
Model(name='MiniMax H3 Pruned SDNQ uint4',
|
|
url='https://huggingface.co/MiniMaxAI/MiniMax-H3',
|
|
repo='OzzyGT/MiniMax_H3_sdnq_4bit_pruned',
|
|
repo_cls='MiniMaxH3ModularPipeline',
|
|
workflow='fl2va',
|
|
base=True,
|
|
te_cls=None,
|
|
dit_cls=None,
|
|
te_hijack=False,
|
|
image_hijack=False,
|
|
vae_hijack=False,
|
|
vae_remote=False),
|
|
Model(name='MiniMax H3 Pruned SDNQ uint4 Ref2VA',
|
|
url='https://huggingface.co/MiniMaxAI/MiniMax-H3',
|
|
repo='OzzyGT/MiniMax_H3_sdnq_4bit_pruned',
|
|
repo_cls='MiniMaxH3ModularPipeline',
|
|
workflow='ref2va',
|
|
base=True,
|
|
te_cls=None,
|
|
dit_cls=None,
|
|
te_hijack=False,
|
|
image_hijack=False,
|
|
vae_hijack=False,
|
|
vae_remote=False),
|
|
Model(name='MiniMax H3',
|
|
url='https://huggingface.co/MiniMaxAI/MiniMax-H3',
|
|
repo='MiniMaxAI/MiniMax-H3',
|
|
repo_cls='MiniMaxH3ModularPipeline',
|
|
workflow='fl2va',
|
|
base=True,
|
|
te_cls=None,
|
|
dit_cls=None,
|
|
te_hijack=False,
|
|
image_hijack=False,
|
|
vae_hijack=False,
|
|
vae_remote=False),
|
|
Model(name='MiniMax H3 Ref2VA',
|
|
url='https://huggingface.co/MiniMaxAI/MiniMax-H3',
|
|
repo='MiniMaxAI/MiniMax-H3',
|
|
repo_cls='MiniMaxH3ModularPipeline',
|
|
workflow='ref2va',
|
|
base=True,
|
|
te_cls=None,
|
|
dit_cls=None,
|
|
te_hijack=False,
|
|
image_hijack=False,
|
|
vae_hijack=False,
|
|
vae_remote=False),
|
|
],
|
|
'Google Veo': [
|
|
Model(name='Google Veo 3.1 T2V',
|
|
url='https://gemini.google/overview/video-generation/',
|
|
repo='veo-3.1-generate-preview',
|
|
custom='GoogleVeoVideoPipeline',
|
|
repo_cls=None,
|
|
te_cls=None,
|
|
dit_cls=None),
|
|
Model(name='Google Veo 3.1 I2V',
|
|
url='https://gemini.google/overview/video-generation/',
|
|
repo='veo-3.1-generate-preview',
|
|
custom='GoogleVeoVideoPipeline',
|
|
repo_cls=None,
|
|
te_cls=None,
|
|
dit_cls=None),
|
|
],
|
|
}
|
|
t1 = time.time()
|
|
errors = 0
|
|
total = 0
|
|
for model in models.values():
|
|
for m in model:
|
|
if m.name == 'None':
|
|
continue
|
|
total += 1
|
|
log.info(f'Networks: type="video" engines={len(models)} models={total} errors={errors} time={t1 - t0:.2f}')
|
|
except Exception as e:
|
|
models = {}
|
|
log.error(f'Networks: type="video" {e}')
|
|
|
|
|
|
def is_model(row: Model) -> bool:
|
|
"""Rows that name a loadable model; the 'None' placeholder and the dropdown separators do not."""
|
|
return row.name != 'None' and not row.name.startswith('─')
|
|
|
|
|
|
def engines() -> list[str]:
|
|
"""Engine families with at least one real model, sentinel rows excluded."""
|
|
return [engine for engine, rows in models.items() if any(is_model(row) for row in rows)]
|
|
|
|
|
|
def model_names(engine: str) -> list[str]:
|
|
"""Real model names for an engine, sentinel rows excluded."""
|
|
return [row.name for row in models.get(engine, []) if is_model(row)]
|
|
|
|
|
|
def find(engine: str, name: str) -> Model | None:
|
|
"""Case-insensitive exact-name lookup; sentinel rows are not models."""
|
|
for family, rows in models.items():
|
|
if family.lower() != (engine or '').lower():
|
|
continue
|
|
for row in rows:
|
|
if is_model(row) and row.name.lower() == (name or '').lower():
|
|
return row
|
|
return None
|
|
|
|
|
|
def workflow_for_class(cls_name: str) -> str | None:
|
|
"""Workflow of the first registry row whose pipeline class matches, if any."""
|
|
for rows in models.values():
|
|
for row in rows:
|
|
if row.workflow is not None and row.repo_cls is not None:
|
|
row_cls = row.repo_cls if isinstance(row.repo_cls, str) else row.repo_cls.__name__
|
|
if row_cls == cls_name:
|
|
return row.workflow
|
|
return None
|
|
|
|
|
|
def pipeline_classes() -> set[str]:
|
|
"""Class names of every registry pipeline; repo_cls is a string before load and a class after video_load resolves it in place."""
|
|
classes = set()
|
|
for rows in models.values():
|
|
for row in rows:
|
|
if row.repo_cls is not None:
|
|
classes.add(row.repo_cls if isinstance(row.repo_cls, str) else row.repo_cls.__name__)
|
|
if row.custom is not None:
|
|
classes.add(row.custom)
|
|
return classes
|