Commit Graph

9164 Commits

Author SHA1 Message Date
CalamitousFelicitousness 7792b1ab62 fix(video): count generated frames on the first output axis
The shape branch read axis 1, which held the frame count back when animatediff
returned (batch, channels, frames, height, width). Diffusers now returns
(batch, frames, channels, height, width) and the modular video path puts
channels last, so axis 1 reads channels or height and the line printed a
plausible wrong number: a 124 frame 1024x576 generation logged frames=576.
len() is the frame count under both layouts and is what the sibling call site
in process_decode already uses.
2026-08-17 03:41:46 +01:00
Vladimir Mandic 6b499b7d17 cleanup
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-08-16 19:00:55 +02:00
Vladimir Mandic 7172fd3eb2 api auth for ws and api validate allowed paths
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-08-16 18:57:26 +02:00
Vladimir Mandic 8be5be487f Merge pull request #5028 from cjmcgee/fix/rocm-disable-mmap
fix(rocm): add option to load models without mmap
2026-08-16 18:19:38 +02:00
Vladimir Mandic ae8d559b50 swtich to igwn-segments
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-08-16 18:15:59 +02:00
Christopher McGee a9b9de63ab fix(rocm): add option to load models without mmap
On ROCm, host-to-device DMA from mmap'd safetensors pages stalls ~1s per
copy, so weights move to the GPU at ~27 MB/s instead of ~28 GB/s. With
offload enabled this re-copies weights every forward, so generation
appears to hang.

Adds `diffusers_disable_mmap` (Settings > Model Loading), off by default,
which makes diffusers read shards into anonymous memory instead. Costs
peak RAM equal to the model size, so it is opt-in.

