add hunyuanimage-2.1

Signed-off-by: Vladimir Mandic <mandic00@live.com>
This commit is contained in:
Vladimir Mandic
2025-10-24 10:29:58 -04:00
parent adbff39ca5
commit e4711bcb6c
21 changed files with 144 additions and 89 deletions
+2 -1
View File
@@ -129,6 +129,8 @@ import tqdm as tqdm_lib # pylint: disable=C0411
from tqdm.rich import tqdm # pylint: disable=W0611,C0411
try:
logging.getLogger("diffusers.guiders").setLevel(logging.ERROR)
logging.getLogger("diffusers.loaders.single_file").setLevel(logging.ERROR)
import diffusers.utils.import_utils # pylint: disable=W0611,C0411
diffusers.utils.import_utils._k_diffusion_available = True # pylint: disable=protected-access # monkey-patch since we use k-diffusion from git
diffusers.utils.import_utils._k_diffusion_version = '0.0.12' # pylint: disable=protected-access
@@ -136,7 +138,6 @@ try:
import diffusers # pylint: disable=W0611,C0411
import diffusers.loaders.single_file # pylint: disable=W0611,C0411
diffusers.loaders.single_file.logging.tqdm = partial(tqdm, unit='C')
logging.getLogger("diffusers.loaders.single_file").setLevel(logging.ERROR)
timer.startup.record("diffusers")
except Exception as e:
errors.log.error(f'Loader: diffusers=={diffusers.__version__ if "diffusers" in sys.modules else None} {e}')
+1
View File
@@ -31,6 +31,7 @@ force_models_diffusers = [ # forced always
'h1',
'kandinsky',
'hunyuandit',
'hunyuanimage',
'auraflow',
'lumina2',
'qwen',
+2
View File
@@ -80,6 +80,8 @@ def get_model_type(pipe):
model_type = 'wanai'
elif 'HDM-xut' in name:
model_type = 'hdm'
elif 'HunyuanImage' in name:
model_type = 'hunyuanimage'
else:
model_type = name
return model_type
+5
View File
@@ -26,6 +26,11 @@ def is_compatible(diffusion_pipeline: diffusers.DiffusionPipeline) -> bool:
return compatible
def is_guider(diffusion_pipeline: diffusers.DiffusionPipeline) -> bool:
guider = getattr(diffusion_pipeline, 'guider', None)
return guider is not None
def convert_to_modular(diffusion_pipeline: diffusers.DiffusionPipeline) -> diffusers.ModularPipeline:
modular_pipe = None
try:
+11 -3
View File
@@ -32,16 +32,24 @@ def set_guider(p: processing.StableDiffusionProcessing):
if guidance_name == 'Default':
if hasattr(shared.sd_model, 'default_guider'):
guider_info = shared.sd_model.default_guider
guider_cls = guider_info.type_hint if hasattr(guider_info, 'type_hint') else type(guider_info)
shared.sd_model.update_components(guider=guider_info)
else:
elif hasattr(shared.sd_model, 'get_component_spec'):
guider_info = shared.sd_model.get_component_spec("guider")
guider_cls = guider_info.type_hint if hasattr(guider_info, 'type_hint') else type(guider_info)
shared.sd_model.default_guider = guider_info
guider_cls = guider_info.type_hint
elif hasattr(shared.sd_model, 'guider') and hasattr(shared.sd_model.guider, 'config'):
guider_info = shared.sd_model.guider
guider_cls = type(shared.sd_model.guider)
# shared.sd_model.default_guider = guider_info
else:
guider_info = None
guider_cls = None
if guider_info is not None and guider_cls is not None and guider_info.config is not None:
guider_args = {k: v for k, v in guider_info.config.items() if not k.startswith('_') and v is not None}
else:
guider_args = {}
shared.log.info(f'Guider: name={guidance_name} cls={guider_cls.__name__} args={guider_args}')
shared.log.info(f'Guider: name={guidance_name} cls={guider_cls.__name__ if guider_cls is not None else None} args={guider_args}')
return
if guidance_name == 'None':
shared.sd_model.update_components(guider=None) # breaks the pipeline
+3 -2
View File
@@ -102,8 +102,9 @@ def process_pre(p: processing.StableDiffusionProcessing):
modular_pipe = modular.convert_to_modular(shared.sd_model)
if modular_pipe is not None:
shared.sd_model = modular_pipe
from modules import modular_guiders
modular_guiders.set_guider(p)
if modular.is_guider(shared.sd_model):
from modules import modular_guiders
modular_guiders.set_guider(p)
timer.process.record('pre')
+1
View File
@@ -46,6 +46,7 @@ pipe_switch_task_exclude = [
'StableDiffusionReferencePipeline',
'StableDiffusionXLInstantIDPipeline',
'XOmniPipeline',
'HunyuanImagePipeline',
]
i2i_pipes = [
'LEditsPPPipelineStableDiffusion', 'LEditsPPPipelineStableDiffusionXL',
+1 -1
View File
@@ -14,7 +14,7 @@ from modules.timer import process as process_timer
debug = os.environ.get('SD_MOVE_DEBUG', None) is not None
verbose = os.environ.get('SD_MOVE_VERBOSE', None) is not None
debug_move = log.trace if debug else lambda *args, **kwargs: None
offload_warn = ['sc', 'sd3', 'f1', 'h1', 'hunyuandit', 'auraflow', 'omnigen', 'omnigen2', 'cogview4', 'cosmos', 'chroma', 'x-omni']
offload_warn = ['sc', 'sd3', 'f1', 'h1', 'hunyuandit', 'auraflow', 'omnigen', 'omnigen2', 'cogview4', 'cosmos', 'chroma', 'x-omni', 'hunyuanimage']
offload_post = ['h1']
offload_hook_instance = None
balanced_offload_exclude = ['CogView4Pipeline', 'MeissonicPipeline']
+1 -1
View File
@@ -45,6 +45,7 @@ pipelines = {
'Cosmos': getattr(diffusers, 'Cosmos2TextToImagePipeline', None),
'WanAI': getattr(diffusers, 'WanPipeline', None),
'Qwen': getattr(diffusers, 'QwenImagePipeline', None),
'HunyuanImage': getattr(diffusers, 'HunyuanImagePipeline', None),
# dynamically imported and redefined later
'Meissonic': getattr(diffusers, 'DiffusionPipeline', None),
@@ -55,7 +56,6 @@ pipelines = {
'FLite': getattr(diffusers, 'DiffusionPipeline', None),
'Bria': getattr(diffusers, 'DiffusionPipeline', None),
'hdm': getattr(diffusers, 'DiffusionPipeline', None),
'HunyuanImage': getattr(diffusers, 'DiffusionPipeline', None),
'X-Omni': getattr(diffusers, 'DiffusionPipeline', None),
}