From 1137297e3ab3061408da78db8784d331d5ab93a4 Mon Sep 17 00:00:00 2001 From: Vladimir Mandic Date: Sat, 29 Mar 2025 13:43:53 -0400 Subject: [PATCH] fix latte1-t2v Signed-off-by: Vladimir Mandic --- TODO.md | 2 +- installer.py | 2 +- modules/ui_video.py | 14 ++++++++++---- modules/video_models/video_overrides.py | 8 +++++--- 4 files changed, 17 insertions(+), 9 deletions(-) diff --git a/TODO.md b/TODO.md index 3674fe5ef..58dae8a02 100644 --- a/TODO.md +++ b/TODO.md @@ -7,9 +7,9 @@ Main ToDo list can be found at [GitHub projects](https://github.com/users/vladma ### Issues/Limitations - Video: Hunyuan Video I2V: requires `transformers==4.47.1` -- Video: Latte 1 T2V: dtype mismatch - Video: CogVideoX 1.5 5B T2V/I2V: all-gray output - Video: Allegro T2V: all-gray output +- Video: Latte1 T2V: garbage output ## Future Candidates diff --git a/installer.py b/installer.py index d6308f519..4f384f2b8 100644 --- a/installer.py +++ b/installer.py @@ -538,7 +538,7 @@ def check_diffusers(): t_start = time.time() if args.skip_all or args.skip_git or args.experimental: return - sha = '617c208bb4cc68fe4518164fee7cbdf5aa44ff78' # diffusers commit hash + sha = '75d7e5cc459f66a53652445d5b281054b297680d' # diffusers commit hash pkg = pkg_resources.working_set.by_key.get('diffusers', None) minor = int(pkg.version.split('.')[1] if pkg is not None else 0) cur = opts.get('diffusers_version', '') if minor > 0 else '' diff --git a/modules/ui_video.py b/modules/ui_video.py index d67bdc5eb..b53810d4b 100644 --- a/modules/ui_video.py +++ b/modules/ui_video.py @@ -14,6 +14,14 @@ def engine_change(engine): return gr.update(choices=found, value=found[0] if len(found) > 0 else None) +def get_selected(engine, model): + found = [model.name for model in models_def.models.get(engine, [])] + if len(models_def.models[engine]) > 0 and len(found) > 0: + selected = [m for m in models_def.models[engine] if m.name == model][0] + return selected + return None + + def model_change(engine, model): debug(f'Video change: engine="{engine}" model="{model}"') found = [model.name for model in models_def.models.get(engine, [])] @@ -23,8 +31,7 @@ def model_change(engine, model): def model_load(engine, model): debug(f'Video load: engine="{engine}" model="{model}"') - found = [model.name for model in models_def.models.get(engine, [])] - selected = [m for m in models_def.models[engine] if m.name == model][0] if len(found) > 0 else None + selected = get_selected(engine, model) yield f'Video model loading: {selected.name}' if selected: if 'None' in selected.name: @@ -43,8 +50,7 @@ def model_load(engine, model): def run_video(*args): engine, model = args[2], args[3] debug(f'Video run: engine="{engine}" model="{model}"') - found = [model.name for model in models_def.models.get(engine, [])] - selected = [m for m in models_def.models[engine] if m.name == model][0] if len(found) > 0 else None + selected = get_selected(engine, model) if not selected or engine is None or model is None or engine == 'None' or model == 'None': return video_utils.queue_err('model not selected') debug(f'Video run: {str(selected)}') diff --git a/modules/video_models/video_overrides.py b/modules/video_models/video_overrides.py index 6a6619ebc..4168a1441 100644 --- a/modules/video_models/video_overrides.py +++ b/modules/video_models/video_overrides.py @@ -27,17 +27,19 @@ def set_overrides(p: processing.StableDiffusionProcessingVideo, selected: Model) shared.sd_model.vae.enable_tiling() # Latte if selected.name == 'Latte 1 T2V': - p.task_args['enable_temporal_attentions'] = False - p.task_args['video_length'] = p.frames + p.task_args['enable_temporal_attentions'] = True + p.task_args['video_length'] = 16 * (max(p.frames // 16, 1)) # LTX if cls == 'LTXImageToVideoPipeline' or cls == 'LTXConditionPipeline': p.task_args['generator'] = None if cls == 'LTXConditionPipeline': p.task_args['strength'] = p.denoising_strength + # WAN if 'Wan' in cls: p.task_args['width'] = 16 * (p.width // 16) p.task_args['height'] = 16 * (p.height // 16) - p.frames = 4 * (p.frames // 4) + 1 + p.frames = 4 * (max(p.frames // 4, 1)) + 1 + # LTX if 'LTX' in cls: p.task_args['width'] = 32 * (p.width // 32) p.task_args['height'] = 32 * (p.height // 32)