mirror of
https://github.com/vladmandic/automatic
synced 2026-09-19 17:24:32 +02:00
add hunyuanimage-2.1
Signed-off-by: Vladimir Mandic <mandic00@live.com>
This commit is contained in:
+2
-1
@@ -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}')
|
||||
|
||||
@@ -31,6 +31,7 @@ force_models_diffusers = [ # forced always
|
||||
'h1',
|
||||
'kandinsky',
|
||||
'hunyuandit',
|
||||
'hunyuanimage',
|
||||
'auraflow',
|
||||
'lumina2',
|
||||
'qwen',
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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')
|
||||
|
||||
|
||||
@@ -46,6 +46,7 @@ pipe_switch_task_exclude = [
|
||||
'StableDiffusionReferencePipeline',
|
||||
'StableDiffusionXLInstantIDPipeline',
|
||||
'XOmniPipeline',
|
||||
'HunyuanImagePipeline',
|
||||
]
|
||||
i2i_pipes = [
|
||||
'LEditsPPPipelineStableDiffusion', 'LEditsPPPipelineStableDiffusionXL',
|
||||
|
||||
@@ -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']
|
||||
|
||||
@@ -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),
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user