mirror of
https://github.com/vladmandic/automatic
synced 2026-09-20 01:31:13 +02:00
fix ltx model selection
Signed-off-by: Vladimir Mandic <mandic00@live.com>
This commit is contained in:
+4
-3
@@ -108,9 +108,10 @@
|
||||
- reference: fix download for sd15/sdxl reference models
|
||||
- fix checks in init/mask image decode
|
||||
- fix hf token with extra chars
|
||||
- **FramePack** job state tracking
|
||||
- **LTXVideo** with offloading
|
||||
- **WAN** with offloading
|
||||
- **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
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ from modules.ltx.ltx_util import get_bucket, get_frames, load_model, load_upsamp
|
||||
|
||||
|
||||
debug = shared.log.trace if os.environ.get('SD_VIDEO_DEBUG', None) is not None else lambda *args, **kwargs: None
|
||||
engine, model = 'LTX Video', 'LTXVideo 0.9.7 13B'
|
||||
# engine, model = 'LTX Video', 'LTXVideo 0.9.7 13B'
|
||||
upsample_repo_id = "a-r-r-o-w/LTX-Video-0.9.7-Latent-Spatial-Upsampler-diffusers"
|
||||
upsample_pipe = None
|
||||
queue_lock = threading.Lock()
|
||||
@@ -21,6 +21,7 @@ queue_lock = threading.Lock()
|
||||
|
||||
def run_ltx(task_id,
|
||||
_ui_state,
|
||||
model:str,
|
||||
prompt:str,
|
||||
negative:str,
|
||||
styles:list[str],
|
||||
@@ -73,6 +74,7 @@ def run_ltx(task_id,
|
||||
memstats.reset_stats()
|
||||
timer.process.reset()
|
||||
yield None, 'LTX: Loading...'
|
||||
engine = 'LTX Video'
|
||||
load_model(engine, model)
|
||||
|
||||
shared.state.begin('Video', task_id=task_id)
|
||||
|
||||
+1
-13
@@ -10,18 +10,6 @@ from modules.ltx import ltx_process
|
||||
debug = shared.log.trace if os.environ.get('SD_VIDEO_DEBUG', None) is not None else lambda *args, **kwargs: None
|
||||
|
||||
|
||||
def load_model(model_name):
|
||||
if model_name is None or model_name == 'None':
|
||||
shared.log.info('LTX model unload')
|
||||
from modules import sd_models
|
||||
sd_models.unload_model_weights()
|
||||
return
|
||||
else:
|
||||
model_instance = [m for m in models['LTX Video'] if m.name == model_name][0]
|
||||
from modules.video_models import video_load
|
||||
video_load.load_model(model_instance)
|
||||
|
||||
|
||||
def create_ui(prompt, negative, styles, overrides):
|
||||
with gr.Row():
|
||||
with gr.Column(variant='compact', elem_id="ltx_settings", elem_classes=['settings-column'], scale=1):
|
||||
@@ -30,7 +18,6 @@ def create_ui(prompt, negative, styles, overrides):
|
||||
with gr.Row():
|
||||
ltx_models = [m.name for m in models['LTX Video']]
|
||||
model = gr.Dropdown(label='LTX model', choices=ltx_models, value=ltx_models[0])
|
||||
model.change(fn=load_model, inputs=[model], outputs=[], show_progress=True)
|
||||
with gr.Accordion(open=True, label="LTX size", elem_id='ltx_generate_accordion'):
|
||||
with gr.Row():
|
||||
width, height = ui_sections.create_resolution_inputs('ltx', default_width=832, default_height=480)
|
||||
@@ -90,6 +77,7 @@ def create_ui(prompt, negative, styles, overrides):
|
||||
state_inputs = [task_id, ui_state]
|
||||
|
||||
video_inputs = [
|
||||
model,
|
||||
prompt, negative, styles,
|
||||
width, height, frames,
|
||||
steps, sampler_index, seed,
|
||||
|
||||
@@ -4,6 +4,9 @@ from PIL import Image
|
||||
from modules import devices, shared, sd_models, timer, extra_networks
|
||||
|
||||
|
||||
loaded_model: str = None
|
||||
|
||||
|
||||
def get_bucket(size: int):
|
||||
return int(size) - (int(size) % shared.sd_model.vae_temporal_compression_ratio)
|
||||
|
||||
@@ -13,11 +16,15 @@ def get_frames(frames: int):
|
||||
|
||||
|
||||
def load_model(engine: str, model: str):
|
||||
global loaded_model # pylint: disable=global-statement
|
||||
if loaded_model == model:
|
||||
return
|
||||
t0 = time.time()
|
||||
from modules.video_models import models_def, video_load
|
||||
selected: models_def.Model = [m for m in models_def.models[engine] if m.name == model][0]
|
||||
shared.log.info(f'Video load: cls={selected.repo_cls.__name__} repo="{selected.repo}"')
|
||||
shared.log.info(f'Video load: engine="{engine}" selected="{model}" {selected}')
|
||||
video_load.load_model(selected)
|
||||
loaded_model = model
|
||||
t1 = time.time()
|
||||
shared.sd_model = sd_models.apply_balanced_offload(shared.sd_model)
|
||||
t2 = time.time()
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import os
|
||||
import gradio as gr
|
||||
from modules import shared, sd_models, ui_common, ui_sections, ui_symbols, call_queue
|
||||
from modules import shared, sd_models, ui_common, ui_sections, ui_symbols, ui_video_vlm, call_queue
|
||||
from modules.ui_components import ToolButton
|
||||
from modules.video_models import models_def, video_utils
|
||||
from modules.video_models import video_run
|
||||
@@ -112,6 +112,7 @@ def create_ui(prompt, negative, styles, overrides):
|
||||
init_image = gr.Image(elem_id="video_image", show_label=False, type="pil", image_mode="RGB", width=256, height=256)
|
||||
gr.HTML("<br>  Last image")
|
||||
last_image = gr.Image(elem_id="video_last", show_label=False, type="pil", image_mode="RGB", width=256, height=256)
|
||||
vlm_enhance, vlm_model, vlm_system_prompt = ui_video_vlm.create_ui(prompt_element=prompt, image_element=init_image)
|
||||
with gr.Accordion(open=False, label="Output", elem_id='video_output_accordion'):
|
||||
with gr.Row():
|
||||
save_frames = gr.Checkbox(label='Save image frames', value=False, elem_id="video_save_frames")
|
||||
|
||||
Reference in New Issue
Block a user