Skip to content

fix(model-manager): stop filing VAEs without a decoder.conv_in weight as SD1 - #10029

Merged
joshistoast merged 5 commits into
invoke-ai:mainfrom
stanleys12:osc/stop-filing-non-2d-autoencoderkl-vae-fil-6454
Nov 5, 2026
Merged

joshistoast merged 5 commits into
invoke-ai:mainfrom
stanleys12:osc/stop-filing-non-2d-autoencoderkl-vae-fil-6454

Conversation

@stanleys12

@stanleys12 stanleys12 commented Oct 25, 2026 •

Copy link
Copy Markdown
Contributor

Summary

A standalone LTX-2.5 video or audio VAE file (for example ltx-2.5-22b_video_vae_bf16.safetensors) got imported as an SD1.x VAE. Its causal convs store weights as decoder.conv_in.conv.weight, so the probe couldn't read a latent width and fell back to the filename. vae maps to SD1 there.

The checkpoint VAE probe now rejects state dicts without a 2-D decoder.conv_in.weight, so those files stay Unknown. I also removed the name-only fallback in _get_base_or_raise since nothing can reach it anymore.

Related Issues / Discussions

Related to #9777
Related to #9780

QA Instructions

  • uv run --no-sync pytest tests/backend/model_manager/configs -n 4 --ignore tests/backend/model_manager/configs/test_ministral3_encoder_config.py: 894 passed, 1 skipped.
  • uv run --no-sync pytest tests/backend/model_manager/configs/test_ministral3_encoder_config.py: 11 passed. I ran it on its own because its big temp safetensors files filled my nearly full disk under -n 4 (ENOSPC).
  • uv run --no-sync pytest tests/backend/model_manager/configs/test_vae_base_identification.py -k decoder_conv_in with vae.py from main: 2 failed (both cases resolve to SD1). They pass with the fix.
  • ruff check and ruff format --check are clean on vae.py and test_vae_base_identification.py.
  • Not run locally: tests/model_identification (no LFS fixtures here).

Review

No material findings.

Compatibility / Rollout

No migration. Models already registered as SD1 VAEs from earlier imports keep their entry until removed and re-scanned. No API or persisted-schema changes.

Checklist

  • The PR has a short but descriptive title, suitable for a changelog
  • Meaningful regression coverage added / updated where needed; obsolete tests/code removed
  • Persisted-state and API changes include required migrations / compatibility validation
  • Relevant performance/efficiency opportunities considered; material claims have evidence
  • Material review findings resolved and relevant checks rerun
  • Documentation added / updated (if applicable)

AI use

I drafted this with an AI coding assistant and checked it by running the tests listed above.

🤖 Generated with Claude Code


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.

… as SD1

The checkpoint VAE probe now refuses files whose latent width cannot be read
(LTX-2.5 video/audio VAEs), instead of guessing SD1 from a "vae" file name.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions github-actions Bot added python PRs that change python files backend PRs that change backend files python-tests PRs that change python tests docs PRs that change docs labels Oct 25, 2026
@lstein lstein assigned lstein and Pfannkuchensack and unassigned lstein Oct 27, 2026
@lstein lstein added the 7.0.0 label Oct 29, 2026
@lstein lstein moved this to 7.0.0: UX overhaul in Invoke - Community Roadmap Oct 29, 2026
@joshistoast
joshistoast self-requested a review November 3, 2026 04:29
@joshistoast
joshistoast enabled auto-merge (squash) November 3, 2026 04:32
@Pfannkuchensack
Pfannkuchensack self-requested a review November 3, 2026 14:03
@joshistoast
joshistoast merged commit 43f6bdd into invoke-ai:main Nov 5, 2026
20 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

7.0.0 backend PRs that change backend files docs PRs that change docs python PRs that change python files python-tests PRs that change python tests

Projects

Status: 7.0.0: UX overhaul

Development

Successfully merging this pull request may close these issues.

4 participants