SD3.5-large on RX 9070 (gfx1201), same prompt and steps:
  off: no image after 120s
  on:  image in 20s

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-16 11:46:07 -04:00
Vladimir Mandic 5b0a732db3 update codec presets
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-08-16 15:08:26 +02:00
Vladimir Mandic 0963bf54ac reduce group offload logging
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-08-16 12:45:50 +02:00
Vladimir Mandic ce418265e2 add lint full script
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-08-16 12:45:50 +02:00
Vladimir Mandic e3c57af560 pipeline init reordering
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-08-16 12:45:50 +02:00
Vladimir Mandic 76941efc7e strict typechecking
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-08-16 12:45:50 +02:00
Vladimir Mandic f30e6baa67 codespell
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-08-16 12:45:50 +02:00
Vladimir Mandic fbd0020ad4 refactor offloading
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-08-16 12:45:50 +02:00
Dity0 51a598bfc3 Enable smooth_k by default 2026-08-16 12:42:13 +03:00
Vladimir Mandic 84eda5b9cf Merge branch 'dev' into fix/group-offload-roles 2026-08-16 09:06:01 +02:00
Vladimir Mandic cd25a5296a video loader use generic methods and auth
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-08-16 09:02:40 +02:00
CalamitousFelicitousness 79ea00257d fix(framepack): route placement through the offload dispatcher
The loader applied balanced offload directly, which places nothing when the
offload mode is not balanced, leaving every component on cpu where the load
parked it. The dispatcher places them under whichever mode is configured, and
the vae seams pair the balanced call with an on-demand sweep so the vae returns
to cpu once its outputs are materialized.
2026-08-15 21:30:52 +01:00
Vladimir Mandic 12bf006b00 improve state management
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-08-15 19:21:51 +02:00
Vladimir Mandic a6a6fb2aaa add minimax interpolation, video shift, audio shift
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-08-15 18:35:17 +02:00
Vladimir Mandic 87824ad0a3 update video codecs
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-08-15 14:23:18 +02:00
CalamitousFelicitousness 09eeff30c7 refactor(settings): reorganize the offload settings by mode
The offload section interleaved shared and mode-specific options. The
page now reads top down: general options, an Offload Overrides section
holding the exclusions shared by balanced and group offload, then one
tuning section per mode. Use torch streams becomes Prefetch with streams
and Record torch streams becomes Overlap stream transfers, the section
headers carry hints, and the hints reflect live behavior, including
dropping the model-reload badge from options that apply on change.
2026-08-14 23:59:55 +01:00
CalamitousFelicitousness 0d18bd9abe fix(offload): drive group offload from the offload settings
Group offload ignored the offload exclusion settings and its options took
effect only at the next model load. Components named by the never-offload
list or the model-type exclusion now stay resident on the accelerator,
with matching shared between the balanced hook and the group roles. The
offload options re-place loaded components when changed: group modes
re-run the placement pass, and balanced mode rebuilds its hook, which
snapshots the exclusion lists at construction.
2026-08-14 23:59:27 +01:00
CalamitousFelicitousness 15393b85ff fix(offload): scope force offload to managed components
The force sweep enumerated pipeline components and moved every module to
cpu, including components with no hook to bring them back. It now moves
only modules stamped for on-demand placement, walks the pipe variants
through the shared enumeration instead of the components property that can
raise, keeps going past a component that fails to move, and collects
garbage once per sweep rather than per module.
2026-08-14 23:58:57 +01:00
CalamitousFelicitousness 1cbc313fa5 fix(offload): derive group offload roles structurally and unify the dispatch
Group offload placed components by name matching, which sent every modular
text encoder through a second apply with the denoiser profile and missed
vae-class components not named vae. Placement now derives from the component:
an encode or decode entry bridge and an upstream group-offload opt-out both
take whole-module on-demand placement, an undecorated encode or decode entry
stays resident with a warning, denoiser slot names take the per-step profile,
and everything else takes the leaf profile. One pass serves classic and
modular pipelines, enumerating modular components from their specs, with
hooks landing on text encoder wrappers rather than their inner models. A
signature sentinel marks a component mid-apply; a failed apply is torn down
on the next pass. The pass logs the placement of every component.
2026-08-14 23:58:24 +01:00
Vladimir Mandic 807a9be6b5 del audio after processing
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-08-14 16:03:45 +02:00
Vladimir Mandic b0649e0ec1 group offloading changes
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-08-14 15:59:51 +02:00
Vladimir Mandic ba62df4851 cleanup
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-08-14 13:13:09 +02:00
Vladimir Mandic f8c86d0d57 change video defaults
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-08-14 12:16:22 +02:00
Vladimir Mandic 80b072c426 Merge branch 'dev' into feat/ltx-2.5 2026-08-14 10:51:44 +02:00
Vladimir Mandic ce69dd4f17 image metadata handle correct image index
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-08-14 10:44:56 +02:00
Vladimir Mandic 0ac89385a0 timers reporting
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-08-14 09:18:24 +02:00
CalamitousFelicitousness f6607e8922 fix(hub): install the token header hijack at startup
Implicit tokens are disabled process-wide, so the hijack that re-attaches the
token explicitly is what keeps gated repos reachable. It was installed by the
checkpoint loader and the caption paths, so loading a video model into a fresh
session sent unauthenticated requests and gated repos answered 401.
2026-08-14 03:39:01 +01:00
CalamitousFelicitousness 5cb6efea34 fix(ltx): apply the 2.5 stage-2 lora to the text connectors
The stage 2 LoRA stores its connector deltas as
diffusion_model.{video,audio}_embeddings_connector, but
LTX2LoraLoaderMixin.lora_state_dict recognizes connectors only under the 2.3
text_embedding_projection prefix. All 3544 keys are routed into the transformer
namespace and peft drops the 224 that land nowhere, leaving refine with a
transformer-only adapter.

Wrapping lora_state_dict moves those keys onto the connectors component using
the rename table from the convert_ltx2_to_diffusers script. The wrapper is inert
once no misrouted keys appear, so it needs no version check.
2026-08-14 03:39:01 +01:00
CalamitousFelicitousness 5814d5c4b3 feat(ltx): add the ltx-2.5 model family
2.5 reuses the LTX-2 pipeline classes, so it is described through the
capability table: Gemma 4 text encoder, cross-timestep conditioning, and the
upsampler and stage 2 LoRA that now ship inside the model repo. The repo
carries the distilled scheduler config, so Dev rows restore the terminal
shift, and the Dev transformer sits in transformer_full.

