mirror of
https://github.com/vladmandic/automatic
synced 2026-09-19 01:04:32 +02:00
feat(video): add minimax h3 joint video and audio model
First natively modular model: the pipeline is driven directly through ModularPipeline, with components fetched per workflow (fl2va covers text and first/last-frame conditioning). - per-generation overrides snap the canvas to /32, align frames to the 17n+5 grid and duration window, and keep the bespoke scheduler pair - group offload for modular pipelines applied per component in sd_offload; re-application is a guarded no-op - audio checkbox pops the audio decode block so decode and muxing are skipped - frames=1 renders a single still image: the duration floor lifts per instance and sub-floor latents pad at the vae decoder - progress and interrupt handling via a transformer forward pre-hook - vae scale factor override, tuple-safe patch size
This commit is contained in:
@@ -172,7 +172,7 @@ def task_specific_kwargs(p, model):
|
||||
def get_params(model):
|
||||
if hasattr(model, 'blocks') and hasattr(model.blocks, 'inputs'): # modular pipeline
|
||||
possible = [input_param.name for input_param in model.blocks.inputs]
|
||||
return possible
|
||||
return possible + ['output'] # __call__ param selecting which state values to return, not a block input
|
||||
else:
|
||||
signature = inspect.signature(type(model).__call__, follow_wrapped=True)
|
||||
possible = list(signature.parameters)
|
||||
@@ -325,6 +325,12 @@ def set_pipeline_args(p, model, prompts:list, negative_prompts:list, prompts_2:l
|
||||
args['negative_prompt'] = args['negative_prompt'][0] if len(args['negative_prompt']) > 0 else ''
|
||||
if isinstance(args['generator'], list) and len(args['generator']) > 0:
|
||||
args['generator'] = args['generator'][0]
|
||||
if 'MiniMaxH3' in model.__class__.__name__:
|
||||
if isinstance(args.get('prompt', None), list): # packs one request into one sequence, str only
|
||||
args['prompt'] = args['prompt'][0] if len(args['prompt']) > 0 else ''
|
||||
args.pop('negative_prompt', None) # guidance-distilled, no negative prompt
|
||||
if isinstance(args.get('generator', None), list) and len(args['generator']) > 0:
|
||||
args['generator'] = args['generator'][0] # >1-element list breaks the audio noise draw
|
||||
|
||||
# set callbacks
|
||||
if 'prior_callback_steps' in possible: # Wuerstchen / Cascade
|
||||
|
||||
Reference in New Issue
Block a user