From 7dad90b385cb00aff983626dbf3973d8ddaa08d2 Mon Sep 17 00:00:00 2001 From: Vladimir Mandic Date: Sun, 5 Oct 2025 12:15:15 -0400 Subject: [PATCH] video use shared t5 Signed-off-by: Vladimir Mandic --- CHANGELOG.md | 10 ++++++---- modules/video_models/video_load.py | 15 +++++++++++++-- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 105788420..ddd8b3a5d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -87,6 +87,12 @@ can be combined with sdp, enabling may improve stability when used on iGPU or shared memory systems - **nunchaku** update to `1.0.1` and enhance installer - **xyz-grid** add guidance section +- **Video** + - use shared T5 text encoder for video models when possible + - **FramePack** add job state tracking + - **LTXVideo** fix model selection in ltx tab + - **LTXVideo** fix run with offloading + - **WAN** fix run with offloading - **Experimental** - `new` command line flag enables new `pydantic` and `albumentations` packages - **modular pipelines**: enable in *settings -> model options* @@ -108,10 +114,6 @@ - reference: fix download for sd15/sdxl reference models - fix checks in init/mask image decode - fix hf token with extra chars - - **FramePack** add job state tracking - - **LTXVideo** fix model selection in ltx tab - - **LTXVideo** fix run with offloading - - **WAN** fix run with offloading ## Update for 2025-09-15 diff --git a/modules/video_models/video_load.py b/modules/video_models/video_load.py index 874df0231..51a17d2ce 100644 --- a/modules/video_models/video_load.py +++ b/modules/video_models/video_load.py @@ -25,6 +25,10 @@ def load_model(selected: models_def.Model): # text encoder try: load_args, quant_args = model_quant.get_dit_args({}, module='TE', device_map=True) + if selected.te_cls.__name__ == 'T5EncoderModel' and shared.opts.te_shared_t5: + selected.te = 'Disty0/t5-xxl' + selected.te_folder = '' + selected.te_revision = None shared.log.debug(f'Video load: module=te repo="{selected.te or selected.repo}" folder="{selected.te_folder}" cls={selected.te_cls.__name__} quant={model_quant.get_quant_type(quant_args)}') kwargs["text_encoder"] = selected.te_cls.from_pretrained( pretrained_model_name_or_path=selected.te or selected.repo, @@ -84,17 +88,23 @@ def load_model(selected: models_def.Model): shared.sd_model.sd_model_hash = None sd_models.set_diffuser_options(shared.sd_model, offload=False) + decode, text, image, slicing, tiling = False, False, False, False, False if selected.vae_hijack and hasattr(shared.sd_model.vae, 'decode'): sd_hijack_vae.init_hijack(shared.sd_model) + decode = True if selected.te_hijack and hasattr(shared.sd_model, 'encode_prompt'): sd_hijack_te.init_hijack(shared.sd_model) + text = True if selected.image_hijack and hasattr(shared.sd_model, 'encode_image'): shared.sd_model.orig_encode_image = shared.sd_model.encode_image shared.sd_model.encode_image = video_utils.hijack_encode_image - if hasattr(shared.sd_model.vae, 'enable_slicing'): + image = True + if hasattr(shared.sd_model, 'vae') and hasattr(shared.sd_model.vae, 'enable_slicing'): shared.sd_model.vae.enable_slicing() - if hasattr(shared.sd_model.vae, 'enable_tiling'): + slicing = True + if hasattr(shared.sd_model, 'vae') and hasattr(shared.sd_model.vae, 'enable_tiling'): shared.sd_model.vae.enable_tiling() + tiling = True if hasattr(shared.sd_model, "set_progress_bar_config"): shared.sd_model.set_progress_bar_config(bar_format='Progress {rate_fmt}{postfix} {bar} {percentage:3.0f}% {n_fmt}/{total_fmt} {elapsed} {remaining} ' + '\x1b[38;5;71m', ncols=80, colour='#327fba') @@ -104,5 +114,6 @@ def load_model(selected: models_def.Model): loaded_model = selected.name msg = f'Video load: cls={shared.sd_model.__class__.__name__} model="{selected.name}" time={t1-t0:.2f}' shared.log.info(msg) + shared.log.debug(f'Video hijacks: decode={decode} text={text} image={image} slicing={slicing} tiling={tiling}') shared.state.end(jobid) return msg