Distilled rows stop forcing dynamic shifting on, which remapped their sigma
schedule. Auto duration hands the clip length to the duration head.
2026-08-14 03:39:01 +01:00
CalamitousFelicitousness 0d1882eca4 fix(video): keep text encoder dedup out of the registry rows
The shared repo was written back onto the registry row, a module-level
singleton, so turning the setting off left the row pointing at the shared copy
for the rest of the session. It is chosen into locals instead.
2026-08-14 03:39:01 +01:00
CalamitousFelicitousness f01e752b06 fix(video): take the audio rate from the loaded vocoder
Pipelines rarely report a sample rate, so the save path fell back to 24000.
LTX-2.3 and 2.5 run at 48k, and muxing at half the rate drops the track an
octave. The rate now comes from the vocoder, as the LTX tab already did.
2026-08-14 03:39:01 +01:00
CalamitousFelicitousness 780495ff2e feat(video): allow a transformer folder to load into another argument
The subfolder name doubles as the pipeline argument, so a repo shipping a
second transformer beside the default one had no way to load it: the argument
was dropped and the default weights stayed. dit_kwarg names the argument when
it differs from the folder.
2026-08-14 03:39:01 +01:00
CalamitousFelicitousness 45fc1a0243 fix(ltx): scope cached upsamplers and scheduler overrides to the run
The sampler shift override looked for flow_shift, which only UniPC-style
schedulers declare, so it never reached the flow-match schedulers 2.x uses.
Config keys are now restored only when the run wrote them, and a cached
upsampler is rebuilt once its repo or the model's VAE changes.
2026-08-14 03:39:01 +01:00
CalamitousFelicitousness 5735b8f47d fix(ltx): pin guidance and cross-timestep on every 2.x call path
Some paths left both to pipeline defaults, which track the current upstream
model: distilled picked up guidance it already bakes in, and 2.0 could land on
2.3's joint-sigma path.
2026-08-14 03:39:00 +01:00
CalamitousFelicitousness 5c495c29cd fix(video): assign the loaded modular pipeline to the model slot
The modular branch returned the pipe instead of assigning it, so the video
tab and the API failed with "model not loaded" and the whole post-load tail
was skipped along with it.
2026-08-14 01:27:53 +01:00
CalamitousFelicitousness ca7f2cc01f fix(video): hide minimax from the generic engine dropdown 2026-08-14 01:15:40 +01:00
CalamitousFelicitousness 9d81ec0d54 docs(video): correct the shared encoder note in the modular preload 2026-08-14 01:14:31 +01:00
CalamitousFelicitousness c04fe7c9db fix(video): exclude dropdown separators from model resolution
The registry helpers filtered only the 'None' placeholder, so the eleven
LTX separator rows resolved as models and a POST naming one reached
load_model with a null repo. is_model() now covers both sentinel kinds.
2026-08-14 01:14:27 +01:00
Vladimir Mandic e72dee3fe1 Merge pull request #5023 from vladmandic/fix/video-ignore-patterns
fix(video): honor ignore patterns when fetching a pipeline repo
2026-08-13 21:39:06 +02:00
Vladimir Mandic a2b2f25f27 lint
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-08-13 21:32:10 +02:00
Vladimir Mandic a153ee6a17 cleanup
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-08-13 20:38:16 +02:00
Vladimir Mandic 181065f069 minimax image and reference
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-08-13 20:15:32 +02:00
CalamitousFelicitousness 42c9038146 fix(video): honor ignore patterns when fetching a pipeline repo
DiffusionPipeline.download derives ignore_patterns from the passed components and
never reads the caller's, so the kwarg set in load_override was inert and diffusers
logged it as an unexpected keyword. The unsharded connectors duplicate it was meant
to skip was fetched on every LTX-2.3 mirror load.

Resolve the repo to a snapshot built from those patterns and hand from_pretrained
the folder instead of the id. That skips its download path, so the passed component
folders it would have pruned are pruned here instead. The connectors override drops
its own copy of the kwarg, which ModelMixin never read either.
2026-08-13 17:37:18 +01:00
Vladimir Mandic ad6f3d3e11 minimax ui
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-08-13 15:33:47 +02:00
Vladimir Mandic 0ddd0f7091 minimax-h3 i2i
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2026-08-13 11:23:57 +02:00