diff --git a/docs/src/content/docs/Users Guide/03.Models/02.model-families.mdx b/docs/src/content/docs/Users Guide/03.Models/02.model-families.mdx index 5656dfa8b69..757cd7a3545 100644 --- a/docs/src/content/docs/Users Guide/03.Models/02.model-families.mdx +++ b/docs/src/content/docs/Users Guide/03.Models/02.model-families.mdx @@ -44,15 +44,15 @@ page lists the builds it supports. InvokeAI recognizes the format from the file's contents, so you install them like any other model. Which format loads for which model is listed in [Model Format Support](/users-guide/models/model-format-support/). -- **GGUF** (`.gguf`, llama.cpp quantization such as Q4_K or Q8_0): weights stay packed in memory and are unpacked layer by layer during generation. Supported for the FLUX.1, FLUX.2, Z-Image, Krea-2, Qwen-Image, Ideogram 4, ERNIE-Image and Wan transformers, and for the T5, Qwen3, Qwen3-VL, Mistral and Gemma 2 text encoders. ComfyUI-GGUF's `Q8_CR` files, which store int8 (`int8_convrot`) layers inside a `.gguf`, load for the Krea-2 transformer; for other models, and for ComfyUI-GGUF's `Q4_CR`, installation is refused with a message saying so. +- **GGUF** (`.gguf`, llama.cpp quantization such as Q4_K or Q8_0): weights stay packed in memory and are unpacked layer by layer during generation. Supported for the FLUX.1, FLUX.2, Z-Image, Krea-2, Qwen-Image, Qwen-Image-2.1, Ideogram 4, ERNIE-Image and Wan transformers, and for the T5, Qwen3, Qwen3-VL, Mistral and Gemma 2 text encoders. ComfyUI-GGUF's `Q8_CR` files, which store int8 (`int8_convrot`) layers inside a `.gguf`, load for the Krea-2 transformer; for other models, and for ComfyUI-GGUF's `Q4_CR`, installation is refused with a message saying so. - **NF4** (bitsandbytes): 4-bit, CUDA only. - **SDNQ**: see [SDNQ Quantization](/configuration/optimization/sdnq-quantization/). -- **int8** (`int8_convrot`, from ComfyUI repackages): the weights stay int8 in memory on every device, including Apple Silicon, and need no setting to turn on. Supported for FLUX.1, FLUX.2 Klein, Z-Image, Krea-2, Ideogram 4, MiniMax H3, LTX-2 and the PiD decoders, and for the Qwen3 8B, Qwen3-VL and LTX-2 Gemma encoders. -- **nvfp4** (4-bit, in ComfyUI's checkpoint format, such as Comfy-Org's builds; other nvfp4 exports such as AWQ are refused): the weights stay packed in memory and are unpacked per layer, so no special GPU is needed. Supported for the Z-Image, Krea-2, Qwen-Image and LTX-2 transformers and for the Qwen3, Qwen2.5-VL and FLUX.2 Mistral encoders; the Ideogram 4 nvfp4 files are refused at install. +- **int8** (`int8_convrot`, from ComfyUI repackages): the weights stay int8 in memory on every device, including Apple Silicon, and need no setting to turn on. Supported for FLUX.1, FLUX.2 Klein, Z-Image, Krea-2, Qwen-Image-2.1, Ideogram 4, MiniMax H3, LTX-2 and the PiD decoders, and for the Qwen3 8B, Qwen3-VL and LTX-2 Gemma encoders. +- **nvfp4** (4-bit, in ComfyUI's checkpoint format, such as Comfy-Org's builds; other nvfp4 exports such as AWQ are refused): the weights stay packed in memory and are unpacked per layer, so no special GPU is needed. Supported for the Z-Image, Krea-2, Qwen-Image and LTX-2 transformers and for the Qwen3, Qwen2.5-VL and FLUX.2 Mistral encoders; the Ideogram 4 and Qwen-Image-2.1 nvfp4 files are refused at install. - **fp8** (plain or `fp8_scaled`): InvokeAI keeps the weights in fp8 when [FP8 Storage](/configuration/optimization/fp8-storage/) is on, which installation does for you, or when `fp8_compute` is enabled. - **MXFP8** (fp8 with one scale per block of 32 weights): loaded by unpacking to BF16. Turn FP8 Storage off for these; see the [FP8 Storage caution](/configuration/optimization/fp8-storage/). -Text encoders for Qwen-Image, Z-Image, Krea-2 and Ideogram 4 bring their tokenizer and configuration with InvokeAI, so single-file and GGUF encoders load without network access. +Text encoders for Qwen-Image, Z-Image, Krea-2, Ideogram 4 and Qwen-Image-2.1 bring their tokenizer and configuration with InvokeAI, so single-file and GGUF encoders load without network access. ### Converting to Diffusers @@ -78,7 +78,8 @@ yourself. They appear as separate models in the Model Manager, and generation panels show slots for them (for example **VAE**, **Text encoder** or **Model components**) when the selected model needs them. Several families share components: FLUX.2 and Ideogram 4 use -the same VAE, for example, so one download can serve both. +the same VAE, for example, and Ideogram 4 and Qwen-Image-2.1 the same Qwen3-VL 8B +encoder, so one download can serve both. | Component | What it does | |---|---| @@ -122,6 +123,7 @@ faster generation. | **Z-Image** | Images | 6B model in a fast, few-step Turbo variant and a Base variant. Understands English and Chinese prompts, with ControlNets. | Apache 2.0 | [Z-Image](/users-guide/models/local-models/z-image/) | | **ERNIE-Image** | Images | Baidu's 8B text-to-image model, in standard and distilled Turbo variants. | Apache 2.0 | [ERNIE-Image](/users-guide/models/local-models/ernie-image/) | | **Qwen Image** | Images | Text-to-image (2512) and instruction-based image editing (Edit 2511), with fast Lightning variants. | Apache 2.0 | [Qwen Image](/users-guide/models/local-models/qwen-image/) | +| **Qwen-Image-2.1** | Images | 7B text-to-image model with strong text rendering and transparent (RGBA) output, in a base and an 8-step Turbo variant. | Non-commercial | [Qwen-Image-2.1](/users-guide/models/local-models/qwen-image-2-1/) | | **Krea-2** | Images | 12B model in fast Turbo and undistilled Raw variants, with training-free style reference. | Community, free under $1M revenue | [Krea-2](/users-guide/models/local-models/krea-2/) | | **Ideogram 4** | Images | Structured prompts that place described elements in regions of the image. | Non-commercial | [Ideogram 4](/users-guide/models/local-models/ideogram4/) | | **Anima** | Images | Compact 2B anime-focused model, with ControlNet-LLLite adapters for inpainting and sketch guidance. | Non-commercial | [Anima](/users-guide/models/local-models/anima/) | diff --git a/docs/src/content/docs/Users Guide/03.Models/03.model-format-support.mdx b/docs/src/content/docs/Users Guide/03.Models/03.model-format-support.mdx index 9179c253359..7279c395b1a 100644 --- a/docs/src/content/docs/Users Guide/03.Models/03.model-format-support.mdx +++ b/docs/src/content/docs/Users Guide/03.Models/03.model-format-support.mdx @@ -1,7 +1,7 @@ --- title: Model Format Support description: Which file formats and quantizations InvokeAI loads for every model family, text encoder, VAE and adapter. -lastUpdated: 2026-10-11 +lastUpdated: 2026-10-16 sidebar: order: 3 --- @@ -34,6 +34,7 @@ Ministral 3B encoder. Others are recognized by their layer names and fail, or mi | [CogView4](/users-guide/models/local-models/cogview4/) | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | | [Z-Image](/users-guide/models/local-models/z-image/) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✗ | | [Qwen-Image](/users-guide/models/local-models/qwen-image/) | ✓ | ✓ | ✓ | ✗ | ✓ | ✓ | ✓ | ✗ | ✗ | +| [Qwen-Image-2.1](/users-guide/models/local-models/qwen-image-2-1/) | ✓ | ✓ | ✓ | ✓ | R | – | ✓ | ✗ | ✗ | | [Anima](/users-guide/models/local-models/anima/) | – | ✓ | ✓ | ✓ | ✗ | ✓ | ✗ | ✗ | ✗ | | [Krea-2](/users-guide/models/local-models/krea-2/) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✗ | ✗ | | [Ideogram 4](/users-guide/models/local-models/ideogram4/) | ✓ | ✓ | ✓ | ✓ | R | ✓ | ✓ | ✗ | inside the Diffusers folder | @@ -43,7 +44,8 @@ Ministral 3B encoder. Others are recognized by their layer names and fail, or mi | [MiniMax H3](/users-guide/video-generation/minimax-h3/) | ✓ | ✓ | L | ✓ | L | ✗ | ✗ | ✗ | ✗ | - **int8** means ComfyUI's `int8_convrot` (`int8_tensorwise`) builds. **nvfp4** and **fp8 scaled** mean ComfyUI's - checkpoint layouts; other exports of the same schemes (AWQ, ModelOpt) fail when the model loads. + checkpoint layouts; other exports of the same schemes (AWQ, ModelOpt) fail when the model loads. For Qwen-Image-2.1, + torchao exports such as unsloth's FP8 build are refused at install. - **GGUF** covers the llama.cpp types (Q4_0 through Q8_0, the K-quants, BF16). ComfyUI-GGUF's `Q8_CR` files load for Krea-2 only; for every other model with GGUF support the install fails. - LTX-2.0/2.3 files fail to install with a message. Wan 2.1, Wan Animate, S2V, Fun-Control and VACE single files and @@ -57,7 +59,7 @@ Ministral 3B encoder. Others are recognized by their layer names and fail, or mi | T5-XXL | FLUX.1, SD 3 | ✓ | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ (and bitsandbytes int8) | | CLIP-L / CLIP-G | SD, SDXL, FLUX.1, SD 3 | ✓ | ✓ | R | R | – | ✗ | CLIP-L inside a FLUX.1 SDNQ pipeline | | Qwen3 0.6B / 4B / 8B | Z-Image, FLUX.2 Klein, Anima | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | -| Qwen3-VL 4B / 8B | Krea-2, Ideogram 4 | ✓ | ✓ | ✓ | ✓ | ✗ | ✓ | ✗ | +| Qwen3-VL 4B / 8B | Krea-2, Ideogram 4, Qwen-Image-2.1 (8B) | ✓ | ✓ | ✓ | ✓ | ✗ | ✓ | ✗ | | Qwen3-VL 32B (truncated) | MiniMax H3 | in the Diffusers folder | ✓ | L | ✓ | L | ✗ | ✗ | | Qwen3.5 4B | Anima 3.8B | ✗ | ✓ | L | L | L | ✗ | ✗ | | Qwen2.5-VL | Qwen-Image | ✓ | ✓ | ✓ | L | ✓ | ✗ | ✗ | @@ -85,10 +87,11 @@ not recognized. | SD 2.x | ✓ | ✗ | SD 2.x | | Wan (16 and 48 channels) | ✓ | ✓ | Wan 2.2; the Wan 2.1 VAE also by Anima | | Qwen-Image | ✓ | ✗ | Qwen-Image, Krea-2 | +| Qwen-Image-2.1 | ✓ | ✓ | Qwen-Image-2.1 | | CogView4, LTX-2, MiniMax H3 | – | bundled | taken from the model's own folder | Quantized VAE files (fp8, int8, nvfp4) are not supported; use the unquantized VAE. The SD 3, FLUX.2, Qwen-Image, -Wan, Anima and Ideogram 4 VAEs fail with a message when they load. The FLUX.1 and SD 1.x / SDXL single-file VAEs do +Qwen-Image-2.1, Wan, Anima and Ideogram 4 VAEs fail with a message when they load. The FLUX.1 and SD 1.x / SDXL single-file VAEs do not check, so a quantized file there fails with an unclear error or decodes incorrectly. ## LoRAs and adapters @@ -101,7 +104,7 @@ not check, so a quantized file there fails with an unclear error or decodes inco | FLUX.2, Z-Image | ✓ (LyCORIS, Diffusers) | Z-Image only | | | Qwen-Image, Krea-2, Wan 2.2, Anima | ✓ (LyCORIS/kohya, including LoKR where noted on the family page) | Anima (ControlNet-LLLite) | | | LTX-2, MiniMax H3 | ✓ (plain low-rank; LoKR, LoHA and DoRA are refused) | ✗ | | -| SD 3, CogView4, Ideogram 4, ERNIE-Image | ✗ | ✗ | | +| SD 3, CogView4, Ideogram 4, ERNIE-Image, Qwen-Image-2.1 | ✗ | ✗ | | [PiD decoders](/users-guide/image-generation/advanced-topics/pid-decode/) load for FLUX.1, FLUX.2, SD 3, SDXL and Qwen-Image (v1 and v1.5, bf16 and int8 builds). diff --git a/docs/src/content/docs/Users Guide/03.Models/Local Models/qwen-image-2-1.mdx b/docs/src/content/docs/Users Guide/03.Models/Local Models/qwen-image-2-1.mdx new file mode 100644 index 00000000000..25e2a520ad1 --- /dev/null +++ b/docs/src/content/docs/Users Guide/03.Models/Local Models/qwen-image-2-1.mdx @@ -0,0 +1,71 @@ +--- +title: Qwen-Image-2.1 +description: Generate images with Qwen-Image-2.1 and its 8-step Turbo variant, from the Diffusers folders or a GGUF transformer, including transparent (RGBA) output. +lastUpdated: 2026-10-16 +sidebar: + order: 8 +--- +## Qwen-Image-2.1 + +Qwen-Image-2.1 is a 7B text-to-image model from the Qwen team with strong text rendering. It is a different model from [Qwen Image](/users-guide/models/local-models/qwen-image/) (2512 and Edit 2511), not an update you can swap in: it encodes prompts with the **Qwen3-VL 8B** model, the same encoder [Ideogram 4](/users-guide/models/local-models/ideogram4/) uses, and decodes with its own 64-channel VAE, which can produce images with a transparent background. + +Two variants are available, and the variant is detected on install: + +- **Qwen-Image-2.1** — the base model. 40 steps by default. +- **Qwen-Image-2.1 Turbo** — distilled for 8 steps on a fixed schedule of its own. + +Text-to-image, image-to-image, inpainting and outpainting on the Canvas are supported. Reference images (image editing), LoRAs and regional guidance are not supported yet. + +### License + +Qwen-Image-2.1 is released under the **Qwen Research License**, which allows use for research and evaluation only. Commercial use needs a separate license from Alibaba's Tongyi Lab. The same license covers the Comfy-Org and community repackages of the weights. + +This is a summary, not legal advice. Read the full license on the model's HuggingFace page before using a model commercially. + +### Installing Qwen-Image-2.1 + +The starter models install the complete Diffusers folders, which carry the transformer, the VAE and the Qwen3-VL 8B encoder: + +- [`Qwen/Qwen-Image-2.1`](https://huggingface.co/Qwen/Qwen-Image-2.1) — the base model, ~31 GB. +- [`Qwen/Qwen-Image-2.1-Turbo`](https://huggingface.co/Qwen/Qwen-Image-2.1-Turbo) — the Turbo variant, ~30 GB. + +You can also paste either repo ID into the Model Manager's HuggingFace / URL field. + +#### GGUF and single files + +A GGUF or single-file transformer carries only the transformer. Pick the other two parts in the **Components** section next to the model; until both are set, the Invoke button tells you which one is missing: + +- **VAE** — the Qwen-Image-2.1 VAE, from Comfy-Org's [`vae/qwen_image_2.1_vae_bf16.safetensors`](https://huggingface.co/Comfy-Org/Qwen-Image-2.1) or the `vae` folder of a Diffusers download. The VAEs of Qwen Image, Wan and FLUX do not fit and are not offered. +- **Qwen3-VL Encoder** — the Qwen3-VL **8B** encoder, for example the **Qwen3-VL 8B Encoder** starter model, which Ideogram 4 uses as well. The 4B encoder Krea-2 uses does not work and is not offered. A llama.cpp GGUF of the 8B encoder works too; see [Qwen3-VL GGUF encoders](/users-guide/models/local-models/krea-2/#qwen3-vl-gguf-encoders). + +The **Qwen-Image-2.1 (Q4_K_M GGUF)** starter model, from [`unsloth/Qwen-Image-2.1-GGUF`](https://huggingface.co/unsloth/Qwen-Image-2.1-GGUF), installs the VAE and the 8B encoder with it, ~15 GB in all. Other quantization levels from that repository load the same way. + +Single-file transformers in bf16, scaled fp8 or `int8_convrot` (ComfyUI repackages) load as well. nvfp4 files, torchao-quantized files (such as unsloth's FP8 build), and int8 files without ComfyUI's `int8_convrot` marker, are refused at install. GGUF files with int8 layers (ComfyUI-GGUF's `Q8_CR`) are refused too. + +The Turbo variant is recognized from the filename: a single file or GGUF whose name contains `turbo` installs as Turbo, anything else as the base model. If a file was detected as the wrong variant, edit the model in the Model Manager and change its **Variant**. The default settings were chosen at install, so also set **Steps** under **Default Settings**: 8 for Turbo, 40 for the base model. + +### Memory and speed + +Measured on an RTX 4090 at 1024×1024: + +| Transformer | Resident | Time per image | +|---|---|---| +| bf16 (Diffusers) | 13.9 GB during denoising | 0.62 s per step, about 25 s for 40 steps | +| GGUF Q4_K_M | 4.0 GB | about 40 s for 40 steps | + +The text encoder runs first and is unloaded from the GPU when the transformer needs the room. At 2048×2048 the bf16 transformer needs 15.5 GB and 3.7 s per step. + +The VAE needs about 8 GB of working memory to decode a 1024×1024 image, and is priced the same to encode one for image-to-image, inpainting or outpainting (twice that with `precision: float32`). When an image is too large for the card to handle in one piece, Invoke decodes and encodes it in tiles; see [Large decodes](/configuration/optimization/low-vram-mode/). Invoke picks 1024-pixel tiles, and 768 or 512 only on cards with less memory: measured at 2048×2048, 1024-pixel tiles came close to an untiled decode (47.7 dB PSNR), while the 256-pixel tiles other VAEs default to left visible seams (35.6 dB). + +### Transparent images + +The Qwen-Image-2.1 VAE decodes an alpha channel along with the colors, so a prompt such as *a sticker of a red fox on a transparent background* produces a cut-out image. An image is saved with transparency only when it has some: when more than 0.1% of its pixels are noticeably transparent. Opaque images are saved as ordinary RGB, so the faint edges tiled decoding leaves in the alpha channel never turn an opaque image transparent. + +Image-to-image, inpainting and outpainting read the colors of the input image and treat it as fully opaque, whatever its alpha channel holds. + +### Generation settings + +- **Steps** — 40 for the base model and 8 for Turbo. Turbo's schedule is tuned for 8 steps; other step counts are spread over the same curve and work, but 8 is what it was distilled for. +- **CFG** — 1 by default, which runs one prompt per step. Above 1, the negative prompt is used and each step costs about twice as long. +- There is no scheduler setting: both variants use the schedule they were trained with. +- **Denoising strength** (image-to-image, inpainting) — on the base model a strength changes the image about as much as on Qwen-Image or Z-Image. Turbo's 8-step schedule spends most of its steps at high noise, so there a strength sets the starting noise level directly (0.5 starts at noise level 0.5): the same value changes the image less on Turbo than on the base model. diff --git a/docs/src/content/docs/Users Guide/04.Image Generation/generate-panel.mdx b/docs/src/content/docs/Users Guide/04.Image Generation/generate-panel.mdx index aa05b74a55b..eeb01458102 100644 --- a/docs/src/content/docs/Users Guide/04.Image Generation/generate-panel.mdx +++ b/docs/src/content/docs/Users Guide/04.Image Generation/generate-panel.mdx @@ -49,7 +49,7 @@ The **Seed** sets the starting noise for the image. The same model, prompt, seed A negative prompt lists what you do *not* want in the image, such as *blurry, watermark, extra fingers*. Models that support one show a **+ Negative prompt…** button under the prompt; click it to open the box, and click **Turn off negative prompt** to hide it again without losing the text. -Not every model uses a negative prompt. SD 1.5, SDXL, SD 3.5 and CogView4 always use it. Several newer models, including Z-Image, Qwen Image and Krea-2, use it only when CFG is above 1, and the box says so. FLUX.1, FLUX.2 and Ideogram 4 do not use a negative prompt, and the box is not shown for them. +Not every model uses a negative prompt. SD 1.5, SDXL, SD 3.5 and CogView4 always use it. Several newer models, including Z-Image, Qwen Image, Qwen-Image-2.1 and Krea-2, use it only when CFG is above 1, and the box says so. FLUX.1, FLUX.2 and Ideogram 4 do not use a negative prompt, and the box is not shown for them. ### Advanced settings @@ -84,7 +84,7 @@ Concepts, also called LoRAs, are small add-on models that teach the main model a -You can add as many concepts as you like and combine them. Use the switch on each row to turn a concept off without removing it, and the trash button to remove it. If you change to a model from a different family, its concepts are marked **Incompatible** or removed. SD3, CogView4, ERNIE Image, Ideogram 4 and external API models don't support concepts, so with one of them selected the section says so instead of offering LoRAs. +You can add as many concepts as you like and combine them. Use the switch on each row to turn a concept off without removing it, and the trash button to remove it. If you change to a model from a different family, its concepts are marked **Incompatible** or removed. SD3, CogView4, ERNIE Image, Ideogram 4, Qwen-Image-2.1 and external API models don't support concepts, so with one of them selected the section says so instead of offering LoRAs. ## Adding reference images diff --git a/docs/src/content/docs/Users Guide/04.Image Generation/parameters.mdx b/docs/src/content/docs/Users Guide/04.Image Generation/parameters.mdx index 4a46b97db0a..377e5aeb789 100644 --- a/docs/src/content/docs/Users Guide/04.Image Generation/parameters.mdx +++ b/docs/src/content/docs/Users Guide/04.Image Generation/parameters.mdx @@ -40,7 +40,7 @@ The scheduler decides how much noise is removed at each step. Which ones are off * **SD 1.5, SD 2.x and SDXL** offer the full list. **DPM++ 2M Karras** and **Euler** are good general-purpose choices; **Euler Ancestral** and the other *Ancestral* and *SDE* schedulers add variety and keep changing the image as steps increase; **UniPC** and **DPM++ 3M** reach good results in fewer steps. **LCM** and **TCD** are only for LCM- and TCD-distilled models. * **Flow models**, such as FLUX.1, FLUX.2, Z-Image and ERNIE-Image, offer **Euler**, **Heun (2nd order)**, which is slower per step but can need fewer steps, and **LCM** for distilled models. * **Anima** has its own short list, starting with **Euler**. -* Some families, including SD 3.5, Qwen Image, CogView4, Krea-2 and Ideogram 4, use a fixed schedule and do not show the field. +* Some families, including SD 3.5, Qwen Image, Qwen-Image-2.1, CogView4, Krea-2 and Ideogram 4, use a fixed schedule and do not show the field. **Use model default scheduler** switches back to the model's own choice. diff --git a/docs/src/content/docs/configuration/Optimization/fp8-storage.mdx b/docs/src/content/docs/configuration/Optimization/fp8-storage.mdx index 3b3c04e7aa5..f24b6f55b14 100644 --- a/docs/src/content/docs/configuration/Optimization/fp8-storage.mdx +++ b/docs/src/content/docs/configuration/Optimization/fp8-storage.mdx @@ -11,7 +11,7 @@ FP8 Storage cuts a model's VRAM footprint roughly in half by keeping weights on It pairs well with [Low-VRAM mode](/configuration/optimization/low-vram-mode/): low-VRAM mode streams layers between RAM and VRAM, while FP8 Storage shrinks the layers themselves. :::caution[For full precision models only] -FP8 Storage is meant for **full precision** checkpoints (FP16 / BF16 / FP32). It does nothing for **GGUF**, **NF4** and [**SDNQ**](/configuration/optimization/sdnq-quantization/) checkpoints, which carry their own storage precision, so the Model Manager does not show the toggle for them (see [Where the toggle is shown](#where-the-toggle-is-shown)). **int8** and **nvfp4** single-file checkpoints keep their quantized layers as they are — the loader returns a module type the FP8 layer cast does not touch — so there the toggle reaches only the layers the build ships in full precision, and on an **Ideogram 4** int8 file nothing at all. On single-file checkpoints that ship *scaled* fp8 layers, the toggle keeps those layers in FP8 with their own scale instead of unpacking them; that is what FLUX.1, FLUX.2, Z-Image, Anima, Krea-2, Qwen-Image and Ideogram 4 all do. **MXFP8 is the exception, and there the toggle costs quality:** those files carry one exponent per 32-element block, which no GPU before Blackwell can apply, so the layers are unpacked at load and the toggle then re-encodes them as fp8 *without* any scale. Blocks whose scale sits far below 1 lose their weights to underflow. Leave it off for an MXFP8 checkpoint — and because installing switches it on for every checkpoint with FP8 weights, MXFP8 included, turn it off under **Default Settings** after installing one. If your model is already quantized, use its full-precision variant to get the full effect of FP8 Storage. Checkpoints that store FP8 weights are the exception: InvokeAI loads them at BF16 unless FP8 Storage is on, so they get it automatically when installed (see [When installing](#when-installing)). +FP8 Storage is meant for **full precision** checkpoints (FP16 / BF16 / FP32). It does nothing for **GGUF**, **NF4** and [**SDNQ**](/configuration/optimization/sdnq-quantization/) checkpoints, which carry their own storage precision, so the Model Manager does not show the toggle for them (see [Where the toggle is shown](#where-the-toggle-is-shown)). **int8** and **nvfp4** single-file checkpoints keep their quantized layers as they are — the loader returns a module type the FP8 layer cast does not touch — so there the toggle reaches only the layers the build ships in full precision, and on an **Ideogram 4** or **Qwen-Image-2.1** int8 file nothing at all. On single-file checkpoints that ship *scaled* fp8 layers, the toggle keeps those layers in FP8 with their own scale instead of unpacking them; that is what FLUX.1, FLUX.2, Z-Image, Anima, Krea-2, Qwen-Image, Qwen-Image-2.1 and Ideogram 4 all do. **MXFP8 is the exception, and there the toggle costs quality:** those files carry one exponent per 32-element block, which no GPU before Blackwell can apply, so the layers are unpacked at load and the toggle then re-encodes them as fp8 *without* any scale. Blocks whose scale sits far below 1 lose their weights to underflow. Leave it off for an MXFP8 checkpoint — and because installing switches it on for every checkpoint with FP8 weights, MXFP8 included, turn it off under **Default Settings** after installing one. If your model is already quantized, use its full-precision variant to get the full effect of FP8 Storage. Checkpoints that store FP8 weights are the exception: InvokeAI loads them at BF16 unless FP8 Storage is on, so they get it automatically when installed (see [When installing](#when-installing)). ::: ## Requirements @@ -76,7 +76,7 @@ FP8 Storage is **only** applied to layers where the precision trade-off is accep | --- | --- | | Main models: SD1, SD2, SDXL, SDXL Refiner, SD3, CogView4 | Yes | | FLUX.1, FLUX.2 (all variants) | Yes | -| Z-Image, Anima, Krea-2, Qwen-Image, ERNIE-Image | Yes | +| Z-Image, Anima, Krea-2, Qwen-Image, Qwen-Image-2.1, ERNIE-Image | Yes | | Ideogram 4 (single-file safetensors) | Yes — both transformer branches | | LTX-2 | Yes | | Wan (checkpoint and diffusers) | Yes — except ComfyUI `fp8_scaled` files, which load at BF16 | diff --git a/docs/src/content/docs/configuration/Optimization/low-vram-mode.mdx b/docs/src/content/docs/configuration/Optimization/low-vram-mode.mdx index c7284b44144..12466be76d2 100644 --- a/docs/src/content/docs/configuration/Optimization/low-vram-mode.mdx +++ b/docs/src/content/docs/configuration/Optimization/low-vram-mode.mdx @@ -202,7 +202,7 @@ clear_vram_after_session: true Without tiling, the memory a VAE needs grows with the square of the image size. For FLUX.1, an untiled 3072² encode peaks at about 18.8 GiB on an RTX 4090, and a tiled one at 0.8 GiB, while tiled memory stays roughly flat as the image grows. Tiling costs some speed on smaller images. -Invoke tiles large decodes by itself: when an untiled decode would claim most of the memory the GPU keeps resident, it decodes in tiles instead, for the FLUX.1, Z-Image, Qwen-Image, Krea-2, Anima and Wan decodes. Because a tiled decode is not pixel-identical to an untiled one, this only kicks in for images too large for the card: for Z-Image on a 16GB GPU, for example, from about 1850x1850 on Nvidia and from about 1500x1500 on AMD, whose convolution library needs more memory. On a ROCm build under Windows the comparison uses the video-memory budget Windows grants Invoke, which is lower than the card's total and lower again while another program uses the GPU. Anima tiles a little earlier, because its untiled decode pushes the Anima model itself out of VRAM on 8GB cards. Wan videos are tiled from 832x480 on 8GB cards and from 720p on 16GB cards, where their untiled decodes need about as much memory as the card holds, or more. +Invoke tiles large decodes by itself: when an untiled decode would claim most of the memory the GPU keeps resident, it decodes in tiles instead, for the FLUX.1, Z-Image, Qwen-Image, Qwen-Image-2.1, Krea-2, Anima and Wan decodes, and for Qwen-Image-2.1's encodes as well. Because a tiled decode is not pixel-identical to an untiled one, this only kicks in for images too large for the card: for Z-Image on a 16GB GPU, for example, from about 1850x1850 on Nvidia and from about 1500x1500 on AMD, whose convolution library needs more memory. On a ROCm build under Windows the comparison uses the video-memory budget Windows grants Invoke, which is lower than the card's total and lower again while another program uses the GPU. Anima tiles a little earlier, because its untiled decode pushes the Anima model itself out of VRAM on 8GB cards. Wan videos are tiled from 832x480 on 8GB cards and from 720p on 16GB cards, where their untiled decodes need about as much memory as the card holds, or more. To always decode untiled unless you ask for tiling, turn this off. A decode too large for the card then runs out of memory: the FLUX.1 and Z-Image decodes retry in tiles, the others fail, and on Windows the driver may move the decode into system memory and run it very slowly instead. Anima is not affected by this setting: there, tiling a large decode is what keeps the Anima model in VRAM, and turning it off would only make those decodes slower. @@ -210,8 +210,8 @@ To always decode untiled unless you ask for tiling, turn this off. A decode too auto_tiled_decode: false ``` -- **Always tile:** set `force_tiled_decode: true` in `invokeai.yaml`. It covers the VAE decode and encode for SD1.5/SDXL, FLUX.1, Z-Image and Qwen-Image, the Anima encode, the control image of a Z-Image ControlNet, and the Krea-2 style reference. Other model families (for example SD3, FLUX.2, Wan and LTX-2) ignore it. -- **Per node:** the SD, FLUX.1, Z-Image and Qwen-Image **Latents to Image** and **Image to Latents** nodes, and **Image to Latents - Anima**, have **Tiled** and **Tile Size** fields for workflows. So does the **Z-Image ControlNet** node, for the control image the denoise encodes. The [Upscale panel](/users-guide/image-generation/upscale/) turns tiling on by itself. +- **Always tile:** set `force_tiled_decode: true` in `invokeai.yaml`. It covers the VAE decode and encode for SD1.5/SDXL, FLUX.1, Z-Image, Qwen-Image and Qwen-Image-2.1, the Anima encode, the control image of a Z-Image ControlNet, and the Krea-2 style reference. Other model families (for example SD3, FLUX.2, Wan and LTX-2) ignore it. +- **Per node:** the SD, FLUX.1, Z-Image, Qwen-Image and Qwen-Image-2.1 **Latents to Image** and **Image to Latents** nodes, and **Image to Latents - Anima**, have **Tiled** and **Tile Size** fields for workflows. So does the **Z-Image ControlNet** node, for the control image the denoise encodes. The [Upscale panel](/users-guide/image-generation/upscale/) turns tiling on by itself. - **Automatic retry:** if a FLUX.1, Z-Image or Anima decode, or a FLUX.1 encode, runs out of memory, InvokeAI retries it once with tiling and logs that it did. A tiled decode is not pixel-identical to a single-pass one. The VAE looks at the whole image at once, so the difference is spread over the image rather than limited to the tile seams; it is small, but the same seed will not reproduce an untiled result exactly. diff --git a/docs/src/content/docs/start-here/system-requirements.mdx b/docs/src/content/docs/start-here/system-requirements.mdx index f56220f91ad..ea8c98c32c2 100644 --- a/docs/src/content/docs/start-here/system-requirements.mdx +++ b/docs/src/content/docs/start-here/system-requirements.mdx @@ -33,6 +33,7 @@ The requirements below are rough guidelines for best performance. GPUs with less | Z-Image Turbo | 1024x1024 | Nvidia 20xx+ | 8GB | 16GB | Q4_K / NVFP4 / int8 8GB (int8 ~6GB resident); Q8/BF16 16GB+ | | Krea-2 (Turbo / Raw) | 1024x1024 | Nvidia 40xx | 24GB | 32GB | FP8 works with 16GB+; NVFP4 or GGUF Q4_K transformer ~7GB, plus the Qwen3-VL encoder (8.5GB bf16, ~2.8GB as GGUF Q4_K), int8 transformer 12.6GB. Diffusers ~26GB; single files need a standalone VAE + Qwen3-VL encoder (GGUF encoder ~2.8GB) | | Ideogram 4 | 1024x1024 | Nvidia 30xx+ | 24GB | 32GB | Two transformers resident at once. nf4 build fits 24GB (CUDA only); single-file fp8 or int8 pair ~17.5GB, GGUF Q4_0 pair ~11GB, plus the Qwen3-VL 8B encoder. See [Ideogram 4](/users-guide/models/local-models/ideogram4/) | +| Qwen-Image-2.1 | 1024x1024 | Nvidia 30xx+ | 16GB | 32GB | GGUF Q4_K_M transformer ~4GB, bf16 ~14GB, plus the Qwen3-VL 8B encoder (~10GB fp8). Diffusers ~31GB. See [Qwen-Image-2.1](/users-guide/models/local-models/qwen-image-2-1/) | | ERNIE-Image | 1024x1024 | Nvidia 40xx | 24GB | 32GB | Single-file transformer ~16GB (GGUF Q4_K_M ~5.0GB, Q8_0 ~8.7GB) plus the Ministral 3B encoder ~7.7GB | | Wan 2.2 A14B (T2V/I2V) | 1280x720 | Nvidia 30xx+ | 12GB | 32GB | Dual-expert MoE; Q4_K_M 12GB; Q8 18GB+; Diffusers requires 32GB+ | | Wan 2.2 TI2V-5B | 1280x720 | Nvidia 20xx+ | 8GB | 16GB | Single transformer; Q4_K_M 6GB+; Q8 8GB+; Diffusers 12GB+ | diff --git a/invokeai/app/invocations/fields.py b/invokeai/app/invocations/fields.py index e85bb75bb74..588f64beafb 100644 --- a/invokeai/app/invocations/fields.py +++ b/invokeai/app/invocations/fields.py @@ -183,6 +183,7 @@ class FieldDescriptions: z_image_model = "Z-Image model (Transformer) to load" flux2_dev_model = "FLUX.2 [dev] model (Transformer) to load" krea2_model = "Krea-2 model (Transformer) to load" + qwen_image_2_1_model = "Qwen-Image-2.1 model (Transformer) to load" qwen_image_model = "Qwen Image Edit model (Transformer) to load" qwen_vl_encoder = "Qwen2.5-VL tokenizer, processor and text/vision encoder" wan_model = "Wan 2.2 model (Transformer) to load" @@ -413,6 +414,12 @@ class Krea2ConditioningField(BaseModel): ) +class QwenImage21ConditioningField(BaseModel): + """A Qwen-Image-2.1 conditioning tensor primitive value""" + + conditioning_name: str = Field(description="The name of conditioning tensor") + + class Krea2StyleReferenceField(BaseModel): """Style-reference conditioning for Krea-2 shared-KV reference attention. diff --git a/invokeai/app/invocations/metadata.py b/invokeai/app/invocations/metadata.py index 79577774cc0..ecf070d961e 100644 --- a/invokeai/app/invocations/metadata.py +++ b/invokeai/app/invocations/metadata.py @@ -181,6 +181,10 @@ def invoke(self, context: InvocationContext) -> MetadataOutput: "krea2_img2img", "krea2_inpaint", "krea2_outpaint", + "qwen_image_2_1_txt2img", + "qwen_image_2_1_img2img", + "qwen_image_2_1_inpaint", + "qwen_image_2_1_outpaint", "wan_txt2img", "wan_img2img", "wan_inpaint", diff --git a/invokeai/app/invocations/primitives.py b/invokeai/app/invocations/primitives.py index 02d1040387f..400b9962473 100644 --- a/invokeai/app/invocations/primitives.py +++ b/invokeai/app/invocations/primitives.py @@ -28,6 +28,7 @@ LatentsField, MiniMaxH3ConditioningField, OutputField, + QwenImage21ConditioningField, QwenImageConditioningField, SD3ConditioningField, TensorField, @@ -539,6 +540,17 @@ def build(cls, conditioning_name: str, mask: TensorField | None = None) -> "Krea return cls(conditioning=Krea2ConditioningField(conditioning_name=conditioning_name, mask=mask)) +@invocation_output("qwen_image_2_1_conditioning_output") +class QwenImage21ConditioningOutput(BaseInvocationOutput): + """Base class for nodes that output a Qwen-Image-2.1 conditioning tensor.""" + + conditioning: QwenImage21ConditioningField = OutputField(description=FieldDescriptions.cond) + + @classmethod + def build(cls, conditioning_name: str) -> "QwenImage21ConditioningOutput": + return cls(conditioning=QwenImage21ConditioningField(conditioning_name=conditioning_name)) + + @invocation_output("anima_conditioning_output") class AnimaConditioningOutput(BaseInvocationOutput): """Base class for nodes that output an Anima text conditioning tensor.""" diff --git a/invokeai/app/invocations/qwen_image_2_1/__init__.py b/invokeai/app/invocations/qwen_image_2_1/__init__.py new file mode 100644 index 00000000000..10cb5b3fb0b --- /dev/null +++ b/invokeai/app/invocations/qwen_image_2_1/__init__.py @@ -0,0 +1,10 @@ +"""QwenImage21 nodes. + +Node modules go here, keeping their architecture prefix: `qwen_image_2_1_denoise.py`, +`qwen_image_2_1_model_loader.py`. VAE, text-encoder and PiD nodes belong in +`invocations/vae/`, `invocations/text_encoder/` and `invocations/pid/` instead — they are shared +across architectures rather than owned by one. + +This package is discovered automatically; there is no list to add it to. The `__init__.py` is what +makes it a package, and without it every node in here would silently not exist. +""" diff --git a/invokeai/app/invocations/qwen_image_2_1/qwen_image_2_1_denoise.py b/invokeai/app/invocations/qwen_image_2_1/qwen_image_2_1_denoise.py new file mode 100644 index 00000000000..5e49d966669 --- /dev/null +++ b/invokeai/app/invocations/qwen_image_2_1/qwen_image_2_1_denoise.py @@ -0,0 +1,381 @@ +import math +from typing import Optional + +import torch +import torchvision.transforms as tv_transforms +from pydantic import field_validator +from torchvision.transforms.functional import resize as tv_resize +from tqdm import tqdm + +from invokeai.app.invocations.baseinvocation import BaseInvocation, Classification, invocation +from invokeai.app.invocations.fields import ( + DenoiseMaskField, + FieldDescriptions, + Input, + InputField, + LatentsField, + QwenImage21ConditioningField, + WithBoard, + WithMetadata, +) +from invokeai.app.invocations.model import TransformerField +from invokeai.app.invocations.primitives import LatentsOutput +from invokeai.app.services.shared.invocation_context import InvocationContext +from invokeai.app.util.startup_utils import log_attention_backends +from invokeai.backend.flux.sampling_utils import clip_timestep_schedule_fractional +from invokeai.backend.model_manager.taxonomy import BaseModelType, QwenImage21VariantType +from invokeai.backend.quantization.dequantizing_linear import peak_dequant_transient_bytes +from invokeai.backend.qwen_image_2_1.sampling import build_sigmas +from invokeai.backend.rectified_flow.rectified_flow_inpaint_extension import RectifiedFlowInpaintExtension +from invokeai.backend.stable_diffusion.diffusers_pipeline import PipelineIntermediateState +from invokeai.backend.stable_diffusion.diffusion.conditioning_data import QwenImage21ConditioningInfo +from invokeai.backend.util.attention import sdpa_score_matrix_bytes +from invokeai.backend.util.devices import TorchDevice +from invokeai.backend.util.logging import InvokeAILogger + +LATENT_CHANNELS = 64 +VAE_SCALE_FACTOR = 16 +# One vision-language slot of the transformer's joint sequence covers 2x2 latent tokens. +TOKENS_PER_SLOT = 4 + +logger = InvokeAILogger.get_logger(__name__) + + +def clip_sigmas( + sigmas: list[float], denoising_start: float, denoising_end: float, *, by_noise_level: bool +) -> tuple[list[float], int]: + """The part of the schedule `denoising_start` to `denoising_end` covers, and the index of the configured step + it starts in. A range shorter than a step still runs one step. + + Base picks by step index, as Qwen-Image, Z-Image and diffusers' image-to-image pipelines do, so a strength changes + the image as much as it does on those models: its shifted schedule stays at high noise for most of its steps. + Turbo picks by noise level (`1 - denoising_start` to `1 - denoising_end`): its distilled table sits above 0.84 for + six of its eight steps, so by index any strength from 0.5 to 0.85 would begin almost from pure noise. + """ + if by_noise_level: + clipped = clip_timestep_schedule_fractional(list(sigmas), denoising_start, denoising_end) + # The configured step `clipped[0]` falls in: the last one starting at or above the start level. + first_step = sum(1 for sigma in sigmas if sigma >= 1.0 - denoising_start - 1e-6) - 1 + return clipped, first_step + steps = len(sigmas) - 1 + first_step = min(int(round(denoising_start * steps)), steps - 1) + last_step = max(int(round(denoising_end * steps)), first_step + 1) + return list(sigmas[first_step : last_step + 1]), first_step + + +def pack_latents(latents: torch.Tensor) -> torch.Tensor: + """(B, C, h, w) -> (B, h*w, C): one token per latent pixel, in raster order (patch size 1).""" + batch, channels, height, width = latents.shape + return latents.reshape(batch, channels, height * width).transpose(1, 2) + + +def unpack_latents(latents: torch.Tensor, height: int, width: int) -> torch.Tensor: + """(B, h*w, C) -> (B, C, h, w).""" + batch, _, channels = latents.shape + return latents.transpose(1, 2).reshape(batch, channels, height, width) + + +@invocation( + "qwen_image_2_1_denoise", + title="Denoise - Qwen-Image-2.1", + tags=["image", "qwen_image_2_1", "qwen-image-2.1"], + category="image", + version="1.0.0", + classification=Classification.Prototype, +) +class QwenImage21DenoiseInvocation(BaseInvocation, WithMetadata, WithBoard): + """Run the denoising process with a Qwen-Image-2.1 model.""" + + latents: Optional[LatentsField] = InputField( + default=None, description=FieldDescriptions.latents, input=Input.Connection + ) + denoise_mask: Optional[DenoiseMaskField] = InputField( + default=None, description=FieldDescriptions.denoise_mask, input=Input.Connection + ) + denoising_start: float = InputField(default=0.0, ge=0, le=1, description=FieldDescriptions.denoising_start) + denoising_end: float = InputField(default=1.0, ge=0, le=1, description=FieldDescriptions.denoising_end) + transformer: TransformerField = InputField( + description=FieldDescriptions.qwen_image_2_1_model, input=Input.Connection, title="Transformer" + ) + positive_conditioning: QwenImage21ConditioningField = InputField( + description=FieldDescriptions.positive_cond, input=Input.Connection + ) + negative_conditioning: Optional[QwenImage21ConditioningField] = InputField( + default=None, description=FieldDescriptions.negative_cond, input=Input.Connection + ) + # True CFG: neg + cfg_scale * (cond - neg), only with a negative prompt and a scale above 1. The model card + # samples without guidance. + cfg_scale: float | list[float] = InputField(default=1.0, description=FieldDescriptions.cfg_scale, title="CFG Scale") + width: int = InputField(default=1024, gt=0, multiple_of=32, description="Width of the generated image.") + height: int = InputField(default=1024, gt=0, multiple_of=32, description="Height of the generated image.") + steps: int = InputField( + default=40, + gt=0, + description=f"{FieldDescriptions.steps} Turbo is distilled for its shipped 8-step schedule; other counts " + "resample it.", + ) + seed: int = InputField(default=0, description="Randomness seed for reproducibility.") + + @field_validator("cfg_scale") + @classmethod + def validate_cfg_scale_is_finite(cls, value: float | list[float]) -> float | list[float]: + values = value if isinstance(value, list) else [value] + if not all(math.isfinite(item) for item in values): + raise ValueError("cfg_scale values must be finite.") + return value + + @torch.no_grad() + def invoke(self, context: InvocationContext) -> LatentsOutput: + latents = self._run_diffusion(context).detach().to("cpu") + name = context.tensors.save(tensor=latents) + # `LatentsOutput.build` assumes 8x latents; these are 16x, so report the requested size directly. + return LatentsOutput( + latents=LatentsField(latents_name=name, seed=self.seed), width=self.width, height=self.height + ) + + def _load_conditioning( + self, context: InvocationContext, field: QwenImage21ConditioningField, dtype: torch.dtype, device: torch.device + ) -> torch.Tensor: + data = context.conditioning.load(field.conditioning_name) + if len(data.conditionings) != 1 or not isinstance(data.conditionings[0], QwenImage21ConditioningInfo): + raise ValueError("Expected exactly one Qwen-Image-2.1 conditioning.") + return data.conditionings[0].to(dtype=dtype, device=device).prompt_embeds + + def _prepare_cfg_scale(self, num_steps: int) -> list[float]: + if isinstance(self.cfg_scale, list): + if len(self.cfg_scale) != num_steps: + raise ValueError( + f"cfg_scale list has {len(self.cfg_scale)} values for {num_steps} steps. Provide one value per " + "configured step, or a single float." + ) + return self.cfg_scale + return [self.cfg_scale] * num_steps + + def _prep_inpaint_mask(self, context: InvocationContext, latents: torch.Tensor) -> torch.Tensor | None: + if self.denoise_mask is None: + return None + mask = 1.0 - context.tensors.load(self.denoise_mask.mask_name) + mask = tv_resize( + img=mask, + size=list(latents.shape[-2:]), + interpolation=tv_transforms.InterpolationMode.BILINEAR, + antialias=False, + ) + return mask.to(device=latents.device, dtype=latents.dtype) + + def _run_diffusion(self, context: InvocationContext) -> torch.Tensor: + from diffusers.models.transformers.transformer_qwenimage21 import QwenImage21KVCache + + if self.denoising_start >= self.denoising_end: + raise ValueError("denoising_start must be less than denoising_end.") + if self.denoise_mask is not None and self.latents is None: + raise ValueError("Initial latents are required when a denoise mask is provided.") + + device = TorchDevice.choose_torch_device() + dtype = TorchDevice.choose_bfloat16_safe_dtype(device) + transformer_config = context.models.get_config(self.transformer.transformer) + transformer_info = context.models.load(self.transformer.transformer) + + latent_height, latent_width = self.height // VAE_SCALE_FACTOR, self.width // VAE_SCALE_FACTOR + image_seq_len = latent_height * latent_width + + variant = getattr(transformer_config, "variant", None) + full_sigmas = build_sigmas(variant, self.steps, image_seq_len) + sigmas, first_step = clip_sigmas( + full_sigmas.tolist(), + self.denoising_start, + self.denoising_end, + by_noise_level=variant is QwenImage21VariantType.Turbo, + ) + sigmas = torch.tensor(sigmas, dtype=torch.float32, device=device) + cfg_scale = self._prepare_cfg_scale(len(full_sigmas) - 1)[first_step : first_step + len(sigmas) - 1] + + pos_embeds = self._load_conditioning(context, self.positive_conditioning, dtype, device) + do_cfg = self.negative_conditioning is not None and any(value > 1.0 for value in cfg_scale) + neg_embeds = ( + self._load_conditioning(context, self.negative_conditioning, dtype, device) + if do_cfg and self.negative_conditioning is not None + else None + ) + + # Drawn as the pipeline draws it, (B, frame, C, h, w), on the CPU so a seed means the same on any device. + noise = torch.randn( + (1, 1, LATENT_CHANNELS, latent_height, latent_width), + generator=torch.Generator("cpu").manual_seed(self.seed), + dtype=torch.float32, + )[:, 0].to(device) + + init_latents = None + if self.latents is not None: + init_latents = context.tensors.load(self.latents.latents_name).to(device=device, dtype=torch.float32) + if init_latents.dim() == 5: + init_latents = init_latents.squeeze(2) + if tuple(init_latents.shape[-2:]) != (latent_height, latent_width): + raise ValueError( + f"Initial latents are {tuple(init_latents.shape[-2:])}, not the {(latent_height, latent_width)} " + f"a {self.width}x{self.height} image needs." + ) + sigma_0 = sigmas[0].item() + latents = sigma_0 * noise + (1.0 - sigma_0) * init_latents + elif self.denoising_start > 1e-5: + raise ValueError("denoising_start must be 0 when no initial latents are given.") + else: + latents = noise + + inpaint_mask = self._prep_inpaint_mask(context, noise) + inpaint_extension = None + if inpaint_mask is not None: + assert init_latents is not None + inpaint_extension = RectifiedFlowInpaintExtension( + init_latents=init_latents, inpaint_mask=inpaint_mask, noise=noise + ) + + # The pipeline keeps the sampler state in the inference dtype and steps it in fp32 (the scheduler's + # upcast); matching that is what makes this node reproduce its outputs. + latents = pack_latents(latents).to(dtype) + + def image_slot_mask(text_len: int) -> torch.Tensor: + # The joint sequence's slots: the text, then one slot per 2x2 group of target latents. Condition + # images would sit between the two. + text = torch.zeros(1, text_len, dtype=torch.bool, device=device) + target = torch.ones(1, image_seq_len // TOKENS_PER_SLOT, dtype=torch.bool, device=device) + return torch.cat([text, target], dim=1) + + img_shapes = [[(1, latent_height, latent_width)]] + pos_img_mask = image_slot_mask(pos_embeds.shape[1]) + neg_img_mask = image_slot_mask(neg_embeds.shape[1]) if neg_embeds is not None else None + + working_memory = self._estimate_working_memory( + image_seq_len, + pos_embeds.shape[1], + None if neg_embeds is None else neg_embeds.shape[1], + do_cfg, + dtype.itemsize, + ) + working_memory += self._attention_score_bytes( + transformer_info.model, + image_seq_len + max(pos_embeds.shape[1], 0 if neg_embeds is None else neg_embeds.shape[1]), + device, + dtype, + ) + working_memory += peak_dequant_transient_bytes(transformer_info.model, dtype) + log_attention_backends(logger, device) + + total_steps = len(sigmas) - 1 + step_callback = self._step_callback(context) + step_callback( + PipelineIntermediateState( + step=0, + order=1, + total_steps=total_steps, + timestep=int(sigmas[0].item() * 1000), + latents=unpack_latents(latents, latent_height, latent_width), + ) + ) + + with transformer_info.model_on_device(working_mem_bytes=working_memory) as (_, transformer): + # Text keys and values do not depend on the step under `causal_condition`: the first step prefills + # them, the rest compute the image tokens only. One cache per guidance branch, for this run only. + num_blocks = len(transformer.transformer_blocks) + use_cache = bool(transformer.config.causal_condition) + pos_cache = QwenImage21KVCache(num_blocks) if use_cache else None + neg_cache = QwenImage21KVCache(num_blocks) if use_cache and neg_embeds is not None else None + + def predict(embeds: torch.Tensor, img_mask: torch.Tensor, cache, mode, timestep) -> torch.Tensor: + out = transformer( + hidden_states=latents, + encoder_hidden_states=embeds, + encoder_hidden_states_mask=None, + timestep=timestep, + img_shapes=img_shapes, + img_mask=img_mask, + kv_cache=cache, + kv_cache_mode=mode, + return_dict=False, + )[0] + return out[:, -latents.shape[1] :] + + for step_idx in tqdm(range(total_steps)): + sigma, sigma_next = sigmas[step_idx], sigmas[step_idx + 1] + # The pipeline hands the transformer `timestep / 1000` after rounding the timestep to the + # inference dtype; the embedder multiplies it back by 1000. + timestep = (sigma * 1000).expand(1).to(dtype) / 1000 + mode = None if not use_cache else ("extract" if step_idx == 0 else "cached") + + noise_pred = predict(pos_embeds, pos_img_mask, pos_cache, mode, timestep) + if neg_embeds is not None and cfg_scale[step_idx] > 1.0: + neg_pred = predict(neg_embeds, neg_img_mask, neg_cache, mode, timestep) + noise_pred = neg_pred + cfg_scale[step_idx] * (noise_pred - neg_pred) + elif neg_cache is not None and mode == "extract": + # A per-step scale that starts at or below 1 would skip the negative prefill and leave a + # later step decoding from an empty cache. + predict(neg_embeds, neg_img_mask, neg_cache, mode, timestep) + + # FlowMatchEulerDiscreteScheduler.step to the bit: the 0-dim fp32 step times the prediction stays in + # the prediction's dtype, and only the sum with the fp32 sample is fp32. + latents = (latents.float() + (sigma_next - sigma) * noise_pred).to(dtype) + + if inpaint_extension is not None: + merged = inpaint_extension.merge_intermediate_latents_with_init_latents( + unpack_latents(latents, latent_height, latent_width).float(), sigma_next.item() + ) + latents = pack_latents(merged).to(dtype) + + step_callback( + PipelineIntermediateState( + step=step_idx + 1, + order=1, + total_steps=total_steps, + timestep=int(sigma.item() * 1000), + latents=unpack_latents(latents, latent_height, latent_width), + ) + ) + + return unpack_latents(latents, latent_height, latent_width).float() + + @staticmethod + def _estimate_working_memory( + image_seq_len: int, pos_text_len: int, neg_text_len: int | None, do_cfg: bool, element_size: int + ) -> int: + """Peak transformer activations, in bytes, for the model cache to keep free. + + Measured on an RTX 4090 in bf16 with the transformer fully resident: 0.55 GiB of activations at + 1024x1024 (4096 image tokens) and 2.2 GiB at 2048x2048 (16384), about 0.14 MiB per token. 0.25 MiB per + token plus a 1 GiB base leaves room for the allocator and the prefix cache, which holds K and V of every + text token in all 32 blocks (~0.5 MiB per text token, per guidance branch). Both per-token terms are bf16 + figures and scale with `element_size`, the compute dtype's width: a float32 fallback needs twice as much. + """ + mib, gib = 1024**2, 1024**3 + width = element_size / 2 + text_len = max(pos_text_len, neg_text_len or 0) + estimated = int((image_seq_len + text_len) * 0.25 * mib * width) + gib + branches = 2 if do_cfg else 1 + estimated += int(branches * (pos_text_len if neg_text_len is None else text_len) * 0.5 * mib * width) + return estimated + + @staticmethod + def _attention_score_bytes(transformer: object, seq_len: int, device: torch.device, dtype: torch.dtype) -> int: + """The score matrix attention materializes on a build without a fused kernel for it (0 where it has one).""" + config = getattr(transformer, "config", None) + num_heads = getattr(config, "num_attention_heads", None) + head_dim = getattr(config, "attention_head_dim", None) + if not isinstance(num_heads, int) or not isinstance(head_dim, int): + return 0 + # The largest call, the image queries over every key, goes unmasked both in the prefill and on decode steps: + # only the text segments carry a mask, and they are as short as the prompt. All of them go through diffusers' + # attention dispatch. + return sdpa_score_matrix_bytes( + device=device, + dtype=dtype, + num_heads=num_heads, + head_dim=head_dim, + seq_len=seq_len, + via_diffusers_dispatch=True, + ) + + @staticmethod + def _step_callback(context: InvocationContext): + def callback(state: PipelineIntermediateState) -> None: + context.util.sd_step_callback(state, BaseModelType.QwenImage21) + + return callback diff --git a/invokeai/app/invocations/qwen_image_2_1/qwen_image_2_1_model_loader.py b/invokeai/app/invocations/qwen_image_2_1/qwen_image_2_1_model_loader.py new file mode 100644 index 00000000000..6264c94ab62 --- /dev/null +++ b/invokeai/app/invocations/qwen_image_2_1/qwen_image_2_1_model_loader.py @@ -0,0 +1,125 @@ +from typing import Optional + +from invokeai.app.invocations.baseinvocation import ( + BaseInvocation, + BaseInvocationOutput, + Classification, + invocation, + invocation_output, +) +from invokeai.app.invocations.fields import FieldDescriptions, Input, InputField, OutputField +from invokeai.app.invocations.model import ModelIdentifierField, Qwen3VLEncoderField, TransformerField, VAEField +from invokeai.app.services.shared.invocation_context import InvocationContext +from invokeai.backend.architectures import accepted_vae_bases, accepts_vae +from invokeai.backend.model_manager.qwen3_vl_labels import variant_label +from invokeai.backend.model_manager.taxonomy import ( + BaseModelType, + ModelFormat, + ModelType, + Qwen3VLVariantType, + SubModelType, +) + + +@invocation_output("qwen_image_2_1_model_loader_output") +class QwenImage21ModelLoaderOutput(BaseInvocationOutput): + """Qwen-Image-2.1 model loader output.""" + + transformer: TransformerField = OutputField(description=FieldDescriptions.transformer, title="Transformer") + qwen3_vl_encoder: Qwen3VLEncoderField = OutputField( + description=FieldDescriptions.qwen3_vl_encoder, title="Qwen3-VL Encoder" + ) + vae: VAEField = OutputField(description=FieldDescriptions.vae, title="VAE") + + +@invocation( + "qwen_image_2_1_model_loader", + title="Main Model - Qwen-Image-2.1", + tags=["model", "qwen_image_2_1", "qwen-image-2.1"], + category="model", + version="1.0.0", + classification=Classification.Prototype, +) +class QwenImage21ModelLoaderInvocation(BaseInvocation): + """Loads a Qwen-Image-2.1 model, outputting its submodels. + + A diffusers pipeline brings its own VAE and Qwen3-VL-8B encoder. A single-file or GGUF transformer has + neither, so it needs a standalone VAE and encoder. + """ + + model: ModelIdentifierField = InputField( + description=FieldDescriptions.qwen_image_2_1_model, + input=Input.Direct, + ui_model_base=BaseModelType.QwenImage21, + ui_model_type=ModelType.Main, + title="Transformer", + ) + vae_model: Optional[ModelIdentifierField] = InputField( + default=None, + description="Standalone Qwen-Image-2.1 VAE. If not provided, the VAE is loaded from the diffusers model.", + input=Input.Direct, + ui_model_base=accepted_vae_bases(BaseModelType.QwenImage21), + ui_model_type=ModelType.VAE, + title="VAE", + ) + qwen3_vl_encoder_model: Optional[ModelIdentifierField] = InputField( + default=None, + description="Standalone Qwen3-VL 8B encoder. If not provided, the encoder is loaded from the diffusers model.", + input=Input.Direct, + # Base `any` excludes MiniMax H3's truncated Qwen3-VL-32B, which shares this model type. The 4B encoder + # Krea-2 uses is still offered; `invoke` refuses it by its variant. + ui_model_base=BaseModelType.Any, + ui_model_type=ModelType.Qwen3VLEncoder, + title="Qwen3-VL Encoder", + ) + + def invoke(self, context: InvocationContext) -> QwenImage21ModelLoaderOutput: + main_config = context.models.get_config(self.model) + if main_config.base is not BaseModelType.QwenImage21 or main_config.type is not ModelType.Main: + raise ValueError(f"Model '{main_config.name}' is not a Qwen-Image-2.1 main model.") + + transformer = self.model.model_copy(update={"submodel_type": SubModelType.Transformer}) + + if self.vae_model is not None: + vae_config = context.models.get_config(self.vae_model) + if vae_config.type is not ModelType.VAE or not accepts_vae(BaseModelType.QwenImage21, vae_config.base): + raise ValueError( + f"VAE '{vae_config.name}' is not a Qwen-Image-2.1 VAE. Qwen-Image-2.1 decodes 64 latent " + "channels into RGBA with its own VAE." + ) + vae = self.vae_model.model_copy(update={"submodel_type": SubModelType.VAE}) + else: + self._require_diffusers(main_config.name, main_config.format, "VAE") + vae = self.model.model_copy(update={"submodel_type": SubModelType.VAE}) + + if self.qwen3_vl_encoder_model is not None: + encoder_config = context.models.get_config(self.qwen3_vl_encoder_model) + encoder_variant = getattr(encoder_config, "variant", None) + if ( + encoder_config.type is not ModelType.Qwen3VLEncoder + or encoder_variant is not Qwen3VLVariantType.Qwen3VL_8B + ): + raise ValueError( + f"'{encoder_config.name}' is the Qwen3-VL {variant_label(encoder_variant)} encoder. " + "Qwen-Image-2.1 conditions on the 8B one (hidden size 4096)." + ) + tokenizer = self.qwen3_vl_encoder_model.model_copy(update={"submodel_type": SubModelType.Tokenizer}) + text_encoder = self.qwen3_vl_encoder_model.model_copy(update={"submodel_type": SubModelType.TextEncoder}) + else: + self._require_diffusers(main_config.name, main_config.format, "Qwen3-VL encoder") + tokenizer = self.model.model_copy(update={"submodel_type": SubModelType.Tokenizer}) + text_encoder = self.model.model_copy(update={"submodel_type": SubModelType.TextEncoder}) + + return QwenImage21ModelLoaderOutput( + transformer=TransformerField(transformer=transformer, loras=[]), + qwen3_vl_encoder=Qwen3VLEncoderField(tokenizer=tokenizer, text_encoder=text_encoder, loras=[]), + vae=VAEField(vae=vae), + ) + + @staticmethod + def _require_diffusers(name: str, model_format: ModelFormat, component: str) -> None: + if model_format is not ModelFormat.Diffusers: + raise ValueError( + f"'{name}' is a {model_format.value} transformer with no {component} of its own. " + f"Select a standalone {component}, or use the diffusers model." + ) diff --git a/invokeai/app/invocations/text_encoder/qwen_image_2_1_text_encoder.py b/invokeai/app/invocations/text_encoder/qwen_image_2_1_text_encoder.py new file mode 100644 index 00000000000..0bea270aa49 --- /dev/null +++ b/invokeai/app/invocations/text_encoder/qwen_image_2_1_text_encoder.py @@ -0,0 +1,56 @@ +import torch + +from invokeai.app.invocations.baseinvocation import BaseInvocation, Classification, invocation +from invokeai.app.invocations.fields import FieldDescriptions, Input, InputField, UIComponent +from invokeai.app.invocations.model import Qwen3VLEncoderField +from invokeai.app.invocations.primitives import QwenImage21ConditioningOutput +from invokeai.app.services.shared.invocation_context import InvocationContext +from invokeai.backend.model_manager.load.model_cache.utils import get_effective_device +from invokeai.backend.quantization.dequantizing_linear import peak_dequant_transient_bytes +from invokeai.backend.qwen_image_2_1.text_encoding import encode_prompt +from invokeai.backend.stable_diffusion.diffusion.conditioning_data import ( + ConditioningFieldData, + QwenImage21ConditioningInfo, +) +from invokeai.backend.util.devices import TorchDevice + + +@invocation( + "qwen_image_2_1_text_encoder", + title="Prompt - Qwen-Image-2.1", + tags=["prompt", "conditioning", "qwen_image_2_1", "qwen-image-2.1"], + category="conditioning", + version="1.0.0", + classification=Classification.Prototype, + idle_gpu_offloadable=True, +) +class QwenImage21TextEncoderInvocation(BaseInvocation): + """Encodes a text prompt for Qwen-Image-2.1 with its Qwen3-VL-8B encoder.""" + + prompt: str = InputField(description="Text prompt describing the desired image.", ui_component=UIComponent.Textarea) + qwen3_vl_encoder: Qwen3VLEncoderField = InputField( + title="Qwen3-VL Encoder", description=FieldDescriptions.qwen3_vl_encoder, input=Input.Connection + ) + + @torch.no_grad() + def invoke(self, context: InvocationContext) -> QwenImage21ConditioningOutput: + tokenizer_info = context.models.load(self.qwen3_vl_encoder.tokenizer) + text_encoder_info = context.models.load(self.qwen3_vl_encoder.text_encoder) + # A GGUF or int8 encoder dequantizes one layer at a time; that transient is the working memory. + dequant_bytes = peak_dequant_transient_bytes( + text_encoder_info.model, TorchDevice.choose_bfloat16_safe_dtype(text_encoder_info.compute_device) + ) + + context.util.signal_progress("Running Qwen3-VL text encoder") + with ( + tokenizer_info as tokenizer, + text_encoder_info.model_on_device(working_mem_bytes=dequant_bytes) as ( + _, + text_encoder, + ), + ): + embeds = encode_prompt(text_encoder, tokenizer, self.prompt, get_effective_device(text_encoder)) + + conditioning = QwenImage21ConditioningInfo(prompt_embeds=embeds.detach().cpu()) + name = context.conditioning.save(ConditioningFieldData(conditionings=[conditioning])) + return QwenImage21ConditioningOutput.build(name) diff --git a/invokeai/app/invocations/vae/qwen_image_2_1_image_to_latents.py b/invokeai/app/invocations/vae/qwen_image_2_1_image_to_latents.py new file mode 100644 index 00000000000..991e744184d --- /dev/null +++ b/invokeai/app/invocations/vae/qwen_image_2_1_image_to_latents.py @@ -0,0 +1,78 @@ +import torch +from PIL import Image as PILImage + +from invokeai.app.invocations.baseinvocation import BaseInvocation, Classification, invocation +from invokeai.app.invocations.fields import ( + FieldDescriptions, + ImageField, + Input, + InputField, + LatentsField, + WithBoard, + WithMetadata, +) +from invokeai.app.invocations.model import VAEField +from invokeai.app.invocations.primitives import LatentsOutput +from invokeai.app.services.shared.invocation_context import InvocationContext +from invokeai.backend.qwen_image_2_1.vae import SPATIAL_SCALE, choose_tile_size, to_vae_input, working_memory_bytes +from invokeai.backend.util.devices import TorchDevice +from invokeai.backend.util.qwen_image_vae import patch_qwen_image_vae_tiling + +# The VAE downscales 16x and the transformer reads latents in 2x2 slots. +_GRID = 32 + + +@invocation( + "qwen_image_2_1_i2l", + title="Image to Latents - Qwen-Image-2.1", + tags=["image", "latents", "vae", "i2l", "qwen_image_2_1"], + category="image", + version="1.0.0", + classification=Classification.Prototype, +) +class QwenImage21ImageToLatentsInvocation(BaseInvocation, WithMetadata, WithBoard): + """Encodes an image into Qwen-Image-2.1 latents. The image is encoded opaque; its alpha is not read.""" + + image: ImageField = InputField(description="The image to encode.") + vae: VAEField = InputField(description=FieldDescriptions.vae, input=Input.Connection) + tiled: bool = InputField(default=False, description=FieldDescriptions.tiled) + tile_size: int = InputField(default=0, ge=0, multiple_of=16, description=FieldDescriptions.vae_tile_size) + + @torch.no_grad() + def invoke(self, context: InvocationContext) -> LatentsOutput: + image = context.images.get_pil(self.image.image_name) + # Crop-free resize onto the 32px grid the transformer needs, as the canvas sizes its own images. + width, height = image.width // _GRID * _GRID, image.height // _GRID * _GRID + if width == 0 or height == 0: + raise ValueError(f"Qwen-Image-2.1 encodes images of at least {_GRID}x{_GRID}; this one is {image.size}.") + if (width, height) != image.size: + image = image.resize((width, height), resample=PILImage.LANCZOS) + + vae_info = context.models.load(self.vae.vae) + device = vae_info.compute_device + config = context.config.get() + element_size = next(vae_info.model.parameters()).element_size() + # Encodes are tiled up front like decodes: priced like the decoder, an untiled 2048x2048 canvas box would + # ask for ~32 GiB. + tile_size = choose_tile_size( + height, + width, + element_size, + device, + tiled=self.tiled or config.force_tiled_decode, + tile_size=self.tile_size, + auto_tile=config.auto_tiled_decode, + ) + working_memory = working_memory_bytes(height, width, tile_size, element_size) + + with vae_info.model_on_device(working_mem_bytes=working_memory) as (_, vae): + pixels = to_vae_input(image).to(device=device, dtype=vae.dtype).unsqueeze(2) + with torch.inference_mode(), patch_qwen_image_vae_tiling(vae, tile_size, SPATIAL_SCALE): + z = vae.encode(pixels).latent_dist.mode().float()[:, :, 0] + mean = torch.tensor(vae.config.latents_mean, device=z.device).view(1, -1, 1, 1) + std = torch.tensor(vae.config.latents_std, device=z.device).view(1, -1, 1, 1) + latents = ((z - mean) / std).cpu() + + TorchDevice.empty_cache() + name = context.tensors.save(tensor=latents) + return LatentsOutput(latents=LatentsField(latents_name=name, seed=None), width=width, height=height) diff --git a/invokeai/app/invocations/vae/qwen_image_2_1_latents_to_image.py b/invokeai/app/invocations/vae/qwen_image_2_1_latents_to_image.py new file mode 100644 index 00000000000..eb1a3d6e6a5 --- /dev/null +++ b/invokeai/app/invocations/vae/qwen_image_2_1_latents_to_image.py @@ -0,0 +1,67 @@ +import torch + +from invokeai.app.invocations.baseinvocation import BaseInvocation, Classification, invocation +from invokeai.app.invocations.fields import FieldDescriptions, Input, InputField, LatentsField, WithBoard, WithMetadata +from invokeai.app.invocations.model import VAEField +from invokeai.app.invocations.primitives import ImageOutput +from invokeai.app.services.shared.invocation_context import InvocationContext +from invokeai.backend.qwen_image_2_1.vae import SPATIAL_SCALE, choose_tile_size, to_image, working_memory_bytes +from invokeai.backend.util.devices import TorchDevice +from invokeai.backend.util.qwen_image_vae import patch_qwen_image_vae_tiling + + +@invocation( + "qwen_image_2_1_l2i", + title="Latents to Image - Qwen-Image-2.1", + tags=["latents", "image", "vae", "l2i", "qwen_image_2_1"], + category="latents", + version="1.0.0", + classification=Classification.Prototype, +) +class QwenImage21LatentsToImageInvocation(BaseInvocation, WithMetadata, WithBoard): + """Decodes Qwen-Image-2.1 latents into an image. Opaque results are saved as RGB, transparent ones as RGBA.""" + + latents: LatentsField = InputField(description=FieldDescriptions.latents, input=Input.Connection) + vae: VAEField = InputField(description=FieldDescriptions.vae, input=Input.Connection) + tiled: bool = InputField(default=False, description=FieldDescriptions.tiled) + # 0 means "pick for the device": the largest of 1024/768/512 that fits. Small tiles leave visible seams. + tile_size: int = InputField(default=0, ge=0, multiple_of=16, description=FieldDescriptions.vae_tile_size) + + @torch.no_grad() + def invoke(self, context: InvocationContext) -> ImageOutput: + latents = context.tensors.load(self.latents.latents_name) + if latents.dim() == 5: + latents = latents.squeeze(2) + height, width = latents.shape[-2] * SPATIAL_SCALE, latents.shape[-1] * SPATIAL_SCALE + + vae_info = context.models.load(self.vae.vae) + device = vae_info.compute_device + config = context.config.get() + element_size = next(vae_info.model.parameters()).element_size() + tile_size = choose_tile_size( + height, + width, + element_size, + device, + tiled=self.tiled or config.force_tiled_decode, + tile_size=self.tile_size, + auto_tile=config.auto_tiled_decode, + ) + working_memory = working_memory_bytes(height, width, tile_size, element_size) + + with vae_info.model_on_device(working_mem_bytes=working_memory) as (_, vae): + context.util.signal_progress("Running VAE") + # Denormalized in the VAE's dtype, as the pipeline does: the latents cast first, the float32 statistics + # cast to them, so a bf16 decode reads the same input as the pipeline's. The device is the VAE's + # configured one, not the residency of its weights, which partial loading may have moved to the CPU. + z = latents.to(device=device, dtype=vae.dtype).unsqueeze(2) + mean = torch.tensor(vae.config.latents_mean).view(1, -1, 1, 1, 1).to(device, z.dtype) + std = torch.tensor(vae.config.latents_std).view(1, -1, 1, 1, 1).to(device, z.dtype) + z = z * std + mean + TorchDevice.empty_cache() + with torch.inference_mode(), patch_qwen_image_vae_tiling(vae, tile_size, SPATIAL_SCALE): + decoded = vae.decode(z, return_dict=False)[0][0, :, 0] + image = to_image(decoded) + + TorchDevice.empty_cache() + return ImageOutput.build(context.images.save(image=image)) diff --git a/invokeai/app/services/model_records/model_records_base.py b/invokeai/app/services/model_records/model_records_base.py index 655cadfe89b..ed454d9fc8f 100644 --- a/invokeai/app/services/model_records/model_records_base.py +++ b/invokeai/app/services/model_records/model_records_base.py @@ -37,6 +37,7 @@ Qwen3VariantType, Qwen3VLVariantType, Qwen35VariantType, + QwenImage21VariantType, QwenImageVariantType, SchedulerPredictionType, WanLoRAVariantType, @@ -144,6 +145,7 @@ def validate_source_url(cls, v: Any) -> Optional[str]: | Qwen35VariantType | AnimaVariantType | Krea2VariantType + | QwenImage21VariantType | MiniMaxH3VariantType | LTX2VariantType | MistralVariantType diff --git a/invokeai/backend/architectures/defs/qwen_image_2_1.py b/invokeai/backend/architectures/defs/qwen_image_2_1.py new file mode 100644 index 00000000000..0a523835091 --- /dev/null +++ b/invokeai/backend/architectures/defs/qwen_image_2_1.py @@ -0,0 +1,40 @@ +"""What the qwen-image-2-1 architecture declares.""" + +from invokeai.backend.architectures.facets.conditioning import ConditioningFacet +from invokeai.backend.architectures.facets.default_settings import DefaultSettingsFacet +from invokeai.backend.architectures.facets.features import FeaturesFacet, NegativePrompt +from invokeai.backend.architectures.facets.latent_space import QWEN_IMAGE21_64, LatentSpaceFacet +from invokeai.backend.architectures.facets.modality import ModalityFacet +from invokeai.backend.architectures.facets.variant import VariantFacet +from invokeai.backend.architectures.registry import register +from invokeai.backend.model_manager.configs.default_settings import MainModelDefaultSettings +from invokeai.backend.model_manager.taxonomy import BaseModelType, ModelType, QwenImage21VariantType +from invokeai.backend.stable_diffusion.diffusion.conditioning_data import QwenImage21ConditioningInfo + +register( + BaseModelType.QwenImage21, + LatentSpaceFacet(QWEN_IMAGE21_64), + ConditioningFacet(QwenImage21ConditioningInfo), + DefaultSettingsFacet( + { + # Qwen-Image-2.1-Turbo's model card: 8 steps on the schedule the checkpoint ships, CFG 1. + QwenImage21VariantType.Turbo: MainModelDefaultSettings( + scheduler="euler", steps=8, cfg_scale=1.0, width=1024, height=1024 + ), + # Qwen-Image-2.1's model card and pipeline defaults: 40 steps, sampled without guidance. The + # card shows 2K sizes, but 1024x1024 is the pipeline's default and roughly six times faster. + None: MainModelDefaultSettings(scheduler="euler", steps=40, cfg_scale=1.0, width=1024, height=1024), + } + ), + ModalityFacet(frozenset({"txt2img", "img2img", "inpaint", "outpaint"}), metadata_slug="qwen_image_2_1"), + FeaturesFacet( + # True CFG only runs when a negative prompt is given and the scale is above 1. + negative_prompt=NegativePrompt(visible=True, usage="cfg-gated"), + # The VAE downscales 16x and a VL image slot covers 2x2 latents, so sizes are multiples of 32. + dimension_grid=32, + guidance_label="CFG", + scheduler_set="flow", + ), + # Values are qwen_image_21_* because variant strings resolve without the base and must be unique. + VariantFacet({ModelType.Main: QwenImage21VariantType}), +) diff --git a/invokeai/backend/architectures/facets/latent_space.py b/invokeai/backend/architectures/facets/latent_space.py index df3d6403eec..fbe7c7e78fa 100644 --- a/invokeai/backend/architectures/facets/latent_space.py +++ b/invokeai/backend/architectures/facets/latent_space.py @@ -333,6 +333,77 @@ [-0.0008, -0.0017, -0.0007], ] LTX2_LATENT_RGB_BIAS = [-0.2223, -0.2864, -0.2917] +# Qwen-Image-2.1's RGBA VAE: 64 latent channels, 16x spatial downscale. Least-squares fit of +# NORMALIZED posterior-mean latents against 16x-downscaled RGB in [-1, 1], over 9 real images +# plus synthetic gradients/flat patches, encoded opaque (alpha 1) with the released VAE in fp32 +# (fit rms 0.100, 0.118 on a held-out image). The preview shows colour only; alpha is not projected. +QWEN_IMAGE21_LATENT_RGB_FACTORS = [ + [-0.0241, -0.0126, -0.0179], + [-0.0123, 0.0152, 0.0080], + [0.0557, 0.0438, -0.0390], + [0.0253, 0.0674, 0.0062], + [0.0064, 0.0214, 0.0078], + [0.0038, 0.0165, 0.0104], + [-0.0076, 0.0111, 0.0185], + [-0.0375, -0.0645, -0.0483], + [0.0310, -0.0063, -0.0011], + [-0.1367, -0.0179, 0.0090], + [0.0050, -0.0204, 0.0005], + [-0.0251, 0.0056, -0.0330], + [0.0069, -0.0437, -0.0007], + [-0.0120, -0.0040, -0.0377], + [0.0185, 0.0287, 0.0288], + [0.0238, -0.0015, 0.0163], + [0.0269, 0.0072, 0.0102], + [-0.0137, -0.0161, -0.0297], + [-0.0280, -0.0076, -0.0115], + [-0.0299, -0.0507, -0.0481], + [0.0118, 0.0032, 0.0104], + [0.0090, 0.0326, 0.0253], + [0.0303, 0.0019, 0.0622], + [-0.0035, 0.0042, 0.0099], + [-0.0918, 0.0112, 0.0169], + [-0.0234, -0.0013, 0.0812], + [-0.0021, -0.0039, -0.0248], + [-0.0166, 0.0120, -0.0527], + [-0.0108, -0.0054, -0.0087], + [0.0072, 0.0181, 0.0215], + [0.0162, 0.0083, 0.0289], + [-0.0305, -0.0442, 0.0057], + [0.0127, -0.0008, 0.0086], + [-0.0360, 0.0189, -0.0351], + [0.0870, 0.1157, 0.1429], + [0.0005, -0.0050, 0.0068], + [0.0004, 0.0060, -0.0103], + [0.0165, 0.0159, 0.0122], + [-0.0102, -0.0156, 0.0057], + [0.0401, -0.0026, 0.0058], + [0.0074, 0.0291, 0.0076], + [0.1393, 0.0479, 0.0658], + [-0.0061, 0.0031, -0.0132], + [0.0463, 0.0128, 0.0126], + [0.0104, 0.0033, -0.0008], + [0.0088, -0.0214, -0.0111], + [0.0170, -0.0225, -0.1466], + [-0.1310, -0.0702, -0.0858], + [0.0044, 0.0173, 0.0229], + [0.0364, 0.1623, 0.0673], + [-0.0194, -0.0099, -0.0460], + [0.0039, -0.0078, 0.0006], + [-0.0129, -0.0207, 0.0017], + [0.0542, -0.0377, -0.1196], + [0.0195, -0.0066, 0.0132], + [-0.0364, 0.0424, -0.0571], + [0.0010, 0.0207, 0.0023], + [-0.0370, -0.0271, -0.0288], + [0.0076, -0.0014, -0.0002], + [-0.0016, -0.0063, 0.0191], + [0.0111, 0.0053, 0.0142], + [-0.0280, -0.0277, -0.0318], + [-0.0034, -0.0083, -0.0081], + [0.0078, -0.0005, -0.0037], +] +QWEN_IMAGE21_LATENT_RGB_BIAS = [-0.1543, -0.1408, -0.2869] # Wan 2.2 TI2V-5B uses Wan2.2-VAE with 48 latent channels and 16x spatial downscale. # Factors come from ComfyUI's Wan22 latent_format. WAN22_LATENT_RGB_FACTORS = [ @@ -514,6 +585,14 @@ def preview(self, sample: torch.Tensor) -> Image.Image: ) """LTX-2.5's video VAE.""" +QWEN_IMAGE21_64 = LatentSpace( + channels=64, + spatial_compression=16, + rgb_factors=QWEN_IMAGE21_LATENT_RGB_FACTORS, + rgb_bias=QWEN_IMAGE21_LATENT_RGB_BIAS, +) +"""Qwen-Image-2.1's AutoencoderKLQwenImage21 (RGBA).""" + WAN22_48 = LatentSpace( channels=48, spatial_compression=16, diff --git a/invokeai/backend/model_manager/configs/factory.py b/invokeai/backend/model_manager/configs/factory.py index ee0acb001fe..27553c2200c 100644 --- a/invokeai/backend/model_manager/configs/factory.py +++ b/invokeai/backend/model_manager/configs/factory.py @@ -89,6 +89,7 @@ Main_Checkpoint_Krea2_Config, Main_Checkpoint_LTX2_Config, Main_Checkpoint_MiniMaxH3_Config, + Main_Checkpoint_QwenImage21_Config, Main_Checkpoint_QwenImage_Config, Main_Checkpoint_SD1_Config, Main_Checkpoint_SD2_Config, @@ -104,6 +105,7 @@ Main_Diffusers_Krea2_Config, Main_Diffusers_LTX2_Config, Main_Diffusers_MiniMaxH3_Config, + Main_Diffusers_QwenImage21_Config, Main_Diffusers_QwenImage_Config, Main_Diffusers_SD1_Config, Main_Diffusers_SD2_Config, @@ -117,6 +119,7 @@ Main_GGUF_FLUX_Config, Main_GGUF_Ideogram4_Config, Main_GGUF_Krea2_Config, + Main_GGUF_QwenImage21_Config, Main_GGUF_QwenImage_Config, Main_GGUF_Wan_Config, Main_GGUF_ZImage_Config, @@ -183,6 +186,7 @@ VAE_Checkpoint_Anima_Config, VAE_Checkpoint_Flux2_Config, VAE_Checkpoint_FLUX_Config, + VAE_Checkpoint_QwenImage21_Config, VAE_Checkpoint_QwenImage_Config, VAE_Checkpoint_SD1_Config, VAE_Checkpoint_SD2_Config, @@ -191,6 +195,7 @@ VAE_Checkpoint_Wan_Config, VAE_Diffusers_Flux2_Config, VAE_Diffusers_FLUX_Config, + VAE_Diffusers_QwenImage21_Config, VAE_Diffusers_SD1_Config, VAE_Diffusers_SD3_Config, VAE_Diffusers_SDXL_Config, @@ -403,6 +408,7 @@ def has_model_export(module: Any, name: Any, expected_bases: tuple[type, ...]) - Annotated[Main_Diffusers_Flux2_Config, Main_Diffusers_Flux2_Config.get_tag()], Annotated[Main_Diffusers_CogView4_Config, Main_Diffusers_CogView4_Config.get_tag()], Annotated[Main_Diffusers_QwenImage_Config, Main_Diffusers_QwenImage_Config.get_tag()], + Annotated[Main_Diffusers_QwenImage21_Config, Main_Diffusers_QwenImage21_Config.get_tag()], Annotated[Main_Diffusers_Wan_Config, Main_Diffusers_Wan_Config.get_tag()], Annotated[Main_Diffusers_ZImage_Config, Main_Diffusers_ZImage_Config.get_tag()], Annotated[Main_Diffusers_ErnieImage_Config, Main_Diffusers_ErnieImage_Config.get_tag()], @@ -420,6 +426,7 @@ def has_model_export(module: Any, name: Any, expected_bases: tuple[type, ...]) - Annotated[Main_Checkpoint_Flux2_Config, Main_Checkpoint_Flux2_Config.get_tag()], Annotated[Main_Checkpoint_FLUX_Config, Main_Checkpoint_FLUX_Config.get_tag()], Annotated[Main_Checkpoint_QwenImage_Config, Main_Checkpoint_QwenImage_Config.get_tag()], + Annotated[Main_Checkpoint_QwenImage21_Config, Main_Checkpoint_QwenImage21_Config.get_tag()], Annotated[Main_Checkpoint_Wan_Config, Main_Checkpoint_Wan_Config.get_tag()], Annotated[Main_Checkpoint_ZImage_Config, Main_Checkpoint_ZImage_Config.get_tag()], Annotated[Main_Checkpoint_ErnieImage_Config, Main_Checkpoint_ErnieImage_Config.get_tag()], @@ -435,6 +442,7 @@ def has_model_export(module: Any, name: Any, expected_bases: tuple[type, ...]) - Annotated[Main_GGUF_Flux2_Config, Main_GGUF_Flux2_Config.get_tag()], Annotated[Main_GGUF_FLUX_Config, Main_GGUF_FLUX_Config.get_tag()], Annotated[Main_GGUF_QwenImage_Config, Main_GGUF_QwenImage_Config.get_tag()], + Annotated[Main_GGUF_QwenImage21_Config, Main_GGUF_QwenImage21_Config.get_tag()], Annotated[Main_GGUF_Wan_Config, Main_GGUF_Wan_Config.get_tag()], Annotated[Main_GGUF_ZImage_Config, Main_GGUF_ZImage_Config.get_tag()], Annotated[Main_GGUF_Krea2_Config, Main_GGUF_Krea2_Config.get_tag()], @@ -463,6 +471,7 @@ def has_model_export(module: Any, name: Any, expected_bases: tuple[type, ...]) - Annotated[VAE_Checkpoint_Wan_Config, VAE_Checkpoint_Wan_Config.get_tag()], Annotated[VAE_Checkpoint_QwenImage_Config, VAE_Checkpoint_QwenImage_Config.get_tag()], Annotated[VAE_Checkpoint_Anima_Config, VAE_Checkpoint_Anima_Config.get_tag()], + Annotated[VAE_Checkpoint_QwenImage21_Config, VAE_Checkpoint_QwenImage21_Config.get_tag()], # VAE - diffusers format Annotated[VAE_Diffusers_SD1_Config, VAE_Diffusers_SD1_Config.get_tag()], Annotated[VAE_Diffusers_SDXL_Config, VAE_Diffusers_SDXL_Config.get_tag()], @@ -470,6 +479,7 @@ def has_model_export(module: Any, name: Any, expected_bases: tuple[type, ...]) - Annotated[VAE_Diffusers_SD3_Config, VAE_Diffusers_SD3_Config.get_tag()], Annotated[VAE_Diffusers_Flux2_Config, VAE_Diffusers_Flux2_Config.get_tag()], Annotated[VAE_Diffusers_Wan_Config, VAE_Diffusers_Wan_Config.get_tag()], + Annotated[VAE_Diffusers_QwenImage21_Config, VAE_Diffusers_QwenImage21_Config.get_tag()], # PiD Decoder - checkpoint format Annotated[PiDDecoder_Checkpoint_FLUX_Config, PiDDecoder_Checkpoint_FLUX_Config.get_tag()], Annotated[PiDDecoder_Checkpoint_Flux2_Config, PiDDecoder_Checkpoint_Flux2_Config.get_tag()], diff --git a/invokeai/backend/model_manager/configs/lora.py b/invokeai/backend/model_manager/configs/lora.py index 3f7faf16e6c..bf51a9734e6 100644 --- a/invokeai/backend/model_manager/configs/lora.py +++ b/invokeai/backend/model_manager/configs/lora.py @@ -864,7 +864,14 @@ def _validate_looks_like_lora(cls, mod: ModelOnDisk) -> None: }, ) - if has_qwen_ie_keys and has_lora_suffix and not has_z_image_keys and not has_krea2_keys and not has_flux_keys: + if ( + has_qwen_ie_keys + and has_lora_suffix + and not has_z_image_keys + and not has_krea2_keys + and not has_flux_keys + and not _has_qwen_image21_lora_keys(state_dict) + ): return raise NotAMatchError("model does not match Qwen Image LoRA heuristics") @@ -891,11 +898,44 @@ def _get_base_or_raise(cls, mod: ModelOnDisk) -> BaseModelType: }, ) - if has_qwen_ie_keys and not has_z_image_keys and not has_krea2_keys and not has_flux_keys: + if ( + has_qwen_ie_keys + and not has_z_image_keys + and not has_krea2_keys + and not has_flux_keys + and not _has_qwen_image21_lora_keys(state_dict) + ): return BaseModelType.QwenImage raise NotAMatchError("model does not look like a Qwen Image Edit LoRA") +_QWEN_IMAGE21_HIDDEN_SIZE = 4096 +_QWEN_IMAGE21_MLP_MARKERS = ("img_mlp.gate_up.", "img_mlp.gate_layer.", "img_mlp_gate_up", "img_mlp_gate_layer") +_ATTENTION_PROJECTIONS = ("attn.to_q.", "attn.to_k.", "attn.to_v.", "attn_to_q.", "attn_to_k.", "attn_to_v.") + + +def _has_qwen_image21_lora_keys(state_dict: dict[str | int, Any]) -> bool: + """True if the state dict is a Qwen-Image-2.1 LoRA, whose module names otherwise overlap Qwen-Image's. + + Its gated MLP (`gate_layer` in diffusers/PEFT, ComfyUI's fused `gate_up`, and their Kohya spellings) is + Qwen-Image-2.1's alone. An attention-only LoRA -- PEFT's usual `to_q/to_k/to_v` targets -- names nothing + Qwen-Image lacks, so its width decides: the projections read 4096 features here and 3072 in Qwen-Image. + """ + for key, value in state_dict.items(): + if not isinstance(key, str): + continue + if any(marker in key for marker in _QWEN_IMAGE21_MLP_MARKERS): + return True + if ( + key.endswith((".lora_A.weight", ".lora_down.weight")) + and any(projection in key for projection in _ATTENTION_PROJECTIONS) + and len(getattr(value, "shape", ())) == 2 + and value.shape[1] == _QWEN_IMAGE21_HIDDEN_SIZE + ): + return True + return False + + def _has_krea2_lora_keys(state_dict: dict[str | int, Any]) -> bool: """True if the state dict targets Krea-2's distinctive modules. diff --git a/invokeai/backend/model_manager/configs/main.py b/invokeai/backend/model_manager/configs/main.py index 47771221bde..3e4aeaac9bf 100644 --- a/invokeai/backend/model_manager/configs/main.py +++ b/invokeai/backend/model_manager/configs/main.py @@ -55,6 +55,7 @@ ModelRepoVariant, ModelType, ModelVariantType, + QwenImage21VariantType, QwenImageVariantType, SchedulerPredictionType, SubModelType, @@ -764,6 +765,8 @@ def from_model_on_disk(cls, mod: ModelOnDisk, override_fields: dict[str, Any]) - cls._validate_looks_like_gguf_quantized(mod) + cls._validate_has_flux_blocks(mod) + cls._validate_is_not_flux2(mod) variant = override_fields.pop("variant", None) or cls._get_variant_or_raise(mod) @@ -796,6 +799,17 @@ def _validate_looks_like_gguf_quantized(cls, mod: ModelOnDisk) -> None: if not has_ggml_tensors: raise NotAMatchError("state dict does not look like GGUF quantized") + @classmethod + def _validate_has_flux_blocks(cls, mod: ModelOnDisk) -> None: + # `_has_main_keys` accepts any ComfyUI-prefixed transformer, and `_get_flux_variant` then calls + # anything with 64 input channels and no guidance embedding Schnell: a Qwen-Image-2.1 GGUF was + # filed as FLUX.1 Schnell that way. FLUX.1 GGUFs keep BFL's `double_blocks` naming. + if not any( + isinstance(k, str) and _strip_comfyui_key_prefix(k).startswith("double_blocks.") + for k in mod.load_state_dict() + ): + raise NotAMatchError("state dict has no FLUX double_blocks") + @classmethod def _validate_is_not_flux2(cls, mod: ModelOnDisk) -> None: """Validate that this is NOT a FLUX.2 model.""" @@ -1529,6 +1543,69 @@ def _ideogram4_branch_or_raise(mod: ModelOnDisk) -> Ideogram4Branch: return branch +def _raise_for_unsupported_comfy_quantization(mod: ModelOnDisk, state_dict: dict[str | int, Any], family: str) -> None: + """Refuse the ComfyUI quantization schemes the Ideogram 4 and Qwen-Image-2.1 single-file loaders cannot build. + + `InvalidMatchError`, not `NotAMatchError`: the file *is* a `family` transformer, so the + right outcome is a refusal the installer shows, not a fall-through to `Unknown_Config` that + registers it as a model nothing can load. + + Three of them. torchao's serialized tensor subclasses (unsloth's Qwen-Image-2.1 FP8 build) store each quantized + weight as `._weight_qdata` beside its scale, with no `.weight` the transformer could load. Only + a family whose fingerprint reads unquantized tensors gets here with such a file: Qwen-Image-2.1 does, while an + Ideogram 4 build that quantized its fingerprint Linears would not match at all. + + nvfp4 packs two codes per byte, so its uint8 weights are indistinguishable from + the `comfy_quant` markers every repack carries -- including the two supported ones; the + per-tensor `weight_scale_2` is what only nvfp4 writes. + + And int8 weights *without* a readable `int8_tensorwise` marker: the loader refuses those + (`reject_unmarked_int8_weights`), because a rotated weight loaded as if it were not one + generates noise. Refusing them here too is what keeps that refusal at install time -- an + `int8_dynamic` repack would otherwise register as a multi-GiB model, pull in its + starter dependencies, and fail at the first render. + + The markers come from the file's header rather than from `state_dict`: identification loads + tensors on the meta device, so it has every dtype and shape but no bytes to parse. That read + is a header parse plus one seek per marker, and it only happens for a file that has int8 + weights to explain in the first place. + """ + if any(isinstance(key, str) and key.endswith("._weight_qdata") for key in state_dict): + raise InvalidMatchError( + f"this {family} transformer is saved as torchao-quantized tensors (as unsloth's FP8 build is), which " + "is not supported. Install the bf16, fp8_scaled or int8_convrot build, or a GGUF, instead." + ) + if any(isinstance(key, str) and key.endswith(".weight_scale_2") for key in state_dict): + raise InvalidMatchError( + f"this is an nvfp4-quantized {family} transformer, which is not supported yet. " + "Install the fp8_scaled or int8_convrot build instead." + ) + + int8_weights = sorted( + key + for key, value in state_dict.items() + if isinstance(key, str) and key.endswith(".weight") and getattr(value, "dtype", None) is torch.int8 + ) + if not int8_weights: + return + + try: + markers = read_comfy_quant_markers(mod.path) + except Exception: + # Not readable safetensors, so there are no markers to find and nothing explains the + # int8 weights. The refusal below is the right answer for that file too. + markers = {} + unmarked = [ + key for key in int8_weights if markers.get(key[: -len(".weight")], {}).get("format") != INT8_TENSORWISE_FORMAT + ] + if unmarked: + raise InvalidMatchError( + f"{len(unmarked)} int8 weight(s) in this {family} transformer carry no readable " + f"'{INT8_TENSORWISE_FORMAT}' marker (e.g. '{unmarked[0]}'), so the quantization scheme " + "cannot be identified. Only Comfy-Org's int8_convrot build is supported." + ) + + class Main_Checkpoint_Ideogram4_Config(Checkpoint_Config_Base, Main_Config_Base, Config_Base): """Model config for Ideogram 4 single-file transformer checkpoints (safetensors). @@ -1564,67 +1641,12 @@ def from_model_on_disk(cls, mod: ModelOnDisk, override_fields: dict[str, Any]) - if _has_ggml_tensors(state_dict): raise NotAMatchError("state dict looks like GGUF quantized") - cls._raise_for_unsupported_quantization(mod, state_dict) + _raise_for_unsupported_comfy_quantization(mod, state_dict, "Ideogram 4") branch = override_fields.pop("branch", None) or _ideogram4_branch_or_raise(mod) return cls(**override_fields, branch=branch) - @classmethod - def _raise_for_unsupported_quantization(cls, mod: ModelOnDisk, state_dict: dict[str | int, Any]) -> None: - """Refuse the quantization schemes this loader cannot build. - - `InvalidMatchError`, not `NotAMatchError`: the file *is* an Ideogram 4 transformer, so the - right outcome is a refusal the installer shows, not a fall-through to `Unknown_Config` that - registers it as a model nothing can load. - - Two of them. nvfp4 packs two codes per byte, so its uint8 weights are indistinguishable from - the `comfy_quant` markers every repack carries -- including the two supported ones; the - per-tensor `weight_scale_2` is what only nvfp4 writes. - - And int8 weights *without* a readable `int8_tensorwise` marker: the loader refuses those - (`reject_unmarked_int8_weights`), because a rotated weight loaded as if it were not one - generates noise. Refusing them here too is what keeps that refusal at install time -- a - torchao or `int8_dynamic` repack of this architecture would otherwise register as a 9 GiB - model, pull in its three starter dependencies, and fail at the first render. - - The markers come from the file's header rather than from `state_dict`: identification loads - tensors on the meta device, so it has every dtype and shape but no bytes to parse. That read - is a header parse plus one seek per marker, and it only happens for a file that has int8 - weights to explain in the first place. - """ - if any(isinstance(key, str) and key.endswith(".weight_scale_2") for key in state_dict): - raise InvalidMatchError( - "this is an nvfp4-quantized Ideogram 4 transformer, which is not supported yet. " - "Install the fp8_scaled or int8_convrot build instead." - ) - - int8_weights = sorted( - key - for key, value in state_dict.items() - if isinstance(key, str) and key.endswith(".weight") and getattr(value, "dtype", None) is torch.int8 - ) - if not int8_weights: - return - - try: - markers = read_comfy_quant_markers(mod.path) - except Exception: - # Not readable safetensors, so there are no markers to find and nothing explains the - # int8 weights. The refusal below is the right answer for that file too. - markers = {} - unmarked = [ - key - for key in int8_weights - if markers.get(key[: -len(".weight")], {}).get("format") != INT8_TENSORWISE_FORMAT - ] - if unmarked: - raise InvalidMatchError( - f"{len(unmarked)} int8 weight(s) in this Ideogram 4 transformer carry no readable " - f"'{INT8_TENSORWISE_FORMAT}' marker (e.g. '{unmarked[0]}'), so the quantization scheme " - "cannot be identified. Only Comfy-Org's int8_convrot build is supported." - ) - class Main_GGUF_Ideogram4_Config(Checkpoint_Config_Base, Main_Config_Base, Config_Base): """Model config for GGUF-quantized Ideogram 4 transformers (single-file). @@ -2184,7 +2206,13 @@ def _has_qwen_image_keys(state_dict: dict[str | int, Any]) -> bool: has_img_in = any(k.startswith("img_in.") for k in keys) # Must NOT have context_embedder (which would indicate FLUX) has_context_embedder = any("context_embedder" in k for k in keys) - return has_txt_in and has_txt_norm and has_img_in and not has_context_embedder + return ( + has_txt_in + and has_txt_norm + and has_img_in + and not has_context_embedder + and not _has_qwen_image21_keys(state_dict) + ) # Matches "edit" as a standalone token (delimited by start/end or any non-alphanumeric @@ -2265,6 +2293,120 @@ def from_model_on_disk(cls, mod: ModelOnDisk, override_fields: dict[str, Any]) - return cls(**override_fields, variant=explicit_variant) +_LORA_KEY_SUFFIXES = ( + ".lora_down.weight", + ".lora_up.weight", + ".lora_A.weight", + ".lora_B.weight", + ".dora_scale", + ".alpha", +) + + +def _has_qwen_image21_keys(state_dict: dict[str | int, Any]) -> bool: + """Whether the state dict is a Qwen-Image-2.1 transformer (any layout), and not a LoRA for one. + + Its `txt_in` is a module with its own `text_norm`, where Qwen-Image's is a plain Linear beside a + top-level `txt_norm`. The MLP is gated: diffusers names the halves `gate_layer`/`proj`, ComfyUI fuses + them into `gate_up`. + """ + keys = [_strip_comfyui_key_prefix(k) for k in state_dict.keys() if isinstance(k, str)] + if any(k.endswith(_LORA_KEY_SUFFIXES) for k in keys): + return False + has_text_norm = "txt_in.text_norm.weight" in keys + has_gated_mlp = any(".img_mlp.gate_up." in k or ".img_mlp.gate_layer." in k for k in keys) + has_img_in = any(k.startswith("img_in.") for k in keys) + return has_text_norm and has_gated_mlp and has_img_in + + +def _get_qwen_image21_variant_from_name(name: str) -> QwenImage21VariantType: + """Turbo and Base share every tensor shape, so a single file says which it is by its name only. + + "turbo" anywhere in the name means Turbo (`Qwen-Image-2.1-Turbo`, `qwen_image_2.1_turbo_bf16`); + anything else is the released base model. The model manager can override it. + """ + return QwenImage21VariantType.Turbo if "turbo" in name.lower() else QwenImage21VariantType.Base + + +class Main_Diffusers_QwenImage21_Config(Diffusers_Config_Base, Main_Config_Base, Config_Base): + """Model config for Qwen-Image-2.1 diffusers pipelines.""" + + base: Literal[BaseModelType.QwenImage21] = Field(BaseModelType.QwenImage21) + variant: QwenImage21VariantType = Field() + + @classmethod + def from_model_on_disk(cls, mod: ModelOnDisk, override_fields: dict[str, Any]) -> Self: + raise_if_not_dir(mod) + + raise_for_override_fields(cls, override_fields) + + # The pipeline class implies the base. + raise_for_class_name(common_config_paths(mod.path), {"QwenImage21Pipeline"}) + + variant = override_fields.pop("variant", None) or cls._get_variant(mod) + + repo_variant = override_fields.pop("repo_variant", None) or cls._get_repo_variant_or_raise(mod) + + return cls(**override_fields, variant=variant, repo_variant=repo_variant) + + @classmethod + def _get_variant(cls, mod: ModelOnDisk) -> QwenImage21VariantType: + """Turbo ships the sigma table it was distilled for as `sample_sigmas` in model_index.json.""" + config = get_config_dict_or_raise(mod.path / "model_index.json") + if config.get("sample_sigmas"): + return QwenImage21VariantType.Turbo + return QwenImage21VariantType.Base + + +class Main_Checkpoint_QwenImage21_Config(Checkpoint_Config_Base, Main_Config_Base, Config_Base): + """Model config for Qwen-Image-2.1 single-file transformers (bf16, ComfyUI fp8 scaled or int8 convrot).""" + + base: Literal[BaseModelType.QwenImage21] = Field(default=BaseModelType.QwenImage21) + format: Literal[ModelFormat.Checkpoint] = Field(default=ModelFormat.Checkpoint) + variant: QwenImage21VariantType = Field() + + @classmethod + def from_model_on_disk(cls, mod: ModelOnDisk, override_fields: dict[str, Any]) -> Self: + raise_if_not_file(mod) + + raise_for_override_fields(cls, override_fields) + + sd = mod.load_state_dict() + if not _has_qwen_image21_keys(sd): + raise NotAMatchError("state dict does not look like a Qwen-Image-2.1 transformer") + if _has_ggml_tensors(sd): + raise NotAMatchError("state dict looks like GGUF quantized") + _raise_for_unsupported_comfy_quantization(mod, sd, "Qwen-Image-2.1") + + variant = override_fields.pop("variant", None) or _get_qwen_image21_variant_from_name(mod.path.name) + + return cls(**override_fields, variant=variant) + + +class Main_GGUF_QwenImage21_Config(Checkpoint_Config_Base, Main_Config_Base, Config_Base): + """Model config for GGUF-quantized Qwen-Image-2.1 transformers.""" + + base: Literal[BaseModelType.QwenImage21] = Field(default=BaseModelType.QwenImage21) + format: Literal[ModelFormat.GGUFQuantized] = Field(default=ModelFormat.GGUFQuantized) + variant: QwenImage21VariantType = Field() + + @classmethod + def from_model_on_disk(cls, mod: ModelOnDisk, override_fields: dict[str, Any]) -> Self: + raise_if_not_file(mod) + + raise_for_override_fields(cls, override_fields) + + sd = mod.load_state_dict() + if not _has_qwen_image21_keys(sd): + raise NotAMatchError("state dict does not look like a Qwen-Image-2.1 transformer") + if not _has_ggml_tensors(sd): + raise NotAMatchError("state dict does not look like GGUF quantized") + + variant = override_fields.pop("variant", None) or _get_qwen_image21_variant_from_name(mod.path.name) + + return cls(**override_fields, variant=variant) + + def _has_wan_keys(state_dict: dict[str | int, Any]) -> bool: """Check if state dict contains Wan 2.2 transformer keys. diff --git a/invokeai/backend/model_manager/configs/vae.py b/invokeai/backend/model_manager/configs/vae.py index 4a0f972b67f..bb75ecaca9e 100644 --- a/invokeai/backend/model_manager/configs/vae.py +++ b/invokeai/backend/model_manager/configs/vae.py @@ -119,6 +119,27 @@ def _latent_channels(state_dict: dict[str | int, Any]) -> int | None: return None if weight is None else int(weight.shape[1]) +def _is_qwen_image21_vae(state_dict: dict[str | int, Any]) -> bool: + """Whether the state dict is Qwen-Image-2.1's RGBA VAE (AutoencoderKLQwenImage21), in either layout. + + It decodes 64 latent channels into 4 (RGBA). Its convolutions are 2-D: the diffusers export stores + them as 4-D weights, ComfyUI's Wan-style export as 5-D with a temporal extent of 1. That temporal + extent is what separates the ComfyUI file from a Wan or Anima VAE, whose causal convolutions are 3 deep. + """ + + def shape(key: str) -> tuple[int, ...] | None: + weight = state_dict.get(key) + return None if weight is None else tuple(weight.shape) + + diffusers_in, diffusers_out = shape("decoder.conv_in.weight"), shape("encoder.conv_in.weight") + if diffusers_in is not None and diffusers_out is not None: + return len(diffusers_in) == 4 and diffusers_in[1] == 64 and diffusers_out[1] == 4 + comfy_in, comfy_out = shape("decoder.conv1.weight"), shape("encoder.conv1.weight") + if comfy_in is not None and comfy_out is not None: + return len(comfy_in) == 5 and comfy_in[1] == 64 and comfy_in[2] == 1 and comfy_out[1] == 4 + return False + + def _is_flux2_vae(state_dict: dict[str | int, Any]) -> bool: """Check if state dict is a FLUX.2 VAE (AutoencoderKLFlux2). @@ -193,6 +214,13 @@ def _validate_looks_like_vae(cls, mod: ModelOnDisk) -> None: if _is_qwen_image_vae(state_dict) or _wan_vae_z_dim(state_dict) is not None: raise NotAMatchError("model is a Wan-family VAE, not a standard VAE") + # A latent width no AutoencoderKL family has is not one of these VAEs, whatever its name says. + # Without this, `_get_base_or_raise` falls through to the name and files a 64-channel + # `qwen_image_2.1_vae.safetensors` as SD1 because the name contains "vae". + latent_channels = _latent_channels(state_dict) + if latent_channels is not None and latent_channels not in _VAE_FAMILIES: + raise NotAMatchError(f"{latent_channels} latent channels is not a standard VAE") + @classmethod def _get_base_or_raise(cls, mod: ModelOnDisk, override_fields: dict[str, Any]) -> BaseModelType: # First, try to identify by latent space dimensions (most reliable) @@ -404,7 +432,10 @@ def _has_anima_vae_keys(state_dict: dict[str | int, Any]) -> bool: "decoder.upsamples.", "decoder.middle.", } - return all(any(str(k).startswith(prefix) for k in state_dict) for prefix in required_prefixes) + # Qwen-Image-2.1's ComfyUI export shares these block names; its 64-channel RGBA latent does not. + return all(any(str(k).startswith(prefix) for k in state_dict) for prefix in required_prefixes) and not ( + _is_qwen_image21_vae(state_dict) + ) class VAE_Checkpoint_Anima_Config(Checkpoint_Config_Base, Config_Base): @@ -428,6 +459,45 @@ def from_model_on_disk(cls, mod: ModelOnDisk, override_fields: dict[str, Any]) - return cls(**override_fields) +class VAE_Checkpoint_QwenImage21_Config(Checkpoint_Config_Base, Config_Base): + """Model config for Qwen-Image-2.1 VAE single files (AutoencoderKLQwenImage21, diffusers or ComfyUI layout).""" + + type: Literal[ModelType.VAE] = Field(default=ModelType.VAE) + format: Literal[ModelFormat.Checkpoint] = Field(default=ModelFormat.Checkpoint) + base: Literal[BaseModelType.QwenImage21] = Field(default=BaseModelType.QwenImage21) + cpu_only: bool | None = Field(default=None, description="Whether this model should run on CPU only") + + @classmethod + def from_model_on_disk(cls, mod: ModelOnDisk, override_fields: dict[str, Any]) -> Self: + raise_if_not_file(mod) + + raise_for_override_fields(cls, override_fields) + + if not _is_qwen_image21_vae(mod.load_state_dict()): + raise NotAMatchError("state dict does not look like a Qwen-Image-2.1 VAE") + + return cls(**override_fields) + + +class VAE_Diffusers_QwenImage21_Config(Diffusers_Config_Base, Config_Base): + """Model config for a Qwen-Image-2.1 VAE folder in diffusers format (AutoencoderKLQwenImage21).""" + + type: Literal[ModelType.VAE] = Field(default=ModelType.VAE) + format: Literal[ModelFormat.Diffusers] = Field(default=ModelFormat.Diffusers) + base: Literal[BaseModelType.QwenImage21] = Field(default=BaseModelType.QwenImage21) + cpu_only: bool | None = Field(default=None, description="Whether this model should run on CPU only") + + @classmethod + def from_model_on_disk(cls, mod: ModelOnDisk, override_fields: dict[str, Any]) -> Self: + raise_if_not_dir(mod) + + raise_for_override_fields(cls, override_fields) + + raise_for_class_name(common_config_paths(mod.path), {"AutoencoderKLQwenImage21"}) + + return cls(**override_fields) + + class VAE_Diffusers_Config_Base(Diffusers_Config_Base): """Model config for standalone VAE models (diffusers version).""" diff --git a/invokeai/backend/model_manager/load/model_loaders/qwen_image_2_1.py b/invokeai/backend/model_manager/load/model_loaders/qwen_image_2_1.py new file mode 100644 index 00000000000..f94637da230 --- /dev/null +++ b/invokeai/backend/model_manager/load/model_loaders/qwen_image_2_1.py @@ -0,0 +1,248 @@ +"""Loaders for Qwen-Image-2.1 main models: diffusers pipelines, single-file and GGUF transformers.""" + +from pathlib import Path +from typing import Any, Optional + +import accelerate +import torch +from transformers import AutoTokenizer + +from invokeai.backend.model_manager.checkpoint_prefix import CheckpointPrefix +from invokeai.backend.model_manager.configs.base import Checkpoint_Config_Base, Diffusers_Config_Base +from invokeai.backend.model_manager.configs.factory import AnyModelConfig +from invokeai.backend.model_manager.configs.main import ( + Main_Checkpoint_QwenImage21_Config, + Main_GGUF_QwenImage21_Config, +) +from invokeai.backend.model_manager.load.load_default import ModelLoader, _model_declared_skip_patterns +from invokeai.backend.model_manager.load.model_loader_registry import ModelLoaderRegistry +from invokeai.backend.model_manager.load.model_loaders.generic_diffusers import GenericDiffusersLoader +from invokeai.backend.model_manager.taxonomy import AnyModel, BaseModelType, ModelFormat, ModelType, SubModelType +from invokeai.backend.model_manager.util.qwen3_vl import drop_qwen3vl_visual_tower +from invokeai.backend.quantization.fp8_scaled import ( + attach_fp8_scales, + cast_state_dict, + dequantize_fp8_scaled, + extract_comfy_quant_hints, + extract_fp8_scaled_layers, + parse_quantization_metadata, + read_safetensors_metadata, + split_fp8_scaled_layers, + strip_layer_path_prefix, + warn_on_unattached_scales, +) +from invokeai.backend.quantization.gguf.loaders import gguf_sd_loader, unpack_ggml_at_load +from invokeai.backend.quantization.int8_convrot import ( + drop_unconsumed_quantization_sidecars, + extract_int8_convrot_markers, + install_int8_convrot_layers, + reject_unmarked_int8_weights, + resolve_quantized_module_paths, +) +from invokeai.backend.quantization.load_plan import reserve_for_load +from invokeai.backend.quantization.nvfp4 import pop_nvfp4_layers +from invokeai.backend.qwen_image_2_1.checkpoint_layout import ( + count_transformer_blocks, + split_fused_gate_up, + split_fused_layer_names, +) +from invokeai.backend.util.devices import TorchDevice +from invokeai.backend.util.state_dict_loading import load_state_dict_ignoring_extras, reject_incomplete_load + + +def _build_transformer(sd: dict[str, Any]) -> torch.nn.Module: + """An empty transformer as deep as the checkpoint; every other hyperparameter is the released model's.""" + from diffusers import QwenImage21Transformer2DModel + + with accelerate.init_empty_weights(): + return QwenImage21Transformer2DModel(num_layers=count_transformer_blocks(sd)) + + +@ModelLoaderRegistry.register(base=BaseModelType.QwenImage21, type=ModelType.Main, format=ModelFormat.Diffusers) +class QwenImage21DiffusersModel(GenericDiffusersLoader): + """Loads the submodels of a Qwen-Image-2.1 diffusers pipeline. + + The tokenizer lives in `processor/` (the pipeline declares a `Qwen3VLProcessor`, of which text prompts + need only the tokenizer). The text encoder loads as `Qwen3VLModel` rather than the declared + `Qwen3VLForConditionalGeneration`: the LM head is ~1.2 GiB the encoder never runs, and `Qwen3VLModel` is + what the standalone Qwen3-VL loaders return, so the text encoder node sees one class. + """ + + def _load_model(self, config: AnyModelConfig, submodel_type: Optional[SubModelType] = None) -> AnyModel: + if isinstance(config, Checkpoint_Config_Base): + raise NotImplementedError( + "CheckpointConfigBase is not implemented for the Qwen-Image-2.1 diffusers loader." + ) + if submodel_type is None: + raise Exception("A submodel type must be provided when loading main pipelines.") + + model_path = Path(config.path) + if submodel_type is SubModelType.Tokenizer: + return AutoTokenizer.from_pretrained(model_path / "processor", local_files_only=True) + + if submodel_type is SubModelType.VAE: + # The configured precision, except float16, which is unstable on this autoencoder: bfloat16 where the + # device has it, float32 otherwise. + dtype = self._torch_dtype_avoiding_float16() + else: + dtype = TorchDevice.choose_bfloat16_safe_dtype(TorchDevice.choose_torch_device()) + repo_variant = config.repo_variant if isinstance(config, Diffusers_Config_Base) else None + variant = repo_variant.value if repo_variant else None + if submodel_type is SubModelType.TextEncoder: + from transformers import Qwen3VLModel + + load_class: Any = Qwen3VLModel + else: + load_class = self.get_hf_load_class(model_path, submodel_type) + + try: + result: AnyModel = load_class.from_pretrained( + model_path / submodel_type.value, torch_dtype=dtype, variant=variant, local_files_only=True + ) + except OSError as e: + if variant and "no file named" in str(e): + # The user's repo-variant preference may have changed since install. + result = load_class.from_pretrained( + model_path / submodel_type.value, torch_dtype=dtype, local_files_only=True + ) + else: + raise + + if submodel_type is SubModelType.TextEncoder: + # Text prompts never reach the vision tower; reference images (which would) are not wired up. + drop_qwen3vl_visual_tower(result) + + return self._apply_fp8_layerwise_casting(result, config, submodel_type) + + +@ModelLoaderRegistry.register(base=BaseModelType.QwenImage21, type=ModelType.Main, format=ModelFormat.Checkpoint) +class QwenImage21CheckpointModel(ModelLoader): + """Loads a Qwen-Image-2.1 transformer from a single safetensors file. + + Plain bf16/fp16 files, ComfyUI 'scaled fp8' (fp8 weights + `weight_scale`) and ComfyUI `int8_tensorwise` + (+convrot) files, with or without ComfyUI's prefix. The fused `img_mlp.gate_up` is split before any + quantization side channel is read, so every quantized layer names a diffusers Linear. + """ + + def _load_model(self, config: AnyModelConfig, submodel_type: Optional[SubModelType] = None) -> AnyModel: + if not isinstance(config, Main_Checkpoint_QwenImage21_Config): + raise TypeError(f"Expected Main_Checkpoint_QwenImage21_Config, got {type(config).__name__}.") + if submodel_type is not SubModelType.Transformer: + raise ValueError(f"Only the transformer is in a single file. Received: {submodel_type}") + + from safetensors.torch import load_file + + model_path = Path(config.path) + model_dtype = TorchDevice.choose_bfloat16_safe_dtype(TorchDevice.choose_torch_device()) + + sd = load_file(model_path) + sd = CheckpointPrefix.detect(sd).strip(sd) + header_layers = split_fused_layer_names( + strip_layer_path_prefix(parse_quantization_metadata(read_safetensors_metadata(model_path, self._logger))) + ) + if pop_nvfp4_layers(dict(sd), header_layers=header_layers): + raise ValueError( + f"{model_path.name} is an nvfp4 checkpoint, which Qwen-Image-2.1 does not load yet. " + "Use the bf16, fp8 or int8 build, or a GGUF." + ) + sd = split_fused_gate_up(sd) + + int8_markers = extract_int8_convrot_markers(sd) + reject_unmarked_int8_weights(sd, int8_markers, "Qwen-Image-2.1") + fp8_layers: dict[str, Any] = {} + keep_fp8 = False + if int8_markers: + sd = drop_unconsumed_quantization_sidecars(sd) + else: + layer_hints = {**extract_comfy_quant_hints(sd), **header_layers} + fp8_layers = extract_fp8_scaled_layers(sd, layer_hints=layer_hints) + keep_fp8 = self._keep_fp8_weights(config, SubModelType.Transformer) + + model = _build_transformer(sd) + skip_patterns = _model_declared_skip_patterns(model) + + kept = 0 + if int8_markers: + quantized = install_int8_convrot_layers( + model, + sd, + resolve_quantized_module_paths(int8_markers, {}), + model_dtype, + architecture="Qwen-Image-2.1", + reserve=self._ram_cache.make_room, + skip_patterns=skip_patterns, + ) + self._logger.info( + f"Qwen-Image-2.1: kept {len(quantized)} of {len(int8_markers)} layer(s) in int8 " + "(int8_tensorwise checkpoint, dequantized per forward)" + ) + else: + # Reserve before the fold or split below widens anything. + reserve_for_load( + self._ram_cache.make_room, + sd, + model_dtype, + keep_fp8=keep_fp8, + model=model, + skip_patterns=skip_patterns, + fp8_layers=fp8_layers, + nvfp4_payloads={}, + ) + if fp8_layers and not keep_fp8: + dequantize_fp8_scaled(sd, fp8_layers, model_dtype) + fp8_layers = {} + fp8_layers = split_fp8_scaled_layers(sd, fp8_layers, model_dtype, model=model, skip_patterns=skip_patterns) + kept = cast_state_dict(sd, model_dtype, keep_fp8=keep_fp8, model=model, skip_patterns=skip_patterns) + + load_state_dict_ignoring_extras( + model, sd, source="Qwen-Image-2.1 single-file checkpoint", assign=True, allow_missing=True + ) + reject_incomplete_load(model, what="Qwen-Image-2.1 single-file checkpoint") + # `assign=True` aliased every parameter to its `sd` tensor; drop the dict before any fp8 cast allocates. + sd.clear() + + if fp8_layers: + attached = attach_fp8_scales(model, fp8_layers) + self._logger.info( + f"Qwen-Image-2.1: kept {attached} layer(s) in fp8 (scaled fp8 checkpoint, kept for {self._fp8_kept_reason()})" + ) + warn_on_unattached_scales(self._logger, "Qwen-Image-2.1", attached, fp8_layers) + # Already fp8: the layerwise cast would undo the scales, so it must not run. + return model + if kept: + self._logger.info( + f"Qwen-Image-2.1: kept {kept} raw fp8 weight(s) quantized (no weight_scale in the checkpoint)." + ) + if int8_markers: + return model + return self._apply_fp8_layerwise_casting(model, config, SubModelType.Transformer) + + +@ModelLoaderRegistry.register(base=BaseModelType.QwenImage21, type=ModelType.Main, format=ModelFormat.GGUFQuantized) +class QwenImage21GGUFCheckpointModel(ModelLoader): + """Loads a GGUF-quantized Qwen-Image-2.1 transformer; its tensors stay GGML and dequantize per forward. + + The fused `img_mlp.gate_up` is split by its quantized rows, which GGML blocks never cross, so the split + is exact without dequantizing. + """ + + def _load_model(self, config: AnyModelConfig, submodel_type: Optional[SubModelType] = None) -> AnyModel: + if not isinstance(config, Main_GGUF_QwenImage21_Config): + raise TypeError(f"Expected Main_GGUF_QwenImage21_Config, got {type(config).__name__}.") + if submodel_type is not SubModelType.Transformer: + raise ValueError(f"Only the transformer is in a GGUF. Received: {submodel_type}") + + compute_dtype = TorchDevice.choose_bfloat16_safe_dtype(TorchDevice.choose_torch_device()) + sd = gguf_sd_loader(Path(config.path), compute_dtype=compute_dtype) + sd = split_fused_gate_up(CheckpointPrefix.detect(sd).strip(sd)) + + model = _build_transformer(sd) + # What the model reads outside a matmul (the norms, `txt_in.text_norm` among them) and what the GGUF stores + # unquantized cannot, or need not, stay packed. + unpack_ggml_at_load(sd, model, _model_declared_skip_patterns(model), self._ram_cache.make_room) + + load_state_dict_ignoring_extras( + model, sd, source="Qwen-Image-2.1 GGUF checkpoint", assign=True, allow_missing=True + ) + reject_incomplete_load(model, what="Qwen-Image-2.1 GGUF checkpoint") + return model diff --git a/invokeai/backend/model_manager/load/model_loaders/vae.py b/invokeai/backend/model_manager/load/model_loaders/vae.py index 52c213b7b42..d954de37ff6 100644 --- a/invokeai/backend/model_manager/load/model_loaders/vae.py +++ b/invokeai/backend/model_manager/load/model_loaders/vae.py @@ -11,10 +11,12 @@ from invokeai.backend.model_manager.configs.vae import ( VAE_Checkpoint_Anima_Config, VAE_Checkpoint_Config_Base, + VAE_Checkpoint_QwenImage21_Config, VAE_Checkpoint_QwenImage_Config, VAE_Checkpoint_SD3_Config, VAE_Checkpoint_Wan_Config, VAE_Diffusers_FLUX_Config, + VAE_Diffusers_QwenImage21_Config, VAE_Diffusers_Wan_Config, ) from invokeai.backend.model_manager.load.model_loader_registry import ModelLoaderRegistry @@ -254,6 +256,8 @@ def _load_model( return self._load_wan_vae_diffusers(config) elif isinstance(config, VAE_Checkpoint_QwenImage_Config): return self._load_qwen_image_vae(config) + elif isinstance(config, VAE_Checkpoint_QwenImage21_Config): + return self._load_qwen_image21_vae(config) elif isinstance(config, VAE_Checkpoint_SD3_Config): return self._load_sd3_vae(config) elif isinstance(config, VAE_Checkpoint_Config_Base): @@ -268,6 +272,13 @@ def _load_model( if model_path.is_dir() and _is_sdnq_vae_folder(model_path): return self._load_sdnq_vae(model_path) + if isinstance(config, VAE_Diffusers_QwenImage21_Config): + from diffusers import AutoencoderKLQwenImage21 + + return AutoencoderKLQwenImage21.from_pretrained( + model_path, torch_dtype=_wan_family_dtype(self._torch_dtype), local_files_only=True + ) + if isinstance(config, VAE_Diffusers_FLUX_Config): # In the dtype every other FLUX.1 VAE path uses: the generic loader below would take float16, # which `precision: auto` picks on CUDA and MPS and which this autoencoder is broken in. @@ -282,6 +293,45 @@ def _load_model( submodel_type = None return super()._load_model(config, submodel_type) + def _load_qwen_image21_vae(self, config: VAE_Checkpoint_QwenImage21_Config) -> AnyModel: + """Load Qwen-Image-2.1's RGBA VAE from a single file, in the diffusers or the ComfyUI layout. + + Builds `AutoencoderKLQwenImage21()` from its defaults, which are the released config. The ComfyUI + export stores the 2-D convolutions 5-D and the norms' gammas with an extra axis; both are reshaped + to the module's own shapes. It belongs to the Wan 2.2 family and shares its precision policy: the + configured dtype, except float16 -- see `_wan_family_dtype`. + """ + from diffusers import AutoencoderKLQwenImage21 + + from invokeai.backend.qwen_image_2_1.checkpoint_layout import ( + convert_comfy_vae_to_diffusers, + fit_to_module_shapes, + is_comfy_vae_layout, + ) + + name = Path(config.path).name + dtype = _wan_family_dtype(self._torch_dtype) + sd = _read_checkpoint(config.path) + reject_quantized_side_channel(sd, f"Qwen-Image-2.1 VAE checkpoint {name}") + if is_comfy_vae_layout(sd): + sd = convert_comfy_vae_to_diffusers(sd) + sd = {k: v.to(dtype) if v.is_floating_point() else v for k, v in sd.items()} + self._ram_cache.make_room(sum(t.nelement() * t.element_size() for t in sd.values())) + + with accelerate.init_empty_weights(): + model = AutoencoderKLQwenImage21() + fit_to_module_shapes(sd, model) + missing, unexpected = model.load_state_dict(sd, strict=False, assign=True) + if missing: + raise ValueError( + f"{name} does not load as a complete Qwen-Image-2.1 VAE: {len(missing)} tensors are missing, " + f"starting with {sorted(missing)[:5]}." + ) + if unexpected: + self._logger.warning(f"{name} carries {len(unexpected)} tensors the Qwen-Image-2.1 VAE does not use.") + model.eval() + return model + def _load_sd3_vae(self, config: VAE_Checkpoint_SD3_Config) -> AnyModel: """Load a single-file SD3 VAE into an `AutoencoderKL` built with SD3's constants. diff --git a/invokeai/backend/model_manager/starter_models/__init__.py b/invokeai/backend/model_manager/starter_models/__init__.py index 010fddc84a9..a7b2a814a04 100644 --- a/invokeai/backend/model_manager/starter_models/__init__.py +++ b/invokeai/backend/model_manager/starter_models/__init__.py @@ -46,6 +46,7 @@ qwen2_5_1_5b_instruct, qwen2_5_3b_instruct, qwen3_vl_encoder_4b, + qwen3_vl_encoder_8b, qwen_vl_encoder_diffusers, qwen_vl_encoder_fp8, qwen_vl_encoder_nvfp4, @@ -160,7 +161,6 @@ ideogram_4_gguf_q5_k, ideogram_4_int8, ideogram_4_nf4, - ideogram_4_qwen3_vl_encoder_8b, ideogram_4_single_file, ideogram_4_unconditional_gguf_q4_0, ideogram_4_unconditional_gguf_q5_1, @@ -216,6 +216,12 @@ qwen_image_lightning_8step, qwen_image_vae, ) +from invokeai.backend.model_manager.starter_models.qwen_image_2_1 import ( + qwen_image_2_1, + qwen_image_2_1_gguf_q4_k_m, + qwen_image_2_1_turbo, + qwen_image_2_1_vae, +) from invokeai.backend.model_manager.starter_models.sd_1 import ( canny_sd1, cyberrealistic_sd1, @@ -335,7 +341,6 @@ ideogram_4_unconditional_gguf_q5_k, ideogram_4_gguf_q5_1, ideogram_4_unconditional_gguf_q5_1, - ideogram_4_qwen3_vl_encoder_8b, cyberrealistic_sd1, rev_animated_sd1, dreamshaper_8_sd1, @@ -483,6 +488,11 @@ krea2_turbo_gguf_q8_0, krea2_turbo_nvfp4, qwen3_vl_encoder_4b, + qwen_image_2_1_turbo, + qwen_image_2_1, + qwen_image_2_1_gguf_q4_k_m, + qwen_image_2_1_vae, + qwen3_vl_encoder_8b, wan_22_t5_encoder, wan_22_a14b_vae, wan_22_5b_vae, diff --git a/invokeai/backend/model_manager/starter_models/common.py b/invokeai/backend/model_manager/starter_models/common.py index e71c789e1f7..73348d88193 100644 --- a/invokeai/backend/model_manager/starter_models/common.py +++ b/invokeai/backend/model_manager/starter_models/common.py @@ -376,6 +376,17 @@ format=ModelFormat.Qwen3VLEncoder, ) +qwen3_vl_encoder_8b = StarterModel( + name="Qwen3-VL 8B Encoder", + previous_names=["Qwen3-VL 8B Encoder (Ideogram 4)"], + base=BaseModelType.Any, + source="https://huggingface.co/Comfy-Org/Ideogram-4/resolve/main/text_encoders/qwen3vl_8b_fp8_scaled.safetensors", + description="Qwen3-VL 8B text encoder in ComfyUI scaled fp8, the encoder Ideogram 4 and Qwen-Image-2.1 condition " + "on. Distinct from the 4B encoder Krea-2 uses; the two are not interchangeable. ~9.9GB", + type=ModelType.Qwen3VLEncoder, + format=ModelFormat.Checkpoint, +) + # region Wan 2.2 (local) # Shared components — all Wan 2.2 variants use the UMT5-XXL text encoder. A14B # (both T2V and I2V) uses a 16-channel VAE; TI2V-5B uses a 48-channel VAE. The diff --git a/invokeai/backend/model_manager/starter_models/ideogram_4.py b/invokeai/backend/model_manager/starter_models/ideogram_4.py index ad935068d95..44e60a6dca6 100644 --- a/invokeai/backend/model_manager/starter_models/ideogram_4.py +++ b/invokeai/backend/model_manager/starter_models/ideogram_4.py @@ -1,5 +1,6 @@ """Ideogram 4 starter models.""" +from invokeai.backend.model_manager.starter_models.common import qwen3_vl_encoder_8b from invokeai.backend.model_manager.starter_models.flux2 import flux2_vae from invokeai.backend.model_manager.starter_models.types import StarterModel from invokeai.backend.model_manager.taxonomy import ( @@ -50,16 +51,6 @@ format=ModelFormat.Checkpoint, ) -ideogram_4_qwen3_vl_encoder_8b = StarterModel( - name="Qwen3-VL 8B Encoder (Ideogram 4)", - base=BaseModelType.Any, - source="https://huggingface.co/Comfy-Org/Ideogram-4/resolve/main/text_encoders/qwen3vl_8b_fp8_scaled.safetensors", - description="Qwen3-VL 8B text encoder for Ideogram 4, in ComfyUI scaled fp8. Distinct from the 4B " - "encoder Krea-2 uses; Ideogram 4 taps 13 of its layers and the two are not interchangeable. ~9.9GB", - type=ModelType.Qwen3VLEncoder, - format=ModelFormat.Checkpoint, -) - ideogram_4_unconditional_int8 = StarterModel( name="Ideogram 4 Unconditional (single file, int8)", base=BaseModelType.Ideogram4, @@ -80,7 +71,7 @@ "branch, the Qwen3-VL 8B encoder and the VAE with it. Non-commercial license. ~28GB total", type=ModelType.Main, format=ModelFormat.Checkpoint, - dependencies=[ideogram_4_unconditional_int8, ideogram_4_qwen3_vl_encoder_8b, flux2_vae], + dependencies=[ideogram_4_unconditional_int8, qwen3_vl_encoder_8b, flux2_vae], ) ideogram_4_single_file = StarterModel( @@ -93,7 +84,7 @@ "stay resident during generation. Non-commercial license. ~27GB total", type=ModelType.Main, format=ModelFormat.Checkpoint, - dependencies=[ideogram_4_unconditional_single_file, ideogram_4_qwen3_vl_encoder_8b, flux2_vae], + dependencies=[ideogram_4_unconditional_single_file, qwen3_vl_encoder_8b, flux2_vae], ) # Community GGUF conversions of the same per-branch files, paired the same way. They are the smallest @@ -129,7 +120,7 @@ "branch, the Qwen3-VL 8B encoder and the VAE with it. Non-commercial license. ~21GB total", type=ModelType.Main, format=ModelFormat.GGUFQuantized, - dependencies=[ideogram_4_unconditional_gguf_q4_0, ideogram_4_qwen3_vl_encoder_8b, flux2_vae], + dependencies=[ideogram_4_unconditional_gguf_q4_0, qwen3_vl_encoder_8b, flux2_vae], ) ideogram_4_unconditional_gguf_q5_k = StarterModel( @@ -151,7 +142,7 @@ "license. ~23GB total", type=ModelType.Main, format=ModelFormat.GGUFQuantized, - dependencies=[ideogram_4_unconditional_gguf_q5_k, ideogram_4_qwen3_vl_encoder_8b, flux2_vae], + dependencies=[ideogram_4_unconditional_gguf_q5_k, qwen3_vl_encoder_8b, flux2_vae], ) ideogram_4_unconditional_gguf_q5_1 = StarterModel( @@ -173,5 +164,5 @@ "encoder and the VAE with it. Non-commercial license. ~25GB total", type=ModelType.Main, format=ModelFormat.GGUFQuantized, - dependencies=[ideogram_4_unconditional_gguf_q5_1, ideogram_4_qwen3_vl_encoder_8b, flux2_vae], + dependencies=[ideogram_4_unconditional_gguf_q5_1, qwen3_vl_encoder_8b, flux2_vae], ) diff --git a/invokeai/backend/model_manager/starter_models/qwen_image_2_1.py b/invokeai/backend/model_manager/starter_models/qwen_image_2_1.py new file mode 100644 index 00000000000..6c3966bcb1f --- /dev/null +++ b/invokeai/backend/model_manager/starter_models/qwen_image_2_1.py @@ -0,0 +1,51 @@ +"""Qwen-Image-2.1 starter models. + +Every one is under the Qwen Research License: research and evaluation only, no commercial use without a separate +license from Alibaba's Tongyi Lab. +""" + +from invokeai.backend.model_manager.starter_models.common import qwen3_vl_encoder_8b +from invokeai.backend.model_manager.starter_models.types import StarterModel +from invokeai.backend.model_manager.taxonomy import BaseModelType, ModelFormat, ModelType, QwenImage21VariantType + +_LICENSE = "Qwen Research License: non-commercial use only." + +qwen_image_2_1_vae = StarterModel( + name="Qwen-Image-2.1 VAE", + base=BaseModelType.QwenImage21, + source="https://huggingface.co/Comfy-Org/Qwen-Image-2.1/resolve/main/vae/qwen_image_2.1_vae_bf16.safetensors", + description=f"Qwen-Image-2.1's RGBA VAE (64 latent channels, 16x), for its single-file and GGUF transformers. {_LICENSE} ~0.6GB", + type=ModelType.VAE, +) + +qwen_image_2_1 = StarterModel( + name="Qwen-Image-2.1", + base=BaseModelType.QwenImage21, + source="Qwen/Qwen-Image-2.1", + description="Qwen-Image-2.1, a 7B text-to-image model with strong text rendering and transparent (RGBA) output. " + f"Full diffusers pipeline with its VAE and Qwen3-VL 8B encoder; 40 steps. {_LICENSE} ~31GB", + type=ModelType.Main, + variant=QwenImage21VariantType.Base, +) + +qwen_image_2_1_turbo = StarterModel( + name="Qwen-Image-2.1 Turbo", + base=BaseModelType.QwenImage21, + source="Qwen/Qwen-Image-2.1-Turbo", + description="Qwen-Image-2.1 Turbo, distilled for 8 steps on its own sigma schedule. Full diffusers pipeline with " + f"its VAE and Qwen3-VL 8B encoder. {_LICENSE} ~30GB", + type=ModelType.Main, + variant=QwenImage21VariantType.Turbo, +) + +qwen_image_2_1_gguf_q4_k_m = StarterModel( + name="Qwen-Image-2.1 (Q4_K_M GGUF)", + base=BaseModelType.QwenImage21, + source="https://huggingface.co/unsloth/Qwen-Image-2.1-GGUF/resolve/main/qwen-image-2.1-Q4_K_M.gguf", + description="Qwen-Image-2.1 transformer quantized to GGUF Q4_K_M (~4GB in VRAM instead of ~13GB). GGUF ships only " + f"the transformer, so the VAE and the Qwen3-VL 8B encoder are installed as dependencies. {_LICENSE} ~15GB total", + type=ModelType.Main, + format=ModelFormat.GGUFQuantized, + variant=QwenImage21VariantType.Base, + dependencies=[qwen_image_2_1_vae, qwen3_vl_encoder_8b], +) diff --git a/invokeai/backend/model_manager/taxonomy.py b/invokeai/backend/model_manager/taxonomy.py index e4cfdb3da10..3a328b436ed 100644 --- a/invokeai/backend/model_manager/taxonomy.py +++ b/invokeai/backend/model_manager/taxonomy.py @@ -62,6 +62,9 @@ class BaseModelType(str, Enum): """Indicates the model is associated with Qwen Image Edit 2511 model architecture.""" Anima = "anima" """Indicates the model is associated with Anima model architecture (Cosmos Predict2 DiT + LLM Adapter).""" + QwenImage21 = "qwen-image-2-1" + """Indicates the model is associated with the Qwen-Image-2.1 architecture: a single-stream DiT on a 64-channel, + 16x RGBA VAE, conditioned by Qwen3-VL-8B. Unrelated to `QwenImage` beyond the name.""" Krea2 = "krea-2" """Indicates the model is associated with the Krea 2 model architecture, including Krea-2-Turbo.""" Wan = "wan" @@ -206,6 +209,16 @@ class Krea2VariantType(str, Enum): NOTE: the value is ``krea2_base`` (not ``base``) for the same disambiguation reason as ``Turbo``.""" +class QwenImage21VariantType(str, Enum): + """Qwen-Image-2.1 variants. The weights share one architecture; what differs is the sampling schedule.""" + + Base = "qwen_image_21_base" + """The released model: 40 steps on a resolution-shifted schedule with a terminal shift.""" + + Turbo = "qwen_image_21_turbo" + """Qwen-Image-2.1-Turbo: distilled for 8 steps on a fixed sigma table, CFG off.""" + + class QwenImageVariantType(str, Enum): """Qwen Image model variants.""" @@ -478,6 +491,7 @@ class FluxLoRAFormat(str, Enum): Qwen35VariantType, AnimaVariantType, Krea2VariantType, + QwenImage21VariantType, MiniMaxH3VariantType, LTX2VariantType, MistralVariantType, @@ -497,6 +511,7 @@ class FluxLoRAFormat(str, Enum): | Qwen35VariantType | AnimaVariantType | Krea2VariantType + | QwenImage21VariantType | MiniMaxH3VariantType | LTX2VariantType | MistralVariantType @@ -515,6 +530,7 @@ class FluxLoRAFormat(str, Enum): | Qwen35VariantType | AnimaVariantType | Krea2VariantType + | QwenImage21VariantType | MiniMaxH3VariantType | LTX2VariantType | MistralVariantType diff --git a/invokeai/backend/qwen_image_2_1/__init__.py b/invokeai/backend/qwen_image_2_1/__init__.py new file mode 100644 index 00000000000..ea9c688c2d9 --- /dev/null +++ b/invokeai/backend/qwen_image_2_1/__init__.py @@ -0,0 +1 @@ +"""Qwen-Image-2.1: checkpoint layouts, sampling schedule and text encoding shared by its loaders and nodes.""" diff --git a/invokeai/backend/qwen_image_2_1/checkpoint_layout.py b/invokeai/backend/qwen_image_2_1/checkpoint_layout.py new file mode 100644 index 00000000000..df26ffcf855 --- /dev/null +++ b/invokeai/backend/qwen_image_2_1/checkpoint_layout.py @@ -0,0 +1,177 @@ +"""The single-file layouts Qwen-Image-2.1 ships in, and how they become diffusers' modules. + +Transformer: ComfyUI's export (Comfy-Org, unsloth's GGUFs) uses diffusers' names behind a +`model.diffusion_model.` prefix, except that the gated MLP's two input projections are fused into one +`img_mlp.gate_up` tensor, gate rows first. diffusers' converter splits it the same way. + +VAE: the diffusers export loads as is; ComfyUI's is the original Wan-style layout (`encoder.downsamples`, +`decoder.middle`, `head`), with every 2-D convolution stored 5-D with a temporal extent of 1. +""" + +import re +from typing import Any + +import torch + +from invokeai.backend.quantization.gguf.ggml_tensor import GGMLTensor + +GATE_UP = ".img_mlp.gate_up." +"""ComfyUI's fused gated-MLP projection; diffusers splits it into `gate_layer` (first half) and `proj`.""" + +# Sidecars that describe the whole tensor and so belong to both halves unchanged. +_SHARED_SIDECARS = ("input_scale", "scale_input", "comfy_quant") + + +def _split_rows(value: Any, rows: int) -> tuple[Any, Any]: + """Split a tensor's leading (output) dimension in two at `rows`. + + GGML blocks run along a row, never across rows, so a GGML tensor splits by its quantized rows + without dequantizing. + """ + if isinstance(value, GGMLTensor): + total, cols = value.tensor_shape + data = value.quantized_data + if data.shape[0] != total: + raise ValueError(f"GGML tensor of shape {tuple(value.tensor_shape)} is not stored one row per output") + halves = (data[:rows].clone(), data[rows:].clone()) + shapes = (torch.Size((rows, cols)), torch.Size((total - rows, cols))) + return tuple( # type: ignore[return-value] + GGMLTensor(part, value._ggml_quantization_type, shape, value.compute_dtype) + for part, shape in zip(halves, shapes, strict=True) + ) + return value[:rows], value[rows:] + + +def split_fused_gate_up(sd: dict[str, Any]) -> dict[str, Any]: + """Split every `img_mlp.gate_up` weight, with its quantization sidecars, into `gate_layer` and `proj`. + + Runs before any quantization handling, so the int8 and fp8 helpers see one module per diffusers + Linear: a per-output-channel scale is split with its weight, a per-tensor one is shared, and the + `comfy_quant` marker is copied to both halves. Keys without the fused tensor pass through. + """ + fused = {k for k in sd if GATE_UP in k} + if not fused: + return sd + out = {k: v for k, v in sd.items() if k not in fused} + weights = {k for k in fused if k.endswith(".weight")} + halves_by_stem: dict[str, int] = {} + for key in weights: + stem = key[: -len(".weight")] + rows = sd[key].shape[0] + if rows % 2: + raise ValueError(f"{key} has {rows} rows, which do not split into gate and up halves") + halves_by_stem[stem] = rows // 2 + gate, up = _split_rows(sd[key], rows // 2) + out[f"{stem.replace(GATE_UP[:-1], '.img_mlp.gate_layer')}.weight"] = gate + out[f"{stem.replace(GATE_UP[:-1], '.img_mlp.proj')}.weight"] = up + for key in fused - weights: + stem, suffix = key.rsplit(".", 1) + if stem not in halves_by_stem: + raise ValueError(f"{key} has no fused weight to split with") + gate_key = f"{stem.replace(GATE_UP[:-1], '.img_mlp.gate_layer')}.{suffix}" + proj_key = f"{stem.replace(GATE_UP[:-1], '.img_mlp.proj')}.{suffix}" + value = sd[key] + per_row = ( + suffix not in _SHARED_SIDECARS + and isinstance(value, torch.Tensor) + and value.dim() > 0 + and value.shape[0] == 2 * halves_by_stem[stem] + ) + if per_row: + out[gate_key], out[proj_key] = _split_rows(value, halves_by_stem[stem]) + else: + out[gate_key], out[proj_key] = value, value + return out + + +def split_fused_layer_names(layers: dict[str, Any]) -> dict[str, Any]: + """Give a per-layer mapping keyed by module path (header quantization hints) entries for both halves.""" + out: dict[str, Any] = {} + for name, value in layers.items(): + if name.endswith(GATE_UP[:-1]): + out[name.replace(GATE_UP[:-1], ".img_mlp.gate_layer")] = value + out[name.replace(GATE_UP[:-1], ".img_mlp.proj")] = value + else: + out[name] = value + return out + + +def count_transformer_blocks(sd: dict[str, Any]) -> int: + """The number of transformer blocks the state dict holds, refusing a gap in their indices.""" + indices = {int(m.group(1)) for k in sd if (m := re.match(r"transformer_blocks\.(\d+)\.", k))} + if not indices: + raise ValueError("state dict has no transformer_blocks") + if indices != set(range(max(indices) + 1)): + raise ValueError( + f"transformer_blocks are not contiguous: missing {sorted(set(range(max(indices) + 1)) - indices)}" + ) + return max(indices) + 1 + + +# ComfyUI VAE layout -> diffusers. Derived by matching all 238 tensors of Comfy-Org's +# `qwen_image_2.1_vae_bf16.safetensors` to the diffusers export by value; every one matched exactly once. +_RESIDUAL = {"0": "norm1", "2": "conv1", "3": "norm2", "6": "conv2"} +_VAE_RULES: list[tuple[re.Pattern[str], Any]] = [ + (re.compile(r"^conv1\.(\w+)$"), r"quant_conv.\1"), + (re.compile(r"^conv2\.(\w+)$"), r"post_quant_conv.\1"), + (re.compile(r"^(encoder|decoder)\.conv1\.(\w+)$"), r"\1.conv_in.\2"), + (re.compile(r"^(encoder|decoder)\.head\.0\.gamma$"), r"\1.norm_out.gamma"), + (re.compile(r"^(encoder|decoder)\.head\.2\.(\w+)$"), r"\1.conv_out.\2"), + (re.compile(r"^(encoder|decoder)\.middle\.1\.(\w+)\.(\w+)$"), r"\1.mid_block.attentions.0.\2.\3"), + ( + re.compile(r"^(encoder|decoder)\.middle\.([02])\.residual\.(\d+)\.(\w+)$"), + lambda m: f"{m[1]}.mid_block.resnets.{int(m[2]) // 2}.{_RESIDUAL[m[3]]}.{m[4]}", + ), + # The last entry of each down/up block is its resampler (index 2 in the encoder's two-resnet blocks, + # 3 in the decoder's three-resnet blocks); the entries before it are resnets. + ( + re.compile(r"^encoder\.downsamples\.(\d+)\.downsamples\.2\.(resample\.\d+|time_conv)\.(\w+)$"), + r"encoder.down_blocks.\1.downsampler.\2.\3", + ), + ( + re.compile(r"^decoder\.upsamples\.(\d+)\.upsamples\.3\.(resample\.\d+|time_conv)\.(\w+)$"), + r"decoder.up_blocks.\1.upsampler.\2.\3", + ), + ( + re.compile(r"^(encoder\.down|decoder\.up)samples\.(\d+)\.\w+\.(\d+)\.residual\.(\d+)\.(\w+)$"), + lambda m: f"{m[1]}_blocks.{m[2]}.resnets.{m[3]}.{_RESIDUAL[m[4]]}.{m[5]}", + ), + ( + re.compile(r"^(encoder\.down|decoder\.up)samples\.(\d+)\.\w+\.(\d+)\.shortcut\.(\w+)$"), + r"\1_blocks.\2.resnets.\3.conv_shortcut.\4", + ), +] + + +def is_comfy_vae_layout(sd: dict[str, Any]) -> bool: + return "decoder.conv1.weight" in sd and "decoder.conv_in.weight" not in sd + + +def convert_comfy_vae_to_diffusers(sd: dict[str, Any]) -> dict[str, Any]: + """Rename a ComfyUI-layout Qwen-Image-2.1 VAE to diffusers keys. Shapes stay as stored. + + A key no rule covers raises: the export is exactly 238 tensors, and a silently dropped one would + surface only as a meta tensor at the first decode. + """ + out: dict[str, Any] = {} + for key, value in sd.items(): + for pattern, repl in _VAE_RULES: + new_key, n = pattern.subn(repl, key) + if n: + out[new_key] = value + break + else: + raise ValueError(f"unrecognized key in a ComfyUI Qwen-Image-2.1 VAE: {key}") + return out + + +def fit_to_module_shapes(sd: dict[str, torch.Tensor], model: torch.nn.Module) -> None: + """Reshape tensors stored with singleton axes (ComfyUI's 5-D convs, `[C,1,1,1]` gammas) to the module's. + + Only an element-preserving reshape is accepted; anything else is left for `load_state_dict` to reject. + """ + shapes = {name: tuple(t.shape) for name, t in [*model.named_parameters(), *model.named_buffers()]} + for key, value in sd.items(): + target = shapes.get(key) + if target is not None and tuple(value.shape) != target and value.numel() == torch.Size(target).numel(): + sd[key] = value.reshape(target) diff --git a/invokeai/backend/qwen_image_2_1/sampling.py b/invokeai/backend/qwen_image_2_1/sampling.py new file mode 100644 index 00000000000..48ffe8f4b83 --- /dev/null +++ b/invokeai/backend/qwen_image_2_1/sampling.py @@ -0,0 +1,71 @@ +"""Qwen-Image-2.1's sigma schedules: resolution-shifted for the base model, a fixed table for Turbo.""" + +import numpy as np +import torch +from diffusers import FlowMatchEulerDiscreteScheduler + +from invokeai.backend.model_manager.taxonomy import QwenImage21VariantType + +# scheduler/scheduler_config.json of Qwen/Qwen-Image-2.1. +BASE_SCHEDULER_CONFIG = { + "base_image_seq_len": 256, + "base_shift": 0.5, + "invert_sigmas": False, + "max_image_seq_len": 8192, + "max_shift": 0.9, + "num_train_timesteps": 1000, + "shift": 1.0, + "shift_terminal": 0.02, + "stochastic_sampling": False, + "time_shift_type": "exponential", + "use_beta_sigmas": False, + "use_dynamic_shifting": True, + "use_exponential_sigmas": False, + "use_karras_sigmas": False, +} + +# Qwen/Qwen-Image-2.1-Turbo samples its own table unshifted: the same config with dynamic shifting and the +# terminal shift turned off, and model_index.json's `sample_sigmas`. +TURBO_SCHEDULER_CONFIG = {**BASE_SCHEDULER_CONFIG, "shift_terminal": None, "use_dynamic_shifting": False} +TURBO_SIGMAS = (1.0, 0.978453, 0.95418, 0.926626, 0.89508, 0.845148, 0.704534, 0.414568) + + +def calculate_mu(image_seq_len: int) -> float: + """The pipeline's `calculate_shift` over target-image tokens only (condition images are not counted).""" + c = BASE_SCHEDULER_CONFIG + m = (c["max_shift"] - c["base_shift"]) / (c["max_image_seq_len"] - c["base_image_seq_len"]) + return image_seq_len * m + (c["base_shift"] - m * c["base_image_seq_len"]) + + +def turbo_sigmas(steps: int) -> list[float]: + """Turbo's table, or the table resampled along its index for another step count. + + Only the shipped 8 steps are evaluated by its authors. Resampling keeps the table's shape and its + start at 1.0, which is what lets fewer or more steps still land in the noise range it was distilled for. + """ + if steps == len(TURBO_SIGMAS): + return list(TURBO_SIGMAS) + positions = np.linspace(0, len(TURBO_SIGMAS) - 1, steps) + return np.interp(positions, np.arange(len(TURBO_SIGMAS)), TURBO_SIGMAS).tolist() + + +def build_sigmas(variant: QwenImage21VariantType | None, steps: int, image_seq_len: int) -> torch.Tensor: + """The full schedule, `steps + 1` sigmas ending in 0, exactly as `QwenImage21Pipeline` samples it. + + `image_seq_len` is the target image's latent token count, `(height // 16) * (width // 16)`; only the base + model's shift reads it. + """ + if steps < 1: + raise ValueError(f"steps must be at least 1, got {steps}") + if variant is QwenImage21VariantType.Turbo: + scheduler = FlowMatchEulerDiscreteScheduler.from_config(TURBO_SCHEDULER_CONFIG) + scheduler.set_timesteps(sigmas=turbo_sigmas(steps), device="cpu") + elif steps == 1: + # One step is the whole range; the pipeline's stretch to `shift_terminal` divides by zero on it. + return torch.tensor([1.0, 0.0]) + else: + scheduler = FlowMatchEulerDiscreteScheduler.from_config(BASE_SCHEDULER_CONFIG) + scheduler.set_timesteps( + sigmas=np.linspace(1.0, 1 / steps, steps).tolist(), mu=calculate_mu(image_seq_len), device="cpu" + ) + return scheduler.sigmas.float() diff --git a/invokeai/backend/qwen_image_2_1/text_encoding.py b/invokeai/backend/qwen_image_2_1/text_encoding.py new file mode 100644 index 00000000000..45f95084271 --- /dev/null +++ b/invokeai/backend/qwen_image_2_1/text_encoding.py @@ -0,0 +1,48 @@ +"""Qwen-Image-2.1's prompt encoding, as `QwenImage21Pipeline._get_qwen_prompt_embeds` does it for text prompts.""" + +import torch + +SYSTEM_PROMPT = "Comprehend and analyze the provided prompt." +SYSTEM_BLOCK = f"<|im_start|>system\n{SYSTEM_PROMPT}<|im_end|>\n" +# A raw string handed to the tokenizer, not `apply_chat_template`: the two tokenize differently, and the +# checkpoint was trained on this one. +T2I_TEMPLATE = SYSTEM_BLOCK + "<|im_start|>user\n{}<|im_end|>\n<|im_start|>assistant\n" + + +def format_prompt(prompt: str) -> str: + # Qwen has no BOS token, so an empty prompt would leave the encoder nothing to read. + return T2I_TEMPLATE.format(prompt or " ") + + +def system_prefix_length(tokenizer) -> int: + """Leading tokens to drop from the hidden states: the system turn, which every prompt shares.""" + return len(tokenizer(SYSTEM_BLOCK, add_special_tokens=False).input_ids) + + +def _base_model(text_encoder: torch.nn.Module) -> torch.nn.Module: + """The `Qwen3VLModel`: what loaders return, or the inner model of a `Qwen3VLForConditionalGeneration`. + + Called the way the pipeline calls it, so positions -- and the bf16 result -- match it bit for bit. (RoPE is + relative, so the language model alone would differ only by a position offset under left padding: equal in + exact arithmetic, not in bf16.) + """ + return text_encoder if hasattr(text_encoder, "language_model") else text_encoder.model + + +@torch.no_grad() +def encode_prompt(text_encoder: torch.nn.Module, tokenizer, prompt: str, device: torch.device) -> torch.Tensor: + """Encode a prompt into `(1, L, hidden)` embeddings, as the pipeline encodes a single prompt. + + The transformer reads the last decoder layer's output BEFORE the final RMSNorm. transformers 5 ties + the last hidden state to the normalized output, so a forward hook returning the norm's input + neutralizes the norm for this call -- the pipeline's approach. The system turn every prompt shares is + dropped from the result. + """ + inputs = tokenizer([format_prompt(prompt)], return_tensors="pt").to(device) + base = _base_model(text_encoder) + handle = base.language_model.norm.register_forward_hook(lambda module, args, output: args[0]) + try: + hidden = base(input_ids=inputs.input_ids, attention_mask=inputs.attention_mask).last_hidden_state + finally: + handle.remove() + return hidden[:, system_prefix_length(tokenizer) :] diff --git a/invokeai/backend/qwen_image_2_1/vae.py b/invokeai/backend/qwen_image_2_1/vae.py new file mode 100644 index 00000000000..f787f2bb445 --- /dev/null +++ b/invokeai/backend/qwen_image_2_1/vae.py @@ -0,0 +1,106 @@ +"""Qwen-Image-2.1's RGBA VAE: working memory, tile choice, and how an RGBA decode becomes an image. + +The tile geometry itself is applied by `patch_qwen_image_vae_tiling`, which this VAE shares with the Qwen-Image +and Wan VAEs (same tiling attributes, 16x instead of 8x). +""" + +import numpy as np +import torch +from PIL import Image + +from invokeai.backend.util.vae_working_memory import should_pretile_vae_decode + +SPATIAL_SCALE = 16 + +# Measured on an RTX 4090 in bf16 (torch's reserved memory, which is what Windows pages against): an untiled +# 1024x1024 decode peaks at 8.38 GiB, a 2048x2048 decode in 1024px tiles at the same 8.38 GiB, in 768px tiles +# at 5.27 GiB, in 512px tiles at 2.68 GiB. ~4000 bytes per pixel per byte of the VAE's dtype (8000 in bf16) of +# the frame (or tile) plus a fixed 0.6 GiB covers all four. The encoder is narrower than the decoder (96 vs 144 +# base channels); it is priced the same. +_BYTES_PER_PIXEL_PER_ELEMENT_BYTE = 4000 +_FIXED_BYTES = int(0.6 * 1024**3) + +# Tiles of 256px (diffusers' default) leave visible seams: against an untiled fp32 decode a 2048x2048 image came +# to 35.6 dB with alpha off by up to 73/255; 1024px tiles reach 47.7 dB and 16/255. Smaller tiles only where +# memory forces them. +_TILE_SIZES = (1024, 768, 512) +# A cost floor for the node field: at 16x a 256px tile is 16 latents, and the tile count grows with the inverse +# square of the size -- a 32px tile would decode a 2048x2048 image as ~16k tiles. +MIN_TILE_SIZE = 256 + + +def working_memory_bytes(height: int, width: int, tile_size: int | None, element_size: int) -> int: + """Peak bytes an encode or decode of a `height` x `width` image needs, untiled or in `tile_size` tiles. + + `element_size` is the byte width of the VAE's dtype: a float32 VAE (`precision: float32`) needs twice the + bfloat16 figure. + """ + pixels = height * width if tile_size is None else min(height * width, tile_size * tile_size) + return pixels * _BYTES_PER_PIXEL_PER_ELEMENT_BYTE * element_size + _FIXED_BYTES + + +def default_tile_size(device: torch.device, element_size: int) -> int: + """The largest tile whose decode takes at most half of the device's memory.""" + if device.type != "cuda": + return _TILE_SIZES[0] + total = torch.cuda.get_device_properties(device).total_memory + for size in _TILE_SIZES: + if working_memory_bytes(size, size, size, element_size) <= total // 2: + return size + return _TILE_SIZES[-1] + + +def choose_tile_size( + height: int, + width: int, + element_size: int, + device: torch.device, + *, + tiled: bool, + tile_size: int, + auto_tile: bool, +) -> int | None: + """The tile size an encode or decode runs at, or None to run it in one piece. + + `tiled` is the node's request (or `force_tiled_decode`); `auto_tile` (`auto_tiled_decode`) also tiles a frame + whose untiled working memory would claim too much of the device. `tile_size` is the node field: 0 picks the + largest tile for the device, anything else is floored at `MIN_TILE_SIZE`. + """ + if not tiled and not ( + auto_tile and should_pretile_vae_decode(device, working_memory_bytes(height, width, None, element_size)) + ): + return None + if tile_size <= 0: + return default_tile_size(device, element_size) + return max(tile_size, MIN_TILE_SIZE) + + +# Opaque content decodes with alpha just under 255, and tiling adds seam noise: untiled fp32 decodes of opaque +# images bottom out at 252, 1024px tiles at 239, 256px tiles at 181 on 0.03 % of pixels. A transparent prompt +# leaves ~40 % of pixels near 0. So "opaque" is: at most 0.1 % of pixels below 224. +_OPAQUE_ALPHA = 224 +_MAX_TRANSPARENT_FRACTION = 0.001 + + +def to_image(decoded: torch.Tensor) -> Image.Image: + """A `(4, H, W)` decode in [-1, 1] as an RGB image when it is opaque, RGBA when it is not. + + Mapped to [0, 1] in the decode's own dtype and only then widened, as the pipeline's `VaeImageProcessor` does: + from a bf16 decode, widening first rounds 1 in ~8 % of pixels the other way. + """ + unit = (decoded * 0.5 + 0.5).clamp(0, 1).float() + pixels = (unit * 255).round().to(torch.uint8).permute(1, 2, 0).cpu().numpy() + alpha = pixels[..., 3] + if np.count_nonzero(alpha < _OPAQUE_ALPHA) <= _MAX_TRANSPARENT_FRACTION * alpha.size: + return Image.fromarray(np.ascontiguousarray(pixels[..., :3]), mode="RGB") + return Image.fromarray(pixels, mode="RGBA") + + +def to_vae_input(image: Image.Image) -> torch.Tensor: + """An image as the VAE's `(1, 4, H, W)` input in [-1, 1], encoded opaque. + + Alpha is set to 1 rather than read from the image: the canvas hands its masks over in alpha, and a + transparent region there means "repaint", not "transparent pixels". + """ + rgb = torch.from_numpy(np.asarray(image.convert("RGB"), dtype=np.float32)).permute(2, 0, 1) / 127.5 - 1 + return torch.cat([rgb, torch.ones_like(rgb[:1])], dim=0)[None] diff --git a/invokeai/backend/stable_diffusion/diffusion/conditioning_data.py b/invokeai/backend/stable_diffusion/diffusion/conditioning_data.py index a3e357463f2..04591b0f238 100644 --- a/invokeai/backend/stable_diffusion/diffusion/conditioning_data.py +++ b/invokeai/backend/stable_diffusion/diffusion/conditioning_data.py @@ -156,6 +156,21 @@ def to(self, device: torch.device | None = None, dtype: torch.dtype | None = Non return self +@dataclass +class QwenImage21ConditioningInfo: + """Qwen-Image-2.1 text conditioning from the Qwen3-VL-8B encoder. + + The last decoder layer's output before the final norm, with the system-prompt prefix removed. + """ + + prompt_embeds: torch.Tensor + """Shape: (1, seq_len, hidden=4096). One prompt, so no padding and no mask.""" + + def to(self, device: torch.device | None = None, dtype: torch.dtype | None = None): + self.prompt_embeds = self.prompt_embeds.to(device=device, dtype=dtype) + return self + + @dataclass class AnimaConditioningInfo: """Anima text conditioning information from Qwen3 0.6B encoder + T5-XXL tokenizer. @@ -298,6 +313,7 @@ class ConditioningFieldData: | List[Ideogram4ConditioningInfo] | List[QwenImageConditioningInfo] | List[Krea2ConditioningInfo] + | List[QwenImage21ConditioningInfo] | List[AnimaConditioningInfo] | List[WanConditioningInfo] | List[MiniMaxH3ConditioningInfo] diff --git a/invokeai/backend/util/qwen_image_vae.py b/invokeai/backend/util/qwen_image_vae.py index bfac0a513ee..269063060da 100644 --- a/invokeai/backend/util/qwen_image_vae.py +++ b/invokeai/backend/util/qwen_image_vae.py @@ -12,7 +12,8 @@ Qwen-Image ``latents_mean`` / ``latents_std`` / ``z_dim`` values read by the Qwen encode/decode nodes. Also holds the tiling helpers those nodes share, since the tile geometry has to be applied identically -on both classes and restored afterwards — see ``patch_qwen_image_vae_tiling``. +on both classes and restored afterwards — see ``patch_qwen_image_vae_tiling``. Qwen-Image-2.1's RGBA VAE +names its tiling state the same way and tiles through the same helper, at its 16x spatial scale. """ from collections.abc import Iterator @@ -21,6 +22,7 @@ from diffusers.models.autoencoders import AutoencoderKLWan from diffusers.models.autoencoders.autoencoder_kl_qwenimage import AutoencoderKLQwenImage +from diffusers.models.autoencoders.autoencoder_kl_qwenimage21 import AutoencoderKLQwenImage21 QwenImageCompatibleVAE = AutoencoderKLQwenImage | AutoencoderKLWan @@ -94,20 +96,24 @@ def resolve_qwen_image_vae_tile_size(tile_size: int) -> int: return max(tile_size, QWEN_IMAGE_VAE_MIN_TILE_SIZE) -def _tile_stride_for(tile_size: int) -> int: +def _tile_stride_for(tile_size: int, spatial_scale: int = _QWEN_IMAGE_VAE_SPATIAL_SCALE) -> int: """Return the tile stride to pair with ``tile_size``, keeping the stock 3/4 ratio. - Rounded down to a multiple of the VAE's 8x spatial compression: ``tiled_encode``/``tiled_decode`` + Rounded down to a multiple of the VAE's spatial compression: ``tiled_encode``/``tiled_decode`` step the tile loop in one space (pixels for encode, latents for decode) while slicing the - accumulated tile in the other, so the pixel stride must be exactly 8x the latent stride or the - two disagree and the output is misaligned. + accumulated tile in the other, so the pixel stride must be exactly ``spatial_scale`` times the + latent stride or the two disagree and the output is misaligned. """ stride = tile_size * _QWEN_IMAGE_VAE_TILE_STRIDE_NUMERATOR // _QWEN_IMAGE_VAE_TILE_STRIDE_DENOMINATOR - return max(_QWEN_IMAGE_VAE_SPATIAL_SCALE, stride // _QWEN_IMAGE_VAE_SPATIAL_SCALE * _QWEN_IMAGE_VAE_SPATIAL_SCALE) + return max(spatial_scale, stride // spatial_scale * spatial_scale) @contextmanager -def patch_qwen_image_vae_tiling(vae: QwenImageCompatibleVAE, tile_size: int | None) -> Iterator[None]: +def patch_qwen_image_vae_tiling( + vae: QwenImageCompatibleVAE | AutoencoderKLQwenImage21, + tile_size: int | None, + spatial_scale: int = _QWEN_IMAGE_VAE_SPATIAL_SCALE, +) -> Iterator[None]: """Set the VAE's tiling state for the duration of the block, then restore it. Two things make this a context manager rather than a bare ``enable_tiling()`` call: @@ -124,7 +130,8 @@ def patch_qwen_image_vae_tiling(vae: QwenImageCompatibleVAE, tile_size: int | No inherited 192px stride silently drops whole bands of the image, and a ``min`` above it grows every tile without removing any, making compute scale with ``tile_size**2``. - ``tile_size=None`` disables tiling for the block. + ``tile_size=None`` disables tiling for the block. ``spatial_scale`` is the VAE's pixels per latent: 8, or + 16 for Qwen-Image-2.1's VAE. """ original = ( vae.use_tiling, @@ -137,7 +144,7 @@ def patch_qwen_image_vae_tiling(vae: QwenImageCompatibleVAE, tile_size: int | No if tile_size is None: vae.disable_tiling() else: - stride = _tile_stride_for(tile_size) + stride = _tile_stride_for(tile_size, spatial_scale) vae.enable_tiling( tile_sample_min_height=tile_size, tile_sample_min_width=tile_size, diff --git a/invokeai/frontend/api/openapi.json b/invokeai/frontend/api/openapi.json index 018206e89dc..a78b1e299b2 100644 --- a/invokeai/frontend/api/openapi.json +++ b/invokeai/frontend/api/openapi.json @@ -1406,6 +1406,9 @@ { "$ref": "#/components/schemas/Main_Diffusers_QwenImage_Config" }, + { + "$ref": "#/components/schemas/Main_Diffusers_QwenImage21_Config" + }, { "$ref": "#/components/schemas/Main_Diffusers_Wan_Config" }, @@ -1448,6 +1451,9 @@ { "$ref": "#/components/schemas/Main_Checkpoint_QwenImage_Config" }, + { + "$ref": "#/components/schemas/Main_Checkpoint_QwenImage21_Config" + }, { "$ref": "#/components/schemas/Main_Checkpoint_Wan_Config" }, @@ -1484,6 +1490,9 @@ { "$ref": "#/components/schemas/Main_GGUF_QwenImage_Config" }, + { + "$ref": "#/components/schemas/Main_GGUF_QwenImage21_Config" + }, { "$ref": "#/components/schemas/Main_GGUF_Wan_Config" }, @@ -1535,6 +1544,9 @@ { "$ref": "#/components/schemas/VAE_Checkpoint_Anima_Config" }, + { + "$ref": "#/components/schemas/VAE_Checkpoint_QwenImage21_Config" + }, { "$ref": "#/components/schemas/VAE_Diffusers_SD1_Config" }, @@ -1553,6 +1565,9 @@ { "$ref": "#/components/schemas/VAE_Diffusers_Wan_Config" }, + { + "$ref": "#/components/schemas/VAE_Diffusers_QwenImage21_Config" + }, { "$ref": "#/components/schemas/PiDDecoder_Checkpoint_FLUX_Config" }, @@ -1888,6 +1903,9 @@ { "$ref": "#/components/schemas/Main_Diffusers_QwenImage_Config" }, + { + "$ref": "#/components/schemas/Main_Diffusers_QwenImage21_Config" + }, { "$ref": "#/components/schemas/Main_Diffusers_Wan_Config" }, @@ -1930,6 +1948,9 @@ { "$ref": "#/components/schemas/Main_Checkpoint_QwenImage_Config" }, + { + "$ref": "#/components/schemas/Main_Checkpoint_QwenImage21_Config" + }, { "$ref": "#/components/schemas/Main_Checkpoint_Wan_Config" }, @@ -1966,6 +1987,9 @@ { "$ref": "#/components/schemas/Main_GGUF_QwenImage_Config" }, + { + "$ref": "#/components/schemas/Main_GGUF_QwenImage21_Config" + }, { "$ref": "#/components/schemas/Main_GGUF_Wan_Config" }, @@ -2017,6 +2041,9 @@ { "$ref": "#/components/schemas/VAE_Checkpoint_Anima_Config" }, + { + "$ref": "#/components/schemas/VAE_Checkpoint_QwenImage21_Config" + }, { "$ref": "#/components/schemas/VAE_Diffusers_SD1_Config" }, @@ -2035,6 +2062,9 @@ { "$ref": "#/components/schemas/VAE_Diffusers_Wan_Config" }, + { + "$ref": "#/components/schemas/VAE_Diffusers_QwenImage21_Config" + }, { "$ref": "#/components/schemas/PiDDecoder_Checkpoint_FLUX_Config" }, @@ -2370,6 +2400,9 @@ { "$ref": "#/components/schemas/Main_Diffusers_QwenImage_Config" }, + { + "$ref": "#/components/schemas/Main_Diffusers_QwenImage21_Config" + }, { "$ref": "#/components/schemas/Main_Diffusers_Wan_Config" }, @@ -2412,6 +2445,9 @@ { "$ref": "#/components/schemas/Main_Checkpoint_QwenImage_Config" }, + { + "$ref": "#/components/schemas/Main_Checkpoint_QwenImage21_Config" + }, { "$ref": "#/components/schemas/Main_Checkpoint_Wan_Config" }, @@ -2448,6 +2484,9 @@ { "$ref": "#/components/schemas/Main_GGUF_QwenImage_Config" }, + { + "$ref": "#/components/schemas/Main_GGUF_QwenImage21_Config" + }, { "$ref": "#/components/schemas/Main_GGUF_Wan_Config" }, @@ -2499,6 +2538,9 @@ { "$ref": "#/components/schemas/VAE_Checkpoint_Anima_Config" }, + { + "$ref": "#/components/schemas/VAE_Checkpoint_QwenImage21_Config" + }, { "$ref": "#/components/schemas/VAE_Diffusers_SD1_Config" }, @@ -2517,6 +2559,9 @@ { "$ref": "#/components/schemas/VAE_Diffusers_Wan_Config" }, + { + "$ref": "#/components/schemas/VAE_Diffusers_QwenImage21_Config" + }, { "$ref": "#/components/schemas/PiDDecoder_Checkpoint_FLUX_Config" }, @@ -2897,6 +2942,9 @@ { "$ref": "#/components/schemas/Main_Diffusers_QwenImage_Config" }, + { + "$ref": "#/components/schemas/Main_Diffusers_QwenImage21_Config" + }, { "$ref": "#/components/schemas/Main_Diffusers_Wan_Config" }, @@ -2939,6 +2987,9 @@ { "$ref": "#/components/schemas/Main_Checkpoint_QwenImage_Config" }, + { + "$ref": "#/components/schemas/Main_Checkpoint_QwenImage21_Config" + }, { "$ref": "#/components/schemas/Main_Checkpoint_Wan_Config" }, @@ -2975,6 +3026,9 @@ { "$ref": "#/components/schemas/Main_GGUF_QwenImage_Config" }, + { + "$ref": "#/components/schemas/Main_GGUF_QwenImage21_Config" + }, { "$ref": "#/components/schemas/Main_GGUF_Wan_Config" }, @@ -3026,6 +3080,9 @@ { "$ref": "#/components/schemas/VAE_Checkpoint_Anima_Config" }, + { + "$ref": "#/components/schemas/VAE_Checkpoint_QwenImage21_Config" + }, { "$ref": "#/components/schemas/VAE_Diffusers_SD1_Config" }, @@ -3044,6 +3101,9 @@ { "$ref": "#/components/schemas/VAE_Diffusers_Wan_Config" }, + { + "$ref": "#/components/schemas/VAE_Diffusers_QwenImage21_Config" + }, { "$ref": "#/components/schemas/PiDDecoder_Checkpoint_FLUX_Config" }, @@ -3451,6 +3511,9 @@ { "$ref": "#/components/schemas/Main_Diffusers_QwenImage_Config" }, + { + "$ref": "#/components/schemas/Main_Diffusers_QwenImage21_Config" + }, { "$ref": "#/components/schemas/Main_Diffusers_Wan_Config" }, @@ -3493,6 +3556,9 @@ { "$ref": "#/components/schemas/Main_Checkpoint_QwenImage_Config" }, + { + "$ref": "#/components/schemas/Main_Checkpoint_QwenImage21_Config" + }, { "$ref": "#/components/schemas/Main_Checkpoint_Wan_Config" }, @@ -3529,6 +3595,9 @@ { "$ref": "#/components/schemas/Main_GGUF_QwenImage_Config" }, + { + "$ref": "#/components/schemas/Main_GGUF_QwenImage21_Config" + }, { "$ref": "#/components/schemas/Main_GGUF_Wan_Config" }, @@ -3580,6 +3649,9 @@ { "$ref": "#/components/schemas/VAE_Checkpoint_Anima_Config" }, + { + "$ref": "#/components/schemas/VAE_Checkpoint_QwenImage21_Config" + }, { "$ref": "#/components/schemas/VAE_Diffusers_SD1_Config" }, @@ -3598,6 +3670,9 @@ { "$ref": "#/components/schemas/VAE_Diffusers_Wan_Config" }, + { + "$ref": "#/components/schemas/VAE_Diffusers_QwenImage21_Config" + }, { "$ref": "#/components/schemas/PiDDecoder_Checkpoint_FLUX_Config" }, @@ -4877,6 +4952,9 @@ { "$ref": "#/components/schemas/Main_Diffusers_QwenImage_Config" }, + { + "$ref": "#/components/schemas/Main_Diffusers_QwenImage21_Config" + }, { "$ref": "#/components/schemas/Main_Diffusers_Wan_Config" }, @@ -4919,6 +4997,9 @@ { "$ref": "#/components/schemas/Main_Checkpoint_QwenImage_Config" }, + { + "$ref": "#/components/schemas/Main_Checkpoint_QwenImage21_Config" + }, { "$ref": "#/components/schemas/Main_Checkpoint_Wan_Config" }, @@ -4955,6 +5036,9 @@ { "$ref": "#/components/schemas/Main_GGUF_QwenImage_Config" }, + { + "$ref": "#/components/schemas/Main_GGUF_QwenImage21_Config" + }, { "$ref": "#/components/schemas/Main_GGUF_Wan_Config" }, @@ -5006,6 +5090,9 @@ { "$ref": "#/components/schemas/VAE_Checkpoint_Anima_Config" }, + { + "$ref": "#/components/schemas/VAE_Checkpoint_QwenImage21_Config" + }, { "$ref": "#/components/schemas/VAE_Diffusers_SD1_Config" }, @@ -5024,6 +5111,9 @@ { "$ref": "#/components/schemas/VAE_Diffusers_Wan_Config" }, + { + "$ref": "#/components/schemas/VAE_Diffusers_QwenImage21_Config" + }, { "$ref": "#/components/schemas/PiDDecoder_Checkpoint_FLUX_Config" }, @@ -19477,6 +19567,9 @@ { "$ref": "#/components/schemas/Main_Diffusers_QwenImage_Config" }, + { + "$ref": "#/components/schemas/Main_Diffusers_QwenImage21_Config" + }, { "$ref": "#/components/schemas/Main_Diffusers_Wan_Config" }, @@ -19519,6 +19612,9 @@ { "$ref": "#/components/schemas/Main_Checkpoint_QwenImage_Config" }, + { + "$ref": "#/components/schemas/Main_Checkpoint_QwenImage21_Config" + }, { "$ref": "#/components/schemas/Main_Checkpoint_Wan_Config" }, @@ -19555,6 +19651,9 @@ { "$ref": "#/components/schemas/Main_GGUF_QwenImage_Config" }, + { + "$ref": "#/components/schemas/Main_GGUF_QwenImage21_Config" + }, { "$ref": "#/components/schemas/Main_GGUF_Wan_Config" }, @@ -19606,6 +19705,9 @@ { "$ref": "#/components/schemas/VAE_Checkpoint_Anima_Config" }, + { + "$ref": "#/components/schemas/VAE_Checkpoint_QwenImage21_Config" + }, { "$ref": "#/components/schemas/VAE_Diffusers_SD1_Config" }, @@ -19624,6 +19726,9 @@ { "$ref": "#/components/schemas/VAE_Diffusers_Wan_Config" }, + { + "$ref": "#/components/schemas/VAE_Diffusers_QwenImage21_Config" + }, { "$ref": "#/components/schemas/PiDDecoder_Checkpoint_FLUX_Config" }, @@ -20608,6 +20713,7 @@ "external", "qwen-image", "anima", + "qwen-image-2-1", "krea-2", "wan", "minimax-h3", @@ -28819,6 +28925,10 @@ "krea2_img2img", "krea2_inpaint", "krea2_outpaint", + "qwen_image_2_1_txt2img", + "qwen_image_2_1_img2img", + "qwen_image_2_1_inpaint", + "qwen_image_2_1_outpaint", "wan_txt2img", "wan_img2img", "wan_inpaint", @@ -43448,6 +43558,21 @@ { "$ref": "#/components/schemas/PromptsFromFileInvocation" }, + { + "$ref": "#/components/schemas/QwenImage21DenoiseInvocation" + }, + { + "$ref": "#/components/schemas/QwenImage21ImageToLatentsInvocation" + }, + { + "$ref": "#/components/schemas/QwenImage21LatentsToImageInvocation" + }, + { + "$ref": "#/components/schemas/QwenImage21ModelLoaderInvocation" + }, + { + "$ref": "#/components/schemas/QwenImage21TextEncoderInvocation" + }, { "$ref": "#/components/schemas/QwenImageDenoiseInvocation" }, @@ -44096,6 +44221,12 @@ { "$ref": "#/components/schemas/PromptTemplateOutput" }, + { + "$ref": "#/components/schemas/QwenImage21ConditioningOutput" + }, + { + "$ref": "#/components/schemas/QwenImage21ModelLoaderOutput" + }, { "$ref": "#/components/schemas/QwenImageConditioningOutput" }, @@ -53727,6 +53858,21 @@ { "$ref": "#/components/schemas/PromptsFromFileInvocation" }, + { + "$ref": "#/components/schemas/QwenImage21DenoiseInvocation" + }, + { + "$ref": "#/components/schemas/QwenImage21ImageToLatentsInvocation" + }, + { + "$ref": "#/components/schemas/QwenImage21LatentsToImageInvocation" + }, + { + "$ref": "#/components/schemas/QwenImage21ModelLoaderInvocation" + }, + { + "$ref": "#/components/schemas/QwenImage21TextEncoderInvocation" + }, { "$ref": "#/components/schemas/QwenImageDenoiseInvocation" }, @@ -54371,6 +54517,12 @@ { "$ref": "#/components/schemas/PromptTemplateOutput" }, + { + "$ref": "#/components/schemas/QwenImage21ConditioningOutput" + }, + { + "$ref": "#/components/schemas/QwenImage21ModelLoaderOutput" + }, { "$ref": "#/components/schemas/QwenImageConditioningOutput" }, @@ -55321,6 +55473,21 @@ { "$ref": "#/components/schemas/PromptsFromFileInvocation" }, + { + "$ref": "#/components/schemas/QwenImage21DenoiseInvocation" + }, + { + "$ref": "#/components/schemas/QwenImage21ImageToLatentsInvocation" + }, + { + "$ref": "#/components/schemas/QwenImage21LatentsToImageInvocation" + }, + { + "$ref": "#/components/schemas/QwenImage21ModelLoaderInvocation" + }, + { + "$ref": "#/components/schemas/QwenImage21TextEncoderInvocation" + }, { "$ref": "#/components/schemas/QwenImageDenoiseInvocation" }, @@ -56443,6 +56610,21 @@ "prompt_template": { "$ref": "#/components/schemas/PromptTemplateOutput" }, + "qwen_image_2_1_denoise": { + "$ref": "#/components/schemas/LatentsOutput" + }, + "qwen_image_2_1_i2l": { + "$ref": "#/components/schemas/LatentsOutput" + }, + "qwen_image_2_1_l2i": { + "$ref": "#/components/schemas/ImageOutput" + }, + "qwen_image_2_1_model_loader": { + "$ref": "#/components/schemas/QwenImage21ModelLoaderOutput" + }, + "qwen_image_2_1_text_encoder": { + "$ref": "#/components/schemas/QwenImage21ConditioningOutput" + }, "qwen_image_denoise": { "$ref": "#/components/schemas/LatentsOutput" }, @@ -56971,6 +57153,11 @@ "pidi_edge_detection", "prompt_from_file", "prompt_template", + "qwen_image_2_1_denoise", + "qwen_image_2_1_i2l", + "qwen_image_2_1_l2i", + "qwen_image_2_1_model_loader", + "qwen_image_2_1_text_encoder", "qwen_image_denoise", "qwen_image_i2l", "qwen_image_l2i", @@ -57897,6 +58084,21 @@ { "$ref": "#/components/schemas/PromptsFromFileInvocation" }, + { + "$ref": "#/components/schemas/QwenImage21DenoiseInvocation" + }, + { + "$ref": "#/components/schemas/QwenImage21ImageToLatentsInvocation" + }, + { + "$ref": "#/components/schemas/QwenImage21LatentsToImageInvocation" + }, + { + "$ref": "#/components/schemas/QwenImage21ModelLoaderInvocation" + }, + { + "$ref": "#/components/schemas/QwenImage21TextEncoderInvocation" + }, { "$ref": "#/components/schemas/QwenImageDenoiseInvocation" }, @@ -59127,6 +59329,21 @@ { "$ref": "#/components/schemas/PromptsFromFileInvocation" }, + { + "$ref": "#/components/schemas/QwenImage21DenoiseInvocation" + }, + { + "$ref": "#/components/schemas/QwenImage21ImageToLatentsInvocation" + }, + { + "$ref": "#/components/schemas/QwenImage21LatentsToImageInvocation" + }, + { + "$ref": "#/components/schemas/QwenImage21ModelLoaderInvocation" + }, + { + "$ref": "#/components/schemas/QwenImage21TextEncoderInvocation" + }, { "$ref": "#/components/schemas/QwenImageDenoiseInvocation" }, @@ -72514,7 +72731,7 @@ "title": "Main_Checkpoint_MiniMaxH3_Config", "description": "Model config for MiniMax H3 single-file transformer checkpoints (safetensors).\n\nCovers MiniMax's single-file FL2VA transformer repacks (Comfy-Org and mirrors): bf16 or\nComfy ``int8_tensorwise``(+convrot) quantized, full or AdaLN-pruned (\"adaln curves\"). The\nfile holds ONLY the transformer - the text encoder, VAEs, tokenizer and processor must come\nfrom an installed H3 diffusers-layout folder.\n\nThe FL2VA and Ref2VA task transformers are key-for-key (and, except the non-pruned\nint8_convrot repacks, byte-size) indistinguishable, so the FILENAME is the variant\nclassifier and ``variant`` is the user-correctable override for renamed files (e.g.\nre-uploads). A misclassified variant loads and runs but produces degraded output - FL2VA\nexpects no reference conditioning rows, Ref2VA expects them - which is why the override\nexists rather than any attempt at content sniffing." }, - "Main_Checkpoint_QwenImage_Config": { + "Main_Checkpoint_QwenImage21_Config": { "properties": { "key": { "type": "string", @@ -72645,9 +72862,9 @@ }, "base": { "type": "string", - "const": "qwen-image", + "const": "qwen-image-2-1", "title": "Base", - "default": "qwen-image" + "default": "qwen-image-2-1" }, "format": { "type": "string", @@ -72656,14 +72873,7 @@ "default": "checkpoint" }, "variant": { - "anyOf": [ - { - "$ref": "#/components/schemas/QwenImageVariantType" - }, - { - "type": "null" - } - ] + "$ref": "#/components/schemas/QwenImage21VariantType" } }, "type": "object", @@ -72687,10 +72897,10 @@ "format", "variant" ], - "title": "Main_Checkpoint_QwenImage_Config", - "description": "Model config for Qwen Image single-file checkpoint models (safetensors, etc).\n\nCovers raw bf16/fp16 checkpoints and ComfyUI-style fp8_scaled and nvfp4 checkpoints.\nThe loader keeps scaled fp8 weights when fp8 compute is available or the\n`default_settings.fp8_storage` toggle is on (which also re-casts the rest to fp8),\nand dequantizes them to bf16 at load time otherwise." + "title": "Main_Checkpoint_QwenImage21_Config", + "description": "Model config for Qwen-Image-2.1 single-file transformers (bf16, ComfyUI fp8 scaled or int8 convrot)." }, - "Main_Checkpoint_SD1_Config": { + "Main_Checkpoint_QwenImage_Config": { "properties": { "key": { "type": "string", @@ -72819,23 +73029,27 @@ "title": "Config Path", "description": "Path to the config for this model, if any." }, + "base": { + "type": "string", + "const": "qwen-image", + "title": "Base", + "default": "qwen-image" + }, "format": { "type": "string", "const": "checkpoint", "title": "Format", "default": "checkpoint" }, - "prediction_type": { - "$ref": "#/components/schemas/SchedulerPredictionType" - }, "variant": { - "$ref": "#/components/schemas/ModelVariantType" - }, - "base": { - "type": "string", - "const": "sd-1", - "title": "Base", - "default": "sd-1" + "anyOf": [ + { + "$ref": "#/components/schemas/QwenImageVariantType" + }, + { + "type": "null" + } + ] } }, "type": "object", @@ -72855,14 +73069,14 @@ "trigger_phrases", "default_settings", "config_path", + "base", "format", - "prediction_type", - "variant", - "base" + "variant" ], - "title": "Main_Checkpoint_SD1_Config" + "title": "Main_Checkpoint_QwenImage_Config", + "description": "Model config for Qwen Image single-file checkpoint models (safetensors, etc).\n\nCovers raw bf16/fp16 checkpoints and ComfyUI-style fp8_scaled and nvfp4 checkpoints.\nThe loader keeps scaled fp8 weights when fp8 compute is available or the\n`default_settings.fp8_storage` toggle is on (which also re-casts the rest to fp8),\nand dequantizes them to bf16 at load time otherwise." }, - "Main_Checkpoint_SD2_Config": { + "Main_Checkpoint_SD1_Config": { "properties": { "key": { "type": "string", @@ -73005,9 +73219,9 @@ }, "base": { "type": "string", - "const": "sd-2", + "const": "sd-1", "title": "Base", - "default": "sd-2" + "default": "sd-1" } }, "type": "object", @@ -73032,9 +73246,9 @@ "variant", "base" ], - "title": "Main_Checkpoint_SD2_Config" + "title": "Main_Checkpoint_SD1_Config" }, - "Main_Checkpoint_SDXLRefiner_Config": { + "Main_Checkpoint_SD2_Config": { "properties": { "key": { "type": "string", @@ -73177,9 +73391,9 @@ }, "base": { "type": "string", - "const": "sdxl-refiner", + "const": "sd-2", "title": "Base", - "default": "sdxl-refiner" + "default": "sd-2" } }, "type": "object", @@ -73204,9 +73418,9 @@ "variant", "base" ], - "title": "Main_Checkpoint_SDXLRefiner_Config" + "title": "Main_Checkpoint_SD2_Config" }, - "Main_Checkpoint_SDXL_Config": { + "Main_Checkpoint_SDXLRefiner_Config": { "properties": { "key": { "type": "string", @@ -73349,9 +73563,9 @@ }, "base": { "type": "string", - "const": "sdxl", + "const": "sdxl-refiner", "title": "Base", - "default": "sdxl" + "default": "sdxl-refiner" } }, "type": "object", @@ -73376,9 +73590,9 @@ "variant", "base" ], - "title": "Main_Checkpoint_SDXL_Config" + "title": "Main_Checkpoint_SDXLRefiner_Config" }, - "Main_Checkpoint_Wan_Config": { + "Main_Checkpoint_SDXL_Config": { "properties": { "key": { "type": "string", @@ -73507,27 +73721,23 @@ "title": "Config Path", "description": "Path to the config for this model, if any." }, - "base": { - "type": "string", - "const": "wan", - "title": "Base", - "default": "wan" - }, "format": { "type": "string", "const": "checkpoint", "title": "Format", "default": "checkpoint" }, + "prediction_type": { + "$ref": "#/components/schemas/SchedulerPredictionType" + }, "variant": { - "$ref": "#/components/schemas/WanVariantType" + "$ref": "#/components/schemas/ModelVariantType" }, - "expert": { + "base": { "type": "string", - "enum": ["high", "low", "none"], - "title": "Expert", - "description": "For Wan 2.2 A14B's dual-expert MoE: 'high' for the high-noise expert, 'low' for the low-noise expert. 'none' for single-transformer models (TI2V-5B).", - "default": "none" + "const": "sdxl", + "title": "Base", + "default": "sdxl" } }, "type": "object", @@ -73547,15 +73757,14 @@ "trigger_phrases", "default_settings", "config_path", - "base", "format", + "prediction_type", "variant", - "expert" + "base" ], - "title": "Main_Checkpoint_Wan_Config", - "description": "Model config for single-file Wan 2.2 transformer checkpoints (safetensors).\n\nThis is the format the community ships on CivitAI and in ComfyUI-oriented\nHugging Face repos: one ``.safetensors`` per transformer, in either the native\nupstream key layout or the diffusers one, optionally under a\n``model.diffusion_model.`` prefix, and optionally ComfyUI ``fp8_scaled``\nquantized. The loader normalises all of those.\n\nAs with GGUF, A14B's MoE arrives as two files (one per expert); ``expert``\nrecords which one this is so the Wan model loader invocation can pair them.\nTI2V-5B is single-transformer and stores ``expert='none'``." + "title": "Main_Checkpoint_SDXL_Config" }, - "Main_Checkpoint_ZImage_Config": { + "Main_Checkpoint_Wan_Config": { "properties": { "key": { "type": "string", @@ -73686,9 +73895,9 @@ }, "base": { "type": "string", - "const": "z-image", + "const": "wan", "title": "Base", - "default": "z-image" + "default": "wan" }, "format": { "type": "string", @@ -73697,7 +73906,14 @@ "default": "checkpoint" }, "variant": { - "$ref": "#/components/schemas/ZImageVariantType" + "$ref": "#/components/schemas/WanVariantType" + }, + "expert": { + "type": "string", + "enum": ["high", "low", "none"], + "title": "Expert", + "description": "For Wan 2.2 A14B's dual-expert MoE: 'high' for the high-noise expert, 'low' for the low-noise expert. 'none' for single-transformer models (TI2V-5B).", + "default": "none" } }, "type": "object", @@ -73719,12 +73935,182 @@ "config_path", "base", "format", - "variant" + "variant", + "expert" ], - "title": "Main_Checkpoint_ZImage_Config", - "description": "Model config for Z-Image single-file checkpoint models (safetensors, etc)." + "title": "Main_Checkpoint_Wan_Config", + "description": "Model config for single-file Wan 2.2 transformer checkpoints (safetensors).\n\nThis is the format the community ships on CivitAI and in ComfyUI-oriented\nHugging Face repos: one ``.safetensors`` per transformer, in either the native\nupstream key layout or the diffusers one, optionally under a\n``model.diffusion_model.`` prefix, and optionally ComfyUI ``fp8_scaled``\nquantized. The loader normalises all of those.\n\nAs with GGUF, A14B's MoE arrives as two files (one per expert); ``expert``\nrecords which one this is so the Wan model loader invocation can pair them.\nTI2V-5B is single-transformer and stores ``expert='none'``." }, - "Main_Diffusers_CogView4_Config": { + "Main_Checkpoint_ZImage_Config": { + "properties": { + "key": { + "type": "string", + "title": "Key", + "description": "A unique key for this model." + }, + "hash": { + "type": "string", + "title": "Hash", + "description": "The hash of the model file(s)." + }, + "path": { + "type": "string", + "title": "Path", + "description": "Path to the model on the filesystem. Relative paths are relative to the Invoke root directory." + }, + "file_size": { + "type": "integer", + "title": "File Size", + "description": "The size of the model in bytes." + }, + "name": { + "type": "string", + "title": "Name", + "description": "Name of the model." + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description", + "description": "Model description" + }, + "source": { + "type": "string", + "title": "Source", + "description": "The original source of the model (path, URL or repo_id)." + }, + "source_type": { + "$ref": "#/components/schemas/ModelSourceType", + "description": "The type of source" + }, + "source_api_response": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Source Api Response", + "description": "The original API response from the source, as stringified JSON." + }, + "source_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Source Url", + "description": "Optional URL for the model (e.g. download page or model page)." + }, + "cover_image": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Cover Image", + "description": "Url for image to preview model" + }, + "type": { + "type": "string", + "const": "main", + "title": "Type", + "default": "main" + }, + "trigger_phrases": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + { + "type": "null" + } + ], + "title": "Trigger Phrases", + "description": "Set of trigger phrases for this model" + }, + "default_settings": { + "anyOf": [ + { + "$ref": "#/components/schemas/MainModelDefaultSettings" + }, + { + "type": "null" + } + ], + "description": "Default settings for this model" + }, + "config_path": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Config Path", + "description": "Path to the config for this model, if any." + }, + "base": { + "type": "string", + "const": "z-image", + "title": "Base", + "default": "z-image" + }, + "format": { + "type": "string", + "const": "checkpoint", + "title": "Format", + "default": "checkpoint" + }, + "variant": { + "$ref": "#/components/schemas/ZImageVariantType" + } + }, + "type": "object", + "required": [ + "key", + "hash", + "path", + "file_size", + "name", + "description", + "source", + "source_type", + "source_api_response", + "source_url", + "cover_image", + "type", + "trigger_phrases", + "default_settings", + "config_path", + "base", + "format", + "variant" + ], + "title": "Main_Checkpoint_ZImage_Config", + "description": "Model config for Z-Image single-file checkpoint models (safetensors, etc)." + }, + "Main_Diffusers_CogView4_Config": { "properties": { "key": { "type": "string", @@ -75028,7 +75414,7 @@ "title": "Main_Diffusers_MiniMaxH3_Config", "description": "Model config for MiniMax H3 (Hailuo 3.0) diffusers-format models." }, - "Main_Diffusers_QwenImage_Config": { + "Main_Diffusers_QwenImage21_Config": { "properties": { "key": { "type": "string", @@ -75157,19 +75543,12 @@ }, "base": { "type": "string", - "const": "qwen-image", + "const": "qwen-image-2-1", "title": "Base", - "default": "qwen-image" + "default": "qwen-image-2-1" }, "variant": { - "anyOf": [ - { - "$ref": "#/components/schemas/QwenImageVariantType" - }, - { - "type": "null" - } - ] + "$ref": "#/components/schemas/QwenImage21VariantType" } }, "type": "object", @@ -75193,10 +75572,10 @@ "base", "variant" ], - "title": "Main_Diffusers_QwenImage_Config", - "description": "Model config for Qwen Image diffusers models (both txt2img and edit)." + "title": "Main_Diffusers_QwenImage21_Config", + "description": "Model config for Qwen-Image-2.1 diffusers pipelines." }, - "Main_Diffusers_SD1_Config": { + "Main_Diffusers_QwenImage_Config": { "properties": { "key": { "type": "string", @@ -75323,17 +75702,21 @@ "$ref": "#/components/schemas/ModelRepoVariant", "default": "" }, - "prediction_type": { - "$ref": "#/components/schemas/SchedulerPredictionType" - }, - "variant": { - "$ref": "#/components/schemas/ModelVariantType" - }, "base": { "type": "string", - "const": "sd-1", + "const": "qwen-image", "title": "Base", - "default": "sd-1" + "default": "qwen-image" + }, + "variant": { + "anyOf": [ + { + "$ref": "#/components/schemas/QwenImageVariantType" + }, + { + "type": "null" + } + ] } }, "type": "object", @@ -75354,13 +75737,13 @@ "default_settings", "format", "repo_variant", - "prediction_type", - "variant", - "base" + "base", + "variant" ], - "title": "Main_Diffusers_SD1_Config" + "title": "Main_Diffusers_QwenImage_Config", + "description": "Model config for Qwen Image diffusers models (both txt2img and edit)." }, - "Main_Diffusers_SD2_Config": { + "Main_Diffusers_SD1_Config": { "properties": { "key": { "type": "string", @@ -75495,9 +75878,9 @@ }, "base": { "type": "string", - "const": "sd-2", + "const": "sd-1", "title": "Base", - "default": "sd-2" + "default": "sd-1" } }, "type": "object", @@ -75522,9 +75905,9 @@ "variant", "base" ], - "title": "Main_Diffusers_SD2_Config" + "title": "Main_Diffusers_SD1_Config" }, - "Main_Diffusers_SD3_Config": { + "Main_Diffusers_SD2_Config": { "properties": { "key": { "type": "string", @@ -75651,29 +76034,17 @@ "$ref": "#/components/schemas/ModelRepoVariant", "default": "" }, + "prediction_type": { + "$ref": "#/components/schemas/SchedulerPredictionType" + }, + "variant": { + "$ref": "#/components/schemas/ModelVariantType" + }, "base": { "type": "string", - "const": "sd-3", + "const": "sd-2", "title": "Base", - "default": "sd-3" - }, - "submodels": { - "anyOf": [ - { - "additionalProperties": { - "$ref": "#/components/schemas/SubmodelDefinition" - }, - "propertyNames": { - "$ref": "#/components/schemas/SubModelType" - }, - "type": "object" - }, - { - "type": "null" - } - ], - "title": "Submodels", - "description": "Loadable submodels in this model" + "default": "sd-2" } }, "type": "object", @@ -75694,12 +76065,13 @@ "default_settings", "format", "repo_variant", - "base", - "submodels" + "prediction_type", + "variant", + "base" ], - "title": "Main_Diffusers_SD3_Config" + "title": "Main_Diffusers_SD2_Config" }, - "Main_Diffusers_SDXLRefiner_Config": { + "Main_Diffusers_SD3_Config": { "properties": { "key": { "type": "string", @@ -75826,17 +76198,29 @@ "$ref": "#/components/schemas/ModelRepoVariant", "default": "" }, - "prediction_type": { - "$ref": "#/components/schemas/SchedulerPredictionType" - }, - "variant": { - "$ref": "#/components/schemas/ModelVariantType" - }, "base": { "type": "string", - "const": "sdxl-refiner", + "const": "sd-3", "title": "Base", - "default": "sdxl-refiner" + "default": "sd-3" + }, + "submodels": { + "anyOf": [ + { + "additionalProperties": { + "$ref": "#/components/schemas/SubmodelDefinition" + }, + "propertyNames": { + "$ref": "#/components/schemas/SubModelType" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Submodels", + "description": "Loadable submodels in this model" } }, "type": "object", @@ -75857,13 +76241,12 @@ "default_settings", "format", "repo_variant", - "prediction_type", - "variant", - "base" + "base", + "submodels" ], - "title": "Main_Diffusers_SDXLRefiner_Config" + "title": "Main_Diffusers_SD3_Config" }, - "Main_Diffusers_SDXL_Config": { + "Main_Diffusers_SDXLRefiner_Config": { "properties": { "key": { "type": "string", @@ -75998,9 +76381,9 @@ }, "base": { "type": "string", - "const": "sdxl", + "const": "sdxl-refiner", "title": "Base", - "default": "sdxl" + "default": "sdxl-refiner" } }, "type": "object", @@ -76025,9 +76408,9 @@ "variant", "base" ], - "title": "Main_Diffusers_SDXL_Config" + "title": "Main_Diffusers_SDXLRefiner_Config" }, - "Main_Diffusers_Wan_Config": { + "Main_Diffusers_SDXL_Config": { "properties": { "key": { "type": "string", @@ -76154,32 +76537,17 @@ "$ref": "#/components/schemas/ModelRepoVariant", "default": "" }, - "base": { - "type": "string", - "const": "wan", - "title": "Base", - "default": "wan" + "prediction_type": { + "$ref": "#/components/schemas/SchedulerPredictionType" }, "variant": { - "$ref": "#/components/schemas/WanVariantType" - }, - "has_dual_expert": { - "type": "boolean", - "title": "Has Dual Expert", - "description": "Whether this model ships two transformer experts (Wan 2.2 A14B MoE). False for TI2V-5B.", - "default": false + "$ref": "#/components/schemas/ModelVariantType" }, - "boundary_ratio": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "title": "Boundary Ratio", - "description": "MoE expert switch point as a fraction of num_train_timesteps (typically 1000). None for single-transformer models. Read from model_index.json by Diffusers' WanPipeline." + "base": { + "type": "string", + "const": "sdxl", + "title": "Base", + "default": "sdxl" } }, "type": "object", @@ -76200,15 +76568,13 @@ "default_settings", "format", "repo_variant", - "base", + "prediction_type", "variant", - "has_dual_expert", - "boundary_ratio" + "base" ], - "title": "Main_Diffusers_Wan_Config", - "description": "Model config for Wan 2.2 diffusers models.\n\nCovers both the dual-expert T2V-A14B family and the single-transformer TI2V-5B\nfamily. Variant is detected from the on-disk transformer config (latent channel\ncount) plus the presence of a sibling ``transformer_2/`` directory." + "title": "Main_Diffusers_SDXL_Config" }, - "Main_Diffusers_ZImage_Config": { + "Main_Diffusers_Wan_Config": { "properties": { "key": { "type": "string", @@ -76337,12 +76703,30 @@ }, "base": { "type": "string", - "const": "z-image", + "const": "wan", "title": "Base", - "default": "z-image" + "default": "wan" }, "variant": { - "$ref": "#/components/schemas/ZImageVariantType" + "$ref": "#/components/schemas/WanVariantType" + }, + "has_dual_expert": { + "type": "boolean", + "title": "Has Dual Expert", + "description": "Whether this model ships two transformer experts (Wan 2.2 A14B MoE). False for TI2V-5B.", + "default": false + }, + "boundary_ratio": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Boundary Ratio", + "description": "MoE expert switch point as a fraction of num_train_timesteps (typically 1000). None for single-transformer models. Read from model_index.json by Diffusers' WanPipeline." } }, "type": "object", @@ -76364,12 +76748,14 @@ "format", "repo_variant", "base", - "variant" + "variant", + "has_dual_expert", + "boundary_ratio" ], - "title": "Main_Diffusers_ZImage_Config", - "description": "Model config for Z-Image diffusers models (Z-Image-Turbo, Z-Image-Base)." + "title": "Main_Diffusers_Wan_Config", + "description": "Model config for Wan 2.2 diffusers models.\n\nCovers both the dual-expert T2V-A14B family and the single-transformer TI2V-5B\nfamily. Variant is detected from the on-disk transformer config (latent channel\ncount) plus the presence of a sibling ``transformer_2/`` directory." }, - "Main_GGUF_ErnieImage_Config": { + "Main_Diffusers_ZImage_Config": { "properties": { "key": { "type": "string", @@ -76486,29 +76872,24 @@ ], "description": "Default settings for this model" }, - "config_path": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Config Path", - "description": "Path to the config for this model, if any." + "format": { + "type": "string", + "const": "diffusers", + "title": "Format", + "default": "diffusers" + }, + "repo_variant": { + "$ref": "#/components/schemas/ModelRepoVariant", + "default": "" }, "base": { "type": "string", - "const": "ernie-image", + "const": "z-image", "title": "Base", - "default": "ernie-image" + "default": "z-image" }, - "format": { - "type": "string", - "const": "gguf_quantized", - "title": "Format", - "default": "gguf_quantized" + "variant": { + "$ref": "#/components/schemas/ZImageVariantType" } }, "type": "object", @@ -76527,14 +76908,15 @@ "type", "trigger_phrases", "default_settings", - "config_path", + "format", + "repo_variant", "base", - "format" + "variant" ], - "title": "Main_GGUF_ErnieImage_Config", - "description": "Model config for GGUF-quantized ERNIE-Image transformers (single-file).\n\nThe community GGUFs carry the diffusers key layout unchanged, so the same fingerprint identifies\nthem. Their `general.architecture` says nothing about ERNIE -- unsloth's builds declare `wan`,\nothers `flux` -- so identification rests on the keys alone. As with the safetensors file, Turbo\nand base are told apart by the model name." + "title": "Main_Diffusers_ZImage_Config", + "description": "Model config for Z-Image diffusers models (Z-Image-Turbo, Z-Image-Base)." }, - "Main_GGUF_FLUX_Config": { + "Main_GGUF_ErnieImage_Config": { "properties": { "key": { "type": "string", @@ -76665,18 +77047,15 @@ }, "base": { "type": "string", - "const": "flux", + "const": "ernie-image", "title": "Base", - "default": "flux" + "default": "ernie-image" }, "format": { "type": "string", "const": "gguf_quantized", "title": "Format", "default": "gguf_quantized" - }, - "variant": { - "$ref": "#/components/schemas/FluxVariantType" } }, "type": "object", @@ -76697,13 +77076,12 @@ "default_settings", "config_path", "base", - "format", - "variant" + "format" ], - "title": "Main_GGUF_FLUX_Config", - "description": "Model config for main checkpoint models." + "title": "Main_GGUF_ErnieImage_Config", + "description": "Model config for GGUF-quantized ERNIE-Image transformers (single-file).\n\nThe community GGUFs carry the diffusers key layout unchanged, so the same fingerprint identifies\nthem. Their `general.architecture` says nothing about ERNIE -- unsloth's builds declare `wan`,\nothers `flux` -- so identification rests on the keys alone. As with the safetensors file, Turbo\nand base are told apart by the model name." }, - "Main_GGUF_Flux2_Config": { + "Main_GGUF_FLUX_Config": { "properties": { "key": { "type": "string", @@ -76834,9 +77212,9 @@ }, "base": { "type": "string", - "const": "flux2", + "const": "flux", "title": "Base", - "default": "flux2" + "default": "flux" }, "format": { "type": "string", @@ -76845,7 +77223,7 @@ "default": "gguf_quantized" }, "variant": { - "$ref": "#/components/schemas/Flux2VariantType" + "$ref": "#/components/schemas/FluxVariantType" } }, "type": "object", @@ -76869,10 +77247,10 @@ "format", "variant" ], - "title": "Main_GGUF_Flux2_Config", - "description": "Model config for GGUF-quantized FLUX.2 checkpoint models (e.g. Klein)." + "title": "Main_GGUF_FLUX_Config", + "description": "Model config for main checkpoint models." }, - "Main_GGUF_Ideogram4_Config": { + "Main_GGUF_Flux2_Config": { "properties": { "key": { "type": "string", @@ -77003,9 +77381,9 @@ }, "base": { "type": "string", - "const": "ideogram-4", + "const": "flux2", "title": "Base", - "default": "ideogram-4" + "default": "flux2" }, "format": { "type": "string", @@ -77013,11 +77391,8 @@ "title": "Format", "default": "gguf_quantized" }, - "branch": { - "type": "string", - "enum": ["conditional", "unconditional"], - "title": "Branch", - "description": "Which of Ideogram 4's two transformer branches this file holds. GGUF releases record no metadata, so it is read from the filename: anything naming 'unconditional' or 'uncond' is the unconditional branch. Rename and re-install to correct it." + "variant": { + "$ref": "#/components/schemas/Flux2VariantType" } }, "type": "object", @@ -77039,12 +77414,12 @@ "config_path", "base", "format", - "branch" + "variant" ], - "title": "Main_GGUF_Ideogram4_Config", - "description": "Model config for GGUF-quantized Ideogram 4 transformers (single-file).\n\nLike the safetensors single files, one GGUF holds ONE of the two dual-branch transformers and\nthe loader node pairs them. Unlike them, no published GGUF carries any metadata (every release\nhas a key/value count of zero), so the branch comes from the filename alone: keep the files\nunder their published names." + "title": "Main_GGUF_Flux2_Config", + "description": "Model config for GGUF-quantized FLUX.2 checkpoint models (e.g. Klein)." }, - "Main_GGUF_Krea2_Config": { + "Main_GGUF_Ideogram4_Config": { "properties": { "key": { "type": "string", @@ -77175,9 +77550,9 @@ }, "base": { "type": "string", - "const": "krea-2", + "const": "ideogram-4", "title": "Base", - "default": "krea-2" + "default": "ideogram-4" }, "format": { "type": "string", @@ -77185,8 +77560,11 @@ "title": "Format", "default": "gguf_quantized" }, - "variant": { - "$ref": "#/components/schemas/Krea2VariantType" + "branch": { + "type": "string", + "enum": ["conditional", "unconditional"], + "title": "Branch", + "description": "Which of Ideogram 4's two transformer branches this file holds. GGUF releases record no metadata, so it is read from the filename: anything naming 'unconditional' or 'uncond' is the unconditional branch. Rename and re-install to correct it." } }, "type": "object", @@ -77208,12 +77586,12 @@ "config_path", "base", "format", - "variant" + "branch" ], - "title": "Main_GGUF_Krea2_Config", - "description": "Model config for GGUF-quantized Krea-2 transformer models (single-file)." + "title": "Main_GGUF_Ideogram4_Config", + "description": "Model config for GGUF-quantized Ideogram 4 transformers (single-file).\n\nLike the safetensors single files, one GGUF holds ONE of the two dual-branch transformers and\nthe loader node pairs them. Unlike them, no published GGUF carries any metadata (every release\nhas a key/value count of zero), so the branch comes from the filename alone: keep the files\nunder their published names." }, - "Main_GGUF_QwenImage_Config": { + "Main_GGUF_Krea2_Config": { "properties": { "key": { "type": "string", @@ -77344,9 +77722,9 @@ }, "base": { "type": "string", - "const": "qwen-image", + "const": "krea-2", "title": "Base", - "default": "qwen-image" + "default": "krea-2" }, "format": { "type": "string", @@ -77355,14 +77733,7 @@ "default": "gguf_quantized" }, "variant": { - "anyOf": [ - { - "$ref": "#/components/schemas/QwenImageVariantType" - }, - { - "type": "null" - } - ] + "$ref": "#/components/schemas/Krea2VariantType" } }, "type": "object", @@ -77386,10 +77757,10 @@ "format", "variant" ], - "title": "Main_GGUF_QwenImage_Config", - "description": "Model config for GGUF-quantized Qwen Image transformer models." + "title": "Main_GGUF_Krea2_Config", + "description": "Model config for GGUF-quantized Krea-2 transformer models (single-file)." }, - "Main_GGUF_Wan_Config": { + "Main_GGUF_QwenImage21_Config": { "properties": { "key": { "type": "string", @@ -77520,9 +77891,9 @@ }, "base": { "type": "string", - "const": "wan", + "const": "qwen-image-2-1", "title": "Base", - "default": "wan" + "default": "qwen-image-2-1" }, "format": { "type": "string", @@ -77531,14 +77902,7 @@ "default": "gguf_quantized" }, "variant": { - "$ref": "#/components/schemas/WanVariantType" - }, - "expert": { - "type": "string", - "enum": ["high", "low", "none"], - "title": "Expert", - "description": "For Wan 2.2 A14B's dual-expert MoE: 'high' for the high-noise expert, 'low' for the low-noise expert. 'none' for single-transformer models (TI2V-5B).", - "default": "none" + "$ref": "#/components/schemas/QwenImage21VariantType" } }, "type": "object", @@ -77560,13 +77924,12 @@ "config_path", "base", "format", - "variant", - "expert" + "variant" ], - "title": "Main_GGUF_Wan_Config", - "description": "Model config for GGUF-quantized Wan 2.2 transformer models.\n\nA14B's MoE ships as two GGUF files (one per expert); ``expert`` records\nwhich one this is so the model loader invocation can pair them. TI2V-5B\nis a single-transformer model and stores ``expert='none'``." + "title": "Main_GGUF_QwenImage21_Config", + "description": "Model config for GGUF-quantized Qwen-Image-2.1 transformers." }, - "Main_GGUF_ZImage_Config": { + "Main_GGUF_QwenImage_Config": { "properties": { "key": { "type": "string", @@ -77697,9 +78060,9 @@ }, "base": { "type": "string", - "const": "z-image", + "const": "qwen-image", "title": "Base", - "default": "z-image" + "default": "qwen-image" }, "format": { "type": "string", @@ -77708,7 +78071,14 @@ "default": "gguf_quantized" }, "variant": { - "$ref": "#/components/schemas/ZImageVariantType" + "anyOf": [ + { + "$ref": "#/components/schemas/QwenImageVariantType" + }, + { + "type": "null" + } + ] } }, "type": "object", @@ -77732,10 +78102,10 @@ "format", "variant" ], - "title": "Main_GGUF_ZImage_Config", - "description": "Model config for GGUF-quantized Z-Image transformer models." + "title": "Main_GGUF_QwenImage_Config", + "description": "Model config for GGUF-quantized Qwen Image transformer models." }, - "Main_SDNQ_Diffusers_FLUX_Config": { + "Main_GGUF_Wan_Config": { "properties": { "key": { "type": "string", @@ -77852,42 +78222,209 @@ ], "description": "Default settings for this model" }, + "config_path": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Config Path", + "description": "Path to the config for this model, if any." + }, "base": { "type": "string", - "const": "flux", + "const": "wan", "title": "Base", - "default": "flux" + "default": "wan" }, "format": { "type": "string", - "const": "sdnq_quantized", + "const": "gguf_quantized", "title": "Format", - "default": "sdnq_quantized" + "default": "gguf_quantized" }, "variant": { - "$ref": "#/components/schemas/FluxVariantType" + "$ref": "#/components/schemas/WanVariantType" }, - "repo_variant": { - "$ref": "#/components/schemas/ModelRepoVariant", - "default": "" + "expert": { + "type": "string", + "enum": ["high", "low", "none"], + "title": "Expert", + "description": "For Wan 2.2 A14B's dual-expert MoE: 'high' for the high-noise expert, 'low' for the low-noise expert. 'none' for single-transformer models (TI2V-5B).", + "default": "none" + } + }, + "type": "object", + "required": [ + "key", + "hash", + "path", + "file_size", + "name", + "description", + "source", + "source_type", + "source_api_response", + "source_url", + "cover_image", + "type", + "trigger_phrases", + "default_settings", + "config_path", + "base", + "format", + "variant", + "expert" + ], + "title": "Main_GGUF_Wan_Config", + "description": "Model config for GGUF-quantized Wan 2.2 transformer models.\n\nA14B's MoE ships as two GGUF files (one per expert); ``expert`` records\nwhich one this is so the model loader invocation can pair them. TI2V-5B\nis a single-transformer model and stores ``expert='none'``." + }, + "Main_GGUF_ZImage_Config": { + "properties": { + "key": { + "type": "string", + "title": "Key", + "description": "A unique key for this model." }, - "submodels": { + "hash": { + "type": "string", + "title": "Hash", + "description": "The hash of the model file(s)." + }, + "path": { + "type": "string", + "title": "Path", + "description": "Path to the model on the filesystem. Relative paths are relative to the Invoke root directory." + }, + "file_size": { + "type": "integer", + "title": "File Size", + "description": "The size of the model in bytes." + }, + "name": { + "type": "string", + "title": "Name", + "description": "Name of the model." + }, + "description": { "anyOf": [ { - "additionalProperties": { - "$ref": "#/components/schemas/SubmodelDefinition" - }, - "propertyNames": { - "$ref": "#/components/schemas/SubModelType" + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description", + "description": "Model description" + }, + "source": { + "type": "string", + "title": "Source", + "description": "The original source of the model (path, URL or repo_id)." + }, + "source_type": { + "$ref": "#/components/schemas/ModelSourceType", + "description": "The type of source" + }, + "source_api_response": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Source Api Response", + "description": "The original API response from the source, as stringified JSON." + }, + "source_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Source Url", + "description": "Optional URL for the model (e.g. download page or model page)." + }, + "cover_image": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Cover Image", + "description": "Url for image to preview model" + }, + "type": { + "type": "string", + "const": "main", + "title": "Type", + "default": "main" + }, + "trigger_phrases": { + "anyOf": [ + { + "items": { + "type": "string" }, - "type": "object" + "type": "array", + "uniqueItems": true }, { "type": "null" } ], - "title": "Submodels", - "description": "Loadable submodels in this model" + "title": "Trigger Phrases", + "description": "Set of trigger phrases for this model" + }, + "default_settings": { + "anyOf": [ + { + "$ref": "#/components/schemas/MainModelDefaultSettings" + }, + { + "type": "null" + } + ], + "description": "Default settings for this model" + }, + "config_path": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Config Path", + "description": "Path to the config for this model, if any." + }, + "base": { + "type": "string", + "const": "z-image", + "title": "Base", + "default": "z-image" + }, + "format": { + "type": "string", + "const": "gguf_quantized", + "title": "Format", + "default": "gguf_quantized" + }, + "variant": { + "$ref": "#/components/schemas/ZImageVariantType" } }, "type": "object", @@ -77906,16 +78443,15 @@ "type", "trigger_phrases", "default_settings", + "config_path", "base", "format", - "variant", - "repo_variant", - "submodels" + "variant" ], - "title": "Main_SDNQ_Diffusers_FLUX_Config", - "description": "Model config for SDNQ-quantized FLUX models in diffusers format (folder with transformer, text_encoder, etc.)." + "title": "Main_GGUF_ZImage_Config", + "description": "Model config for GGUF-quantized Z-Image transformer models." }, - "Main_SDNQ_Diffusers_Flux2_Config": { + "Main_SDNQ_Diffusers_FLUX_Config": { "properties": { "key": { "type": "string", @@ -78034,9 +78570,9 @@ }, "base": { "type": "string", - "const": "flux2", + "const": "flux", "title": "Base", - "default": "flux2" + "default": "flux" }, "format": { "type": "string", @@ -78045,7 +78581,7 @@ "default": "sdnq_quantized" }, "variant": { - "$ref": "#/components/schemas/Flux2VariantType" + "$ref": "#/components/schemas/FluxVariantType" }, "repo_variant": { "$ref": "#/components/schemas/ModelRepoVariant", @@ -78092,10 +78628,10 @@ "repo_variant", "submodels" ], - "title": "Main_SDNQ_Diffusers_Flux2_Config", - "description": "Model config for SDNQ-quantized FLUX.2 models in diffusers format\n(Flux2KleinPipeline / Flux2Pipeline folder with transformer/, text_encoder/, vae/, ...)." + "title": "Main_SDNQ_Diffusers_FLUX_Config", + "description": "Model config for SDNQ-quantized FLUX models in diffusers format (folder with transformer, text_encoder, etc.)." }, - "Main_SDNQ_Diffusers_ZImage_Config": { + "Main_SDNQ_Diffusers_Flux2_Config": { "properties": { "key": { "type": "string", @@ -78214,9 +78750,9 @@ }, "base": { "type": "string", - "const": "z-image", + "const": "flux2", "title": "Base", - "default": "z-image" + "default": "flux2" }, "format": { "type": "string", @@ -78225,7 +78761,7 @@ "default": "sdnq_quantized" }, "variant": { - "$ref": "#/components/schemas/ZImageVariantType" + "$ref": "#/components/schemas/Flux2VariantType" }, "repo_variant": { "$ref": "#/components/schemas/ModelRepoVariant", @@ -78272,10 +78808,10 @@ "repo_variant", "submodels" ], - "title": "Main_SDNQ_Diffusers_ZImage_Config", - "description": "Model config for SDNQ-quantized Z-Image models in diffusers format (full ZImagePipeline folder)." + "title": "Main_SDNQ_Diffusers_Flux2_Config", + "description": "Model config for SDNQ-quantized FLUX.2 models in diffusers format\n(Flux2KleinPipeline / Flux2Pipeline folder with transformer/, text_encoder/, vae/, ...)." }, - "Main_SDNQ_FLUX_Config": { + "Main_SDNQ_Diffusers_ZImage_Config": { "properties": { "key": { "type": "string", @@ -78392,23 +78928,11 @@ ], "description": "Default settings for this model" }, - "config_path": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Config Path", - "description": "Path to the config for this model, if any." - }, "base": { "type": "string", - "const": "flux", + "const": "z-image", "title": "Base", - "default": "flux" + "default": "z-image" }, "format": { "type": "string", @@ -78417,7 +78941,29 @@ "default": "sdnq_quantized" }, "variant": { - "$ref": "#/components/schemas/FluxVariantType" + "$ref": "#/components/schemas/ZImageVariantType" + }, + "repo_variant": { + "$ref": "#/components/schemas/ModelRepoVariant", + "default": "" + }, + "submodels": { + "anyOf": [ + { + "additionalProperties": { + "$ref": "#/components/schemas/SubmodelDefinition" + }, + "propertyNames": { + "$ref": "#/components/schemas/SubModelType" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Submodels", + "description": "Loadable submodels in this model" } }, "type": "object", @@ -78436,15 +78982,185 @@ "type", "trigger_phrases", "default_settings", - "config_path", "base", "format", - "variant" + "variant", + "repo_variant", + "submodels" ], - "title": "Main_SDNQ_FLUX_Config", - "description": "Model config for SDNQ-quantized FLUX transformer models." + "title": "Main_SDNQ_Diffusers_ZImage_Config", + "description": "Model config for SDNQ-quantized Z-Image models in diffusers format (full ZImagePipeline folder)." }, - "Main_SDNQ_Flux2_Config": { + "Main_SDNQ_FLUX_Config": { + "properties": { + "key": { + "type": "string", + "title": "Key", + "description": "A unique key for this model." + }, + "hash": { + "type": "string", + "title": "Hash", + "description": "The hash of the model file(s)." + }, + "path": { + "type": "string", + "title": "Path", + "description": "Path to the model on the filesystem. Relative paths are relative to the Invoke root directory." + }, + "file_size": { + "type": "integer", + "title": "File Size", + "description": "The size of the model in bytes." + }, + "name": { + "type": "string", + "title": "Name", + "description": "Name of the model." + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description", + "description": "Model description" + }, + "source": { + "type": "string", + "title": "Source", + "description": "The original source of the model (path, URL or repo_id)." + }, + "source_type": { + "$ref": "#/components/schemas/ModelSourceType", + "description": "The type of source" + }, + "source_api_response": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Source Api Response", + "description": "The original API response from the source, as stringified JSON." + }, + "source_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Source Url", + "description": "Optional URL for the model (e.g. download page or model page)." + }, + "cover_image": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Cover Image", + "description": "Url for image to preview model" + }, + "type": { + "type": "string", + "const": "main", + "title": "Type", + "default": "main" + }, + "trigger_phrases": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + { + "type": "null" + } + ], + "title": "Trigger Phrases", + "description": "Set of trigger phrases for this model" + }, + "default_settings": { + "anyOf": [ + { + "$ref": "#/components/schemas/MainModelDefaultSettings" + }, + { + "type": "null" + } + ], + "description": "Default settings for this model" + }, + "config_path": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Config Path", + "description": "Path to the config for this model, if any." + }, + "base": { + "type": "string", + "const": "flux", + "title": "Base", + "default": "flux" + }, + "format": { + "type": "string", + "const": "sdnq_quantized", + "title": "Format", + "default": "sdnq_quantized" + }, + "variant": { + "$ref": "#/components/schemas/FluxVariantType" + } + }, + "type": "object", + "required": [ + "key", + "hash", + "path", + "file_size", + "name", + "description", + "source", + "source_type", + "source_api_response", + "source_url", + "cover_image", + "type", + "trigger_phrases", + "default_settings", + "config_path", + "base", + "format", + "variant" + ], + "title": "Main_SDNQ_FLUX_Config", + "description": "Model config for SDNQ-quantized FLUX transformer models." + }, + "Main_SDNQ_Flux2_Config": { "properties": { "key": { "type": "string", @@ -85388,6 +86104,9 @@ { "$ref": "#/components/schemas/Main_Diffusers_QwenImage_Config" }, + { + "$ref": "#/components/schemas/Main_Diffusers_QwenImage21_Config" + }, { "$ref": "#/components/schemas/Main_Diffusers_Wan_Config" }, @@ -85430,6 +86149,9 @@ { "$ref": "#/components/schemas/Main_Checkpoint_QwenImage_Config" }, + { + "$ref": "#/components/schemas/Main_Checkpoint_QwenImage21_Config" + }, { "$ref": "#/components/schemas/Main_Checkpoint_Wan_Config" }, @@ -85466,6 +86188,9 @@ { "$ref": "#/components/schemas/Main_GGUF_QwenImage_Config" }, + { + "$ref": "#/components/schemas/Main_GGUF_QwenImage21_Config" + }, { "$ref": "#/components/schemas/Main_GGUF_Wan_Config" }, @@ -85517,6 +86242,9 @@ { "$ref": "#/components/schemas/VAE_Checkpoint_Anima_Config" }, + { + "$ref": "#/components/schemas/VAE_Checkpoint_QwenImage21_Config" + }, { "$ref": "#/components/schemas/VAE_Diffusers_SD1_Config" }, @@ -85535,6 +86263,9 @@ { "$ref": "#/components/schemas/VAE_Diffusers_Wan_Config" }, + { + "$ref": "#/components/schemas/VAE_Diffusers_QwenImage21_Config" + }, { "$ref": "#/components/schemas/PiDDecoder_Checkpoint_FLUX_Config" }, @@ -86116,6 +86847,9 @@ { "$ref": "#/components/schemas/Main_Diffusers_QwenImage_Config" }, + { + "$ref": "#/components/schemas/Main_Diffusers_QwenImage21_Config" + }, { "$ref": "#/components/schemas/Main_Diffusers_Wan_Config" }, @@ -86158,6 +86892,9 @@ { "$ref": "#/components/schemas/Main_Checkpoint_QwenImage_Config" }, + { + "$ref": "#/components/schemas/Main_Checkpoint_QwenImage21_Config" + }, { "$ref": "#/components/schemas/Main_Checkpoint_Wan_Config" }, @@ -86194,6 +86931,9 @@ { "$ref": "#/components/schemas/Main_GGUF_QwenImage_Config" }, + { + "$ref": "#/components/schemas/Main_GGUF_QwenImage21_Config" + }, { "$ref": "#/components/schemas/Main_GGUF_Wan_Config" }, @@ -86245,6 +86985,9 @@ { "$ref": "#/components/schemas/VAE_Checkpoint_Anima_Config" }, + { + "$ref": "#/components/schemas/VAE_Checkpoint_QwenImage21_Config" + }, { "$ref": "#/components/schemas/VAE_Diffusers_SD1_Config" }, @@ -86263,6 +87006,9 @@ { "$ref": "#/components/schemas/VAE_Diffusers_Wan_Config" }, + { + "$ref": "#/components/schemas/VAE_Diffusers_QwenImage21_Config" + }, { "$ref": "#/components/schemas/PiDDecoder_Checkpoint_FLUX_Config" }, @@ -86729,6 +87475,9 @@ { "$ref": "#/components/schemas/Main_Diffusers_QwenImage_Config" }, + { + "$ref": "#/components/schemas/Main_Diffusers_QwenImage21_Config" + }, { "$ref": "#/components/schemas/Main_Diffusers_Wan_Config" }, @@ -86771,6 +87520,9 @@ { "$ref": "#/components/schemas/Main_Checkpoint_QwenImage_Config" }, + { + "$ref": "#/components/schemas/Main_Checkpoint_QwenImage21_Config" + }, { "$ref": "#/components/schemas/Main_Checkpoint_Wan_Config" }, @@ -86807,6 +87559,9 @@ { "$ref": "#/components/schemas/Main_GGUF_QwenImage_Config" }, + { + "$ref": "#/components/schemas/Main_GGUF_QwenImage21_Config" + }, { "$ref": "#/components/schemas/Main_GGUF_Wan_Config" }, @@ -86858,6 +87613,9 @@ { "$ref": "#/components/schemas/VAE_Checkpoint_Anima_Config" }, + { + "$ref": "#/components/schemas/VAE_Checkpoint_QwenImage21_Config" + }, { "$ref": "#/components/schemas/VAE_Diffusers_SD1_Config" }, @@ -86876,6 +87634,9 @@ { "$ref": "#/components/schemas/VAE_Diffusers_Wan_Config" }, + { + "$ref": "#/components/schemas/VAE_Diffusers_QwenImage21_Config" + }, { "$ref": "#/components/schemas/PiDDecoder_Checkpoint_FLUX_Config" }, @@ -87198,6 +87959,9 @@ { "$ref": "#/components/schemas/Main_Diffusers_QwenImage_Config" }, + { + "$ref": "#/components/schemas/Main_Diffusers_QwenImage21_Config" + }, { "$ref": "#/components/schemas/Main_Diffusers_Wan_Config" }, @@ -87240,6 +88004,9 @@ { "$ref": "#/components/schemas/Main_Checkpoint_QwenImage_Config" }, + { + "$ref": "#/components/schemas/Main_Checkpoint_QwenImage21_Config" + }, { "$ref": "#/components/schemas/Main_Checkpoint_Wan_Config" }, @@ -87276,6 +88043,9 @@ { "$ref": "#/components/schemas/Main_GGUF_QwenImage_Config" }, + { + "$ref": "#/components/schemas/Main_GGUF_QwenImage21_Config" + }, { "$ref": "#/components/schemas/Main_GGUF_Wan_Config" }, @@ -87327,6 +88097,9 @@ { "$ref": "#/components/schemas/VAE_Checkpoint_Anima_Config" }, + { + "$ref": "#/components/schemas/VAE_Checkpoint_QwenImage21_Config" + }, { "$ref": "#/components/schemas/VAE_Diffusers_SD1_Config" }, @@ -87345,6 +88118,9 @@ { "$ref": "#/components/schemas/VAE_Diffusers_Wan_Config" }, + { + "$ref": "#/components/schemas/VAE_Diffusers_QwenImage21_Config" + }, { "$ref": "#/components/schemas/PiDDecoder_Checkpoint_FLUX_Config" }, @@ -87946,6 +88722,9 @@ { "$ref": "#/components/schemas/Krea2VariantType" }, + { + "$ref": "#/components/schemas/QwenImage21VariantType" + }, { "$ref": "#/components/schemas/MiniMaxH3VariantType" }, @@ -88157,6 +88936,9 @@ { "$ref": "#/components/schemas/Main_Diffusers_QwenImage_Config" }, + { + "$ref": "#/components/schemas/Main_Diffusers_QwenImage21_Config" + }, { "$ref": "#/components/schemas/Main_Diffusers_Wan_Config" }, @@ -88199,6 +88981,9 @@ { "$ref": "#/components/schemas/Main_Checkpoint_QwenImage_Config" }, + { + "$ref": "#/components/schemas/Main_Checkpoint_QwenImage21_Config" + }, { "$ref": "#/components/schemas/Main_Checkpoint_Wan_Config" }, @@ -88235,6 +89020,9 @@ { "$ref": "#/components/schemas/Main_GGUF_QwenImage_Config" }, + { + "$ref": "#/components/schemas/Main_GGUF_QwenImage21_Config" + }, { "$ref": "#/components/schemas/Main_GGUF_Wan_Config" }, @@ -88286,6 +89074,9 @@ { "$ref": "#/components/schemas/VAE_Checkpoint_Anima_Config" }, + { + "$ref": "#/components/schemas/VAE_Checkpoint_QwenImage21_Config" + }, { "$ref": "#/components/schemas/VAE_Diffusers_SD1_Config" }, @@ -88304,6 +89095,9 @@ { "$ref": "#/components/schemas/VAE_Diffusers_Wan_Config" }, + { + "$ref": "#/components/schemas/VAE_Diffusers_QwenImage21_Config" + }, { "$ref": "#/components/schemas/PiDDecoder_Checkpoint_FLUX_Config" }, @@ -93823,8 +94617,8 @@ "title": "Qwen3VariantType", "description": "Qwen3 text encoder variants based on model size." }, - "QwenImageConditioningField": { - "description": "A Qwen Image Edit conditioning tensor primitive value", + "QwenImage21ConditioningField": { + "description": "A Qwen-Image-2.1 conditioning tensor primitive value", "properties": { "conditioning_name": { "description": "The name of conditioning tensor", @@ -93833,36 +94627,36 @@ } }, "required": ["conditioning_name"], - "title": "QwenImageConditioningField", + "title": "QwenImage21ConditioningField", "type": "object" }, - "QwenImageConditioningOutput": { + "QwenImage21ConditioningOutput": { "class": "output", - "description": "Base class for nodes that output a Qwen Image Edit conditioning tensor.", + "description": "Base class for nodes that output a Qwen-Image-2.1 conditioning tensor.", "properties": { "conditioning": { - "$ref": "#/components/schemas/QwenImageConditioningField", + "$ref": "#/components/schemas/QwenImage21ConditioningField", "description": "Conditioning tensor", "field_kind": "output", "ui_hidden": false }, "type": { - "const": "qwen_image_conditioning_output", - "default": "qwen_image_conditioning_output", + "const": "qwen_image_2_1_conditioning_output", + "default": "qwen_image_2_1_conditioning_output", "field_kind": "node_attribute", "title": "type", "type": "string" } }, "required": ["output_meta", "conditioning", "type", "type"], - "title": "QwenImageConditioningOutput", + "title": "QwenImage21ConditioningOutput", "type": "object" }, - "QwenImageDenoiseInvocation": { + "QwenImage21DenoiseInvocation": { "category": "image", "class": "invocation", "classification": "prototype", - "description": "Run the denoising process with a Qwen Image model.", + "description": "Run the denoising process with a Qwen-Image-2.1 model.", "node_pack": "invokeai", "properties": { "board": { @@ -93937,22 +94731,6 @@ "orig_default": null, "orig_required": false }, - "reference_latents": { - "anyOf": [ - { - "$ref": "#/components/schemas/LatentsField" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Reference image latents to guide generation. Encoded through the VAE.", - "field_kind": "input", - "input": "connection", - "orig_default": null, - "orig_required": false - }, "denoise_mask": { "anyOf": [ { @@ -94003,7 +94781,7 @@ } ], "default": null, - "description": "Qwen Image Edit model (Transformer) to load", + "description": "Qwen-Image-2.1 model (Transformer) to load", "field_kind": "input", "input": "connection", "orig_required": true, @@ -94012,7 +94790,7 @@ "positive_conditioning": { "anyOf": [ { - "$ref": "#/components/schemas/QwenImageConditioningField" + "$ref": "#/components/schemas/QwenImage21ConditioningField" }, { "type": "null" @@ -94027,7 +94805,7 @@ "negative_conditioning": { "anyOf": [ { - "$ref": "#/components/schemas/QwenImageConditioningField" + "$ref": "#/components/schemas/QwenImage21ConditioningField" }, { "type": "null" @@ -94052,20 +94830,21 @@ "type": "array" } ], - "default": 4.0, + "default": 1.0, "description": "Classifier-Free Guidance scale", "field_kind": "input", "input": "any", - "orig_default": 4.0, + "orig_default": 1.0, "orig_required": false, "title": "CFG Scale" }, "width": { "default": 1024, "description": "Width of the generated image.", + "exclusiveMinimum": 0, "field_kind": "input", "input": "any", - "multipleOf": 16, + "multipleOf": 32, "orig_default": 1024, "orig_required": false, "title": "Width", @@ -94074,9 +94853,10 @@ "height": { "default": 1024, "description": "Height of the generated image.", + "exclusiveMinimum": 0, "field_kind": "input", "input": "any", - "multipleOf": 16, + "multipleOf": 32, "orig_default": 1024, "orig_required": false, "title": "Height", @@ -94084,7 +94864,7 @@ }, "steps": { "default": 40, - "description": "Number of steps to run", + "description": "Number of steps to run Turbo is distilled for its shipped 8-step schedule; other counts resample it.", "exclusiveMinimum": 0, "field_kind": "input", "input": "any", @@ -94103,45 +94883,826 @@ "title": "Seed", "type": "integer" }, - "shift": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Override the sigma schedule shift. When set, uses a fixed shift (e.g. 3.0 for Lightning LoRAs) instead of the default dynamic shifting. Leave unset for the base model's default schedule.", - "field_kind": "input", - "input": "any", - "orig_default": null, - "orig_required": false, - "title": "Shift" - }, "type": { - "const": "qwen_image_denoise", - "default": "qwen_image_denoise", + "const": "qwen_image_2_1_denoise", + "default": "qwen_image_2_1_denoise", "field_kind": "node_attribute", "title": "type", "type": "string" } }, "required": ["type", "id"], - "tags": ["image", "qwen_image"], - "title": "Denoise - Qwen Image", + "tags": ["image", "qwen_image_2_1", "qwen-image-2.1"], + "title": "Denoise - Qwen-Image-2.1", "type": "object", "version": "1.0.0", "output": { "$ref": "#/components/schemas/LatentsOutput" } }, - "QwenImageImageToLatentsInvocation": { + "QwenImage21ImageToLatentsInvocation": { "category": "image", "class": "invocation", "classification": "prototype", - "description": "Generates latents from an image using the Qwen Image VAE.", + "description": "Encodes an image into Qwen-Image-2.1 latents. The image is encoded opaque; its alpha is not read.", + "node_pack": "invokeai", + "properties": { + "board": { + "anyOf": [ + { + "$ref": "#/components/schemas/BoardField" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The board to save the image to", + "field_kind": "internal", + "input": "direct", + "orig_required": false, + "ui_hidden": false + }, + "metadata": { + "anyOf": [ + { + "$ref": "#/components/schemas/MetadataField" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Optional metadata to be saved with the image", + "field_kind": "internal", + "input": "connection", + "orig_required": false, + "ui_hidden": false + }, + "id": { + "description": "The id of this instance of an invocation. Must be unique among all instances of invocations.", + "field_kind": "node_attribute", + "title": "Id", + "type": "string" + }, + "is_intermediate": { + "default": false, + "description": "Whether or not this is an intermediate invocation.", + "field_kind": "node_attribute", + "input": "direct", + "orig_required": true, + "title": "Is Intermediate", + "type": "boolean", + "ui_hidden": false, + "ui_type": "IsIntermediate" + }, + "use_cache": { + "default": true, + "description": "Whether or not to use the cache", + "field_kind": "node_attribute", + "title": "Use Cache", + "type": "boolean" + }, + "image": { + "anyOf": [ + { + "$ref": "#/components/schemas/ImageField" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The image to encode.", + "field_kind": "input", + "input": "any", + "orig_required": true + }, + "vae": { + "anyOf": [ + { + "$ref": "#/components/schemas/VAEField" + }, + { + "type": "null" + } + ], + "default": null, + "description": "VAE", + "field_kind": "input", + "input": "connection", + "orig_required": true + }, + "tiled": { + "default": false, + "description": "Processing using overlapping tiles (reduce memory consumption)", + "field_kind": "input", + "input": "any", + "orig_default": false, + "orig_required": false, + "title": "Tiled", + "type": "boolean" + }, + "tile_size": { + "default": 0, + "description": "The tile size for VAE tiling in pixels (image space). If set to 0, the default tile size for the model will be used. Larger tile sizes generally produce better results at the cost of higher memory usage.", + "field_kind": "input", + "input": "any", + "minimum": 0, + "multipleOf": 16, + "orig_default": 0, + "orig_required": false, + "title": "Tile Size", + "type": "integer" + }, + "type": { + "const": "qwen_image_2_1_i2l", + "default": "qwen_image_2_1_i2l", + "field_kind": "node_attribute", + "title": "type", + "type": "string" + } + }, + "required": ["type", "id"], + "tags": ["image", "latents", "vae", "i2l", "qwen_image_2_1"], + "title": "Image to Latents - Qwen-Image-2.1", + "type": "object", + "version": "1.0.0", + "output": { + "$ref": "#/components/schemas/LatentsOutput" + } + }, + "QwenImage21LatentsToImageInvocation": { + "category": "latents", + "class": "invocation", + "classification": "prototype", + "description": "Decodes Qwen-Image-2.1 latents into an image. Opaque results are saved as RGB, transparent ones as RGBA.", + "node_pack": "invokeai", + "properties": { + "board": { + "anyOf": [ + { + "$ref": "#/components/schemas/BoardField" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The board to save the image to", + "field_kind": "internal", + "input": "direct", + "orig_required": false, + "ui_hidden": false + }, + "metadata": { + "anyOf": [ + { + "$ref": "#/components/schemas/MetadataField" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Optional metadata to be saved with the image", + "field_kind": "internal", + "input": "connection", + "orig_required": false, + "ui_hidden": false + }, + "id": { + "description": "The id of this instance of an invocation. Must be unique among all instances of invocations.", + "field_kind": "node_attribute", + "title": "Id", + "type": "string" + }, + "is_intermediate": { + "default": false, + "description": "Whether or not this is an intermediate invocation.", + "field_kind": "node_attribute", + "input": "direct", + "orig_required": true, + "title": "Is Intermediate", + "type": "boolean", + "ui_hidden": false, + "ui_type": "IsIntermediate" + }, + "use_cache": { + "default": true, + "description": "Whether or not to use the cache", + "field_kind": "node_attribute", + "title": "Use Cache", + "type": "boolean" + }, + "latents": { + "anyOf": [ + { + "$ref": "#/components/schemas/LatentsField" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Latents tensor", + "field_kind": "input", + "input": "connection", + "orig_required": true + }, + "vae": { + "anyOf": [ + { + "$ref": "#/components/schemas/VAEField" + }, + { + "type": "null" + } + ], + "default": null, + "description": "VAE", + "field_kind": "input", + "input": "connection", + "orig_required": true + }, + "tiled": { + "default": false, + "description": "Processing using overlapping tiles (reduce memory consumption)", + "field_kind": "input", + "input": "any", + "orig_default": false, + "orig_required": false, + "title": "Tiled", + "type": "boolean" + }, + "tile_size": { + "default": 0, + "description": "The tile size for VAE tiling in pixels (image space). If set to 0, the default tile size for the model will be used. Larger tile sizes generally produce better results at the cost of higher memory usage.", + "field_kind": "input", + "input": "any", + "minimum": 0, + "multipleOf": 16, + "orig_default": 0, + "orig_required": false, + "title": "Tile Size", + "type": "integer" + }, + "type": { + "const": "qwen_image_2_1_l2i", + "default": "qwen_image_2_1_l2i", + "field_kind": "node_attribute", + "title": "type", + "type": "string" + } + }, + "required": ["type", "id"], + "tags": ["latents", "image", "vae", "l2i", "qwen_image_2_1"], + "title": "Latents to Image - Qwen-Image-2.1", + "type": "object", + "version": "1.0.0", + "output": { + "$ref": "#/components/schemas/ImageOutput" + } + }, + "QwenImage21ModelLoaderInvocation": { + "category": "model", + "class": "invocation", + "classification": "prototype", + "description": "Loads a Qwen-Image-2.1 model, outputting its submodels.\n\nA diffusers pipeline brings its own VAE and Qwen3-VL-8B encoder. A single-file or GGUF transformer has\nneither, so it needs a standalone VAE and encoder.", + "node_pack": "invokeai", + "properties": { + "id": { + "description": "The id of this instance of an invocation. Must be unique among all instances of invocations.", + "field_kind": "node_attribute", + "title": "Id", + "type": "string" + }, + "is_intermediate": { + "default": false, + "description": "Whether or not this is an intermediate invocation.", + "field_kind": "node_attribute", + "input": "direct", + "orig_required": true, + "title": "Is Intermediate", + "type": "boolean", + "ui_hidden": false, + "ui_type": "IsIntermediate" + }, + "use_cache": { + "default": true, + "description": "Whether or not to use the cache", + "field_kind": "node_attribute", + "title": "Use Cache", + "type": "boolean" + }, + "model": { + "$ref": "#/components/schemas/ModelIdentifierField", + "description": "Qwen-Image-2.1 model (Transformer) to load", + "field_kind": "input", + "input": "direct", + "orig_required": true, + "title": "Transformer", + "ui_model_base": ["qwen-image-2-1"], + "ui_model_type": ["main"] + }, + "vae_model": { + "anyOf": [ + { + "$ref": "#/components/schemas/ModelIdentifierField" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Standalone Qwen-Image-2.1 VAE. If not provided, the VAE is loaded from the diffusers model.", + "field_kind": "input", + "input": "direct", + "orig_default": null, + "orig_required": false, + "title": "VAE", + "ui_model_base": ["qwen-image-2-1"], + "ui_model_type": ["vae"] + }, + "qwen3_vl_encoder_model": { + "anyOf": [ + { + "$ref": "#/components/schemas/ModelIdentifierField" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Standalone Qwen3-VL 8B encoder. If not provided, the encoder is loaded from the diffusers model.", + "field_kind": "input", + "input": "direct", + "orig_default": null, + "orig_required": false, + "title": "Qwen3-VL Encoder", + "ui_model_base": ["any"], + "ui_model_type": ["qwen3_vl_encoder"] + }, + "type": { + "const": "qwen_image_2_1_model_loader", + "default": "qwen_image_2_1_model_loader", + "field_kind": "node_attribute", + "title": "type", + "type": "string" + } + }, + "required": ["model", "type", "id"], + "tags": ["model", "qwen_image_2_1", "qwen-image-2.1"], + "title": "Main Model - Qwen-Image-2.1", + "type": "object", + "version": "1.0.0", + "output": { + "$ref": "#/components/schemas/QwenImage21ModelLoaderOutput" + } + }, + "QwenImage21ModelLoaderOutput": { + "class": "output", + "description": "Qwen-Image-2.1 model loader output.", + "properties": { + "transformer": { + "$ref": "#/components/schemas/TransformerField", + "description": "Transformer", + "field_kind": "output", + "title": "Transformer", + "ui_hidden": false + }, + "qwen3_vl_encoder": { + "$ref": "#/components/schemas/Qwen3VLEncoderField", + "description": "Qwen3-VL tokenizer and text encoder", + "field_kind": "output", + "title": "Qwen3-VL Encoder", + "ui_hidden": false + }, + "vae": { + "$ref": "#/components/schemas/VAEField", + "description": "VAE", + "field_kind": "output", + "title": "VAE", + "ui_hidden": false + }, + "type": { + "const": "qwen_image_2_1_model_loader_output", + "default": "qwen_image_2_1_model_loader_output", + "field_kind": "node_attribute", + "title": "type", + "type": "string" + } + }, + "required": ["output_meta", "transformer", "qwen3_vl_encoder", "vae", "type", "type"], + "title": "QwenImage21ModelLoaderOutput", + "type": "object" + }, + "QwenImage21TextEncoderInvocation": { + "category": "conditioning", + "class": "invocation", + "classification": "prototype", + "description": "Encodes a text prompt for Qwen-Image-2.1 with its Qwen3-VL-8B encoder.", + "node_pack": "invokeai", + "properties": { + "id": { + "description": "The id of this instance of an invocation. Must be unique among all instances of invocations.", + "field_kind": "node_attribute", + "title": "Id", + "type": "string" + }, + "is_intermediate": { + "default": false, + "description": "Whether or not this is an intermediate invocation.", + "field_kind": "node_attribute", + "input": "direct", + "orig_required": true, + "title": "Is Intermediate", + "type": "boolean", + "ui_hidden": false, + "ui_type": "IsIntermediate" + }, + "use_cache": { + "default": true, + "description": "Whether or not to use the cache", + "field_kind": "node_attribute", + "title": "Use Cache", + "type": "boolean" + }, + "prompt": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Text prompt describing the desired image.", + "field_kind": "input", + "input": "any", + "orig_required": true, + "title": "Prompt", + "ui_component": "textarea" + }, + "qwen3_vl_encoder": { + "anyOf": [ + { + "$ref": "#/components/schemas/Qwen3VLEncoderField" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Qwen3-VL tokenizer and text encoder", + "field_kind": "input", + "input": "connection", + "orig_required": true, + "title": "Qwen3-VL Encoder" + }, + "type": { + "const": "qwen_image_2_1_text_encoder", + "default": "qwen_image_2_1_text_encoder", + "field_kind": "node_attribute", + "title": "type", + "type": "string" + } + }, + "required": ["type", "id"], + "tags": ["prompt", "conditioning", "qwen_image_2_1", "qwen-image-2.1"], + "title": "Prompt - Qwen-Image-2.1", + "type": "object", + "version": "1.0.0", + "output": { + "$ref": "#/components/schemas/QwenImage21ConditioningOutput" + } + }, + "QwenImage21VariantType": { + "type": "string", + "enum": ["qwen_image_21_base", "qwen_image_21_turbo"], + "title": "QwenImage21VariantType", + "description": "Qwen-Image-2.1 variants. The weights share one architecture; what differs is the sampling schedule." + }, + "QwenImageConditioningField": { + "description": "A Qwen Image Edit conditioning tensor primitive value", + "properties": { + "conditioning_name": { + "description": "The name of conditioning tensor", + "title": "Conditioning Name", + "type": "string" + } + }, + "required": ["conditioning_name"], + "title": "QwenImageConditioningField", + "type": "object" + }, + "QwenImageConditioningOutput": { + "class": "output", + "description": "Base class for nodes that output a Qwen Image Edit conditioning tensor.", + "properties": { + "conditioning": { + "$ref": "#/components/schemas/QwenImageConditioningField", + "description": "Conditioning tensor", + "field_kind": "output", + "ui_hidden": false + }, + "type": { + "const": "qwen_image_conditioning_output", + "default": "qwen_image_conditioning_output", + "field_kind": "node_attribute", + "title": "type", + "type": "string" + } + }, + "required": ["output_meta", "conditioning", "type", "type"], + "title": "QwenImageConditioningOutput", + "type": "object" + }, + "QwenImageDenoiseInvocation": { + "category": "image", + "class": "invocation", + "classification": "prototype", + "description": "Run the denoising process with a Qwen Image model.", + "node_pack": "invokeai", + "properties": { + "board": { + "anyOf": [ + { + "$ref": "#/components/schemas/BoardField" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The board to save the image to", + "field_kind": "internal", + "input": "direct", + "orig_required": false, + "ui_hidden": false + }, + "metadata": { + "anyOf": [ + { + "$ref": "#/components/schemas/MetadataField" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Optional metadata to be saved with the image", + "field_kind": "internal", + "input": "connection", + "orig_required": false, + "ui_hidden": false + }, + "id": { + "description": "The id of this instance of an invocation. Must be unique among all instances of invocations.", + "field_kind": "node_attribute", + "title": "Id", + "type": "string" + }, + "is_intermediate": { + "default": false, + "description": "Whether or not this is an intermediate invocation.", + "field_kind": "node_attribute", + "input": "direct", + "orig_required": true, + "title": "Is Intermediate", + "type": "boolean", + "ui_hidden": false, + "ui_type": "IsIntermediate" + }, + "use_cache": { + "default": true, + "description": "Whether or not to use the cache", + "field_kind": "node_attribute", + "title": "Use Cache", + "type": "boolean" + }, + "latents": { + "anyOf": [ + { + "$ref": "#/components/schemas/LatentsField" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Latents tensor", + "field_kind": "input", + "input": "connection", + "orig_default": null, + "orig_required": false + }, + "reference_latents": { + "anyOf": [ + { + "$ref": "#/components/schemas/LatentsField" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Reference image latents to guide generation. Encoded through the VAE.", + "field_kind": "input", + "input": "connection", + "orig_default": null, + "orig_required": false + }, + "denoise_mask": { + "anyOf": [ + { + "$ref": "#/components/schemas/DenoiseMaskField" + }, + { + "type": "null" + } + ], + "default": null, + "description": "A mask of the region to apply the denoising process to. Values of 0.0 represent the regions to be fully denoised, and 1.0 represent the regions to be preserved.", + "field_kind": "input", + "input": "connection", + "orig_default": null, + "orig_required": false + }, + "denoising_start": { + "default": 0.0, + "description": "When to start denoising, expressed a percentage of total steps", + "field_kind": "input", + "input": "any", + "maximum": 1, + "minimum": 0, + "orig_default": 0.0, + "orig_required": false, + "title": "Denoising Start", + "type": "number" + }, + "denoising_end": { + "default": 1.0, + "description": "When to stop denoising, expressed a percentage of total steps", + "field_kind": "input", + "input": "any", + "maximum": 1, + "minimum": 0, + "orig_default": 1.0, + "orig_required": false, + "title": "Denoising End", + "type": "number" + }, + "transformer": { + "anyOf": [ + { + "$ref": "#/components/schemas/TransformerField" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Qwen Image Edit model (Transformer) to load", + "field_kind": "input", + "input": "connection", + "orig_required": true, + "title": "Transformer" + }, + "positive_conditioning": { + "anyOf": [ + { + "$ref": "#/components/schemas/QwenImageConditioningField" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Positive conditioning tensor", + "field_kind": "input", + "input": "connection", + "orig_required": true + }, + "negative_conditioning": { + "anyOf": [ + { + "$ref": "#/components/schemas/QwenImageConditioningField" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Negative conditioning tensor", + "field_kind": "input", + "input": "connection", + "orig_default": null, + "orig_required": false + }, + "cfg_scale": { + "anyOf": [ + { + "type": "number" + }, + { + "items": { + "type": "number" + }, + "type": "array" + } + ], + "default": 4.0, + "description": "Classifier-Free Guidance scale", + "field_kind": "input", + "input": "any", + "orig_default": 4.0, + "orig_required": false, + "title": "CFG Scale" + }, + "width": { + "default": 1024, + "description": "Width of the generated image.", + "field_kind": "input", + "input": "any", + "multipleOf": 16, + "orig_default": 1024, + "orig_required": false, + "title": "Width", + "type": "integer" + }, + "height": { + "default": 1024, + "description": "Height of the generated image.", + "field_kind": "input", + "input": "any", + "multipleOf": 16, + "orig_default": 1024, + "orig_required": false, + "title": "Height", + "type": "integer" + }, + "steps": { + "default": 40, + "description": "Number of steps to run", + "exclusiveMinimum": 0, + "field_kind": "input", + "input": "any", + "orig_default": 40, + "orig_required": false, + "title": "Steps", + "type": "integer" + }, + "seed": { + "default": 0, + "description": "Randomness seed for reproducibility.", + "field_kind": "input", + "input": "any", + "orig_default": 0, + "orig_required": false, + "title": "Seed", + "type": "integer" + }, + "shift": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Override the sigma schedule shift. When set, uses a fixed shift (e.g. 3.0 for Lightning LoRAs) instead of the default dynamic shifting. Leave unset for the base model's default schedule.", + "field_kind": "input", + "input": "any", + "orig_default": null, + "orig_required": false, + "title": "Shift" + }, + "type": { + "const": "qwen_image_denoise", + "default": "qwen_image_denoise", + "field_kind": "node_attribute", + "title": "type", + "type": "string" + } + }, + "required": ["type", "id"], + "tags": ["image", "qwen_image"], + "title": "Denoise - Qwen Image", + "type": "object", + "version": "1.0.0", + "output": { + "$ref": "#/components/schemas/LatentsOutput" + } + }, + "QwenImageImageToLatentsInvocation": { + "category": "image", + "class": "invocation", + "classification": "prototype", + "description": "Generates latents from an image using the Qwen Image VAE.", "node_pack": "invokeai", "properties": { "board": { @@ -101240,6 +102801,9 @@ { "$ref": "#/components/schemas/Krea2VariantType" }, + { + "$ref": "#/components/schemas/QwenImage21VariantType" + }, { "$ref": "#/components/schemas/MiniMaxH3VariantType" }, @@ -101430,6 +102994,9 @@ { "$ref": "#/components/schemas/Krea2VariantType" }, + { + "$ref": "#/components/schemas/QwenImage21VariantType" + }, { "$ref": "#/components/schemas/MiniMaxH3VariantType" }, @@ -102704,6 +104271,9 @@ { "$ref": "#/components/schemas/Krea2VariantType" }, + { + "$ref": "#/components/schemas/QwenImage21VariantType" + }, { "$ref": "#/components/schemas/MiniMaxH3VariantType" }, @@ -107106,6 +108676,155 @@ "title": "VAE_Checkpoint_Flux2_Config", "description": "Model config for FLUX.2 VAE checkpoint models (AutoencoderKLFlux2)." }, + "VAE_Checkpoint_QwenImage21_Config": { + "properties": { + "key": { + "type": "string", + "title": "Key", + "description": "A unique key for this model." + }, + "hash": { + "type": "string", + "title": "Hash", + "description": "The hash of the model file(s)." + }, + "path": { + "type": "string", + "title": "Path", + "description": "Path to the model on the filesystem. Relative paths are relative to the Invoke root directory." + }, + "file_size": { + "type": "integer", + "title": "File Size", + "description": "The size of the model in bytes." + }, + "name": { + "type": "string", + "title": "Name", + "description": "Name of the model." + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description", + "description": "Model description" + }, + "source": { + "type": "string", + "title": "Source", + "description": "The original source of the model (path, URL or repo_id)." + }, + "source_type": { + "$ref": "#/components/schemas/ModelSourceType", + "description": "The type of source" + }, + "source_api_response": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Source Api Response", + "description": "The original API response from the source, as stringified JSON." + }, + "source_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Source Url", + "description": "Optional URL for the model (e.g. download page or model page)." + }, + "cover_image": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Cover Image", + "description": "Url for image to preview model" + }, + "config_path": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Config Path", + "description": "Path to the config for this model, if any." + }, + "type": { + "type": "string", + "const": "vae", + "title": "Type", + "default": "vae" + }, + "format": { + "type": "string", + "const": "checkpoint", + "title": "Format", + "default": "checkpoint" + }, + "base": { + "type": "string", + "const": "qwen-image-2-1", + "title": "Base", + "default": "qwen-image-2-1" + }, + "cpu_only": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Cpu Only", + "description": "Whether this model should run on CPU only" + } + }, + "type": "object", + "required": [ + "key", + "hash", + "path", + "file_size", + "name", + "description", + "source", + "source_type", + "source_api_response", + "source_url", + "cover_image", + "config_path", + "type", + "format", + "base", + "cpu_only" + ], + "title": "VAE_Checkpoint_QwenImage21_Config", + "description": "Model config for Qwen-Image-2.1 VAE single files (AutoencoderKLQwenImage21, diffusers or ComfyUI layout)." + }, "VAE_Checkpoint_QwenImage_Config": { "properties": { "key": { @@ -107377,9 +109096,305 @@ }, "base": { "type": "string", - "const": "sd-1", + "const": "sd-1", + "title": "Base", + "default": "sd-1" + } + }, + "type": "object", + "required": [ + "key", + "hash", + "path", + "file_size", + "name", + "description", + "source", + "source_type", + "source_api_response", + "source_url", + "cover_image", + "config_path", + "type", + "format", + "cpu_only", + "base" + ], + "title": "VAE_Checkpoint_SD1_Config" + }, + "VAE_Checkpoint_SD2_Config": { + "properties": { + "key": { + "type": "string", + "title": "Key", + "description": "A unique key for this model." + }, + "hash": { + "type": "string", + "title": "Hash", + "description": "The hash of the model file(s)." + }, + "path": { + "type": "string", + "title": "Path", + "description": "Path to the model on the filesystem. Relative paths are relative to the Invoke root directory." + }, + "file_size": { + "type": "integer", + "title": "File Size", + "description": "The size of the model in bytes." + }, + "name": { + "type": "string", + "title": "Name", + "description": "Name of the model." + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description", + "description": "Model description" + }, + "source": { + "type": "string", + "title": "Source", + "description": "The original source of the model (path, URL or repo_id)." + }, + "source_type": { + "$ref": "#/components/schemas/ModelSourceType", + "description": "The type of source" + }, + "source_api_response": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Source Api Response", + "description": "The original API response from the source, as stringified JSON." + }, + "source_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Source Url", + "description": "Optional URL for the model (e.g. download page or model page)." + }, + "cover_image": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Cover Image", + "description": "Url for image to preview model" + }, + "config_path": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Config Path", + "description": "Path to the config for this model, if any." + }, + "type": { + "type": "string", + "const": "vae", + "title": "Type", + "default": "vae" + }, + "format": { + "type": "string", + "const": "checkpoint", + "title": "Format", + "default": "checkpoint" + }, + "cpu_only": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Cpu Only", + "description": "Whether this model should run on CPU only" + }, + "base": { + "type": "string", + "const": "sd-2", + "title": "Base", + "default": "sd-2" + } + }, + "type": "object", + "required": [ + "key", + "hash", + "path", + "file_size", + "name", + "description", + "source", + "source_type", + "source_api_response", + "source_url", + "cover_image", + "config_path", + "type", + "format", + "cpu_only", + "base" + ], + "title": "VAE_Checkpoint_SD2_Config" + }, + "VAE_Checkpoint_SD3_Config": { + "properties": { + "key": { + "type": "string", + "title": "Key", + "description": "A unique key for this model." + }, + "hash": { + "type": "string", + "title": "Hash", + "description": "The hash of the model file(s)." + }, + "path": { + "type": "string", + "title": "Path", + "description": "Path to the model on the filesystem. Relative paths are relative to the Invoke root directory." + }, + "file_size": { + "type": "integer", + "title": "File Size", + "description": "The size of the model in bytes." + }, + "name": { + "type": "string", + "title": "Name", + "description": "Name of the model." + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Description", + "description": "Model description" + }, + "source": { + "type": "string", + "title": "Source", + "description": "The original source of the model (path, URL or repo_id)." + }, + "source_type": { + "$ref": "#/components/schemas/ModelSourceType", + "description": "The type of source" + }, + "source_api_response": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Source Api Response", + "description": "The original API response from the source, as stringified JSON." + }, + "source_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Source Url", + "description": "Optional URL for the model (e.g. download page or model page)." + }, + "cover_image": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Cover Image", + "description": "Url for image to preview model" + }, + "config_path": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Config Path", + "description": "Path to the config for this model, if any." + }, + "type": { + "type": "string", + "const": "vae", + "title": "Type", + "default": "vae" + }, + "format": { + "type": "string", + "const": "checkpoint", + "title": "Format", + "default": "checkpoint" + }, + "cpu_only": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Cpu Only", + "description": "Whether this model should run on CPU only" + }, + "base": { + "type": "string", + "const": "sd-3", "title": "Base", - "default": "sd-1" + "default": "sd-3" } }, "type": "object", @@ -107401,9 +109416,9 @@ "cpu_only", "base" ], - "title": "VAE_Checkpoint_SD1_Config" + "title": "VAE_Checkpoint_SD3_Config" }, - "VAE_Checkpoint_SD2_Config": { + "VAE_Checkpoint_SDXL_Config": { "properties": { "key": { "type": "string", @@ -107525,9 +109540,9 @@ }, "base": { "type": "string", - "const": "sd-2", + "const": "sdxl", "title": "Base", - "default": "sd-2" + "default": "sdxl" } }, "type": "object", @@ -107549,9 +109564,9 @@ "cpu_only", "base" ], - "title": "VAE_Checkpoint_SD2_Config" + "title": "VAE_Checkpoint_SDXL_Config" }, - "VAE_Checkpoint_SD3_Config": { + "VAE_Checkpoint_Wan_Config": { "properties": { "key": { "type": "string", @@ -107659,153 +109674,11 @@ "title": "Format", "default": "checkpoint" }, - "cpu_only": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "title": "Cpu Only", - "description": "Whether this model should run on CPU only" - }, "base": { "type": "string", - "const": "sd-3", + "const": "wan", "title": "Base", - "default": "sd-3" - } - }, - "type": "object", - "required": [ - "key", - "hash", - "path", - "file_size", - "name", - "description", - "source", - "source_type", - "source_api_response", - "source_url", - "cover_image", - "config_path", - "type", - "format", - "cpu_only", - "base" - ], - "title": "VAE_Checkpoint_SD3_Config" - }, - "VAE_Checkpoint_SDXL_Config": { - "properties": { - "key": { - "type": "string", - "title": "Key", - "description": "A unique key for this model." - }, - "hash": { - "type": "string", - "title": "Hash", - "description": "The hash of the model file(s)." - }, - "path": { - "type": "string", - "title": "Path", - "description": "Path to the model on the filesystem. Relative paths are relative to the Invoke root directory." - }, - "file_size": { - "type": "integer", - "title": "File Size", - "description": "The size of the model in bytes." - }, - "name": { - "type": "string", - "title": "Name", - "description": "Name of the model." - }, - "description": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Description", - "description": "Model description" - }, - "source": { - "type": "string", - "title": "Source", - "description": "The original source of the model (path, URL or repo_id)." - }, - "source_type": { - "$ref": "#/components/schemas/ModelSourceType", - "description": "The type of source" - }, - "source_api_response": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Source Api Response", - "description": "The original API response from the source, as stringified JSON." - }, - "source_url": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Source Url", - "description": "Optional URL for the model (e.g. download page or model page)." - }, - "cover_image": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Cover Image", - "description": "Url for image to preview model" - }, - "config_path": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Config Path", - "description": "Path to the config for this model, if any." - }, - "type": { - "type": "string", - "const": "vae", - "title": "Type", - "default": "vae" - }, - "format": { - "type": "string", - "const": "checkpoint", - "title": "Format", - "default": "checkpoint" + "default": "wan" }, "cpu_only": { "anyOf": [ @@ -107819,11 +109692,11 @@ "title": "Cpu Only", "description": "Whether this model should run on CPU only" }, - "base": { - "type": "string", - "const": "sdxl", - "title": "Base", - "default": "sdxl" + "latent_channels": { + "type": "integer", + "enum": [16, 48], + "title": "Latent Channels", + "description": "VAE latent channel count: 16 for A14B (standard Wan VAE) or 48 for TI2V-5B (Wan2.2-VAE)." } }, "type": "object", @@ -107842,12 +109715,14 @@ "config_path", "type", "format", + "base", "cpu_only", - "base" + "latent_channels" ], - "title": "VAE_Checkpoint_SDXL_Config" + "title": "VAE_Checkpoint_Wan_Config", + "description": "Model config for Wan 2.2 VAE checkpoint models (AutoencoderKLWan).\n\nDistinguishes A14B (z_dim=16, standard Wan VAE) from TI2V-5B (z_dim=48,\nWan2.2-VAE) via the input channel count of ``decoder.conv_in.weight``." }, - "VAE_Checkpoint_Wan_Config": { + "VAE_Diffusers_FLUX_Config": { "properties": { "key": { "type": "string", @@ -107931,17 +109806,15 @@ "title": "Cover Image", "description": "Url for image to preview model" }, - "config_path": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Config Path", - "description": "Path to the config for this model, if any." + "format": { + "type": "string", + "const": "diffusers", + "title": "Format", + "default": "diffusers" + }, + "repo_variant": { + "$ref": "#/components/schemas/ModelRepoVariant", + "default": "" }, "type": { "type": "string", @@ -107949,18 +109822,6 @@ "title": "Type", "default": "vae" }, - "format": { - "type": "string", - "const": "checkpoint", - "title": "Format", - "default": "checkpoint" - }, - "base": { - "type": "string", - "const": "wan", - "title": "Base", - "default": "wan" - }, "cpu_only": { "anyOf": [ { @@ -107973,11 +109834,11 @@ "title": "Cpu Only", "description": "Whether this model should run on CPU only" }, - "latent_channels": { - "type": "integer", - "enum": [16, 48], - "title": "Latent Channels", - "description": "VAE latent channel count: 16 for A14B (standard Wan VAE) or 48 for TI2V-5B (Wan2.2-VAE)." + "base": { + "type": "string", + "const": "flux", + "title": "Base", + "default": "flux" } }, "type": "object", @@ -107993,17 +109854,15 @@ "source_api_response", "source_url", "cover_image", - "config_path", - "type", "format", - "base", + "repo_variant", + "type", "cpu_only", - "latent_channels" + "base" ], - "title": "VAE_Checkpoint_Wan_Config", - "description": "Model config for Wan 2.2 VAE checkpoint models (AutoencoderKLWan).\n\nDistinguishes A14B (z_dim=16, standard Wan VAE) from TI2V-5B (z_dim=48,\nWan2.2-VAE) via the input channel count of ``decoder.conv_in.weight``." + "title": "VAE_Diffusers_FLUX_Config" }, - "VAE_Diffusers_FLUX_Config": { + "VAE_Diffusers_Flux2_Config": { "properties": { "key": { "type": "string", @@ -108103,6 +109962,12 @@ "title": "Type", "default": "vae" }, + "base": { + "type": "string", + "const": "flux2", + "title": "Base", + "default": "flux2" + }, "cpu_only": { "anyOf": [ { @@ -108114,12 +109979,6 @@ ], "title": "Cpu Only", "description": "Whether this model should run on CPU only" - }, - "base": { - "type": "string", - "const": "flux", - "title": "Base", - "default": "flux" } }, "type": "object", @@ -108138,12 +109997,13 @@ "format", "repo_variant", "type", - "cpu_only", - "base" + "base", + "cpu_only" ], - "title": "VAE_Diffusers_FLUX_Config" + "title": "VAE_Diffusers_Flux2_Config", + "description": "Model config for FLUX.2 VAE models in diffusers format (AutoencoderKLFlux2)." }, - "VAE_Diffusers_Flux2_Config": { + "VAE_Diffusers_QwenImage21_Config": { "properties": { "key": { "type": "string", @@ -108245,9 +110105,9 @@ }, "base": { "type": "string", - "const": "flux2", + "const": "qwen-image-2-1", "title": "Base", - "default": "flux2" + "default": "qwen-image-2-1" }, "cpu_only": { "anyOf": [ @@ -108281,8 +110141,8 @@ "base", "cpu_only" ], - "title": "VAE_Diffusers_Flux2_Config", - "description": "Model config for FLUX.2 VAE models in diffusers format (AutoencoderKLFlux2)." + "title": "VAE_Diffusers_QwenImage21_Config", + "description": "Model config for a Qwen-Image-2.1 VAE folder in diffusers format (AutoencoderKLQwenImage21)." }, "VAE_Diffusers_SD1_Config": { "properties": { diff --git a/invokeai/frontend/api/schema.ts b/invokeai/frontend/api/schema.ts index 733984fe92e..1c635d6f3c3 100644 --- a/invokeai/frontend/api/schema.ts +++ b/invokeai/frontend/api/schema.ts @@ -5514,7 +5514,7 @@ export type components = { * @enum {string} */ AnimaVariantType: "anima_qwen3" | "anima_qwen35"; - AnyModelConfig: components["schemas"]["Main_Diffusers_SD1_Config"] | components["schemas"]["Main_Diffusers_SD2_Config"] | components["schemas"]["Main_Diffusers_SDXL_Config"] | components["schemas"]["Main_Diffusers_SDXLRefiner_Config"] | components["schemas"]["Main_Diffusers_SD3_Config"] | components["schemas"]["Main_Diffusers_FLUX_Config"] | components["schemas"]["Main_Diffusers_Flux2_Config"] | components["schemas"]["Main_Diffusers_CogView4_Config"] | components["schemas"]["Main_Diffusers_QwenImage_Config"] | components["schemas"]["Main_Diffusers_Wan_Config"] | components["schemas"]["Main_Diffusers_ZImage_Config"] | components["schemas"]["Main_Diffusers_ErnieImage_Config"] | components["schemas"]["Main_Diffusers_Ideogram4_Config"] | components["schemas"]["Main_Diffusers_Krea2_Config"] | components["schemas"]["Main_Diffusers_MiniMaxH3_Config"] | components["schemas"]["Main_Diffusers_LTX2_Config"] | components["schemas"]["Main_Checkpoint_SD1_Config"] | components["schemas"]["Main_Checkpoint_SD2_Config"] | components["schemas"]["Main_Checkpoint_SDXL_Config"] | components["schemas"]["Main_Checkpoint_SDXLRefiner_Config"] | components["schemas"]["Main_Checkpoint_Flux2_Config"] | components["schemas"]["Main_Checkpoint_FLUX_Config"] | components["schemas"]["Main_Checkpoint_QwenImage_Config"] | components["schemas"]["Main_Checkpoint_Wan_Config"] | components["schemas"]["Main_Checkpoint_ZImage_Config"] | components["schemas"]["Main_Checkpoint_ErnieImage_Config"] | components["schemas"]["Main_Checkpoint_Ideogram4_Config"] | components["schemas"]["Main_Checkpoint_Krea2_Config"] | components["schemas"]["Main_Checkpoint_Anima_Config"] | components["schemas"]["Main_Checkpoint_MiniMaxH3_Config"] | components["schemas"]["Main_Checkpoint_LTX2_Config"] | components["schemas"]["Main_BnBNF4_FLUX_Config"] | components["schemas"]["Main_GGUF_Flux2_Config"] | components["schemas"]["Main_GGUF_FLUX_Config"] | components["schemas"]["Main_GGUF_QwenImage_Config"] | components["schemas"]["Main_GGUF_Wan_Config"] | components["schemas"]["Main_GGUF_ZImage_Config"] | components["schemas"]["Main_GGUF_Krea2_Config"] | components["schemas"]["Main_GGUF_Ideogram4_Config"] | components["schemas"]["Main_GGUF_ErnieImage_Config"] | components["schemas"]["Main_SDNQ_Diffusers_Flux2_Config"] | components["schemas"]["Main_SDNQ_Diffusers_FLUX_Config"] | components["schemas"]["Main_SDNQ_Diffusers_ZImage_Config"] | components["schemas"]["VAE_Checkpoint_SD1_Config"] | components["schemas"]["VAE_Checkpoint_SD2_Config"] | components["schemas"]["VAE_Checkpoint_SDXL_Config"] | components["schemas"]["VAE_Checkpoint_FLUX_Config"] | components["schemas"]["VAE_Checkpoint_SD3_Config"] | components["schemas"]["VAE_Checkpoint_Flux2_Config"] | components["schemas"]["VAE_Checkpoint_Wan_Config"] | components["schemas"]["VAE_Checkpoint_QwenImage_Config"] | components["schemas"]["VAE_Checkpoint_Anima_Config"] | components["schemas"]["VAE_Diffusers_SD1_Config"] | components["schemas"]["VAE_Diffusers_SDXL_Config"] | components["schemas"]["VAE_Diffusers_FLUX_Config"] | components["schemas"]["VAE_Diffusers_SD3_Config"] | components["schemas"]["VAE_Diffusers_Flux2_Config"] | components["schemas"]["VAE_Diffusers_Wan_Config"] | components["schemas"]["PiDDecoder_Checkpoint_FLUX_Config"] | components["schemas"]["PiDDecoder_Checkpoint_Flux2_Config"] | components["schemas"]["PiDDecoder_Checkpoint_SD3_Config"] | components["schemas"]["PiDDecoder_Checkpoint_SDXL_Config"] | components["schemas"]["PiDDecoder_Checkpoint_QwenImage_Config"] | components["schemas"]["ControlNet_Checkpoint_SD1_Config"] | components["schemas"]["ControlNet_Checkpoint_SD2_Config"] | components["schemas"]["ControlNet_Checkpoint_SDXL_Config"] | components["schemas"]["ControlNet_Checkpoint_FLUX_Config"] | components["schemas"]["ControlNet_Checkpoint_ZImage_Config"] | components["schemas"]["ControlNet_Checkpoint_Anima_Config"] | components["schemas"]["ControlNet_Diffusers_SD1_Config"] | components["schemas"]["ControlNet_Diffusers_SD2_Config"] | components["schemas"]["ControlNet_Diffusers_SDXL_Config"] | components["schemas"]["ControlNet_Diffusers_FLUX_Config"] | components["schemas"]["LoRA_LyCORIS_SD1_Config"] | components["schemas"]["LoRA_LyCORIS_SD2_Config"] | components["schemas"]["LoRA_LyCORIS_SDXL_Config"] | components["schemas"]["LoRA_LyCORIS_Flux2_Config"] | components["schemas"]["LoRA_LyCORIS_FLUX_Config"] | components["schemas"]["LoRA_LyCORIS_ZImage_Config"] | components["schemas"]["LoRA_LyCORIS_Krea2_Config"] | components["schemas"]["LoRA_LyCORIS_QwenImage_Config"] | components["schemas"]["LoRA_LyCORIS_LTX2_Config"] | components["schemas"]["LoRA_LyCORIS_MiniMaxH3_Config"] | components["schemas"]["LoRA_LyCORIS_Wan_Config"] | components["schemas"]["LoRA_LyCORIS_Anima_Config"] | components["schemas"]["LoRA_OMI_SDXL_Config"] | components["schemas"]["LoRA_OMI_FLUX_Config"] | components["schemas"]["LoRA_Diffusers_SD1_Config"] | components["schemas"]["LoRA_Diffusers_SD2_Config"] | components["schemas"]["LoRA_Diffusers_SDXL_Config"] | components["schemas"]["LoRA_Diffusers_Flux2_Config"] | components["schemas"]["LoRA_Diffusers_FLUX_Config"] | components["schemas"]["LoRA_Diffusers_ZImage_Config"] | components["schemas"]["ControlLoRA_LyCORIS_FLUX_Config"] | components["schemas"]["T5Encoder_T5Encoder_Config"] | components["schemas"]["T5Encoder_BnBLLMint8_Config"] | components["schemas"]["T5Encoder_SDNQ_Config"] | components["schemas"]["T5Encoder_GGUF_Config"] | components["schemas"]["Qwen3VLEncoder_Checkpoint_MiniMaxH3_Config"] | components["schemas"]["Qwen3VLEncoder_Checkpoint_Config"] | components["schemas"]["Qwen3VLEncoder_GGUF_Config"] | components["schemas"]["Qwen3VLEncoder_Qwen3VLEncoder_Config"] | components["schemas"]["Qwen35Encoder_Checkpoint_Config"] | components["schemas"]["Qwen3Encoder_Qwen3Encoder_Config"] | components["schemas"]["Qwen3Encoder_Checkpoint_Config"] | components["schemas"]["Qwen3Encoder_GGUF_Config"] | components["schemas"]["Qwen3Encoder_SDNQ_Folder_Config"] | components["schemas"]["MistralEncoder_Diffusers_Config"] | components["schemas"]["MistralEncoder_Checkpoint_Config"] | components["schemas"]["MistralEncoder_GGUF_Config"] | components["schemas"]["Gemma2Encoder_Gemma2Encoder_Config"] | components["schemas"]["Gemma4Encoder_Gemma4Encoder_LTX2_Config"] | components["schemas"]["Gemma2Encoder_GGUF_Config"] | components["schemas"]["QwenVLEncoder_Diffusers_Config"] | components["schemas"]["QwenVLEncoder_Checkpoint_Config"] | components["schemas"]["WanT5Encoder_WanT5Encoder_Config"] | components["schemas"]["TI_File_SD1_Config"] | components["schemas"]["TI_File_SD2_Config"] | components["schemas"]["TI_File_SDXL_Config"] | components["schemas"]["TI_Folder_SD1_Config"] | components["schemas"]["TI_Folder_SD2_Config"] | components["schemas"]["TI_Folder_SDXL_Config"] | components["schemas"]["IPAdapter_InvokeAI_SD1_Config"] | components["schemas"]["IPAdapter_InvokeAI_SD2_Config"] | components["schemas"]["IPAdapter_InvokeAI_SDXL_Config"] | components["schemas"]["IPAdapter_Checkpoint_SD1_Config"] | components["schemas"]["IPAdapter_Checkpoint_SD2_Config"] | components["schemas"]["IPAdapter_Checkpoint_SDXL_Config"] | components["schemas"]["IPAdapter_Checkpoint_FLUX_Config"] | components["schemas"]["T2IAdapter_Diffusers_SD1_Config"] | components["schemas"]["T2IAdapter_Diffusers_SDXL_Config"] | components["schemas"]["Spandrel_Checkpoint_Config"] | components["schemas"]["CLIPEmbed_Diffusers_G_Config"] | components["schemas"]["CLIPEmbed_Diffusers_L_Config"] | components["schemas"]["CLIPEmbed_Checkpoint_G_Config"] | components["schemas"]["CLIPEmbed_Checkpoint_L_Config"] | components["schemas"]["CLIPVision_Diffusers_Config"] | components["schemas"]["SigLIP_Diffusers_Config"] | components["schemas"]["FLUXRedux_Checkpoint_Config"] | components["schemas"]["LTX2DurationHead_Checkpoint_Config"] | components["schemas"]["LlavaOnevision_Diffusers_Config"] | components["schemas"]["TextLLM_Diffusers_Config"] | components["schemas"]["ExternalApiModelConfig"] | components["schemas"]["Unknown_Config"]; + AnyModelConfig: components["schemas"]["Main_Diffusers_SD1_Config"] | components["schemas"]["Main_Diffusers_SD2_Config"] | components["schemas"]["Main_Diffusers_SDXL_Config"] | components["schemas"]["Main_Diffusers_SDXLRefiner_Config"] | components["schemas"]["Main_Diffusers_SD3_Config"] | components["schemas"]["Main_Diffusers_FLUX_Config"] | components["schemas"]["Main_Diffusers_Flux2_Config"] | components["schemas"]["Main_Diffusers_CogView4_Config"] | components["schemas"]["Main_Diffusers_QwenImage_Config"] | components["schemas"]["Main_Diffusers_QwenImage21_Config"] | components["schemas"]["Main_Diffusers_Wan_Config"] | components["schemas"]["Main_Diffusers_ZImage_Config"] | components["schemas"]["Main_Diffusers_ErnieImage_Config"] | components["schemas"]["Main_Diffusers_Ideogram4_Config"] | components["schemas"]["Main_Diffusers_Krea2_Config"] | components["schemas"]["Main_Diffusers_MiniMaxH3_Config"] | components["schemas"]["Main_Diffusers_LTX2_Config"] | components["schemas"]["Main_Checkpoint_SD1_Config"] | components["schemas"]["Main_Checkpoint_SD2_Config"] | components["schemas"]["Main_Checkpoint_SDXL_Config"] | components["schemas"]["Main_Checkpoint_SDXLRefiner_Config"] | components["schemas"]["Main_Checkpoint_Flux2_Config"] | components["schemas"]["Main_Checkpoint_FLUX_Config"] | components["schemas"]["Main_Checkpoint_QwenImage_Config"] | components["schemas"]["Main_Checkpoint_QwenImage21_Config"] | components["schemas"]["Main_Checkpoint_Wan_Config"] | components["schemas"]["Main_Checkpoint_ZImage_Config"] | components["schemas"]["Main_Checkpoint_ErnieImage_Config"] | components["schemas"]["Main_Checkpoint_Ideogram4_Config"] | components["schemas"]["Main_Checkpoint_Krea2_Config"] | components["schemas"]["Main_Checkpoint_Anima_Config"] | components["schemas"]["Main_Checkpoint_MiniMaxH3_Config"] | components["schemas"]["Main_Checkpoint_LTX2_Config"] | components["schemas"]["Main_BnBNF4_FLUX_Config"] | components["schemas"]["Main_GGUF_Flux2_Config"] | components["schemas"]["Main_GGUF_FLUX_Config"] | components["schemas"]["Main_GGUF_QwenImage_Config"] | components["schemas"]["Main_GGUF_QwenImage21_Config"] | components["schemas"]["Main_GGUF_Wan_Config"] | components["schemas"]["Main_GGUF_ZImage_Config"] | components["schemas"]["Main_GGUF_Krea2_Config"] | components["schemas"]["Main_GGUF_Ideogram4_Config"] | components["schemas"]["Main_GGUF_ErnieImage_Config"] | components["schemas"]["Main_SDNQ_Diffusers_Flux2_Config"] | components["schemas"]["Main_SDNQ_Diffusers_FLUX_Config"] | components["schemas"]["Main_SDNQ_Diffusers_ZImage_Config"] | components["schemas"]["VAE_Checkpoint_SD1_Config"] | components["schemas"]["VAE_Checkpoint_SD2_Config"] | components["schemas"]["VAE_Checkpoint_SDXL_Config"] | components["schemas"]["VAE_Checkpoint_FLUX_Config"] | components["schemas"]["VAE_Checkpoint_SD3_Config"] | components["schemas"]["VAE_Checkpoint_Flux2_Config"] | components["schemas"]["VAE_Checkpoint_Wan_Config"] | components["schemas"]["VAE_Checkpoint_QwenImage_Config"] | components["schemas"]["VAE_Checkpoint_Anima_Config"] | components["schemas"]["VAE_Checkpoint_QwenImage21_Config"] | components["schemas"]["VAE_Diffusers_SD1_Config"] | components["schemas"]["VAE_Diffusers_SDXL_Config"] | components["schemas"]["VAE_Diffusers_FLUX_Config"] | components["schemas"]["VAE_Diffusers_SD3_Config"] | components["schemas"]["VAE_Diffusers_Flux2_Config"] | components["schemas"]["VAE_Diffusers_Wan_Config"] | components["schemas"]["VAE_Diffusers_QwenImage21_Config"] | components["schemas"]["PiDDecoder_Checkpoint_FLUX_Config"] | components["schemas"]["PiDDecoder_Checkpoint_Flux2_Config"] | components["schemas"]["PiDDecoder_Checkpoint_SD3_Config"] | components["schemas"]["PiDDecoder_Checkpoint_SDXL_Config"] | components["schemas"]["PiDDecoder_Checkpoint_QwenImage_Config"] | components["schemas"]["ControlNet_Checkpoint_SD1_Config"] | components["schemas"]["ControlNet_Checkpoint_SD2_Config"] | components["schemas"]["ControlNet_Checkpoint_SDXL_Config"] | components["schemas"]["ControlNet_Checkpoint_FLUX_Config"] | components["schemas"]["ControlNet_Checkpoint_ZImage_Config"] | components["schemas"]["ControlNet_Checkpoint_Anima_Config"] | components["schemas"]["ControlNet_Diffusers_SD1_Config"] | components["schemas"]["ControlNet_Diffusers_SD2_Config"] | components["schemas"]["ControlNet_Diffusers_SDXL_Config"] | components["schemas"]["ControlNet_Diffusers_FLUX_Config"] | components["schemas"]["LoRA_LyCORIS_SD1_Config"] | components["schemas"]["LoRA_LyCORIS_SD2_Config"] | components["schemas"]["LoRA_LyCORIS_SDXL_Config"] | components["schemas"]["LoRA_LyCORIS_Flux2_Config"] | components["schemas"]["LoRA_LyCORIS_FLUX_Config"] | components["schemas"]["LoRA_LyCORIS_ZImage_Config"] | components["schemas"]["LoRA_LyCORIS_Krea2_Config"] | components["schemas"]["LoRA_LyCORIS_QwenImage_Config"] | components["schemas"]["LoRA_LyCORIS_LTX2_Config"] | components["schemas"]["LoRA_LyCORIS_MiniMaxH3_Config"] | components["schemas"]["LoRA_LyCORIS_Wan_Config"] | components["schemas"]["LoRA_LyCORIS_Anima_Config"] | components["schemas"]["LoRA_OMI_SDXL_Config"] | components["schemas"]["LoRA_OMI_FLUX_Config"] | components["schemas"]["LoRA_Diffusers_SD1_Config"] | components["schemas"]["LoRA_Diffusers_SD2_Config"] | components["schemas"]["LoRA_Diffusers_SDXL_Config"] | components["schemas"]["LoRA_Diffusers_Flux2_Config"] | components["schemas"]["LoRA_Diffusers_FLUX_Config"] | components["schemas"]["LoRA_Diffusers_ZImage_Config"] | components["schemas"]["ControlLoRA_LyCORIS_FLUX_Config"] | components["schemas"]["T5Encoder_T5Encoder_Config"] | components["schemas"]["T5Encoder_BnBLLMint8_Config"] | components["schemas"]["T5Encoder_SDNQ_Config"] | components["schemas"]["T5Encoder_GGUF_Config"] | components["schemas"]["Qwen3VLEncoder_Checkpoint_MiniMaxH3_Config"] | components["schemas"]["Qwen3VLEncoder_Checkpoint_Config"] | components["schemas"]["Qwen3VLEncoder_GGUF_Config"] | components["schemas"]["Qwen3VLEncoder_Qwen3VLEncoder_Config"] | components["schemas"]["Qwen35Encoder_Checkpoint_Config"] | components["schemas"]["Qwen3Encoder_Qwen3Encoder_Config"] | components["schemas"]["Qwen3Encoder_Checkpoint_Config"] | components["schemas"]["Qwen3Encoder_GGUF_Config"] | components["schemas"]["Qwen3Encoder_SDNQ_Folder_Config"] | components["schemas"]["MistralEncoder_Diffusers_Config"] | components["schemas"]["MistralEncoder_Checkpoint_Config"] | components["schemas"]["MistralEncoder_GGUF_Config"] | components["schemas"]["Gemma2Encoder_Gemma2Encoder_Config"] | components["schemas"]["Gemma4Encoder_Gemma4Encoder_LTX2_Config"] | components["schemas"]["Gemma2Encoder_GGUF_Config"] | components["schemas"]["QwenVLEncoder_Diffusers_Config"] | components["schemas"]["QwenVLEncoder_Checkpoint_Config"] | components["schemas"]["WanT5Encoder_WanT5Encoder_Config"] | components["schemas"]["TI_File_SD1_Config"] | components["schemas"]["TI_File_SD2_Config"] | components["schemas"]["TI_File_SDXL_Config"] | components["schemas"]["TI_Folder_SD1_Config"] | components["schemas"]["TI_Folder_SD2_Config"] | components["schemas"]["TI_Folder_SDXL_Config"] | components["schemas"]["IPAdapter_InvokeAI_SD1_Config"] | components["schemas"]["IPAdapter_InvokeAI_SD2_Config"] | components["schemas"]["IPAdapter_InvokeAI_SDXL_Config"] | components["schemas"]["IPAdapter_Checkpoint_SD1_Config"] | components["schemas"]["IPAdapter_Checkpoint_SD2_Config"] | components["schemas"]["IPAdapter_Checkpoint_SDXL_Config"] | components["schemas"]["IPAdapter_Checkpoint_FLUX_Config"] | components["schemas"]["T2IAdapter_Diffusers_SD1_Config"] | components["schemas"]["T2IAdapter_Diffusers_SDXL_Config"] | components["schemas"]["Spandrel_Checkpoint_Config"] | components["schemas"]["CLIPEmbed_Diffusers_G_Config"] | components["schemas"]["CLIPEmbed_Diffusers_L_Config"] | components["schemas"]["CLIPEmbed_Checkpoint_G_Config"] | components["schemas"]["CLIPEmbed_Checkpoint_L_Config"] | components["schemas"]["CLIPVision_Diffusers_Config"] | components["schemas"]["SigLIP_Diffusers_Config"] | components["schemas"]["FLUXRedux_Checkpoint_Config"] | components["schemas"]["LTX2DurationHead_Checkpoint_Config"] | components["schemas"]["LlavaOnevision_Diffusers_Config"] | components["schemas"]["TextLLM_Diffusers_Config"] | components["schemas"]["ExternalApiModelConfig"] | components["schemas"]["Unknown_Config"]; /** * AppVersion * @description App Version Response @@ -5888,7 +5888,7 @@ export type components = { * fallback/null value `BaseModelType.Any` for these models, instead of making the model base optional. * @enum {string} */ - BaseModelType: "any" | "sd-1" | "sd-2" | "sd-3" | "sdxl" | "sdxl-refiner" | "flux" | "flux2" | "cogview4" | "z-image" | "ernie-image" | "ideogram-4" | "external" | "qwen-image" | "anima" | "krea-2" | "wan" | "minimax-h3" | "ltx-2" | "unknown"; + BaseModelType: "any" | "sd-1" | "sd-2" | "sd-3" | "sdxl" | "sdxl-refiner" | "flux" | "flux2" | "cogview4" | "z-image" | "ernie-image" | "ideogram-4" | "external" | "qwen-image" | "anima" | "qwen-image-2-1" | "krea-2" | "wan" | "minimax-h3" | "ltx-2" | "unknown"; /** Batch */ Batch: { /** @@ -10438,7 +10438,7 @@ export type components = { * @description The generation mode that output this image * @default null */ - generation_mode?: ("txt2img" | "img2img" | "inpaint" | "outpaint" | "sdxl_txt2img" | "sdxl_img2img" | "sdxl_inpaint" | "sdxl_outpaint" | "flux_txt2img" | "flux_img2img" | "flux_inpaint" | "flux_outpaint" | "flux2_txt2img" | "flux2_img2img" | "flux2_inpaint" | "flux2_outpaint" | "sd3_txt2img" | "sd3_img2img" | "sd3_inpaint" | "sd3_outpaint" | "cogview4_txt2img" | "cogview4_img2img" | "cogview4_inpaint" | "cogview4_outpaint" | "z_image_txt2img" | "z_image_img2img" | "z_image_inpaint" | "z_image_outpaint" | "ernie_image_txt2img" | "ideogram4_txt2img" | "qwen_image_txt2img" | "qwen_image_img2img" | "qwen_image_inpaint" | "qwen_image_outpaint" | "anima_txt2img" | "anima_img2img" | "anima_inpaint" | "anima_outpaint" | "krea2_txt2img" | "krea2_img2img" | "krea2_inpaint" | "krea2_outpaint" | "wan_txt2img" | "wan_img2img" | "wan_inpaint" | "wan_outpaint" | "wan_t2v" | "wan_i2v" | "wan_interpolate" | "wan_extend_video" | "minimax_h3_t2v" | "minimax_h3_i2v" | "ltx2_t2v" | "ltx2_i2v" | "ltx2_a2v" | "ltx2_v2a" | "ltx2_lf2v" | "ltx2_flf2v" | "ltx2_extend_video" | "minimax_h3_lf2v" | "minimax_h3_flf2v" | "minimax_h3_extend_video" | "minimax_h3_ref2v" | "minimax_h3_txt2img") | null; + generation_mode?: ("txt2img" | "img2img" | "inpaint" | "outpaint" | "sdxl_txt2img" | "sdxl_img2img" | "sdxl_inpaint" | "sdxl_outpaint" | "flux_txt2img" | "flux_img2img" | "flux_inpaint" | "flux_outpaint" | "flux2_txt2img" | "flux2_img2img" | "flux2_inpaint" | "flux2_outpaint" | "sd3_txt2img" | "sd3_img2img" | "sd3_inpaint" | "sd3_outpaint" | "cogview4_txt2img" | "cogview4_img2img" | "cogview4_inpaint" | "cogview4_outpaint" | "z_image_txt2img" | "z_image_img2img" | "z_image_inpaint" | "z_image_outpaint" | "ernie_image_txt2img" | "ideogram4_txt2img" | "qwen_image_txt2img" | "qwen_image_img2img" | "qwen_image_inpaint" | "qwen_image_outpaint" | "anima_txt2img" | "anima_img2img" | "anima_inpaint" | "anima_outpaint" | "krea2_txt2img" | "krea2_img2img" | "krea2_inpaint" | "krea2_outpaint" | "qwen_image_2_1_txt2img" | "qwen_image_2_1_img2img" | "qwen_image_2_1_inpaint" | "qwen_image_2_1_outpaint" | "wan_txt2img" | "wan_img2img" | "wan_inpaint" | "wan_outpaint" | "wan_t2v" | "wan_i2v" | "wan_interpolate" | "wan_extend_video" | "minimax_h3_t2v" | "minimax_h3_i2v" | "ltx2_t2v" | "ltx2_i2v" | "ltx2_a2v" | "ltx2_v2a" | "ltx2_lf2v" | "ltx2_flf2v" | "ltx2_extend_video" | "minimax_h3_lf2v" | "minimax_h3_flf2v" | "minimax_h3_extend_video" | "minimax_h3_ref2v" | "minimax_h3_txt2img") | null; /** * Positive Prompt * @description The positive prompt parameter @@ -17286,7 +17286,7 @@ export type components = { * @description The nodes in this graph */ nodes?: { - [key: string]: components["schemas"]["AddInvocation"] | components["schemas"]["AlibabaCloudImageGenerationInvocation"] | components["schemas"]["AlphaMaskToTensorInvocation"] | components["schemas"]["AnimaDenoiseInvocation"] | components["schemas"]["AnimaDenoiseMetaInvocation"] | components["schemas"]["AnimaImageToLatentsInvocation"] | components["schemas"]["AnimaLLLiteInvocation"] | components["schemas"]["AnimaLatentsToImageInvocation"] | components["schemas"]["AnimaLoRACollectionLoader"] | components["schemas"]["AnimaLoRALoaderInvocation"] | components["schemas"]["AnimaModelLoaderInvocation"] | components["schemas"]["AnimaTextEncoderInvocation"] | components["schemas"]["ApplyMaskTensorToImageInvocation"] | components["schemas"]["ApplyMaskToImageInvocation"] | components["schemas"]["AtlasCloudImageGenerationInvocation"] | components["schemas"]["BlankImageInvocation"] | components["schemas"]["BlendLatentsInvocation"] | components["schemas"]["BooleanCollectionInvocation"] | components["schemas"]["BooleanInvocation"] | components["schemas"]["BooleanLogicInvocation"] | components["schemas"]["BoundingBoxInvocation"] | components["schemas"]["CLIPSkipInvocation"] | components["schemas"]["CV2InfillInvocation"] | components["schemas"]["CalculateImageTilesEvenSplitInvocation"] | components["schemas"]["CalculateImageTilesInvocation"] | components["schemas"]["CalculateImageTilesMinimumOverlapInvocation"] | components["schemas"]["CallSavedWorkflowInvocation"] | components["schemas"]["CannyEdgeDetectionInvocation"] | components["schemas"]["CanvasOutputInvocation"] | components["schemas"]["CanvasPasteBackInvocation"] | components["schemas"]["CanvasV2MaskAndCropInvocation"] | components["schemas"]["CenterPadCropInvocation"] | components["schemas"]["CogView4DenoiseInvocation"] | components["schemas"]["CogView4ImageToLatentsInvocation"] | components["schemas"]["CogView4LatentsToImageInvocation"] | components["schemas"]["CogView4ModelLoaderInvocation"] | components["schemas"]["CogView4TextEncoderInvocation"] | components["schemas"]["CollectInvocation"] | components["schemas"]["CollectionCartesianInvocation"] | components["schemas"]["CollectionConcatInvocation"] | components["schemas"]["CollectionZipInvocation"] | components["schemas"]["ColorCorrectInvocation"] | components["schemas"]["ColorInvocation"] | components["schemas"]["ColorMapInvocation"] | components["schemas"]["CompelInvocation"] | components["schemas"]["ConditioningCollectionInvocation"] | components["schemas"]["ConditioningInvocation"] | components["schemas"]["ContentShuffleInvocation"] | components["schemas"]["ControlNetInvocation"] | components["schemas"]["CoreMetadataInvocation"] | components["schemas"]["CreateDenoiseMaskInvocation"] | components["schemas"]["CreateGradientMaskInvocation"] | components["schemas"]["CropImageToBoundingBoxInvocation"] | components["schemas"]["CropLatentsCoreInvocation"] | components["schemas"]["CvInpaintInvocation"] | components["schemas"]["DWOpenposeDetectionInvocation"] | components["schemas"]["DecodeInvisibleWatermarkInvocation"] | components["schemas"]["DenoiseLatentsInvocation"] | components["schemas"]["DenoiseLatentsMetaInvocation"] | components["schemas"]["DepthAnythingDepthEstimationInvocation"] | components["schemas"]["DivideInvocation"] | components["schemas"]["DynamicPromptInvocation"] | components["schemas"]["ESRGANInvocation"] | components["schemas"]["ErnieImageDenoiseInvocation"] | components["schemas"]["ErnieImageModelLoaderInvocation"] | components["schemas"]["ErnieImagePromptEnhancerInvocation"] | components["schemas"]["ErnieImageTextEncoderInvocation"] | components["schemas"]["ErnieImageVaeDecodeInvocation"] | components["schemas"]["ExpandMaskWithFadeInvocation"] | components["schemas"]["ExtractVideoRangeInvocation"] | components["schemas"]["FLUXLoRACollectionLoader"] | components["schemas"]["FaceIdentifierInvocation"] | components["schemas"]["FaceMaskInvocation"] | components["schemas"]["FaceOffInvocation"] | components["schemas"]["FloatBatchInvocation"] | components["schemas"]["FloatCollectionInvocation"] | components["schemas"]["FloatGenerator"] | components["schemas"]["FloatInvocation"] | components["schemas"]["FloatLinearRangeInvocation"] | components["schemas"]["FloatMathInvocation"] | components["schemas"]["FloatToIntegerInvocation"] | components["schemas"]["Flux2DenoiseInvocation"] | components["schemas"]["Flux2DevLoRACollectionLoader"] | components["schemas"]["Flux2DevLoRALoaderInvocation"] | components["schemas"]["Flux2DevModelLoaderInvocation"] | components["schemas"]["Flux2DevTextEncoderInvocation"] | components["schemas"]["Flux2KleinLoRACollectionLoader"] | components["schemas"]["Flux2KleinLoRALoaderInvocation"] | components["schemas"]["Flux2KleinModelLoaderInvocation"] | components["schemas"]["Flux2KleinTextEncoderInvocation"] | components["schemas"]["Flux2PiDDecodeInvocation"] | components["schemas"]["Flux2VaeDecodeInvocation"] | components["schemas"]["Flux2VaeEncodeInvocation"] | components["schemas"]["FluxControlLoRALoaderInvocation"] | components["schemas"]["FluxControlNetInvocation"] | components["schemas"]["FluxDenoiseInvocation"] | components["schemas"]["FluxDenoiseLatentsMetaInvocation"] | components["schemas"]["FluxFillInvocation"] | components["schemas"]["FluxIPAdapterInvocation"] | components["schemas"]["FluxKontextConcatenateImagesInvocation"] | components["schemas"]["FluxKontextInvocation"] | components["schemas"]["FluxLoRALoaderInvocation"] | components["schemas"]["FluxModelLoaderInvocation"] | components["schemas"]["FluxPiDDecodeInvocation"] | components["schemas"]["FluxReduxInvocation"] | components["schemas"]["FluxTextEncoderInvocation"] | components["schemas"]["FluxVaeDecodeInvocation"] | components["schemas"]["FluxVaeEncodeInvocation"] | components["schemas"]["ForInvocation"] | components["schemas"]["ForReturnInvocation"] | components["schemas"]["FreeUInvocation"] | components["schemas"]["GeminiImageGenerationInvocation"] | components["schemas"]["Gemma2EncoderLoaderInvocation"] | components["schemas"]["GetMaskBoundingBoxInvocation"] | components["schemas"]["GroundingDinoInvocation"] | components["schemas"]["HEDEdgeDetectionInvocation"] | components["schemas"]["HeuristicResizeInvocation"] | components["schemas"]["IPAdapterInvocation"] | components["schemas"]["IdealSizeInvocation"] | components["schemas"]["Ideogram4CaptionBuilderInvocation"] | components["schemas"]["Ideogram4DenoiseInvocation"] | components["schemas"]["Ideogram4LatentsToImageInvocation"] | components["schemas"]["Ideogram4ModelLoaderInvocation"] | components["schemas"]["Ideogram4TextEncoderInvocation"] | components["schemas"]["IfInvocation"] | components["schemas"]["ImageBatchInvocation"] | components["schemas"]["ImageBlurInvocation"] | components["schemas"]["ImageChannelInvocation"] | components["schemas"]["ImageChannelMultiplyInvocation"] | components["schemas"]["ImageChannelOffsetInvocation"] | components["schemas"]["ImageCollectionInvocation"] | components["schemas"]["ImageConvertInvocation"] | components["schemas"]["ImageCropInvocation"] | components["schemas"]["ImageGenerator"] | components["schemas"]["ImageHueAdjustmentInvocation"] | components["schemas"]["ImageInverseLerpInvocation"] | components["schemas"]["ImageInvocation"] | components["schemas"]["ImageLerpInvocation"] | components["schemas"]["ImageMaskToTensorInvocation"] | components["schemas"]["ImageMultiplyInvocation"] | components["schemas"]["ImageNSFWBlurInvocation"] | components["schemas"]["ImageNoiseInvocation"] | components["schemas"]["ImagePanelLayoutInvocation"] | components["schemas"]["ImagePasteInvocation"] | components["schemas"]["ImageResizeInvocation"] | components["schemas"]["ImageScaleInvocation"] | components["schemas"]["ImageToLatentsInvocation"] | components["schemas"]["ImageWatermarkInvocation"] | components["schemas"]["InfillColorInvocation"] | components["schemas"]["InfillPatchMatchInvocation"] | components["schemas"]["InfillTileInvocation"] | components["schemas"]["IntegerBatchInvocation"] | components["schemas"]["IntegerCollectionInvocation"] | components["schemas"]["IntegerGenerator"] | components["schemas"]["IntegerInvocation"] | components["schemas"]["IntegerMathInvocation"] | components["schemas"]["InvertTensorMaskInvocation"] | components["schemas"]["InvokeAdjustImageHuePlusInvocation"] | components["schemas"]["InvokeEquivalentAchromaticLightnessInvocation"] | components["schemas"]["InvokeImageBlendInvocation"] | components["schemas"]["InvokeImageCompositorInvocation"] | components["schemas"]["InvokeImageDilateOrErodeInvocation"] | components["schemas"]["InvokeImageEnhanceInvocation"] | components["schemas"]["InvokeImageValueThresholdsInvocation"] | components["schemas"]["IterateInvocation"] | components["schemas"]["Krea2ConditioningRebalanceInvocation"] | components["schemas"]["Krea2DenoiseInvocation"] | components["schemas"]["Krea2LoRACollectionLoader"] | components["schemas"]["Krea2LoRALoaderInvocation"] | components["schemas"]["Krea2ModelLoaderInvocation"] | components["schemas"]["Krea2SeedVarianceInvocation"] | components["schemas"]["Krea2StyleReferenceInvocation"] | components["schemas"]["Krea2TextEncoderInvocation"] | components["schemas"]["LTX2AudioConditioningInvocation"] | components["schemas"]["LTX2DenoiseInvocation"] | components["schemas"]["LTX2DurationInvocation"] | components["schemas"]["LTX2ExtendConditioningInvocation"] | components["schemas"]["LTX2IdealDimensionsInvocation"] | components["schemas"]["LTX2ImageConditioningInvocation"] | components["schemas"]["LTX2LatentUpsampleInvocation"] | components["schemas"]["LTX2LatentsToVideoInvocation"] | components["schemas"]["LTX2LoRACollectionLoader"] | components["schemas"]["LTX2LoRALoaderInvocation"] | components["schemas"]["LTX2ModelLoaderInvocation"] | components["schemas"]["LTX2TextEncoderInvocation"] | components["schemas"]["LTX2VideoConditioningInvocation"] | components["schemas"]["LaMaInfillInvocation"] | components["schemas"]["LatentsCollectionInvocation"] | components["schemas"]["LatentsInvocation"] | components["schemas"]["LatentsToImageInvocation"] | components["schemas"]["LineartAnimeEdgeDetectionInvocation"] | components["schemas"]["LineartEdgeDetectionInvocation"] | components["schemas"]["LlavaOnevisionVllmInvocation"] | components["schemas"]["LoRACollectionLoader"] | components["schemas"]["LoRALoaderInvocation"] | components["schemas"]["LoRASelectorInvocation"] | components["schemas"]["MLSDDetectionInvocation"] | components["schemas"]["MainModelLoaderInvocation"] | components["schemas"]["MaskCombineInvocation"] | components["schemas"]["MaskEdgeInvocation"] | components["schemas"]["MaskFromAlphaInvocation"] | components["schemas"]["MaskFromIDInvocation"] | components["schemas"]["MaskTensorToImageInvocation"] | components["schemas"]["MediaPipeFaceDetectionInvocation"] | components["schemas"]["MergeMetadataInvocation"] | components["schemas"]["MergeTilesToImageInvocation"] | components["schemas"]["MetadataFieldExtractorInvocation"] | components["schemas"]["MetadataFromImageInvocation"] | components["schemas"]["MetadataInvocation"] | components["schemas"]["MetadataItemInvocation"] | components["schemas"]["MetadataItemLinkedInvocation"] | components["schemas"]["MetadataToBoolCollectionInvocation"] | components["schemas"]["MetadataToBoolInvocation"] | components["schemas"]["MetadataToControlnetsInvocation"] | components["schemas"]["MetadataToFloatCollectionInvocation"] | components["schemas"]["MetadataToFloatInvocation"] | components["schemas"]["MetadataToIPAdaptersInvocation"] | components["schemas"]["MetadataToIntegerCollectionInvocation"] | components["schemas"]["MetadataToIntegerInvocation"] | components["schemas"]["MetadataToLorasCollectionInvocation"] | components["schemas"]["MetadataToLorasInvocation"] | components["schemas"]["MetadataToModelInvocation"] | components["schemas"]["MetadataToSDXLLorasInvocation"] | components["schemas"]["MetadataToSDXLModelInvocation"] | components["schemas"]["MetadataToSchedulerInvocation"] | components["schemas"]["MetadataToStringCollectionInvocation"] | components["schemas"]["MetadataToStringInvocation"] | components["schemas"]["MetadataToT2IAdaptersInvocation"] | components["schemas"]["MetadataToVAEInvocation"] | components["schemas"]["MiniMaxH3DenoiseInvocation"] | components["schemas"]["MiniMaxH3FrameConditioningInvocation"] | components["schemas"]["MiniMaxH3HybridOverlayInvocation"] | components["schemas"]["MiniMaxH3IdealDimensionsInvocation"] | components["schemas"]["MiniMaxH3ImageReferenceInvocation"] | components["schemas"]["MiniMaxH3LatentsToImageInvocation"] | components["schemas"]["MiniMaxH3LatentsToVideoInvocation"] | components["schemas"]["MiniMaxH3LoRACollectionLoader"] | components["schemas"]["MiniMaxH3LoRALoaderInvocation"] | components["schemas"]["MiniMaxH3ModelLoaderInvocation"] | components["schemas"]["MiniMaxH3ReferenceConditioningInvocation"] | components["schemas"]["MiniMaxH3TextEncoderInvocation"] | components["schemas"]["MiniMaxH3VideoReferenceInvocation"] | components["schemas"]["ModelIdentifierInvocation"] | components["schemas"]["MultiplyInvocation"] | components["schemas"]["NoiseInvocation"] | components["schemas"]["NormalMapInvocation"] | components["schemas"]["OklabUnsharpMaskInvocation"] | components["schemas"]["OklchImageHueAdjustmentInvocation"] | components["schemas"]["OpenAIImageGenerationInvocation"] | components["schemas"]["PBRMapsInvocation"] | components["schemas"]["PairTileImageInvocation"] | components["schemas"]["PasteImageIntoBoundingBoxInvocation"] | components["schemas"]["PiDDecoderLoaderInvocation"] | components["schemas"]["PiDUpscaleInvocation"] | components["schemas"]["PiDiNetEdgeDetectionInvocation"] | components["schemas"]["PromptTemplateInvocation"] | components["schemas"]["PromptsFromFileInvocation"] | components["schemas"]["QwenImageDenoiseInvocation"] | components["schemas"]["QwenImageImageToLatentsInvocation"] | components["schemas"]["QwenImageLatentsToImageInvocation"] | components["schemas"]["QwenImageLoRACollectionLoader"] | components["schemas"]["QwenImageLoRALoaderInvocation"] | components["schemas"]["QwenImageModelLoaderInvocation"] | components["schemas"]["QwenImagePiDDecodeInvocation"] | components["schemas"]["QwenImageTextEncoderInvocation"] | components["schemas"]["RandomFloatInvocation"] | components["schemas"]["RandomIntInvocation"] | components["schemas"]["RandomRangeInvocation"] | components["schemas"]["RangeInvocation"] | components["schemas"]["RangeOfSizeInvocation"] | components["schemas"]["RectangleMaskInvocation"] | components["schemas"]["ResizeLatentsInvocation"] | components["schemas"]["RoundInvocation"] | components["schemas"]["SD3DenoiseInvocation"] | components["schemas"]["SD3ImageToLatentsInvocation"] | components["schemas"]["SD3LatentsToImageInvocation"] | components["schemas"]["SD3PiDDecodeInvocation"] | components["schemas"]["SDXLCompelPromptInvocation"] | components["schemas"]["SDXLLoRACollectionLoader"] | components["schemas"]["SDXLLoRALoaderInvocation"] | components["schemas"]["SDXLModelLoaderInvocation"] | components["schemas"]["SDXLPiDDecodeInvocation"] | components["schemas"]["SDXLRefinerCompelPromptInvocation"] | components["schemas"]["SDXLRefinerModelLoaderInvocation"] | components["schemas"]["SaveImageInvocation"] | components["schemas"]["SaveImageToFileInvocation"] | components["schemas"]["ScaleLatentsInvocation"] | components["schemas"]["SchedulerInvocation"] | components["schemas"]["Sd3ModelLoaderInvocation"] | components["schemas"]["Sd3TextEncoderInvocation"] | components["schemas"]["SeamlessModeInvocation"] | components["schemas"]["SeedreamImageGenerationInvocation"] | components["schemas"]["SegmentAnythingInvocation"] | components["schemas"]["ShowImageInvocation"] | components["schemas"]["SpandrelImageToImageAutoscaleInvocation"] | components["schemas"]["SpandrelImageToImageInvocation"] | components["schemas"]["StateEmptyInvocation"] | components["schemas"]["StateGetInvocation"] | components["schemas"]["StateMergeInvocation"] | components["schemas"]["StateSetInvocation"] | components["schemas"]["StringBatchInvocation"] | components["schemas"]["StringCollectionInvocation"] | components["schemas"]["StringGenerator"] | components["schemas"]["StringInvocation"] | components["schemas"]["StringJoinInvocation"] | components["schemas"]["StringJoinThreeInvocation"] | components["schemas"]["StringReplaceInvocation"] | components["schemas"]["StringSplitInvocation"] | components["schemas"]["StringSplitNegInvocation"] | components["schemas"]["SubtractInvocation"] | components["schemas"]["T2IAdapterInvocation"] | components["schemas"]["TextLLMInvocation"] | components["schemas"]["TextLLMWithPresetInvocation"] | components["schemas"]["TileToPropertiesInvocation"] | components["schemas"]["TiledMultiDiffusionDenoiseLatents"] | components["schemas"]["UnsharpMaskInvocation"] | components["schemas"]["VAELoaderInvocation"] | components["schemas"]["VideoConcatInvocation"] | components["schemas"]["VideoFrameExtractInvocation"] | components["schemas"]["VideoInvocation"] | components["schemas"]["WanDenoiseInvocation"] | components["schemas"]["WanI2VIdealDimensionsInvocation"] | components["schemas"]["WanImageToLatentsInvocation"] | components["schemas"]["WanLatentsToImageInvocation"] | components["schemas"]["WanLatentsToVideoInvocation"] | components["schemas"]["WanLoRACollectionLoader"] | components["schemas"]["WanLoRALoaderInvocation"] | components["schemas"]["WanModelLoaderInvocation"] | components["schemas"]["WanRefImageEncoderInvocation"] | components["schemas"]["WanTI2VIdealDimensionsInvocation"] | components["schemas"]["WanTextEncoderInvocation"] | components["schemas"]["WanVideoDenoiseInvocation"] | components["schemas"]["WorkflowReturnGetInvocation"] | components["schemas"]["WorkflowReturnInvocation"] | components["schemas"]["WorkflowReturnValueInvocation"] | components["schemas"]["ZImageControlInvocation"] | components["schemas"]["ZImageDenoiseInvocation"] | components["schemas"]["ZImageDenoiseMetaInvocation"] | components["schemas"]["ZImageImageToLatentsInvocation"] | components["schemas"]["ZImageLatentsToImageInvocation"] | components["schemas"]["ZImageLoRACollectionLoader"] | components["schemas"]["ZImageLoRALoaderInvocation"] | components["schemas"]["ZImageModelLoaderInvocation"] | components["schemas"]["ZImagePiDDecodeInvocation"] | components["schemas"]["ZImageSeedVarianceEnhancerInvocation"] | components["schemas"]["ZImageTextEncoderInvocation"]; + [key: string]: components["schemas"]["AddInvocation"] | components["schemas"]["AlibabaCloudImageGenerationInvocation"] | components["schemas"]["AlphaMaskToTensorInvocation"] | components["schemas"]["AnimaDenoiseInvocation"] | components["schemas"]["AnimaDenoiseMetaInvocation"] | components["schemas"]["AnimaImageToLatentsInvocation"] | components["schemas"]["AnimaLLLiteInvocation"] | components["schemas"]["AnimaLatentsToImageInvocation"] | components["schemas"]["AnimaLoRACollectionLoader"] | components["schemas"]["AnimaLoRALoaderInvocation"] | components["schemas"]["AnimaModelLoaderInvocation"] | components["schemas"]["AnimaTextEncoderInvocation"] | components["schemas"]["ApplyMaskTensorToImageInvocation"] | components["schemas"]["ApplyMaskToImageInvocation"] | components["schemas"]["AtlasCloudImageGenerationInvocation"] | components["schemas"]["BlankImageInvocation"] | components["schemas"]["BlendLatentsInvocation"] | components["schemas"]["BooleanCollectionInvocation"] | components["schemas"]["BooleanInvocation"] | components["schemas"]["BooleanLogicInvocation"] | components["schemas"]["BoundingBoxInvocation"] | components["schemas"]["CLIPSkipInvocation"] | components["schemas"]["CV2InfillInvocation"] | components["schemas"]["CalculateImageTilesEvenSplitInvocation"] | components["schemas"]["CalculateImageTilesInvocation"] | components["schemas"]["CalculateImageTilesMinimumOverlapInvocation"] | components["schemas"]["CallSavedWorkflowInvocation"] | components["schemas"]["CannyEdgeDetectionInvocation"] | components["schemas"]["CanvasOutputInvocation"] | components["schemas"]["CanvasPasteBackInvocation"] | components["schemas"]["CanvasV2MaskAndCropInvocation"] | components["schemas"]["CenterPadCropInvocation"] | components["schemas"]["CogView4DenoiseInvocation"] | components["schemas"]["CogView4ImageToLatentsInvocation"] | components["schemas"]["CogView4LatentsToImageInvocation"] | components["schemas"]["CogView4ModelLoaderInvocation"] | components["schemas"]["CogView4TextEncoderInvocation"] | components["schemas"]["CollectInvocation"] | components["schemas"]["CollectionCartesianInvocation"] | components["schemas"]["CollectionConcatInvocation"] | components["schemas"]["CollectionZipInvocation"] | components["schemas"]["ColorCorrectInvocation"] | components["schemas"]["ColorInvocation"] | components["schemas"]["ColorMapInvocation"] | components["schemas"]["CompelInvocation"] | components["schemas"]["ConditioningCollectionInvocation"] | components["schemas"]["ConditioningInvocation"] | components["schemas"]["ContentShuffleInvocation"] | components["schemas"]["ControlNetInvocation"] | components["schemas"]["CoreMetadataInvocation"] | components["schemas"]["CreateDenoiseMaskInvocation"] | components["schemas"]["CreateGradientMaskInvocation"] | components["schemas"]["CropImageToBoundingBoxInvocation"] | components["schemas"]["CropLatentsCoreInvocation"] | components["schemas"]["CvInpaintInvocation"] | components["schemas"]["DWOpenposeDetectionInvocation"] | components["schemas"]["DecodeInvisibleWatermarkInvocation"] | components["schemas"]["DenoiseLatentsInvocation"] | components["schemas"]["DenoiseLatentsMetaInvocation"] | components["schemas"]["DepthAnythingDepthEstimationInvocation"] | components["schemas"]["DivideInvocation"] | components["schemas"]["DynamicPromptInvocation"] | components["schemas"]["ESRGANInvocation"] | components["schemas"]["ErnieImageDenoiseInvocation"] | components["schemas"]["ErnieImageModelLoaderInvocation"] | components["schemas"]["ErnieImagePromptEnhancerInvocation"] | components["schemas"]["ErnieImageTextEncoderInvocation"] | components["schemas"]["ErnieImageVaeDecodeInvocation"] | components["schemas"]["ExpandMaskWithFadeInvocation"] | components["schemas"]["ExtractVideoRangeInvocation"] | components["schemas"]["FLUXLoRACollectionLoader"] | components["schemas"]["FaceIdentifierInvocation"] | components["schemas"]["FaceMaskInvocation"] | components["schemas"]["FaceOffInvocation"] | components["schemas"]["FloatBatchInvocation"] | components["schemas"]["FloatCollectionInvocation"] | components["schemas"]["FloatGenerator"] | components["schemas"]["FloatInvocation"] | components["schemas"]["FloatLinearRangeInvocation"] | components["schemas"]["FloatMathInvocation"] | components["schemas"]["FloatToIntegerInvocation"] | components["schemas"]["Flux2DenoiseInvocation"] | components["schemas"]["Flux2DevLoRACollectionLoader"] | components["schemas"]["Flux2DevLoRALoaderInvocation"] | components["schemas"]["Flux2DevModelLoaderInvocation"] | components["schemas"]["Flux2DevTextEncoderInvocation"] | components["schemas"]["Flux2KleinLoRACollectionLoader"] | components["schemas"]["Flux2KleinLoRALoaderInvocation"] | components["schemas"]["Flux2KleinModelLoaderInvocation"] | components["schemas"]["Flux2KleinTextEncoderInvocation"] | components["schemas"]["Flux2PiDDecodeInvocation"] | components["schemas"]["Flux2VaeDecodeInvocation"] | components["schemas"]["Flux2VaeEncodeInvocation"] | components["schemas"]["FluxControlLoRALoaderInvocation"] | components["schemas"]["FluxControlNetInvocation"] | components["schemas"]["FluxDenoiseInvocation"] | components["schemas"]["FluxDenoiseLatentsMetaInvocation"] | components["schemas"]["FluxFillInvocation"] | components["schemas"]["FluxIPAdapterInvocation"] | components["schemas"]["FluxKontextConcatenateImagesInvocation"] | components["schemas"]["FluxKontextInvocation"] | components["schemas"]["FluxLoRALoaderInvocation"] | components["schemas"]["FluxModelLoaderInvocation"] | components["schemas"]["FluxPiDDecodeInvocation"] | components["schemas"]["FluxReduxInvocation"] | components["schemas"]["FluxTextEncoderInvocation"] | components["schemas"]["FluxVaeDecodeInvocation"] | components["schemas"]["FluxVaeEncodeInvocation"] | components["schemas"]["ForInvocation"] | components["schemas"]["ForReturnInvocation"] | components["schemas"]["FreeUInvocation"] | components["schemas"]["GeminiImageGenerationInvocation"] | components["schemas"]["Gemma2EncoderLoaderInvocation"] | components["schemas"]["GetMaskBoundingBoxInvocation"] | components["schemas"]["GroundingDinoInvocation"] | components["schemas"]["HEDEdgeDetectionInvocation"] | components["schemas"]["HeuristicResizeInvocation"] | components["schemas"]["IPAdapterInvocation"] | components["schemas"]["IdealSizeInvocation"] | components["schemas"]["Ideogram4CaptionBuilderInvocation"] | components["schemas"]["Ideogram4DenoiseInvocation"] | components["schemas"]["Ideogram4LatentsToImageInvocation"] | components["schemas"]["Ideogram4ModelLoaderInvocation"] | components["schemas"]["Ideogram4TextEncoderInvocation"] | components["schemas"]["IfInvocation"] | components["schemas"]["ImageBatchInvocation"] | components["schemas"]["ImageBlurInvocation"] | components["schemas"]["ImageChannelInvocation"] | components["schemas"]["ImageChannelMultiplyInvocation"] | components["schemas"]["ImageChannelOffsetInvocation"] | components["schemas"]["ImageCollectionInvocation"] | components["schemas"]["ImageConvertInvocation"] | components["schemas"]["ImageCropInvocation"] | components["schemas"]["ImageGenerator"] | components["schemas"]["ImageHueAdjustmentInvocation"] | components["schemas"]["ImageInverseLerpInvocation"] | components["schemas"]["ImageInvocation"] | components["schemas"]["ImageLerpInvocation"] | components["schemas"]["ImageMaskToTensorInvocation"] | components["schemas"]["ImageMultiplyInvocation"] | components["schemas"]["ImageNSFWBlurInvocation"] | components["schemas"]["ImageNoiseInvocation"] | components["schemas"]["ImagePanelLayoutInvocation"] | components["schemas"]["ImagePasteInvocation"] | components["schemas"]["ImageResizeInvocation"] | components["schemas"]["ImageScaleInvocation"] | components["schemas"]["ImageToLatentsInvocation"] | components["schemas"]["ImageWatermarkInvocation"] | components["schemas"]["InfillColorInvocation"] | components["schemas"]["InfillPatchMatchInvocation"] | components["schemas"]["InfillTileInvocation"] | components["schemas"]["IntegerBatchInvocation"] | components["schemas"]["IntegerCollectionInvocation"] | components["schemas"]["IntegerGenerator"] | components["schemas"]["IntegerInvocation"] | components["schemas"]["IntegerMathInvocation"] | components["schemas"]["InvertTensorMaskInvocation"] | components["schemas"]["InvokeAdjustImageHuePlusInvocation"] | components["schemas"]["InvokeEquivalentAchromaticLightnessInvocation"] | components["schemas"]["InvokeImageBlendInvocation"] | components["schemas"]["InvokeImageCompositorInvocation"] | components["schemas"]["InvokeImageDilateOrErodeInvocation"] | components["schemas"]["InvokeImageEnhanceInvocation"] | components["schemas"]["InvokeImageValueThresholdsInvocation"] | components["schemas"]["IterateInvocation"] | components["schemas"]["Krea2ConditioningRebalanceInvocation"] | components["schemas"]["Krea2DenoiseInvocation"] | components["schemas"]["Krea2LoRACollectionLoader"] | components["schemas"]["Krea2LoRALoaderInvocation"] | components["schemas"]["Krea2ModelLoaderInvocation"] | components["schemas"]["Krea2SeedVarianceInvocation"] | components["schemas"]["Krea2StyleReferenceInvocation"] | components["schemas"]["Krea2TextEncoderInvocation"] | components["schemas"]["LTX2AudioConditioningInvocation"] | components["schemas"]["LTX2DenoiseInvocation"] | components["schemas"]["LTX2DurationInvocation"] | components["schemas"]["LTX2ExtendConditioningInvocation"] | components["schemas"]["LTX2IdealDimensionsInvocation"] | components["schemas"]["LTX2ImageConditioningInvocation"] | components["schemas"]["LTX2LatentUpsampleInvocation"] | components["schemas"]["LTX2LatentsToVideoInvocation"] | components["schemas"]["LTX2LoRACollectionLoader"] | components["schemas"]["LTX2LoRALoaderInvocation"] | components["schemas"]["LTX2ModelLoaderInvocation"] | components["schemas"]["LTX2TextEncoderInvocation"] | components["schemas"]["LTX2VideoConditioningInvocation"] | components["schemas"]["LaMaInfillInvocation"] | components["schemas"]["LatentsCollectionInvocation"] | components["schemas"]["LatentsInvocation"] | components["schemas"]["LatentsToImageInvocation"] | components["schemas"]["LineartAnimeEdgeDetectionInvocation"] | components["schemas"]["LineartEdgeDetectionInvocation"] | components["schemas"]["LlavaOnevisionVllmInvocation"] | components["schemas"]["LoRACollectionLoader"] | components["schemas"]["LoRALoaderInvocation"] | components["schemas"]["LoRASelectorInvocation"] | components["schemas"]["MLSDDetectionInvocation"] | components["schemas"]["MainModelLoaderInvocation"] | components["schemas"]["MaskCombineInvocation"] | components["schemas"]["MaskEdgeInvocation"] | components["schemas"]["MaskFromAlphaInvocation"] | components["schemas"]["MaskFromIDInvocation"] | components["schemas"]["MaskTensorToImageInvocation"] | components["schemas"]["MediaPipeFaceDetectionInvocation"] | components["schemas"]["MergeMetadataInvocation"] | components["schemas"]["MergeTilesToImageInvocation"] | components["schemas"]["MetadataFieldExtractorInvocation"] | components["schemas"]["MetadataFromImageInvocation"] | components["schemas"]["MetadataInvocation"] | components["schemas"]["MetadataItemInvocation"] | components["schemas"]["MetadataItemLinkedInvocation"] | components["schemas"]["MetadataToBoolCollectionInvocation"] | components["schemas"]["MetadataToBoolInvocation"] | components["schemas"]["MetadataToControlnetsInvocation"] | components["schemas"]["MetadataToFloatCollectionInvocation"] | components["schemas"]["MetadataToFloatInvocation"] | components["schemas"]["MetadataToIPAdaptersInvocation"] | components["schemas"]["MetadataToIntegerCollectionInvocation"] | components["schemas"]["MetadataToIntegerInvocation"] | components["schemas"]["MetadataToLorasCollectionInvocation"] | components["schemas"]["MetadataToLorasInvocation"] | components["schemas"]["MetadataToModelInvocation"] | components["schemas"]["MetadataToSDXLLorasInvocation"] | components["schemas"]["MetadataToSDXLModelInvocation"] | components["schemas"]["MetadataToSchedulerInvocation"] | components["schemas"]["MetadataToStringCollectionInvocation"] | components["schemas"]["MetadataToStringInvocation"] | components["schemas"]["MetadataToT2IAdaptersInvocation"] | components["schemas"]["MetadataToVAEInvocation"] | components["schemas"]["MiniMaxH3DenoiseInvocation"] | components["schemas"]["MiniMaxH3FrameConditioningInvocation"] | components["schemas"]["MiniMaxH3HybridOverlayInvocation"] | components["schemas"]["MiniMaxH3IdealDimensionsInvocation"] | components["schemas"]["MiniMaxH3ImageReferenceInvocation"] | components["schemas"]["MiniMaxH3LatentsToImageInvocation"] | components["schemas"]["MiniMaxH3LatentsToVideoInvocation"] | components["schemas"]["MiniMaxH3LoRACollectionLoader"] | components["schemas"]["MiniMaxH3LoRALoaderInvocation"] | components["schemas"]["MiniMaxH3ModelLoaderInvocation"] | components["schemas"]["MiniMaxH3ReferenceConditioningInvocation"] | components["schemas"]["MiniMaxH3TextEncoderInvocation"] | components["schemas"]["MiniMaxH3VideoReferenceInvocation"] | components["schemas"]["ModelIdentifierInvocation"] | components["schemas"]["MultiplyInvocation"] | components["schemas"]["NoiseInvocation"] | components["schemas"]["NormalMapInvocation"] | components["schemas"]["OklabUnsharpMaskInvocation"] | components["schemas"]["OklchImageHueAdjustmentInvocation"] | components["schemas"]["OpenAIImageGenerationInvocation"] | components["schemas"]["PBRMapsInvocation"] | components["schemas"]["PairTileImageInvocation"] | components["schemas"]["PasteImageIntoBoundingBoxInvocation"] | components["schemas"]["PiDDecoderLoaderInvocation"] | components["schemas"]["PiDUpscaleInvocation"] | components["schemas"]["PiDiNetEdgeDetectionInvocation"] | components["schemas"]["PromptTemplateInvocation"] | components["schemas"]["PromptsFromFileInvocation"] | components["schemas"]["QwenImage21DenoiseInvocation"] | components["schemas"]["QwenImage21ImageToLatentsInvocation"] | components["schemas"]["QwenImage21LatentsToImageInvocation"] | components["schemas"]["QwenImage21ModelLoaderInvocation"] | components["schemas"]["QwenImage21TextEncoderInvocation"] | components["schemas"]["QwenImageDenoiseInvocation"] | components["schemas"]["QwenImageImageToLatentsInvocation"] | components["schemas"]["QwenImageLatentsToImageInvocation"] | components["schemas"]["QwenImageLoRACollectionLoader"] | components["schemas"]["QwenImageLoRALoaderInvocation"] | components["schemas"]["QwenImageModelLoaderInvocation"] | components["schemas"]["QwenImagePiDDecodeInvocation"] | components["schemas"]["QwenImageTextEncoderInvocation"] | components["schemas"]["RandomFloatInvocation"] | components["schemas"]["RandomIntInvocation"] | components["schemas"]["RandomRangeInvocation"] | components["schemas"]["RangeInvocation"] | components["schemas"]["RangeOfSizeInvocation"] | components["schemas"]["RectangleMaskInvocation"] | components["schemas"]["ResizeLatentsInvocation"] | components["schemas"]["RoundInvocation"] | components["schemas"]["SD3DenoiseInvocation"] | components["schemas"]["SD3ImageToLatentsInvocation"] | components["schemas"]["SD3LatentsToImageInvocation"] | components["schemas"]["SD3PiDDecodeInvocation"] | components["schemas"]["SDXLCompelPromptInvocation"] | components["schemas"]["SDXLLoRACollectionLoader"] | components["schemas"]["SDXLLoRALoaderInvocation"] | components["schemas"]["SDXLModelLoaderInvocation"] | components["schemas"]["SDXLPiDDecodeInvocation"] | components["schemas"]["SDXLRefinerCompelPromptInvocation"] | components["schemas"]["SDXLRefinerModelLoaderInvocation"] | components["schemas"]["SaveImageInvocation"] | components["schemas"]["SaveImageToFileInvocation"] | components["schemas"]["ScaleLatentsInvocation"] | components["schemas"]["SchedulerInvocation"] | components["schemas"]["Sd3ModelLoaderInvocation"] | components["schemas"]["Sd3TextEncoderInvocation"] | components["schemas"]["SeamlessModeInvocation"] | components["schemas"]["SeedreamImageGenerationInvocation"] | components["schemas"]["SegmentAnythingInvocation"] | components["schemas"]["ShowImageInvocation"] | components["schemas"]["SpandrelImageToImageAutoscaleInvocation"] | components["schemas"]["SpandrelImageToImageInvocation"] | components["schemas"]["StateEmptyInvocation"] | components["schemas"]["StateGetInvocation"] | components["schemas"]["StateMergeInvocation"] | components["schemas"]["StateSetInvocation"] | components["schemas"]["StringBatchInvocation"] | components["schemas"]["StringCollectionInvocation"] | components["schemas"]["StringGenerator"] | components["schemas"]["StringInvocation"] | components["schemas"]["StringJoinInvocation"] | components["schemas"]["StringJoinThreeInvocation"] | components["schemas"]["StringReplaceInvocation"] | components["schemas"]["StringSplitInvocation"] | components["schemas"]["StringSplitNegInvocation"] | components["schemas"]["SubtractInvocation"] | components["schemas"]["T2IAdapterInvocation"] | components["schemas"]["TextLLMInvocation"] | components["schemas"]["TextLLMWithPresetInvocation"] | components["schemas"]["TileToPropertiesInvocation"] | components["schemas"]["TiledMultiDiffusionDenoiseLatents"] | components["schemas"]["UnsharpMaskInvocation"] | components["schemas"]["VAELoaderInvocation"] | components["schemas"]["VideoConcatInvocation"] | components["schemas"]["VideoFrameExtractInvocation"] | components["schemas"]["VideoInvocation"] | components["schemas"]["WanDenoiseInvocation"] | components["schemas"]["WanI2VIdealDimensionsInvocation"] | components["schemas"]["WanImageToLatentsInvocation"] | components["schemas"]["WanLatentsToImageInvocation"] | components["schemas"]["WanLatentsToVideoInvocation"] | components["schemas"]["WanLoRACollectionLoader"] | components["schemas"]["WanLoRALoaderInvocation"] | components["schemas"]["WanModelLoaderInvocation"] | components["schemas"]["WanRefImageEncoderInvocation"] | components["schemas"]["WanTI2VIdealDimensionsInvocation"] | components["schemas"]["WanTextEncoderInvocation"] | components["schemas"]["WanVideoDenoiseInvocation"] | components["schemas"]["WorkflowReturnGetInvocation"] | components["schemas"]["WorkflowReturnInvocation"] | components["schemas"]["WorkflowReturnValueInvocation"] | components["schemas"]["ZImageControlInvocation"] | components["schemas"]["ZImageDenoiseInvocation"] | components["schemas"]["ZImageDenoiseMetaInvocation"] | components["schemas"]["ZImageImageToLatentsInvocation"] | components["schemas"]["ZImageLatentsToImageInvocation"] | components["schemas"]["ZImageLoRACollectionLoader"] | components["schemas"]["ZImageLoRALoaderInvocation"] | components["schemas"]["ZImageModelLoaderInvocation"] | components["schemas"]["ZImagePiDDecodeInvocation"] | components["schemas"]["ZImageSeedVarianceEnhancerInvocation"] | components["schemas"]["ZImageTextEncoderInvocation"]; }; /** * Edges @@ -17323,7 +17323,7 @@ export type components = { * @description The results of node executions */ results: { - [key: string]: components["schemas"]["AnimaConditioningOutput"] | components["schemas"]["AnimaLLLiteOutput"] | components["schemas"]["AnimaLoRALoaderOutput"] | components["schemas"]["AnimaModelLoaderOutput"] | components["schemas"]["BooleanCollectionOutput"] | components["schemas"]["BooleanOutput"] | components["schemas"]["BoundingBoxCollectionOutput"] | components["schemas"]["BoundingBoxOutput"] | components["schemas"]["CLIPOutput"] | components["schemas"]["CLIPSkipInvocationOutput"] | components["schemas"]["CalculateImageTilesOutput"] | components["schemas"]["CogView4ConditioningOutput"] | components["schemas"]["CogView4ModelLoaderOutput"] | components["schemas"]["CollectInvocationOutput"] | components["schemas"]["CollectionCartesianInvocationOutput"] | components["schemas"]["CollectionConcatInvocationOutput"] | components["schemas"]["CollectionZipInvocationOutput"] | components["schemas"]["ColorCollectionOutput"] | components["schemas"]["ColorOutput"] | components["schemas"]["ConditioningCollectionOutput"] | components["schemas"]["ConditioningOutput"] | components["schemas"]["ControlOutput"] | components["schemas"]["DenoiseMaskOutput"] | components["schemas"]["ErnieImageConditioningOutput"] | components["schemas"]["ErnieImageModelLoaderOutput"] | components["schemas"]["ExtractVideoRangeOutput"] | components["schemas"]["FaceMaskOutput"] | components["schemas"]["FaceOffOutput"] | components["schemas"]["FloatCollectionOutput"] | components["schemas"]["FloatGeneratorOutput"] | components["schemas"]["FloatOutput"] | components["schemas"]["Flux2DevLoRALoaderOutput"] | components["schemas"]["Flux2DevModelLoaderOutput"] | components["schemas"]["Flux2KleinLoRALoaderOutput"] | components["schemas"]["Flux2KleinModelLoaderOutput"] | components["schemas"]["FluxConditioningCollectionOutput"] | components["schemas"]["FluxConditioningOutput"] | components["schemas"]["FluxControlLoRALoaderOutput"] | components["schemas"]["FluxControlNetOutput"] | components["schemas"]["FluxFillOutput"] | components["schemas"]["FluxKontextOutput"] | components["schemas"]["FluxLoRALoaderOutput"] | components["schemas"]["FluxModelLoaderOutput"] | components["schemas"]["FluxReduxOutput"] | components["schemas"]["ForInvocationOutput"] | components["schemas"]["ForReturnInvocationOutput"] | components["schemas"]["Gemma2EncoderOutput"] | components["schemas"]["GradientMaskOutput"] | components["schemas"]["IPAdapterOutput"] | components["schemas"]["IdealSizeOutput"] | components["schemas"]["Ideogram4ConditioningOutput"] | components["schemas"]["Ideogram4ModelLoaderOutput"] | components["schemas"]["IfInvocationOutput"] | components["schemas"]["ImageCollectionOutput"] | components["schemas"]["ImageGeneratorOutput"] | components["schemas"]["ImageOutput"] | components["schemas"]["ImagePanelCoordinateOutput"] | components["schemas"]["IntegerCollectionOutput"] | components["schemas"]["IntegerGeneratorOutput"] | components["schemas"]["IntegerOutput"] | components["schemas"]["IterateInvocationOutput"] | components["schemas"]["Krea2ConditioningOutput"] | components["schemas"]["Krea2LoRALoaderOutput"] | components["schemas"]["Krea2ModelLoaderOutput"] | components["schemas"]["Krea2StyleReferenceOutput"] | components["schemas"]["LTX2AudioConditioningOutput"] | components["schemas"]["LTX2DenoiseOutput"] | components["schemas"]["LTX2DurationOutput"] | components["schemas"]["LTX2ExtendConditioningOutput"] | components["schemas"]["LTX2IdealDimensionsOutput"] | components["schemas"]["LTX2ImageConditioningOutput"] | components["schemas"]["LTX2LatentUpsampleOutput"] | components["schemas"]["LTX2LoRACollectionLoaderOutput"] | components["schemas"]["LTX2LoRALoaderOutput"] | components["schemas"]["LTX2ModelLoaderOutput"] | components["schemas"]["LTX2TextEncoderOutput"] | components["schemas"]["LTX2VideoConditioningOutput"] | components["schemas"]["LatentsCollectionOutput"] | components["schemas"]["LatentsMetaOutput"] | components["schemas"]["LatentsOutput"] | components["schemas"]["LoRALoaderOutput"] | components["schemas"]["LoRASelectorOutput"] | components["schemas"]["LoopStateOutput"] | components["schemas"]["LoopStateValueOutput"] | components["schemas"]["MDControlListOutput"] | components["schemas"]["MDIPAdapterListOutput"] | components["schemas"]["MDT2IAdapterListOutput"] | components["schemas"]["MaskOutput"] | components["schemas"]["MetadataItemOutput"] | components["schemas"]["MetadataOutput"] | components["schemas"]["MetadataToLorasCollectionOutput"] | components["schemas"]["MetadataToModelOutput"] | components["schemas"]["MetadataToSDXLModelOutput"] | components["schemas"]["MiniMaxH3ConditioningOutput"] | components["schemas"]["MiniMaxH3DenoiseOutput"] | components["schemas"]["MiniMaxH3FrameConditioningOutput"] | components["schemas"]["MiniMaxH3HybridOverlayOutput"] | components["schemas"]["MiniMaxH3LoRACollectionLoaderOutput"] | components["schemas"]["MiniMaxH3LoRALoaderOutput"] | components["schemas"]["MiniMaxH3ModelLoaderOutput"] | components["schemas"]["MiniMaxH3ReferenceConditioningOutput"] | components["schemas"]["MiniMaxH3ReferenceMediaOutput"] | components["schemas"]["ModelIdentifierOutput"] | components["schemas"]["ModelLoaderOutput"] | components["schemas"]["NoiseOutput"] | components["schemas"]["PBRMapsOutput"] | components["schemas"]["PairTileImageOutput"] | components["schemas"]["PiDDecoderOutput"] | components["schemas"]["PromptTemplateOutput"] | components["schemas"]["QwenImageConditioningOutput"] | components["schemas"]["QwenImageLoRALoaderOutput"] | components["schemas"]["QwenImageModelLoaderOutput"] | components["schemas"]["SD3ConditioningOutput"] | components["schemas"]["SDXLLoRALoaderOutput"] | components["schemas"]["SDXLModelLoaderOutput"] | components["schemas"]["SDXLRefinerModelLoaderOutput"] | components["schemas"]["SchedulerOutput"] | components["schemas"]["Sd3ModelLoaderOutput"] | components["schemas"]["SeamlessModeOutput"] | components["schemas"]["String2Output"] | components["schemas"]["StringCollectionOutput"] | components["schemas"]["StringGeneratorOutput"] | components["schemas"]["StringOutput"] | components["schemas"]["StringPosNegOutput"] | components["schemas"]["T2IAdapterOutput"] | components["schemas"]["TileToPropertiesOutput"] | components["schemas"]["UNetOutput"] | components["schemas"]["VAEOutput"] | components["schemas"]["VideoOutput"] | components["schemas"]["WanConditioningOutput"] | components["schemas"]["WanLoRALoaderOutput"] | components["schemas"]["WanModelLoaderOutput"] | components["schemas"]["WanRefImageOutput"] | components["schemas"]["WorkflowReturnGetOutput"] | components["schemas"]["WorkflowReturnOutput"] | components["schemas"]["WorkflowReturnValueOutput"] | components["schemas"]["ZImageConditioningOutput"] | components["schemas"]["ZImageControlOutput"] | components["schemas"]["ZImageLoRALoaderOutput"] | components["schemas"]["ZImageModelLoaderOutput"]; + [key: string]: components["schemas"]["AnimaConditioningOutput"] | components["schemas"]["AnimaLLLiteOutput"] | components["schemas"]["AnimaLoRALoaderOutput"] | components["schemas"]["AnimaModelLoaderOutput"] | components["schemas"]["BooleanCollectionOutput"] | components["schemas"]["BooleanOutput"] | components["schemas"]["BoundingBoxCollectionOutput"] | components["schemas"]["BoundingBoxOutput"] | components["schemas"]["CLIPOutput"] | components["schemas"]["CLIPSkipInvocationOutput"] | components["schemas"]["CalculateImageTilesOutput"] | components["schemas"]["CogView4ConditioningOutput"] | components["schemas"]["CogView4ModelLoaderOutput"] | components["schemas"]["CollectInvocationOutput"] | components["schemas"]["CollectionCartesianInvocationOutput"] | components["schemas"]["CollectionConcatInvocationOutput"] | components["schemas"]["CollectionZipInvocationOutput"] | components["schemas"]["ColorCollectionOutput"] | components["schemas"]["ColorOutput"] | components["schemas"]["ConditioningCollectionOutput"] | components["schemas"]["ConditioningOutput"] | components["schemas"]["ControlOutput"] | components["schemas"]["DenoiseMaskOutput"] | components["schemas"]["ErnieImageConditioningOutput"] | components["schemas"]["ErnieImageModelLoaderOutput"] | components["schemas"]["ExtractVideoRangeOutput"] | components["schemas"]["FaceMaskOutput"] | components["schemas"]["FaceOffOutput"] | components["schemas"]["FloatCollectionOutput"] | components["schemas"]["FloatGeneratorOutput"] | components["schemas"]["FloatOutput"] | components["schemas"]["Flux2DevLoRALoaderOutput"] | components["schemas"]["Flux2DevModelLoaderOutput"] | components["schemas"]["Flux2KleinLoRALoaderOutput"] | components["schemas"]["Flux2KleinModelLoaderOutput"] | components["schemas"]["FluxConditioningCollectionOutput"] | components["schemas"]["FluxConditioningOutput"] | components["schemas"]["FluxControlLoRALoaderOutput"] | components["schemas"]["FluxControlNetOutput"] | components["schemas"]["FluxFillOutput"] | components["schemas"]["FluxKontextOutput"] | components["schemas"]["FluxLoRALoaderOutput"] | components["schemas"]["FluxModelLoaderOutput"] | components["schemas"]["FluxReduxOutput"] | components["schemas"]["ForInvocationOutput"] | components["schemas"]["ForReturnInvocationOutput"] | components["schemas"]["Gemma2EncoderOutput"] | components["schemas"]["GradientMaskOutput"] | components["schemas"]["IPAdapterOutput"] | components["schemas"]["IdealSizeOutput"] | components["schemas"]["Ideogram4ConditioningOutput"] | components["schemas"]["Ideogram4ModelLoaderOutput"] | components["schemas"]["IfInvocationOutput"] | components["schemas"]["ImageCollectionOutput"] | components["schemas"]["ImageGeneratorOutput"] | components["schemas"]["ImageOutput"] | components["schemas"]["ImagePanelCoordinateOutput"] | components["schemas"]["IntegerCollectionOutput"] | components["schemas"]["IntegerGeneratorOutput"] | components["schemas"]["IntegerOutput"] | components["schemas"]["IterateInvocationOutput"] | components["schemas"]["Krea2ConditioningOutput"] | components["schemas"]["Krea2LoRALoaderOutput"] | components["schemas"]["Krea2ModelLoaderOutput"] | components["schemas"]["Krea2StyleReferenceOutput"] | components["schemas"]["LTX2AudioConditioningOutput"] | components["schemas"]["LTX2DenoiseOutput"] | components["schemas"]["LTX2DurationOutput"] | components["schemas"]["LTX2ExtendConditioningOutput"] | components["schemas"]["LTX2IdealDimensionsOutput"] | components["schemas"]["LTX2ImageConditioningOutput"] | components["schemas"]["LTX2LatentUpsampleOutput"] | components["schemas"]["LTX2LoRACollectionLoaderOutput"] | components["schemas"]["LTX2LoRALoaderOutput"] | components["schemas"]["LTX2ModelLoaderOutput"] | components["schemas"]["LTX2TextEncoderOutput"] | components["schemas"]["LTX2VideoConditioningOutput"] | components["schemas"]["LatentsCollectionOutput"] | components["schemas"]["LatentsMetaOutput"] | components["schemas"]["LatentsOutput"] | components["schemas"]["LoRALoaderOutput"] | components["schemas"]["LoRASelectorOutput"] | components["schemas"]["LoopStateOutput"] | components["schemas"]["LoopStateValueOutput"] | components["schemas"]["MDControlListOutput"] | components["schemas"]["MDIPAdapterListOutput"] | components["schemas"]["MDT2IAdapterListOutput"] | components["schemas"]["MaskOutput"] | components["schemas"]["MetadataItemOutput"] | components["schemas"]["MetadataOutput"] | components["schemas"]["MetadataToLorasCollectionOutput"] | components["schemas"]["MetadataToModelOutput"] | components["schemas"]["MetadataToSDXLModelOutput"] | components["schemas"]["MiniMaxH3ConditioningOutput"] | components["schemas"]["MiniMaxH3DenoiseOutput"] | components["schemas"]["MiniMaxH3FrameConditioningOutput"] | components["schemas"]["MiniMaxH3HybridOverlayOutput"] | components["schemas"]["MiniMaxH3LoRACollectionLoaderOutput"] | components["schemas"]["MiniMaxH3LoRALoaderOutput"] | components["schemas"]["MiniMaxH3ModelLoaderOutput"] | components["schemas"]["MiniMaxH3ReferenceConditioningOutput"] | components["schemas"]["MiniMaxH3ReferenceMediaOutput"] | components["schemas"]["ModelIdentifierOutput"] | components["schemas"]["ModelLoaderOutput"] | components["schemas"]["NoiseOutput"] | components["schemas"]["PBRMapsOutput"] | components["schemas"]["PairTileImageOutput"] | components["schemas"]["PiDDecoderOutput"] | components["schemas"]["PromptTemplateOutput"] | components["schemas"]["QwenImage21ConditioningOutput"] | components["schemas"]["QwenImage21ModelLoaderOutput"] | components["schemas"]["QwenImageConditioningOutput"] | components["schemas"]["QwenImageLoRALoaderOutput"] | components["schemas"]["QwenImageModelLoaderOutput"] | components["schemas"]["SD3ConditioningOutput"] | components["schemas"]["SDXLLoRALoaderOutput"] | components["schemas"]["SDXLModelLoaderOutput"] | components["schemas"]["SDXLRefinerModelLoaderOutput"] | components["schemas"]["SchedulerOutput"] | components["schemas"]["Sd3ModelLoaderOutput"] | components["schemas"]["SeamlessModeOutput"] | components["schemas"]["String2Output"] | components["schemas"]["StringCollectionOutput"] | components["schemas"]["StringGeneratorOutput"] | components["schemas"]["StringOutput"] | components["schemas"]["StringPosNegOutput"] | components["schemas"]["T2IAdapterOutput"] | components["schemas"]["TileToPropertiesOutput"] | components["schemas"]["UNetOutput"] | components["schemas"]["VAEOutput"] | components["schemas"]["VideoOutput"] | components["schemas"]["WanConditioningOutput"] | components["schemas"]["WanLoRALoaderOutput"] | components["schemas"]["WanModelLoaderOutput"] | components["schemas"]["WanRefImageOutput"] | components["schemas"]["WorkflowReturnGetOutput"] | components["schemas"]["WorkflowReturnOutput"] | components["schemas"]["WorkflowReturnValueOutput"] | components["schemas"]["ZImageConditioningOutput"] | components["schemas"]["ZImageControlOutput"] | components["schemas"]["ZImageLoRALoaderOutput"] | components["schemas"]["ZImageModelLoaderOutput"]; }; /** * Errors @@ -22133,7 +22133,7 @@ export type components = { * Invocation * @description The ID of the invocation */ - invocation: components["schemas"]["AddInvocation"] | components["schemas"]["AlibabaCloudImageGenerationInvocation"] | components["schemas"]["AlphaMaskToTensorInvocation"] | components["schemas"]["AnimaDenoiseInvocation"] | components["schemas"]["AnimaDenoiseMetaInvocation"] | components["schemas"]["AnimaImageToLatentsInvocation"] | components["schemas"]["AnimaLLLiteInvocation"] | components["schemas"]["AnimaLatentsToImageInvocation"] | components["schemas"]["AnimaLoRACollectionLoader"] | components["schemas"]["AnimaLoRALoaderInvocation"] | components["schemas"]["AnimaModelLoaderInvocation"] | components["schemas"]["AnimaTextEncoderInvocation"] | components["schemas"]["ApplyMaskTensorToImageInvocation"] | components["schemas"]["ApplyMaskToImageInvocation"] | components["schemas"]["AtlasCloudImageGenerationInvocation"] | components["schemas"]["BlankImageInvocation"] | components["schemas"]["BlendLatentsInvocation"] | components["schemas"]["BooleanCollectionInvocation"] | components["schemas"]["BooleanInvocation"] | components["schemas"]["BooleanLogicInvocation"] | components["schemas"]["BoundingBoxInvocation"] | components["schemas"]["CLIPSkipInvocation"] | components["schemas"]["CV2InfillInvocation"] | components["schemas"]["CalculateImageTilesEvenSplitInvocation"] | components["schemas"]["CalculateImageTilesInvocation"] | components["schemas"]["CalculateImageTilesMinimumOverlapInvocation"] | components["schemas"]["CallSavedWorkflowInvocation"] | components["schemas"]["CannyEdgeDetectionInvocation"] | components["schemas"]["CanvasOutputInvocation"] | components["schemas"]["CanvasPasteBackInvocation"] | components["schemas"]["CanvasV2MaskAndCropInvocation"] | components["schemas"]["CenterPadCropInvocation"] | components["schemas"]["CogView4DenoiseInvocation"] | components["schemas"]["CogView4ImageToLatentsInvocation"] | components["schemas"]["CogView4LatentsToImageInvocation"] | components["schemas"]["CogView4ModelLoaderInvocation"] | components["schemas"]["CogView4TextEncoderInvocation"] | components["schemas"]["CollectInvocation"] | components["schemas"]["CollectionCartesianInvocation"] | components["schemas"]["CollectionConcatInvocation"] | components["schemas"]["CollectionZipInvocation"] | components["schemas"]["ColorCorrectInvocation"] | components["schemas"]["ColorInvocation"] | components["schemas"]["ColorMapInvocation"] | components["schemas"]["CompelInvocation"] | components["schemas"]["ConditioningCollectionInvocation"] | components["schemas"]["ConditioningInvocation"] | components["schemas"]["ContentShuffleInvocation"] | components["schemas"]["ControlNetInvocation"] | components["schemas"]["CoreMetadataInvocation"] | components["schemas"]["CreateDenoiseMaskInvocation"] | components["schemas"]["CreateGradientMaskInvocation"] | components["schemas"]["CropImageToBoundingBoxInvocation"] | components["schemas"]["CropLatentsCoreInvocation"] | components["schemas"]["CvInpaintInvocation"] | components["schemas"]["DWOpenposeDetectionInvocation"] | components["schemas"]["DecodeInvisibleWatermarkInvocation"] | components["schemas"]["DenoiseLatentsInvocation"] | components["schemas"]["DenoiseLatentsMetaInvocation"] | components["schemas"]["DepthAnythingDepthEstimationInvocation"] | components["schemas"]["DivideInvocation"] | components["schemas"]["DynamicPromptInvocation"] | components["schemas"]["ESRGANInvocation"] | components["schemas"]["ErnieImageDenoiseInvocation"] | components["schemas"]["ErnieImageModelLoaderInvocation"] | components["schemas"]["ErnieImagePromptEnhancerInvocation"] | components["schemas"]["ErnieImageTextEncoderInvocation"] | components["schemas"]["ErnieImageVaeDecodeInvocation"] | components["schemas"]["ExpandMaskWithFadeInvocation"] | components["schemas"]["ExtractVideoRangeInvocation"] | components["schemas"]["FLUXLoRACollectionLoader"] | components["schemas"]["FaceIdentifierInvocation"] | components["schemas"]["FaceMaskInvocation"] | components["schemas"]["FaceOffInvocation"] | components["schemas"]["FloatBatchInvocation"] | components["schemas"]["FloatCollectionInvocation"] | components["schemas"]["FloatGenerator"] | components["schemas"]["FloatInvocation"] | components["schemas"]["FloatLinearRangeInvocation"] | components["schemas"]["FloatMathInvocation"] | components["schemas"]["FloatToIntegerInvocation"] | components["schemas"]["Flux2DenoiseInvocation"] | components["schemas"]["Flux2DevLoRACollectionLoader"] | components["schemas"]["Flux2DevLoRALoaderInvocation"] | components["schemas"]["Flux2DevModelLoaderInvocation"] | components["schemas"]["Flux2DevTextEncoderInvocation"] | components["schemas"]["Flux2KleinLoRACollectionLoader"] | components["schemas"]["Flux2KleinLoRALoaderInvocation"] | components["schemas"]["Flux2KleinModelLoaderInvocation"] | components["schemas"]["Flux2KleinTextEncoderInvocation"] | components["schemas"]["Flux2PiDDecodeInvocation"] | components["schemas"]["Flux2VaeDecodeInvocation"] | components["schemas"]["Flux2VaeEncodeInvocation"] | components["schemas"]["FluxControlLoRALoaderInvocation"] | components["schemas"]["FluxControlNetInvocation"] | components["schemas"]["FluxDenoiseInvocation"] | components["schemas"]["FluxDenoiseLatentsMetaInvocation"] | components["schemas"]["FluxFillInvocation"] | components["schemas"]["FluxIPAdapterInvocation"] | components["schemas"]["FluxKontextConcatenateImagesInvocation"] | components["schemas"]["FluxKontextInvocation"] | components["schemas"]["FluxLoRALoaderInvocation"] | components["schemas"]["FluxModelLoaderInvocation"] | components["schemas"]["FluxPiDDecodeInvocation"] | components["schemas"]["FluxReduxInvocation"] | components["schemas"]["FluxTextEncoderInvocation"] | components["schemas"]["FluxVaeDecodeInvocation"] | components["schemas"]["FluxVaeEncodeInvocation"] | components["schemas"]["ForInvocation"] | components["schemas"]["ForReturnInvocation"] | components["schemas"]["FreeUInvocation"] | components["schemas"]["GeminiImageGenerationInvocation"] | components["schemas"]["Gemma2EncoderLoaderInvocation"] | components["schemas"]["GetMaskBoundingBoxInvocation"] | components["schemas"]["GroundingDinoInvocation"] | components["schemas"]["HEDEdgeDetectionInvocation"] | components["schemas"]["HeuristicResizeInvocation"] | components["schemas"]["IPAdapterInvocation"] | components["schemas"]["IdealSizeInvocation"] | components["schemas"]["Ideogram4CaptionBuilderInvocation"] | components["schemas"]["Ideogram4DenoiseInvocation"] | components["schemas"]["Ideogram4LatentsToImageInvocation"] | components["schemas"]["Ideogram4ModelLoaderInvocation"] | components["schemas"]["Ideogram4TextEncoderInvocation"] | components["schemas"]["IfInvocation"] | components["schemas"]["ImageBatchInvocation"] | components["schemas"]["ImageBlurInvocation"] | components["schemas"]["ImageChannelInvocation"] | components["schemas"]["ImageChannelMultiplyInvocation"] | components["schemas"]["ImageChannelOffsetInvocation"] | components["schemas"]["ImageCollectionInvocation"] | components["schemas"]["ImageConvertInvocation"] | components["schemas"]["ImageCropInvocation"] | components["schemas"]["ImageGenerator"] | components["schemas"]["ImageHueAdjustmentInvocation"] | components["schemas"]["ImageInverseLerpInvocation"] | components["schemas"]["ImageInvocation"] | components["schemas"]["ImageLerpInvocation"] | components["schemas"]["ImageMaskToTensorInvocation"] | components["schemas"]["ImageMultiplyInvocation"] | components["schemas"]["ImageNSFWBlurInvocation"] | components["schemas"]["ImageNoiseInvocation"] | components["schemas"]["ImagePanelLayoutInvocation"] | components["schemas"]["ImagePasteInvocation"] | components["schemas"]["ImageResizeInvocation"] | components["schemas"]["ImageScaleInvocation"] | components["schemas"]["ImageToLatentsInvocation"] | components["schemas"]["ImageWatermarkInvocation"] | components["schemas"]["InfillColorInvocation"] | components["schemas"]["InfillPatchMatchInvocation"] | components["schemas"]["InfillTileInvocation"] | components["schemas"]["IntegerBatchInvocation"] | components["schemas"]["IntegerCollectionInvocation"] | components["schemas"]["IntegerGenerator"] | components["schemas"]["IntegerInvocation"] | components["schemas"]["IntegerMathInvocation"] | components["schemas"]["InvertTensorMaskInvocation"] | components["schemas"]["InvokeAdjustImageHuePlusInvocation"] | components["schemas"]["InvokeEquivalentAchromaticLightnessInvocation"] | components["schemas"]["InvokeImageBlendInvocation"] | components["schemas"]["InvokeImageCompositorInvocation"] | components["schemas"]["InvokeImageDilateOrErodeInvocation"] | components["schemas"]["InvokeImageEnhanceInvocation"] | components["schemas"]["InvokeImageValueThresholdsInvocation"] | components["schemas"]["IterateInvocation"] | components["schemas"]["Krea2ConditioningRebalanceInvocation"] | components["schemas"]["Krea2DenoiseInvocation"] | components["schemas"]["Krea2LoRACollectionLoader"] | components["schemas"]["Krea2LoRALoaderInvocation"] | components["schemas"]["Krea2ModelLoaderInvocation"] | components["schemas"]["Krea2SeedVarianceInvocation"] | components["schemas"]["Krea2StyleReferenceInvocation"] | components["schemas"]["Krea2TextEncoderInvocation"] | components["schemas"]["LTX2AudioConditioningInvocation"] | components["schemas"]["LTX2DenoiseInvocation"] | components["schemas"]["LTX2DurationInvocation"] | components["schemas"]["LTX2ExtendConditioningInvocation"] | components["schemas"]["LTX2IdealDimensionsInvocation"] | components["schemas"]["LTX2ImageConditioningInvocation"] | components["schemas"]["LTX2LatentUpsampleInvocation"] | components["schemas"]["LTX2LatentsToVideoInvocation"] | components["schemas"]["LTX2LoRACollectionLoader"] | components["schemas"]["LTX2LoRALoaderInvocation"] | components["schemas"]["LTX2ModelLoaderInvocation"] | components["schemas"]["LTX2TextEncoderInvocation"] | components["schemas"]["LTX2VideoConditioningInvocation"] | components["schemas"]["LaMaInfillInvocation"] | components["schemas"]["LatentsCollectionInvocation"] | components["schemas"]["LatentsInvocation"] | components["schemas"]["LatentsToImageInvocation"] | components["schemas"]["LineartAnimeEdgeDetectionInvocation"] | components["schemas"]["LineartEdgeDetectionInvocation"] | components["schemas"]["LlavaOnevisionVllmInvocation"] | components["schemas"]["LoRACollectionLoader"] | components["schemas"]["LoRALoaderInvocation"] | components["schemas"]["LoRASelectorInvocation"] | components["schemas"]["MLSDDetectionInvocation"] | components["schemas"]["MainModelLoaderInvocation"] | components["schemas"]["MaskCombineInvocation"] | components["schemas"]["MaskEdgeInvocation"] | components["schemas"]["MaskFromAlphaInvocation"] | components["schemas"]["MaskFromIDInvocation"] | components["schemas"]["MaskTensorToImageInvocation"] | components["schemas"]["MediaPipeFaceDetectionInvocation"] | components["schemas"]["MergeMetadataInvocation"] | components["schemas"]["MergeTilesToImageInvocation"] | components["schemas"]["MetadataFieldExtractorInvocation"] | components["schemas"]["MetadataFromImageInvocation"] | components["schemas"]["MetadataInvocation"] | components["schemas"]["MetadataItemInvocation"] | components["schemas"]["MetadataItemLinkedInvocation"] | components["schemas"]["MetadataToBoolCollectionInvocation"] | components["schemas"]["MetadataToBoolInvocation"] | components["schemas"]["MetadataToControlnetsInvocation"] | components["schemas"]["MetadataToFloatCollectionInvocation"] | components["schemas"]["MetadataToFloatInvocation"] | components["schemas"]["MetadataToIPAdaptersInvocation"] | components["schemas"]["MetadataToIntegerCollectionInvocation"] | components["schemas"]["MetadataToIntegerInvocation"] | components["schemas"]["MetadataToLorasCollectionInvocation"] | components["schemas"]["MetadataToLorasInvocation"] | components["schemas"]["MetadataToModelInvocation"] | components["schemas"]["MetadataToSDXLLorasInvocation"] | components["schemas"]["MetadataToSDXLModelInvocation"] | components["schemas"]["MetadataToSchedulerInvocation"] | components["schemas"]["MetadataToStringCollectionInvocation"] | components["schemas"]["MetadataToStringInvocation"] | components["schemas"]["MetadataToT2IAdaptersInvocation"] | components["schemas"]["MetadataToVAEInvocation"] | components["schemas"]["MiniMaxH3DenoiseInvocation"] | components["schemas"]["MiniMaxH3FrameConditioningInvocation"] | components["schemas"]["MiniMaxH3HybridOverlayInvocation"] | components["schemas"]["MiniMaxH3IdealDimensionsInvocation"] | components["schemas"]["MiniMaxH3ImageReferenceInvocation"] | components["schemas"]["MiniMaxH3LatentsToImageInvocation"] | components["schemas"]["MiniMaxH3LatentsToVideoInvocation"] | components["schemas"]["MiniMaxH3LoRACollectionLoader"] | components["schemas"]["MiniMaxH3LoRALoaderInvocation"] | components["schemas"]["MiniMaxH3ModelLoaderInvocation"] | components["schemas"]["MiniMaxH3ReferenceConditioningInvocation"] | components["schemas"]["MiniMaxH3TextEncoderInvocation"] | components["schemas"]["MiniMaxH3VideoReferenceInvocation"] | components["schemas"]["ModelIdentifierInvocation"] | components["schemas"]["MultiplyInvocation"] | components["schemas"]["NoiseInvocation"] | components["schemas"]["NormalMapInvocation"] | components["schemas"]["OklabUnsharpMaskInvocation"] | components["schemas"]["OklchImageHueAdjustmentInvocation"] | components["schemas"]["OpenAIImageGenerationInvocation"] | components["schemas"]["PBRMapsInvocation"] | components["schemas"]["PairTileImageInvocation"] | components["schemas"]["PasteImageIntoBoundingBoxInvocation"] | components["schemas"]["PiDDecoderLoaderInvocation"] | components["schemas"]["PiDUpscaleInvocation"] | components["schemas"]["PiDiNetEdgeDetectionInvocation"] | components["schemas"]["PromptTemplateInvocation"] | components["schemas"]["PromptsFromFileInvocation"] | components["schemas"]["QwenImageDenoiseInvocation"] | components["schemas"]["QwenImageImageToLatentsInvocation"] | components["schemas"]["QwenImageLatentsToImageInvocation"] | components["schemas"]["QwenImageLoRACollectionLoader"] | components["schemas"]["QwenImageLoRALoaderInvocation"] | components["schemas"]["QwenImageModelLoaderInvocation"] | components["schemas"]["QwenImagePiDDecodeInvocation"] | components["schemas"]["QwenImageTextEncoderInvocation"] | components["schemas"]["RandomFloatInvocation"] | components["schemas"]["RandomIntInvocation"] | components["schemas"]["RandomRangeInvocation"] | components["schemas"]["RangeInvocation"] | components["schemas"]["RangeOfSizeInvocation"] | components["schemas"]["RectangleMaskInvocation"] | components["schemas"]["ResizeLatentsInvocation"] | components["schemas"]["RoundInvocation"] | components["schemas"]["SD3DenoiseInvocation"] | components["schemas"]["SD3ImageToLatentsInvocation"] | components["schemas"]["SD3LatentsToImageInvocation"] | components["schemas"]["SD3PiDDecodeInvocation"] | components["schemas"]["SDXLCompelPromptInvocation"] | components["schemas"]["SDXLLoRACollectionLoader"] | components["schemas"]["SDXLLoRALoaderInvocation"] | components["schemas"]["SDXLModelLoaderInvocation"] | components["schemas"]["SDXLPiDDecodeInvocation"] | components["schemas"]["SDXLRefinerCompelPromptInvocation"] | components["schemas"]["SDXLRefinerModelLoaderInvocation"] | components["schemas"]["SaveImageInvocation"] | components["schemas"]["SaveImageToFileInvocation"] | components["schemas"]["ScaleLatentsInvocation"] | components["schemas"]["SchedulerInvocation"] | components["schemas"]["Sd3ModelLoaderInvocation"] | components["schemas"]["Sd3TextEncoderInvocation"] | components["schemas"]["SeamlessModeInvocation"] | components["schemas"]["SeedreamImageGenerationInvocation"] | components["schemas"]["SegmentAnythingInvocation"] | components["schemas"]["ShowImageInvocation"] | components["schemas"]["SpandrelImageToImageAutoscaleInvocation"] | components["schemas"]["SpandrelImageToImageInvocation"] | components["schemas"]["StateEmptyInvocation"] | components["schemas"]["StateGetInvocation"] | components["schemas"]["StateMergeInvocation"] | components["schemas"]["StateSetInvocation"] | components["schemas"]["StringBatchInvocation"] | components["schemas"]["StringCollectionInvocation"] | components["schemas"]["StringGenerator"] | components["schemas"]["StringInvocation"] | components["schemas"]["StringJoinInvocation"] | components["schemas"]["StringJoinThreeInvocation"] | components["schemas"]["StringReplaceInvocation"] | components["schemas"]["StringSplitInvocation"] | components["schemas"]["StringSplitNegInvocation"] | components["schemas"]["SubtractInvocation"] | components["schemas"]["T2IAdapterInvocation"] | components["schemas"]["TextLLMInvocation"] | components["schemas"]["TextLLMWithPresetInvocation"] | components["schemas"]["TileToPropertiesInvocation"] | components["schemas"]["TiledMultiDiffusionDenoiseLatents"] | components["schemas"]["UnsharpMaskInvocation"] | components["schemas"]["VAELoaderInvocation"] | components["schemas"]["VideoConcatInvocation"] | components["schemas"]["VideoFrameExtractInvocation"] | components["schemas"]["VideoInvocation"] | components["schemas"]["WanDenoiseInvocation"] | components["schemas"]["WanI2VIdealDimensionsInvocation"] | components["schemas"]["WanImageToLatentsInvocation"] | components["schemas"]["WanLatentsToImageInvocation"] | components["schemas"]["WanLatentsToVideoInvocation"] | components["schemas"]["WanLoRACollectionLoader"] | components["schemas"]["WanLoRALoaderInvocation"] | components["schemas"]["WanModelLoaderInvocation"] | components["schemas"]["WanRefImageEncoderInvocation"] | components["schemas"]["WanTI2VIdealDimensionsInvocation"] | components["schemas"]["WanTextEncoderInvocation"] | components["schemas"]["WanVideoDenoiseInvocation"] | components["schemas"]["WorkflowReturnGetInvocation"] | components["schemas"]["WorkflowReturnInvocation"] | components["schemas"]["WorkflowReturnValueInvocation"] | components["schemas"]["ZImageControlInvocation"] | components["schemas"]["ZImageDenoiseInvocation"] | components["schemas"]["ZImageDenoiseMetaInvocation"] | components["schemas"]["ZImageImageToLatentsInvocation"] | components["schemas"]["ZImageLatentsToImageInvocation"] | components["schemas"]["ZImageLoRACollectionLoader"] | components["schemas"]["ZImageLoRALoaderInvocation"] | components["schemas"]["ZImageModelLoaderInvocation"] | components["schemas"]["ZImagePiDDecodeInvocation"] | components["schemas"]["ZImageSeedVarianceEnhancerInvocation"] | components["schemas"]["ZImageTextEncoderInvocation"]; + invocation: components["schemas"]["AddInvocation"] | components["schemas"]["AlibabaCloudImageGenerationInvocation"] | components["schemas"]["AlphaMaskToTensorInvocation"] | components["schemas"]["AnimaDenoiseInvocation"] | components["schemas"]["AnimaDenoiseMetaInvocation"] | components["schemas"]["AnimaImageToLatentsInvocation"] | components["schemas"]["AnimaLLLiteInvocation"] | components["schemas"]["AnimaLatentsToImageInvocation"] | components["schemas"]["AnimaLoRACollectionLoader"] | components["schemas"]["AnimaLoRALoaderInvocation"] | components["schemas"]["AnimaModelLoaderInvocation"] | components["schemas"]["AnimaTextEncoderInvocation"] | components["schemas"]["ApplyMaskTensorToImageInvocation"] | components["schemas"]["ApplyMaskToImageInvocation"] | components["schemas"]["AtlasCloudImageGenerationInvocation"] | components["schemas"]["BlankImageInvocation"] | components["schemas"]["BlendLatentsInvocation"] | components["schemas"]["BooleanCollectionInvocation"] | components["schemas"]["BooleanInvocation"] | components["schemas"]["BooleanLogicInvocation"] | components["schemas"]["BoundingBoxInvocation"] | components["schemas"]["CLIPSkipInvocation"] | components["schemas"]["CV2InfillInvocation"] | components["schemas"]["CalculateImageTilesEvenSplitInvocation"] | components["schemas"]["CalculateImageTilesInvocation"] | components["schemas"]["CalculateImageTilesMinimumOverlapInvocation"] | components["schemas"]["CallSavedWorkflowInvocation"] | components["schemas"]["CannyEdgeDetectionInvocation"] | components["schemas"]["CanvasOutputInvocation"] | components["schemas"]["CanvasPasteBackInvocation"] | components["schemas"]["CanvasV2MaskAndCropInvocation"] | components["schemas"]["CenterPadCropInvocation"] | components["schemas"]["CogView4DenoiseInvocation"] | components["schemas"]["CogView4ImageToLatentsInvocation"] | components["schemas"]["CogView4LatentsToImageInvocation"] | components["schemas"]["CogView4ModelLoaderInvocation"] | components["schemas"]["CogView4TextEncoderInvocation"] | components["schemas"]["CollectInvocation"] | components["schemas"]["CollectionCartesianInvocation"] | components["schemas"]["CollectionConcatInvocation"] | components["schemas"]["CollectionZipInvocation"] | components["schemas"]["ColorCorrectInvocation"] | components["schemas"]["ColorInvocation"] | components["schemas"]["ColorMapInvocation"] | components["schemas"]["CompelInvocation"] | components["schemas"]["ConditioningCollectionInvocation"] | components["schemas"]["ConditioningInvocation"] | components["schemas"]["ContentShuffleInvocation"] | components["schemas"]["ControlNetInvocation"] | components["schemas"]["CoreMetadataInvocation"] | components["schemas"]["CreateDenoiseMaskInvocation"] | components["schemas"]["CreateGradientMaskInvocation"] | components["schemas"]["CropImageToBoundingBoxInvocation"] | components["schemas"]["CropLatentsCoreInvocation"] | components["schemas"]["CvInpaintInvocation"] | components["schemas"]["DWOpenposeDetectionInvocation"] | components["schemas"]["DecodeInvisibleWatermarkInvocation"] | components["schemas"]["DenoiseLatentsInvocation"] | components["schemas"]["DenoiseLatentsMetaInvocation"] | components["schemas"]["DepthAnythingDepthEstimationInvocation"] | components["schemas"]["DivideInvocation"] | components["schemas"]["DynamicPromptInvocation"] | components["schemas"]["ESRGANInvocation"] | components["schemas"]["ErnieImageDenoiseInvocation"] | components["schemas"]["ErnieImageModelLoaderInvocation"] | components["schemas"]["ErnieImagePromptEnhancerInvocation"] | components["schemas"]["ErnieImageTextEncoderInvocation"] | components["schemas"]["ErnieImageVaeDecodeInvocation"] | components["schemas"]["ExpandMaskWithFadeInvocation"] | components["schemas"]["ExtractVideoRangeInvocation"] | components["schemas"]["FLUXLoRACollectionLoader"] | components["schemas"]["FaceIdentifierInvocation"] | components["schemas"]["FaceMaskInvocation"] | components["schemas"]["FaceOffInvocation"] | components["schemas"]["FloatBatchInvocation"] | components["schemas"]["FloatCollectionInvocation"] | components["schemas"]["FloatGenerator"] | components["schemas"]["FloatInvocation"] | components["schemas"]["FloatLinearRangeInvocation"] | components["schemas"]["FloatMathInvocation"] | components["schemas"]["FloatToIntegerInvocation"] | components["schemas"]["Flux2DenoiseInvocation"] | components["schemas"]["Flux2DevLoRACollectionLoader"] | components["schemas"]["Flux2DevLoRALoaderInvocation"] | components["schemas"]["Flux2DevModelLoaderInvocation"] | components["schemas"]["Flux2DevTextEncoderInvocation"] | components["schemas"]["Flux2KleinLoRACollectionLoader"] | components["schemas"]["Flux2KleinLoRALoaderInvocation"] | components["schemas"]["Flux2KleinModelLoaderInvocation"] | components["schemas"]["Flux2KleinTextEncoderInvocation"] | components["schemas"]["Flux2PiDDecodeInvocation"] | components["schemas"]["Flux2VaeDecodeInvocation"] | components["schemas"]["Flux2VaeEncodeInvocation"] | components["schemas"]["FluxControlLoRALoaderInvocation"] | components["schemas"]["FluxControlNetInvocation"] | components["schemas"]["FluxDenoiseInvocation"] | components["schemas"]["FluxDenoiseLatentsMetaInvocation"] | components["schemas"]["FluxFillInvocation"] | components["schemas"]["FluxIPAdapterInvocation"] | components["schemas"]["FluxKontextConcatenateImagesInvocation"] | components["schemas"]["FluxKontextInvocation"] | components["schemas"]["FluxLoRALoaderInvocation"] | components["schemas"]["FluxModelLoaderInvocation"] | components["schemas"]["FluxPiDDecodeInvocation"] | components["schemas"]["FluxReduxInvocation"] | components["schemas"]["FluxTextEncoderInvocation"] | components["schemas"]["FluxVaeDecodeInvocation"] | components["schemas"]["FluxVaeEncodeInvocation"] | components["schemas"]["ForInvocation"] | components["schemas"]["ForReturnInvocation"] | components["schemas"]["FreeUInvocation"] | components["schemas"]["GeminiImageGenerationInvocation"] | components["schemas"]["Gemma2EncoderLoaderInvocation"] | components["schemas"]["GetMaskBoundingBoxInvocation"] | components["schemas"]["GroundingDinoInvocation"] | components["schemas"]["HEDEdgeDetectionInvocation"] | components["schemas"]["HeuristicResizeInvocation"] | components["schemas"]["IPAdapterInvocation"] | components["schemas"]["IdealSizeInvocation"] | components["schemas"]["Ideogram4CaptionBuilderInvocation"] | components["schemas"]["Ideogram4DenoiseInvocation"] | components["schemas"]["Ideogram4LatentsToImageInvocation"] | components["schemas"]["Ideogram4ModelLoaderInvocation"] | components["schemas"]["Ideogram4TextEncoderInvocation"] | components["schemas"]["IfInvocation"] | components["schemas"]["ImageBatchInvocation"] | components["schemas"]["ImageBlurInvocation"] | components["schemas"]["ImageChannelInvocation"] | components["schemas"]["ImageChannelMultiplyInvocation"] | components["schemas"]["ImageChannelOffsetInvocation"] | components["schemas"]["ImageCollectionInvocation"] | components["schemas"]["ImageConvertInvocation"] | components["schemas"]["ImageCropInvocation"] | components["schemas"]["ImageGenerator"] | components["schemas"]["ImageHueAdjustmentInvocation"] | components["schemas"]["ImageInverseLerpInvocation"] | components["schemas"]["ImageInvocation"] | components["schemas"]["ImageLerpInvocation"] | components["schemas"]["ImageMaskToTensorInvocation"] | components["schemas"]["ImageMultiplyInvocation"] | components["schemas"]["ImageNSFWBlurInvocation"] | components["schemas"]["ImageNoiseInvocation"] | components["schemas"]["ImagePanelLayoutInvocation"] | components["schemas"]["ImagePasteInvocation"] | components["schemas"]["ImageResizeInvocation"] | components["schemas"]["ImageScaleInvocation"] | components["schemas"]["ImageToLatentsInvocation"] | components["schemas"]["ImageWatermarkInvocation"] | components["schemas"]["InfillColorInvocation"] | components["schemas"]["InfillPatchMatchInvocation"] | components["schemas"]["InfillTileInvocation"] | components["schemas"]["IntegerBatchInvocation"] | components["schemas"]["IntegerCollectionInvocation"] | components["schemas"]["IntegerGenerator"] | components["schemas"]["IntegerInvocation"] | components["schemas"]["IntegerMathInvocation"] | components["schemas"]["InvertTensorMaskInvocation"] | components["schemas"]["InvokeAdjustImageHuePlusInvocation"] | components["schemas"]["InvokeEquivalentAchromaticLightnessInvocation"] | components["schemas"]["InvokeImageBlendInvocation"] | components["schemas"]["InvokeImageCompositorInvocation"] | components["schemas"]["InvokeImageDilateOrErodeInvocation"] | components["schemas"]["InvokeImageEnhanceInvocation"] | components["schemas"]["InvokeImageValueThresholdsInvocation"] | components["schemas"]["IterateInvocation"] | components["schemas"]["Krea2ConditioningRebalanceInvocation"] | components["schemas"]["Krea2DenoiseInvocation"] | components["schemas"]["Krea2LoRACollectionLoader"] | components["schemas"]["Krea2LoRALoaderInvocation"] | components["schemas"]["Krea2ModelLoaderInvocation"] | components["schemas"]["Krea2SeedVarianceInvocation"] | components["schemas"]["Krea2StyleReferenceInvocation"] | components["schemas"]["Krea2TextEncoderInvocation"] | components["schemas"]["LTX2AudioConditioningInvocation"] | components["schemas"]["LTX2DenoiseInvocation"] | components["schemas"]["LTX2DurationInvocation"] | components["schemas"]["LTX2ExtendConditioningInvocation"] | components["schemas"]["LTX2IdealDimensionsInvocation"] | components["schemas"]["LTX2ImageConditioningInvocation"] | components["schemas"]["LTX2LatentUpsampleInvocation"] | components["schemas"]["LTX2LatentsToVideoInvocation"] | components["schemas"]["LTX2LoRACollectionLoader"] | components["schemas"]["LTX2LoRALoaderInvocation"] | components["schemas"]["LTX2ModelLoaderInvocation"] | components["schemas"]["LTX2TextEncoderInvocation"] | components["schemas"]["LTX2VideoConditioningInvocation"] | components["schemas"]["LaMaInfillInvocation"] | components["schemas"]["LatentsCollectionInvocation"] | components["schemas"]["LatentsInvocation"] | components["schemas"]["LatentsToImageInvocation"] | components["schemas"]["LineartAnimeEdgeDetectionInvocation"] | components["schemas"]["LineartEdgeDetectionInvocation"] | components["schemas"]["LlavaOnevisionVllmInvocation"] | components["schemas"]["LoRACollectionLoader"] | components["schemas"]["LoRALoaderInvocation"] | components["schemas"]["LoRASelectorInvocation"] | components["schemas"]["MLSDDetectionInvocation"] | components["schemas"]["MainModelLoaderInvocation"] | components["schemas"]["MaskCombineInvocation"] | components["schemas"]["MaskEdgeInvocation"] | components["schemas"]["MaskFromAlphaInvocation"] | components["schemas"]["MaskFromIDInvocation"] | components["schemas"]["MaskTensorToImageInvocation"] | components["schemas"]["MediaPipeFaceDetectionInvocation"] | components["schemas"]["MergeMetadataInvocation"] | components["schemas"]["MergeTilesToImageInvocation"] | components["schemas"]["MetadataFieldExtractorInvocation"] | components["schemas"]["MetadataFromImageInvocation"] | components["schemas"]["MetadataInvocation"] | components["schemas"]["MetadataItemInvocation"] | components["schemas"]["MetadataItemLinkedInvocation"] | components["schemas"]["MetadataToBoolCollectionInvocation"] | components["schemas"]["MetadataToBoolInvocation"] | components["schemas"]["MetadataToControlnetsInvocation"] | components["schemas"]["MetadataToFloatCollectionInvocation"] | components["schemas"]["MetadataToFloatInvocation"] | components["schemas"]["MetadataToIPAdaptersInvocation"] | components["schemas"]["MetadataToIntegerCollectionInvocation"] | components["schemas"]["MetadataToIntegerInvocation"] | components["schemas"]["MetadataToLorasCollectionInvocation"] | components["schemas"]["MetadataToLorasInvocation"] | components["schemas"]["MetadataToModelInvocation"] | components["schemas"]["MetadataToSDXLLorasInvocation"] | components["schemas"]["MetadataToSDXLModelInvocation"] | components["schemas"]["MetadataToSchedulerInvocation"] | components["schemas"]["MetadataToStringCollectionInvocation"] | components["schemas"]["MetadataToStringInvocation"] | components["schemas"]["MetadataToT2IAdaptersInvocation"] | components["schemas"]["MetadataToVAEInvocation"] | components["schemas"]["MiniMaxH3DenoiseInvocation"] | components["schemas"]["MiniMaxH3FrameConditioningInvocation"] | components["schemas"]["MiniMaxH3HybridOverlayInvocation"] | components["schemas"]["MiniMaxH3IdealDimensionsInvocation"] | components["schemas"]["MiniMaxH3ImageReferenceInvocation"] | components["schemas"]["MiniMaxH3LatentsToImageInvocation"] | components["schemas"]["MiniMaxH3LatentsToVideoInvocation"] | components["schemas"]["MiniMaxH3LoRACollectionLoader"] | components["schemas"]["MiniMaxH3LoRALoaderInvocation"] | components["schemas"]["MiniMaxH3ModelLoaderInvocation"] | components["schemas"]["MiniMaxH3ReferenceConditioningInvocation"] | components["schemas"]["MiniMaxH3TextEncoderInvocation"] | components["schemas"]["MiniMaxH3VideoReferenceInvocation"] | components["schemas"]["ModelIdentifierInvocation"] | components["schemas"]["MultiplyInvocation"] | components["schemas"]["NoiseInvocation"] | components["schemas"]["NormalMapInvocation"] | components["schemas"]["OklabUnsharpMaskInvocation"] | components["schemas"]["OklchImageHueAdjustmentInvocation"] | components["schemas"]["OpenAIImageGenerationInvocation"] | components["schemas"]["PBRMapsInvocation"] | components["schemas"]["PairTileImageInvocation"] | components["schemas"]["PasteImageIntoBoundingBoxInvocation"] | components["schemas"]["PiDDecoderLoaderInvocation"] | components["schemas"]["PiDUpscaleInvocation"] | components["schemas"]["PiDiNetEdgeDetectionInvocation"] | components["schemas"]["PromptTemplateInvocation"] | components["schemas"]["PromptsFromFileInvocation"] | components["schemas"]["QwenImage21DenoiseInvocation"] | components["schemas"]["QwenImage21ImageToLatentsInvocation"] | components["schemas"]["QwenImage21LatentsToImageInvocation"] | components["schemas"]["QwenImage21ModelLoaderInvocation"] | components["schemas"]["QwenImage21TextEncoderInvocation"] | components["schemas"]["QwenImageDenoiseInvocation"] | components["schemas"]["QwenImageImageToLatentsInvocation"] | components["schemas"]["QwenImageLatentsToImageInvocation"] | components["schemas"]["QwenImageLoRACollectionLoader"] | components["schemas"]["QwenImageLoRALoaderInvocation"] | components["schemas"]["QwenImageModelLoaderInvocation"] | components["schemas"]["QwenImagePiDDecodeInvocation"] | components["schemas"]["QwenImageTextEncoderInvocation"] | components["schemas"]["RandomFloatInvocation"] | components["schemas"]["RandomIntInvocation"] | components["schemas"]["RandomRangeInvocation"] | components["schemas"]["RangeInvocation"] | components["schemas"]["RangeOfSizeInvocation"] | components["schemas"]["RectangleMaskInvocation"] | components["schemas"]["ResizeLatentsInvocation"] | components["schemas"]["RoundInvocation"] | components["schemas"]["SD3DenoiseInvocation"] | components["schemas"]["SD3ImageToLatentsInvocation"] | components["schemas"]["SD3LatentsToImageInvocation"] | components["schemas"]["SD3PiDDecodeInvocation"] | components["schemas"]["SDXLCompelPromptInvocation"] | components["schemas"]["SDXLLoRACollectionLoader"] | components["schemas"]["SDXLLoRALoaderInvocation"] | components["schemas"]["SDXLModelLoaderInvocation"] | components["schemas"]["SDXLPiDDecodeInvocation"] | components["schemas"]["SDXLRefinerCompelPromptInvocation"] | components["schemas"]["SDXLRefinerModelLoaderInvocation"] | components["schemas"]["SaveImageInvocation"] | components["schemas"]["SaveImageToFileInvocation"] | components["schemas"]["ScaleLatentsInvocation"] | components["schemas"]["SchedulerInvocation"] | components["schemas"]["Sd3ModelLoaderInvocation"] | components["schemas"]["Sd3TextEncoderInvocation"] | components["schemas"]["SeamlessModeInvocation"] | components["schemas"]["SeedreamImageGenerationInvocation"] | components["schemas"]["SegmentAnythingInvocation"] | components["schemas"]["ShowImageInvocation"] | components["schemas"]["SpandrelImageToImageAutoscaleInvocation"] | components["schemas"]["SpandrelImageToImageInvocation"] | components["schemas"]["StateEmptyInvocation"] | components["schemas"]["StateGetInvocation"] | components["schemas"]["StateMergeInvocation"] | components["schemas"]["StateSetInvocation"] | components["schemas"]["StringBatchInvocation"] | components["schemas"]["StringCollectionInvocation"] | components["schemas"]["StringGenerator"] | components["schemas"]["StringInvocation"] | components["schemas"]["StringJoinInvocation"] | components["schemas"]["StringJoinThreeInvocation"] | components["schemas"]["StringReplaceInvocation"] | components["schemas"]["StringSplitInvocation"] | components["schemas"]["StringSplitNegInvocation"] | components["schemas"]["SubtractInvocation"] | components["schemas"]["T2IAdapterInvocation"] | components["schemas"]["TextLLMInvocation"] | components["schemas"]["TextLLMWithPresetInvocation"] | components["schemas"]["TileToPropertiesInvocation"] | components["schemas"]["TiledMultiDiffusionDenoiseLatents"] | components["schemas"]["UnsharpMaskInvocation"] | components["schemas"]["VAELoaderInvocation"] | components["schemas"]["VideoConcatInvocation"] | components["schemas"]["VideoFrameExtractInvocation"] | components["schemas"]["VideoInvocation"] | components["schemas"]["WanDenoiseInvocation"] | components["schemas"]["WanI2VIdealDimensionsInvocation"] | components["schemas"]["WanImageToLatentsInvocation"] | components["schemas"]["WanLatentsToImageInvocation"] | components["schemas"]["WanLatentsToVideoInvocation"] | components["schemas"]["WanLoRACollectionLoader"] | components["schemas"]["WanLoRALoaderInvocation"] | components["schemas"]["WanModelLoaderInvocation"] | components["schemas"]["WanRefImageEncoderInvocation"] | components["schemas"]["WanTI2VIdealDimensionsInvocation"] | components["schemas"]["WanTextEncoderInvocation"] | components["schemas"]["WanVideoDenoiseInvocation"] | components["schemas"]["WorkflowReturnGetInvocation"] | components["schemas"]["WorkflowReturnInvocation"] | components["schemas"]["WorkflowReturnValueInvocation"] | components["schemas"]["ZImageControlInvocation"] | components["schemas"]["ZImageDenoiseInvocation"] | components["schemas"]["ZImageDenoiseMetaInvocation"] | components["schemas"]["ZImageImageToLatentsInvocation"] | components["schemas"]["ZImageLatentsToImageInvocation"] | components["schemas"]["ZImageLoRACollectionLoader"] | components["schemas"]["ZImageLoRALoaderInvocation"] | components["schemas"]["ZImageModelLoaderInvocation"] | components["schemas"]["ZImagePiDDecodeInvocation"] | components["schemas"]["ZImageSeedVarianceEnhancerInvocation"] | components["schemas"]["ZImageTextEncoderInvocation"]; /** * Invocation Source Id * @description The ID of the prepared invocation's source node @@ -22161,7 +22161,7 @@ export type components = { * Result * @description The result of the invocation */ - result: components["schemas"]["AnimaConditioningOutput"] | components["schemas"]["AnimaLLLiteOutput"] | components["schemas"]["AnimaLoRALoaderOutput"] | components["schemas"]["AnimaModelLoaderOutput"] | components["schemas"]["BooleanCollectionOutput"] | components["schemas"]["BooleanOutput"] | components["schemas"]["BoundingBoxCollectionOutput"] | components["schemas"]["BoundingBoxOutput"] | components["schemas"]["CLIPOutput"] | components["schemas"]["CLIPSkipInvocationOutput"] | components["schemas"]["CalculateImageTilesOutput"] | components["schemas"]["CogView4ConditioningOutput"] | components["schemas"]["CogView4ModelLoaderOutput"] | components["schemas"]["CollectInvocationOutput"] | components["schemas"]["CollectionCartesianInvocationOutput"] | components["schemas"]["CollectionConcatInvocationOutput"] | components["schemas"]["CollectionZipInvocationOutput"] | components["schemas"]["ColorCollectionOutput"] | components["schemas"]["ColorOutput"] | components["schemas"]["ConditioningCollectionOutput"] | components["schemas"]["ConditioningOutput"] | components["schemas"]["ControlOutput"] | components["schemas"]["DenoiseMaskOutput"] | components["schemas"]["ErnieImageConditioningOutput"] | components["schemas"]["ErnieImageModelLoaderOutput"] | components["schemas"]["ExtractVideoRangeOutput"] | components["schemas"]["FaceMaskOutput"] | components["schemas"]["FaceOffOutput"] | components["schemas"]["FloatCollectionOutput"] | components["schemas"]["FloatGeneratorOutput"] | components["schemas"]["FloatOutput"] | components["schemas"]["Flux2DevLoRALoaderOutput"] | components["schemas"]["Flux2DevModelLoaderOutput"] | components["schemas"]["Flux2KleinLoRALoaderOutput"] | components["schemas"]["Flux2KleinModelLoaderOutput"] | components["schemas"]["FluxConditioningCollectionOutput"] | components["schemas"]["FluxConditioningOutput"] | components["schemas"]["FluxControlLoRALoaderOutput"] | components["schemas"]["FluxControlNetOutput"] | components["schemas"]["FluxFillOutput"] | components["schemas"]["FluxKontextOutput"] | components["schemas"]["FluxLoRALoaderOutput"] | components["schemas"]["FluxModelLoaderOutput"] | components["schemas"]["FluxReduxOutput"] | components["schemas"]["ForInvocationOutput"] | components["schemas"]["ForReturnInvocationOutput"] | components["schemas"]["Gemma2EncoderOutput"] | components["schemas"]["GradientMaskOutput"] | components["schemas"]["IPAdapterOutput"] | components["schemas"]["IdealSizeOutput"] | components["schemas"]["Ideogram4ConditioningOutput"] | components["schemas"]["Ideogram4ModelLoaderOutput"] | components["schemas"]["IfInvocationOutput"] | components["schemas"]["ImageCollectionOutput"] | components["schemas"]["ImageGeneratorOutput"] | components["schemas"]["ImageOutput"] | components["schemas"]["ImagePanelCoordinateOutput"] | components["schemas"]["IntegerCollectionOutput"] | components["schemas"]["IntegerGeneratorOutput"] | components["schemas"]["IntegerOutput"] | components["schemas"]["IterateInvocationOutput"] | components["schemas"]["Krea2ConditioningOutput"] | components["schemas"]["Krea2LoRALoaderOutput"] | components["schemas"]["Krea2ModelLoaderOutput"] | components["schemas"]["Krea2StyleReferenceOutput"] | components["schemas"]["LTX2AudioConditioningOutput"] | components["schemas"]["LTX2DenoiseOutput"] | components["schemas"]["LTX2DurationOutput"] | components["schemas"]["LTX2ExtendConditioningOutput"] | components["schemas"]["LTX2IdealDimensionsOutput"] | components["schemas"]["LTX2ImageConditioningOutput"] | components["schemas"]["LTX2LatentUpsampleOutput"] | components["schemas"]["LTX2LoRACollectionLoaderOutput"] | components["schemas"]["LTX2LoRALoaderOutput"] | components["schemas"]["LTX2ModelLoaderOutput"] | components["schemas"]["LTX2TextEncoderOutput"] | components["schemas"]["LTX2VideoConditioningOutput"] | components["schemas"]["LatentsCollectionOutput"] | components["schemas"]["LatentsMetaOutput"] | components["schemas"]["LatentsOutput"] | components["schemas"]["LoRALoaderOutput"] | components["schemas"]["LoRASelectorOutput"] | components["schemas"]["LoopStateOutput"] | components["schemas"]["LoopStateValueOutput"] | components["schemas"]["MDControlListOutput"] | components["schemas"]["MDIPAdapterListOutput"] | components["schemas"]["MDT2IAdapterListOutput"] | components["schemas"]["MaskOutput"] | components["schemas"]["MetadataItemOutput"] | components["schemas"]["MetadataOutput"] | components["schemas"]["MetadataToLorasCollectionOutput"] | components["schemas"]["MetadataToModelOutput"] | components["schemas"]["MetadataToSDXLModelOutput"] | components["schemas"]["MiniMaxH3ConditioningOutput"] | components["schemas"]["MiniMaxH3DenoiseOutput"] | components["schemas"]["MiniMaxH3FrameConditioningOutput"] | components["schemas"]["MiniMaxH3HybridOverlayOutput"] | components["schemas"]["MiniMaxH3LoRACollectionLoaderOutput"] | components["schemas"]["MiniMaxH3LoRALoaderOutput"] | components["schemas"]["MiniMaxH3ModelLoaderOutput"] | components["schemas"]["MiniMaxH3ReferenceConditioningOutput"] | components["schemas"]["MiniMaxH3ReferenceMediaOutput"] | components["schemas"]["ModelIdentifierOutput"] | components["schemas"]["ModelLoaderOutput"] | components["schemas"]["NoiseOutput"] | components["schemas"]["PBRMapsOutput"] | components["schemas"]["PairTileImageOutput"] | components["schemas"]["PiDDecoderOutput"] | components["schemas"]["PromptTemplateOutput"] | components["schemas"]["QwenImageConditioningOutput"] | components["schemas"]["QwenImageLoRALoaderOutput"] | components["schemas"]["QwenImageModelLoaderOutput"] | components["schemas"]["SD3ConditioningOutput"] | components["schemas"]["SDXLLoRALoaderOutput"] | components["schemas"]["SDXLModelLoaderOutput"] | components["schemas"]["SDXLRefinerModelLoaderOutput"] | components["schemas"]["SchedulerOutput"] | components["schemas"]["Sd3ModelLoaderOutput"] | components["schemas"]["SeamlessModeOutput"] | components["schemas"]["String2Output"] | components["schemas"]["StringCollectionOutput"] | components["schemas"]["StringGeneratorOutput"] | components["schemas"]["StringOutput"] | components["schemas"]["StringPosNegOutput"] | components["schemas"]["T2IAdapterOutput"] | components["schemas"]["TileToPropertiesOutput"] | components["schemas"]["UNetOutput"] | components["schemas"]["VAEOutput"] | components["schemas"]["VideoOutput"] | components["schemas"]["WanConditioningOutput"] | components["schemas"]["WanLoRALoaderOutput"] | components["schemas"]["WanModelLoaderOutput"] | components["schemas"]["WanRefImageOutput"] | components["schemas"]["WorkflowReturnGetOutput"] | components["schemas"]["WorkflowReturnOutput"] | components["schemas"]["WorkflowReturnValueOutput"] | components["schemas"]["ZImageConditioningOutput"] | components["schemas"]["ZImageControlOutput"] | components["schemas"]["ZImageLoRALoaderOutput"] | components["schemas"]["ZImageModelLoaderOutput"]; + result: components["schemas"]["AnimaConditioningOutput"] | components["schemas"]["AnimaLLLiteOutput"] | components["schemas"]["AnimaLoRALoaderOutput"] | components["schemas"]["AnimaModelLoaderOutput"] | components["schemas"]["BooleanCollectionOutput"] | components["schemas"]["BooleanOutput"] | components["schemas"]["BoundingBoxCollectionOutput"] | components["schemas"]["BoundingBoxOutput"] | components["schemas"]["CLIPOutput"] | components["schemas"]["CLIPSkipInvocationOutput"] | components["schemas"]["CalculateImageTilesOutput"] | components["schemas"]["CogView4ConditioningOutput"] | components["schemas"]["CogView4ModelLoaderOutput"] | components["schemas"]["CollectInvocationOutput"] | components["schemas"]["CollectionCartesianInvocationOutput"] | components["schemas"]["CollectionConcatInvocationOutput"] | components["schemas"]["CollectionZipInvocationOutput"] | components["schemas"]["ColorCollectionOutput"] | components["schemas"]["ColorOutput"] | components["schemas"]["ConditioningCollectionOutput"] | components["schemas"]["ConditioningOutput"] | components["schemas"]["ControlOutput"] | components["schemas"]["DenoiseMaskOutput"] | components["schemas"]["ErnieImageConditioningOutput"] | components["schemas"]["ErnieImageModelLoaderOutput"] | components["schemas"]["ExtractVideoRangeOutput"] | components["schemas"]["FaceMaskOutput"] | components["schemas"]["FaceOffOutput"] | components["schemas"]["FloatCollectionOutput"] | components["schemas"]["FloatGeneratorOutput"] | components["schemas"]["FloatOutput"] | components["schemas"]["Flux2DevLoRALoaderOutput"] | components["schemas"]["Flux2DevModelLoaderOutput"] | components["schemas"]["Flux2KleinLoRALoaderOutput"] | components["schemas"]["Flux2KleinModelLoaderOutput"] | components["schemas"]["FluxConditioningCollectionOutput"] | components["schemas"]["FluxConditioningOutput"] | components["schemas"]["FluxControlLoRALoaderOutput"] | components["schemas"]["FluxControlNetOutput"] | components["schemas"]["FluxFillOutput"] | components["schemas"]["FluxKontextOutput"] | components["schemas"]["FluxLoRALoaderOutput"] | components["schemas"]["FluxModelLoaderOutput"] | components["schemas"]["FluxReduxOutput"] | components["schemas"]["ForInvocationOutput"] | components["schemas"]["ForReturnInvocationOutput"] | components["schemas"]["Gemma2EncoderOutput"] | components["schemas"]["GradientMaskOutput"] | components["schemas"]["IPAdapterOutput"] | components["schemas"]["IdealSizeOutput"] | components["schemas"]["Ideogram4ConditioningOutput"] | components["schemas"]["Ideogram4ModelLoaderOutput"] | components["schemas"]["IfInvocationOutput"] | components["schemas"]["ImageCollectionOutput"] | components["schemas"]["ImageGeneratorOutput"] | components["schemas"]["ImageOutput"] | components["schemas"]["ImagePanelCoordinateOutput"] | components["schemas"]["IntegerCollectionOutput"] | components["schemas"]["IntegerGeneratorOutput"] | components["schemas"]["IntegerOutput"] | components["schemas"]["IterateInvocationOutput"] | components["schemas"]["Krea2ConditioningOutput"] | components["schemas"]["Krea2LoRALoaderOutput"] | components["schemas"]["Krea2ModelLoaderOutput"] | components["schemas"]["Krea2StyleReferenceOutput"] | components["schemas"]["LTX2AudioConditioningOutput"] | components["schemas"]["LTX2DenoiseOutput"] | components["schemas"]["LTX2DurationOutput"] | components["schemas"]["LTX2ExtendConditioningOutput"] | components["schemas"]["LTX2IdealDimensionsOutput"] | components["schemas"]["LTX2ImageConditioningOutput"] | components["schemas"]["LTX2LatentUpsampleOutput"] | components["schemas"]["LTX2LoRACollectionLoaderOutput"] | components["schemas"]["LTX2LoRALoaderOutput"] | components["schemas"]["LTX2ModelLoaderOutput"] | components["schemas"]["LTX2TextEncoderOutput"] | components["schemas"]["LTX2VideoConditioningOutput"] | components["schemas"]["LatentsCollectionOutput"] | components["schemas"]["LatentsMetaOutput"] | components["schemas"]["LatentsOutput"] | components["schemas"]["LoRALoaderOutput"] | components["schemas"]["LoRASelectorOutput"] | components["schemas"]["LoopStateOutput"] | components["schemas"]["LoopStateValueOutput"] | components["schemas"]["MDControlListOutput"] | components["schemas"]["MDIPAdapterListOutput"] | components["schemas"]["MDT2IAdapterListOutput"] | components["schemas"]["MaskOutput"] | components["schemas"]["MetadataItemOutput"] | components["schemas"]["MetadataOutput"] | components["schemas"]["MetadataToLorasCollectionOutput"] | components["schemas"]["MetadataToModelOutput"] | components["schemas"]["MetadataToSDXLModelOutput"] | components["schemas"]["MiniMaxH3ConditioningOutput"] | components["schemas"]["MiniMaxH3DenoiseOutput"] | components["schemas"]["MiniMaxH3FrameConditioningOutput"] | components["schemas"]["MiniMaxH3HybridOverlayOutput"] | components["schemas"]["MiniMaxH3LoRACollectionLoaderOutput"] | components["schemas"]["MiniMaxH3LoRALoaderOutput"] | components["schemas"]["MiniMaxH3ModelLoaderOutput"] | components["schemas"]["MiniMaxH3ReferenceConditioningOutput"] | components["schemas"]["MiniMaxH3ReferenceMediaOutput"] | components["schemas"]["ModelIdentifierOutput"] | components["schemas"]["ModelLoaderOutput"] | components["schemas"]["NoiseOutput"] | components["schemas"]["PBRMapsOutput"] | components["schemas"]["PairTileImageOutput"] | components["schemas"]["PiDDecoderOutput"] | components["schemas"]["PromptTemplateOutput"] | components["schemas"]["QwenImage21ConditioningOutput"] | components["schemas"]["QwenImage21ModelLoaderOutput"] | components["schemas"]["QwenImageConditioningOutput"] | components["schemas"]["QwenImageLoRALoaderOutput"] | components["schemas"]["QwenImageModelLoaderOutput"] | components["schemas"]["SD3ConditioningOutput"] | components["schemas"]["SDXLLoRALoaderOutput"] | components["schemas"]["SDXLModelLoaderOutput"] | components["schemas"]["SDXLRefinerModelLoaderOutput"] | components["schemas"]["SchedulerOutput"] | components["schemas"]["Sd3ModelLoaderOutput"] | components["schemas"]["SeamlessModeOutput"] | components["schemas"]["String2Output"] | components["schemas"]["StringCollectionOutput"] | components["schemas"]["StringGeneratorOutput"] | components["schemas"]["StringOutput"] | components["schemas"]["StringPosNegOutput"] | components["schemas"]["T2IAdapterOutput"] | components["schemas"]["TileToPropertiesOutput"] | components["schemas"]["UNetOutput"] | components["schemas"]["VAEOutput"] | components["schemas"]["VideoOutput"] | components["schemas"]["WanConditioningOutput"] | components["schemas"]["WanLoRALoaderOutput"] | components["schemas"]["WanModelLoaderOutput"] | components["schemas"]["WanRefImageOutput"] | components["schemas"]["WorkflowReturnGetOutput"] | components["schemas"]["WorkflowReturnOutput"] | components["schemas"]["WorkflowReturnValueOutput"] | components["schemas"]["ZImageConditioningOutput"] | components["schemas"]["ZImageControlOutput"] | components["schemas"]["ZImageLoRALoaderOutput"] | components["schemas"]["ZImageModelLoaderOutput"]; }; /** * InvocationErrorEvent @@ -22215,7 +22215,7 @@ export type components = { * Invocation * @description The ID of the invocation */ - invocation: components["schemas"]["AddInvocation"] | components["schemas"]["AlibabaCloudImageGenerationInvocation"] | components["schemas"]["AlphaMaskToTensorInvocation"] | components["schemas"]["AnimaDenoiseInvocation"] | components["schemas"]["AnimaDenoiseMetaInvocation"] | components["schemas"]["AnimaImageToLatentsInvocation"] | components["schemas"]["AnimaLLLiteInvocation"] | components["schemas"]["AnimaLatentsToImageInvocation"] | components["schemas"]["AnimaLoRACollectionLoader"] | components["schemas"]["AnimaLoRALoaderInvocation"] | components["schemas"]["AnimaModelLoaderInvocation"] | components["schemas"]["AnimaTextEncoderInvocation"] | components["schemas"]["ApplyMaskTensorToImageInvocation"] | components["schemas"]["ApplyMaskToImageInvocation"] | components["schemas"]["AtlasCloudImageGenerationInvocation"] | components["schemas"]["BlankImageInvocation"] | components["schemas"]["BlendLatentsInvocation"] | components["schemas"]["BooleanCollectionInvocation"] | components["schemas"]["BooleanInvocation"] | components["schemas"]["BooleanLogicInvocation"] | components["schemas"]["BoundingBoxInvocation"] | components["schemas"]["CLIPSkipInvocation"] | components["schemas"]["CV2InfillInvocation"] | components["schemas"]["CalculateImageTilesEvenSplitInvocation"] | components["schemas"]["CalculateImageTilesInvocation"] | components["schemas"]["CalculateImageTilesMinimumOverlapInvocation"] | components["schemas"]["CallSavedWorkflowInvocation"] | components["schemas"]["CannyEdgeDetectionInvocation"] | components["schemas"]["CanvasOutputInvocation"] | components["schemas"]["CanvasPasteBackInvocation"] | components["schemas"]["CanvasV2MaskAndCropInvocation"] | components["schemas"]["CenterPadCropInvocation"] | components["schemas"]["CogView4DenoiseInvocation"] | components["schemas"]["CogView4ImageToLatentsInvocation"] | components["schemas"]["CogView4LatentsToImageInvocation"] | components["schemas"]["CogView4ModelLoaderInvocation"] | components["schemas"]["CogView4TextEncoderInvocation"] | components["schemas"]["CollectInvocation"] | components["schemas"]["CollectionCartesianInvocation"] | components["schemas"]["CollectionConcatInvocation"] | components["schemas"]["CollectionZipInvocation"] | components["schemas"]["ColorCorrectInvocation"] | components["schemas"]["ColorInvocation"] | components["schemas"]["ColorMapInvocation"] | components["schemas"]["CompelInvocation"] | components["schemas"]["ConditioningCollectionInvocation"] | components["schemas"]["ConditioningInvocation"] | components["schemas"]["ContentShuffleInvocation"] | components["schemas"]["ControlNetInvocation"] | components["schemas"]["CoreMetadataInvocation"] | components["schemas"]["CreateDenoiseMaskInvocation"] | components["schemas"]["CreateGradientMaskInvocation"] | components["schemas"]["CropImageToBoundingBoxInvocation"] | components["schemas"]["CropLatentsCoreInvocation"] | components["schemas"]["CvInpaintInvocation"] | components["schemas"]["DWOpenposeDetectionInvocation"] | components["schemas"]["DecodeInvisibleWatermarkInvocation"] | components["schemas"]["DenoiseLatentsInvocation"] | components["schemas"]["DenoiseLatentsMetaInvocation"] | components["schemas"]["DepthAnythingDepthEstimationInvocation"] | components["schemas"]["DivideInvocation"] | components["schemas"]["DynamicPromptInvocation"] | components["schemas"]["ESRGANInvocation"] | components["schemas"]["ErnieImageDenoiseInvocation"] | components["schemas"]["ErnieImageModelLoaderInvocation"] | components["schemas"]["ErnieImagePromptEnhancerInvocation"] | components["schemas"]["ErnieImageTextEncoderInvocation"] | components["schemas"]["ErnieImageVaeDecodeInvocation"] | components["schemas"]["ExpandMaskWithFadeInvocation"] | components["schemas"]["ExtractVideoRangeInvocation"] | components["schemas"]["FLUXLoRACollectionLoader"] | components["schemas"]["FaceIdentifierInvocation"] | components["schemas"]["FaceMaskInvocation"] | components["schemas"]["FaceOffInvocation"] | components["schemas"]["FloatBatchInvocation"] | components["schemas"]["FloatCollectionInvocation"] | components["schemas"]["FloatGenerator"] | components["schemas"]["FloatInvocation"] | components["schemas"]["FloatLinearRangeInvocation"] | components["schemas"]["FloatMathInvocation"] | components["schemas"]["FloatToIntegerInvocation"] | components["schemas"]["Flux2DenoiseInvocation"] | components["schemas"]["Flux2DevLoRACollectionLoader"] | components["schemas"]["Flux2DevLoRALoaderInvocation"] | components["schemas"]["Flux2DevModelLoaderInvocation"] | components["schemas"]["Flux2DevTextEncoderInvocation"] | components["schemas"]["Flux2KleinLoRACollectionLoader"] | components["schemas"]["Flux2KleinLoRALoaderInvocation"] | components["schemas"]["Flux2KleinModelLoaderInvocation"] | components["schemas"]["Flux2KleinTextEncoderInvocation"] | components["schemas"]["Flux2PiDDecodeInvocation"] | components["schemas"]["Flux2VaeDecodeInvocation"] | components["schemas"]["Flux2VaeEncodeInvocation"] | components["schemas"]["FluxControlLoRALoaderInvocation"] | components["schemas"]["FluxControlNetInvocation"] | components["schemas"]["FluxDenoiseInvocation"] | components["schemas"]["FluxDenoiseLatentsMetaInvocation"] | components["schemas"]["FluxFillInvocation"] | components["schemas"]["FluxIPAdapterInvocation"] | components["schemas"]["FluxKontextConcatenateImagesInvocation"] | components["schemas"]["FluxKontextInvocation"] | components["schemas"]["FluxLoRALoaderInvocation"] | components["schemas"]["FluxModelLoaderInvocation"] | components["schemas"]["FluxPiDDecodeInvocation"] | components["schemas"]["FluxReduxInvocation"] | components["schemas"]["FluxTextEncoderInvocation"] | components["schemas"]["FluxVaeDecodeInvocation"] | components["schemas"]["FluxVaeEncodeInvocation"] | components["schemas"]["ForInvocation"] | components["schemas"]["ForReturnInvocation"] | components["schemas"]["FreeUInvocation"] | components["schemas"]["GeminiImageGenerationInvocation"] | components["schemas"]["Gemma2EncoderLoaderInvocation"] | components["schemas"]["GetMaskBoundingBoxInvocation"] | components["schemas"]["GroundingDinoInvocation"] | components["schemas"]["HEDEdgeDetectionInvocation"] | components["schemas"]["HeuristicResizeInvocation"] | components["schemas"]["IPAdapterInvocation"] | components["schemas"]["IdealSizeInvocation"] | components["schemas"]["Ideogram4CaptionBuilderInvocation"] | components["schemas"]["Ideogram4DenoiseInvocation"] | components["schemas"]["Ideogram4LatentsToImageInvocation"] | components["schemas"]["Ideogram4ModelLoaderInvocation"] | components["schemas"]["Ideogram4TextEncoderInvocation"] | components["schemas"]["IfInvocation"] | components["schemas"]["ImageBatchInvocation"] | components["schemas"]["ImageBlurInvocation"] | components["schemas"]["ImageChannelInvocation"] | components["schemas"]["ImageChannelMultiplyInvocation"] | components["schemas"]["ImageChannelOffsetInvocation"] | components["schemas"]["ImageCollectionInvocation"] | components["schemas"]["ImageConvertInvocation"] | components["schemas"]["ImageCropInvocation"] | components["schemas"]["ImageGenerator"] | components["schemas"]["ImageHueAdjustmentInvocation"] | components["schemas"]["ImageInverseLerpInvocation"] | components["schemas"]["ImageInvocation"] | components["schemas"]["ImageLerpInvocation"] | components["schemas"]["ImageMaskToTensorInvocation"] | components["schemas"]["ImageMultiplyInvocation"] | components["schemas"]["ImageNSFWBlurInvocation"] | components["schemas"]["ImageNoiseInvocation"] | components["schemas"]["ImagePanelLayoutInvocation"] | components["schemas"]["ImagePasteInvocation"] | components["schemas"]["ImageResizeInvocation"] | components["schemas"]["ImageScaleInvocation"] | components["schemas"]["ImageToLatentsInvocation"] | components["schemas"]["ImageWatermarkInvocation"] | components["schemas"]["InfillColorInvocation"] | components["schemas"]["InfillPatchMatchInvocation"] | components["schemas"]["InfillTileInvocation"] | components["schemas"]["IntegerBatchInvocation"] | components["schemas"]["IntegerCollectionInvocation"] | components["schemas"]["IntegerGenerator"] | components["schemas"]["IntegerInvocation"] | components["schemas"]["IntegerMathInvocation"] | components["schemas"]["InvertTensorMaskInvocation"] | components["schemas"]["InvokeAdjustImageHuePlusInvocation"] | components["schemas"]["InvokeEquivalentAchromaticLightnessInvocation"] | components["schemas"]["InvokeImageBlendInvocation"] | components["schemas"]["InvokeImageCompositorInvocation"] | components["schemas"]["InvokeImageDilateOrErodeInvocation"] | components["schemas"]["InvokeImageEnhanceInvocation"] | components["schemas"]["InvokeImageValueThresholdsInvocation"] | components["schemas"]["IterateInvocation"] | components["schemas"]["Krea2ConditioningRebalanceInvocation"] | components["schemas"]["Krea2DenoiseInvocation"] | components["schemas"]["Krea2LoRACollectionLoader"] | components["schemas"]["Krea2LoRALoaderInvocation"] | components["schemas"]["Krea2ModelLoaderInvocation"] | components["schemas"]["Krea2SeedVarianceInvocation"] | components["schemas"]["Krea2StyleReferenceInvocation"] | components["schemas"]["Krea2TextEncoderInvocation"] | components["schemas"]["LTX2AudioConditioningInvocation"] | components["schemas"]["LTX2DenoiseInvocation"] | components["schemas"]["LTX2DurationInvocation"] | components["schemas"]["LTX2ExtendConditioningInvocation"] | components["schemas"]["LTX2IdealDimensionsInvocation"] | components["schemas"]["LTX2ImageConditioningInvocation"] | components["schemas"]["LTX2LatentUpsampleInvocation"] | components["schemas"]["LTX2LatentsToVideoInvocation"] | components["schemas"]["LTX2LoRACollectionLoader"] | components["schemas"]["LTX2LoRALoaderInvocation"] | components["schemas"]["LTX2ModelLoaderInvocation"] | components["schemas"]["LTX2TextEncoderInvocation"] | components["schemas"]["LTX2VideoConditioningInvocation"] | components["schemas"]["LaMaInfillInvocation"] | components["schemas"]["LatentsCollectionInvocation"] | components["schemas"]["LatentsInvocation"] | components["schemas"]["LatentsToImageInvocation"] | components["schemas"]["LineartAnimeEdgeDetectionInvocation"] | components["schemas"]["LineartEdgeDetectionInvocation"] | components["schemas"]["LlavaOnevisionVllmInvocation"] | components["schemas"]["LoRACollectionLoader"] | components["schemas"]["LoRALoaderInvocation"] | components["schemas"]["LoRASelectorInvocation"] | components["schemas"]["MLSDDetectionInvocation"] | components["schemas"]["MainModelLoaderInvocation"] | components["schemas"]["MaskCombineInvocation"] | components["schemas"]["MaskEdgeInvocation"] | components["schemas"]["MaskFromAlphaInvocation"] | components["schemas"]["MaskFromIDInvocation"] | components["schemas"]["MaskTensorToImageInvocation"] | components["schemas"]["MediaPipeFaceDetectionInvocation"] | components["schemas"]["MergeMetadataInvocation"] | components["schemas"]["MergeTilesToImageInvocation"] | components["schemas"]["MetadataFieldExtractorInvocation"] | components["schemas"]["MetadataFromImageInvocation"] | components["schemas"]["MetadataInvocation"] | components["schemas"]["MetadataItemInvocation"] | components["schemas"]["MetadataItemLinkedInvocation"] | components["schemas"]["MetadataToBoolCollectionInvocation"] | components["schemas"]["MetadataToBoolInvocation"] | components["schemas"]["MetadataToControlnetsInvocation"] | components["schemas"]["MetadataToFloatCollectionInvocation"] | components["schemas"]["MetadataToFloatInvocation"] | components["schemas"]["MetadataToIPAdaptersInvocation"] | components["schemas"]["MetadataToIntegerCollectionInvocation"] | components["schemas"]["MetadataToIntegerInvocation"] | components["schemas"]["MetadataToLorasCollectionInvocation"] | components["schemas"]["MetadataToLorasInvocation"] | components["schemas"]["MetadataToModelInvocation"] | components["schemas"]["MetadataToSDXLLorasInvocation"] | components["schemas"]["MetadataToSDXLModelInvocation"] | components["schemas"]["MetadataToSchedulerInvocation"] | components["schemas"]["MetadataToStringCollectionInvocation"] | components["schemas"]["MetadataToStringInvocation"] | components["schemas"]["MetadataToT2IAdaptersInvocation"] | components["schemas"]["MetadataToVAEInvocation"] | components["schemas"]["MiniMaxH3DenoiseInvocation"] | components["schemas"]["MiniMaxH3FrameConditioningInvocation"] | components["schemas"]["MiniMaxH3HybridOverlayInvocation"] | components["schemas"]["MiniMaxH3IdealDimensionsInvocation"] | components["schemas"]["MiniMaxH3ImageReferenceInvocation"] | components["schemas"]["MiniMaxH3LatentsToImageInvocation"] | components["schemas"]["MiniMaxH3LatentsToVideoInvocation"] | components["schemas"]["MiniMaxH3LoRACollectionLoader"] | components["schemas"]["MiniMaxH3LoRALoaderInvocation"] | components["schemas"]["MiniMaxH3ModelLoaderInvocation"] | components["schemas"]["MiniMaxH3ReferenceConditioningInvocation"] | components["schemas"]["MiniMaxH3TextEncoderInvocation"] | components["schemas"]["MiniMaxH3VideoReferenceInvocation"] | components["schemas"]["ModelIdentifierInvocation"] | components["schemas"]["MultiplyInvocation"] | components["schemas"]["NoiseInvocation"] | components["schemas"]["NormalMapInvocation"] | components["schemas"]["OklabUnsharpMaskInvocation"] | components["schemas"]["OklchImageHueAdjustmentInvocation"] | components["schemas"]["OpenAIImageGenerationInvocation"] | components["schemas"]["PBRMapsInvocation"] | components["schemas"]["PairTileImageInvocation"] | components["schemas"]["PasteImageIntoBoundingBoxInvocation"] | components["schemas"]["PiDDecoderLoaderInvocation"] | components["schemas"]["PiDUpscaleInvocation"] | components["schemas"]["PiDiNetEdgeDetectionInvocation"] | components["schemas"]["PromptTemplateInvocation"] | components["schemas"]["PromptsFromFileInvocation"] | components["schemas"]["QwenImageDenoiseInvocation"] | components["schemas"]["QwenImageImageToLatentsInvocation"] | components["schemas"]["QwenImageLatentsToImageInvocation"] | components["schemas"]["QwenImageLoRACollectionLoader"] | components["schemas"]["QwenImageLoRALoaderInvocation"] | components["schemas"]["QwenImageModelLoaderInvocation"] | components["schemas"]["QwenImagePiDDecodeInvocation"] | components["schemas"]["QwenImageTextEncoderInvocation"] | components["schemas"]["RandomFloatInvocation"] | components["schemas"]["RandomIntInvocation"] | components["schemas"]["RandomRangeInvocation"] | components["schemas"]["RangeInvocation"] | components["schemas"]["RangeOfSizeInvocation"] | components["schemas"]["RectangleMaskInvocation"] | components["schemas"]["ResizeLatentsInvocation"] | components["schemas"]["RoundInvocation"] | components["schemas"]["SD3DenoiseInvocation"] | components["schemas"]["SD3ImageToLatentsInvocation"] | components["schemas"]["SD3LatentsToImageInvocation"] | components["schemas"]["SD3PiDDecodeInvocation"] | components["schemas"]["SDXLCompelPromptInvocation"] | components["schemas"]["SDXLLoRACollectionLoader"] | components["schemas"]["SDXLLoRALoaderInvocation"] | components["schemas"]["SDXLModelLoaderInvocation"] | components["schemas"]["SDXLPiDDecodeInvocation"] | components["schemas"]["SDXLRefinerCompelPromptInvocation"] | components["schemas"]["SDXLRefinerModelLoaderInvocation"] | components["schemas"]["SaveImageInvocation"] | components["schemas"]["SaveImageToFileInvocation"] | components["schemas"]["ScaleLatentsInvocation"] | components["schemas"]["SchedulerInvocation"] | components["schemas"]["Sd3ModelLoaderInvocation"] | components["schemas"]["Sd3TextEncoderInvocation"] | components["schemas"]["SeamlessModeInvocation"] | components["schemas"]["SeedreamImageGenerationInvocation"] | components["schemas"]["SegmentAnythingInvocation"] | components["schemas"]["ShowImageInvocation"] | components["schemas"]["SpandrelImageToImageAutoscaleInvocation"] | components["schemas"]["SpandrelImageToImageInvocation"] | components["schemas"]["StateEmptyInvocation"] | components["schemas"]["StateGetInvocation"] | components["schemas"]["StateMergeInvocation"] | components["schemas"]["StateSetInvocation"] | components["schemas"]["StringBatchInvocation"] | components["schemas"]["StringCollectionInvocation"] | components["schemas"]["StringGenerator"] | components["schemas"]["StringInvocation"] | components["schemas"]["StringJoinInvocation"] | components["schemas"]["StringJoinThreeInvocation"] | components["schemas"]["StringReplaceInvocation"] | components["schemas"]["StringSplitInvocation"] | components["schemas"]["StringSplitNegInvocation"] | components["schemas"]["SubtractInvocation"] | components["schemas"]["T2IAdapterInvocation"] | components["schemas"]["TextLLMInvocation"] | components["schemas"]["TextLLMWithPresetInvocation"] | components["schemas"]["TileToPropertiesInvocation"] | components["schemas"]["TiledMultiDiffusionDenoiseLatents"] | components["schemas"]["UnsharpMaskInvocation"] | components["schemas"]["VAELoaderInvocation"] | components["schemas"]["VideoConcatInvocation"] | components["schemas"]["VideoFrameExtractInvocation"] | components["schemas"]["VideoInvocation"] | components["schemas"]["WanDenoiseInvocation"] | components["schemas"]["WanI2VIdealDimensionsInvocation"] | components["schemas"]["WanImageToLatentsInvocation"] | components["schemas"]["WanLatentsToImageInvocation"] | components["schemas"]["WanLatentsToVideoInvocation"] | components["schemas"]["WanLoRACollectionLoader"] | components["schemas"]["WanLoRALoaderInvocation"] | components["schemas"]["WanModelLoaderInvocation"] | components["schemas"]["WanRefImageEncoderInvocation"] | components["schemas"]["WanTI2VIdealDimensionsInvocation"] | components["schemas"]["WanTextEncoderInvocation"] | components["schemas"]["WanVideoDenoiseInvocation"] | components["schemas"]["WorkflowReturnGetInvocation"] | components["schemas"]["WorkflowReturnInvocation"] | components["schemas"]["WorkflowReturnValueInvocation"] | components["schemas"]["ZImageControlInvocation"] | components["schemas"]["ZImageDenoiseInvocation"] | components["schemas"]["ZImageDenoiseMetaInvocation"] | components["schemas"]["ZImageImageToLatentsInvocation"] | components["schemas"]["ZImageLatentsToImageInvocation"] | components["schemas"]["ZImageLoRACollectionLoader"] | components["schemas"]["ZImageLoRALoaderInvocation"] | components["schemas"]["ZImageModelLoaderInvocation"] | components["schemas"]["ZImagePiDDecodeInvocation"] | components["schemas"]["ZImageSeedVarianceEnhancerInvocation"] | components["schemas"]["ZImageTextEncoderInvocation"]; + invocation: components["schemas"]["AddInvocation"] | components["schemas"]["AlibabaCloudImageGenerationInvocation"] | components["schemas"]["AlphaMaskToTensorInvocation"] | components["schemas"]["AnimaDenoiseInvocation"] | components["schemas"]["AnimaDenoiseMetaInvocation"] | components["schemas"]["AnimaImageToLatentsInvocation"] | components["schemas"]["AnimaLLLiteInvocation"] | components["schemas"]["AnimaLatentsToImageInvocation"] | components["schemas"]["AnimaLoRACollectionLoader"] | components["schemas"]["AnimaLoRALoaderInvocation"] | components["schemas"]["AnimaModelLoaderInvocation"] | components["schemas"]["AnimaTextEncoderInvocation"] | components["schemas"]["ApplyMaskTensorToImageInvocation"] | components["schemas"]["ApplyMaskToImageInvocation"] | components["schemas"]["AtlasCloudImageGenerationInvocation"] | components["schemas"]["BlankImageInvocation"] | components["schemas"]["BlendLatentsInvocation"] | components["schemas"]["BooleanCollectionInvocation"] | components["schemas"]["BooleanInvocation"] | components["schemas"]["BooleanLogicInvocation"] | components["schemas"]["BoundingBoxInvocation"] | components["schemas"]["CLIPSkipInvocation"] | components["schemas"]["CV2InfillInvocation"] | components["schemas"]["CalculateImageTilesEvenSplitInvocation"] | components["schemas"]["CalculateImageTilesInvocation"] | components["schemas"]["CalculateImageTilesMinimumOverlapInvocation"] | components["schemas"]["CallSavedWorkflowInvocation"] | components["schemas"]["CannyEdgeDetectionInvocation"] | components["schemas"]["CanvasOutputInvocation"] | components["schemas"]["CanvasPasteBackInvocation"] | components["schemas"]["CanvasV2MaskAndCropInvocation"] | components["schemas"]["CenterPadCropInvocation"] | components["schemas"]["CogView4DenoiseInvocation"] | components["schemas"]["CogView4ImageToLatentsInvocation"] | components["schemas"]["CogView4LatentsToImageInvocation"] | components["schemas"]["CogView4ModelLoaderInvocation"] | components["schemas"]["CogView4TextEncoderInvocation"] | components["schemas"]["CollectInvocation"] | components["schemas"]["CollectionCartesianInvocation"] | components["schemas"]["CollectionConcatInvocation"] | components["schemas"]["CollectionZipInvocation"] | components["schemas"]["ColorCorrectInvocation"] | components["schemas"]["ColorInvocation"] | components["schemas"]["ColorMapInvocation"] | components["schemas"]["CompelInvocation"] | components["schemas"]["ConditioningCollectionInvocation"] | components["schemas"]["ConditioningInvocation"] | components["schemas"]["ContentShuffleInvocation"] | components["schemas"]["ControlNetInvocation"] | components["schemas"]["CoreMetadataInvocation"] | components["schemas"]["CreateDenoiseMaskInvocation"] | components["schemas"]["CreateGradientMaskInvocation"] | components["schemas"]["CropImageToBoundingBoxInvocation"] | components["schemas"]["CropLatentsCoreInvocation"] | components["schemas"]["CvInpaintInvocation"] | components["schemas"]["DWOpenposeDetectionInvocation"] | components["schemas"]["DecodeInvisibleWatermarkInvocation"] | components["schemas"]["DenoiseLatentsInvocation"] | components["schemas"]["DenoiseLatentsMetaInvocation"] | components["schemas"]["DepthAnythingDepthEstimationInvocation"] | components["schemas"]["DivideInvocation"] | components["schemas"]["DynamicPromptInvocation"] | components["schemas"]["ESRGANInvocation"] | components["schemas"]["ErnieImageDenoiseInvocation"] | components["schemas"]["ErnieImageModelLoaderInvocation"] | components["schemas"]["ErnieImagePromptEnhancerInvocation"] | components["schemas"]["ErnieImageTextEncoderInvocation"] | components["schemas"]["ErnieImageVaeDecodeInvocation"] | components["schemas"]["ExpandMaskWithFadeInvocation"] | components["schemas"]["ExtractVideoRangeInvocation"] | components["schemas"]["FLUXLoRACollectionLoader"] | components["schemas"]["FaceIdentifierInvocation"] | components["schemas"]["FaceMaskInvocation"] | components["schemas"]["FaceOffInvocation"] | components["schemas"]["FloatBatchInvocation"] | components["schemas"]["FloatCollectionInvocation"] | components["schemas"]["FloatGenerator"] | components["schemas"]["FloatInvocation"] | components["schemas"]["FloatLinearRangeInvocation"] | components["schemas"]["FloatMathInvocation"] | components["schemas"]["FloatToIntegerInvocation"] | components["schemas"]["Flux2DenoiseInvocation"] | components["schemas"]["Flux2DevLoRACollectionLoader"] | components["schemas"]["Flux2DevLoRALoaderInvocation"] | components["schemas"]["Flux2DevModelLoaderInvocation"] | components["schemas"]["Flux2DevTextEncoderInvocation"] | components["schemas"]["Flux2KleinLoRACollectionLoader"] | components["schemas"]["Flux2KleinLoRALoaderInvocation"] | components["schemas"]["Flux2KleinModelLoaderInvocation"] | components["schemas"]["Flux2KleinTextEncoderInvocation"] | components["schemas"]["Flux2PiDDecodeInvocation"] | components["schemas"]["Flux2VaeDecodeInvocation"] | components["schemas"]["Flux2VaeEncodeInvocation"] | components["schemas"]["FluxControlLoRALoaderInvocation"] | components["schemas"]["FluxControlNetInvocation"] | components["schemas"]["FluxDenoiseInvocation"] | components["schemas"]["FluxDenoiseLatentsMetaInvocation"] | components["schemas"]["FluxFillInvocation"] | components["schemas"]["FluxIPAdapterInvocation"] | components["schemas"]["FluxKontextConcatenateImagesInvocation"] | components["schemas"]["FluxKontextInvocation"] | components["schemas"]["FluxLoRALoaderInvocation"] | components["schemas"]["FluxModelLoaderInvocation"] | components["schemas"]["FluxPiDDecodeInvocation"] | components["schemas"]["FluxReduxInvocation"] | components["schemas"]["FluxTextEncoderInvocation"] | components["schemas"]["FluxVaeDecodeInvocation"] | components["schemas"]["FluxVaeEncodeInvocation"] | components["schemas"]["ForInvocation"] | components["schemas"]["ForReturnInvocation"] | components["schemas"]["FreeUInvocation"] | components["schemas"]["GeminiImageGenerationInvocation"] | components["schemas"]["Gemma2EncoderLoaderInvocation"] | components["schemas"]["GetMaskBoundingBoxInvocation"] | components["schemas"]["GroundingDinoInvocation"] | components["schemas"]["HEDEdgeDetectionInvocation"] | components["schemas"]["HeuristicResizeInvocation"] | components["schemas"]["IPAdapterInvocation"] | components["schemas"]["IdealSizeInvocation"] | components["schemas"]["Ideogram4CaptionBuilderInvocation"] | components["schemas"]["Ideogram4DenoiseInvocation"] | components["schemas"]["Ideogram4LatentsToImageInvocation"] | components["schemas"]["Ideogram4ModelLoaderInvocation"] | components["schemas"]["Ideogram4TextEncoderInvocation"] | components["schemas"]["IfInvocation"] | components["schemas"]["ImageBatchInvocation"] | components["schemas"]["ImageBlurInvocation"] | components["schemas"]["ImageChannelInvocation"] | components["schemas"]["ImageChannelMultiplyInvocation"] | components["schemas"]["ImageChannelOffsetInvocation"] | components["schemas"]["ImageCollectionInvocation"] | components["schemas"]["ImageConvertInvocation"] | components["schemas"]["ImageCropInvocation"] | components["schemas"]["ImageGenerator"] | components["schemas"]["ImageHueAdjustmentInvocation"] | components["schemas"]["ImageInverseLerpInvocation"] | components["schemas"]["ImageInvocation"] | components["schemas"]["ImageLerpInvocation"] | components["schemas"]["ImageMaskToTensorInvocation"] | components["schemas"]["ImageMultiplyInvocation"] | components["schemas"]["ImageNSFWBlurInvocation"] | components["schemas"]["ImageNoiseInvocation"] | components["schemas"]["ImagePanelLayoutInvocation"] | components["schemas"]["ImagePasteInvocation"] | components["schemas"]["ImageResizeInvocation"] | components["schemas"]["ImageScaleInvocation"] | components["schemas"]["ImageToLatentsInvocation"] | components["schemas"]["ImageWatermarkInvocation"] | components["schemas"]["InfillColorInvocation"] | components["schemas"]["InfillPatchMatchInvocation"] | components["schemas"]["InfillTileInvocation"] | components["schemas"]["IntegerBatchInvocation"] | components["schemas"]["IntegerCollectionInvocation"] | components["schemas"]["IntegerGenerator"] | components["schemas"]["IntegerInvocation"] | components["schemas"]["IntegerMathInvocation"] | components["schemas"]["InvertTensorMaskInvocation"] | components["schemas"]["InvokeAdjustImageHuePlusInvocation"] | components["schemas"]["InvokeEquivalentAchromaticLightnessInvocation"] | components["schemas"]["InvokeImageBlendInvocation"] | components["schemas"]["InvokeImageCompositorInvocation"] | components["schemas"]["InvokeImageDilateOrErodeInvocation"] | components["schemas"]["InvokeImageEnhanceInvocation"] | components["schemas"]["InvokeImageValueThresholdsInvocation"] | components["schemas"]["IterateInvocation"] | components["schemas"]["Krea2ConditioningRebalanceInvocation"] | components["schemas"]["Krea2DenoiseInvocation"] | components["schemas"]["Krea2LoRACollectionLoader"] | components["schemas"]["Krea2LoRALoaderInvocation"] | components["schemas"]["Krea2ModelLoaderInvocation"] | components["schemas"]["Krea2SeedVarianceInvocation"] | components["schemas"]["Krea2StyleReferenceInvocation"] | components["schemas"]["Krea2TextEncoderInvocation"] | components["schemas"]["LTX2AudioConditioningInvocation"] | components["schemas"]["LTX2DenoiseInvocation"] | components["schemas"]["LTX2DurationInvocation"] | components["schemas"]["LTX2ExtendConditioningInvocation"] | components["schemas"]["LTX2IdealDimensionsInvocation"] | components["schemas"]["LTX2ImageConditioningInvocation"] | components["schemas"]["LTX2LatentUpsampleInvocation"] | components["schemas"]["LTX2LatentsToVideoInvocation"] | components["schemas"]["LTX2LoRACollectionLoader"] | components["schemas"]["LTX2LoRALoaderInvocation"] | components["schemas"]["LTX2ModelLoaderInvocation"] | components["schemas"]["LTX2TextEncoderInvocation"] | components["schemas"]["LTX2VideoConditioningInvocation"] | components["schemas"]["LaMaInfillInvocation"] | components["schemas"]["LatentsCollectionInvocation"] | components["schemas"]["LatentsInvocation"] | components["schemas"]["LatentsToImageInvocation"] | components["schemas"]["LineartAnimeEdgeDetectionInvocation"] | components["schemas"]["LineartEdgeDetectionInvocation"] | components["schemas"]["LlavaOnevisionVllmInvocation"] | components["schemas"]["LoRACollectionLoader"] | components["schemas"]["LoRALoaderInvocation"] | components["schemas"]["LoRASelectorInvocation"] | components["schemas"]["MLSDDetectionInvocation"] | components["schemas"]["MainModelLoaderInvocation"] | components["schemas"]["MaskCombineInvocation"] | components["schemas"]["MaskEdgeInvocation"] | components["schemas"]["MaskFromAlphaInvocation"] | components["schemas"]["MaskFromIDInvocation"] | components["schemas"]["MaskTensorToImageInvocation"] | components["schemas"]["MediaPipeFaceDetectionInvocation"] | components["schemas"]["MergeMetadataInvocation"] | components["schemas"]["MergeTilesToImageInvocation"] | components["schemas"]["MetadataFieldExtractorInvocation"] | components["schemas"]["MetadataFromImageInvocation"] | components["schemas"]["MetadataInvocation"] | components["schemas"]["MetadataItemInvocation"] | components["schemas"]["MetadataItemLinkedInvocation"] | components["schemas"]["MetadataToBoolCollectionInvocation"] | components["schemas"]["MetadataToBoolInvocation"] | components["schemas"]["MetadataToControlnetsInvocation"] | components["schemas"]["MetadataToFloatCollectionInvocation"] | components["schemas"]["MetadataToFloatInvocation"] | components["schemas"]["MetadataToIPAdaptersInvocation"] | components["schemas"]["MetadataToIntegerCollectionInvocation"] | components["schemas"]["MetadataToIntegerInvocation"] | components["schemas"]["MetadataToLorasCollectionInvocation"] | components["schemas"]["MetadataToLorasInvocation"] | components["schemas"]["MetadataToModelInvocation"] | components["schemas"]["MetadataToSDXLLorasInvocation"] | components["schemas"]["MetadataToSDXLModelInvocation"] | components["schemas"]["MetadataToSchedulerInvocation"] | components["schemas"]["MetadataToStringCollectionInvocation"] | components["schemas"]["MetadataToStringInvocation"] | components["schemas"]["MetadataToT2IAdaptersInvocation"] | components["schemas"]["MetadataToVAEInvocation"] | components["schemas"]["MiniMaxH3DenoiseInvocation"] | components["schemas"]["MiniMaxH3FrameConditioningInvocation"] | components["schemas"]["MiniMaxH3HybridOverlayInvocation"] | components["schemas"]["MiniMaxH3IdealDimensionsInvocation"] | components["schemas"]["MiniMaxH3ImageReferenceInvocation"] | components["schemas"]["MiniMaxH3LatentsToImageInvocation"] | components["schemas"]["MiniMaxH3LatentsToVideoInvocation"] | components["schemas"]["MiniMaxH3LoRACollectionLoader"] | components["schemas"]["MiniMaxH3LoRALoaderInvocation"] | components["schemas"]["MiniMaxH3ModelLoaderInvocation"] | components["schemas"]["MiniMaxH3ReferenceConditioningInvocation"] | components["schemas"]["MiniMaxH3TextEncoderInvocation"] | components["schemas"]["MiniMaxH3VideoReferenceInvocation"] | components["schemas"]["ModelIdentifierInvocation"] | components["schemas"]["MultiplyInvocation"] | components["schemas"]["NoiseInvocation"] | components["schemas"]["NormalMapInvocation"] | components["schemas"]["OklabUnsharpMaskInvocation"] | components["schemas"]["OklchImageHueAdjustmentInvocation"] | components["schemas"]["OpenAIImageGenerationInvocation"] | components["schemas"]["PBRMapsInvocation"] | components["schemas"]["PairTileImageInvocation"] | components["schemas"]["PasteImageIntoBoundingBoxInvocation"] | components["schemas"]["PiDDecoderLoaderInvocation"] | components["schemas"]["PiDUpscaleInvocation"] | components["schemas"]["PiDiNetEdgeDetectionInvocation"] | components["schemas"]["PromptTemplateInvocation"] | components["schemas"]["PromptsFromFileInvocation"] | components["schemas"]["QwenImage21DenoiseInvocation"] | components["schemas"]["QwenImage21ImageToLatentsInvocation"] | components["schemas"]["QwenImage21LatentsToImageInvocation"] | components["schemas"]["QwenImage21ModelLoaderInvocation"] | components["schemas"]["QwenImage21TextEncoderInvocation"] | components["schemas"]["QwenImageDenoiseInvocation"] | components["schemas"]["QwenImageImageToLatentsInvocation"] | components["schemas"]["QwenImageLatentsToImageInvocation"] | components["schemas"]["QwenImageLoRACollectionLoader"] | components["schemas"]["QwenImageLoRALoaderInvocation"] | components["schemas"]["QwenImageModelLoaderInvocation"] | components["schemas"]["QwenImagePiDDecodeInvocation"] | components["schemas"]["QwenImageTextEncoderInvocation"] | components["schemas"]["RandomFloatInvocation"] | components["schemas"]["RandomIntInvocation"] | components["schemas"]["RandomRangeInvocation"] | components["schemas"]["RangeInvocation"] | components["schemas"]["RangeOfSizeInvocation"] | components["schemas"]["RectangleMaskInvocation"] | components["schemas"]["ResizeLatentsInvocation"] | components["schemas"]["RoundInvocation"] | components["schemas"]["SD3DenoiseInvocation"] | components["schemas"]["SD3ImageToLatentsInvocation"] | components["schemas"]["SD3LatentsToImageInvocation"] | components["schemas"]["SD3PiDDecodeInvocation"] | components["schemas"]["SDXLCompelPromptInvocation"] | components["schemas"]["SDXLLoRACollectionLoader"] | components["schemas"]["SDXLLoRALoaderInvocation"] | components["schemas"]["SDXLModelLoaderInvocation"] | components["schemas"]["SDXLPiDDecodeInvocation"] | components["schemas"]["SDXLRefinerCompelPromptInvocation"] | components["schemas"]["SDXLRefinerModelLoaderInvocation"] | components["schemas"]["SaveImageInvocation"] | components["schemas"]["SaveImageToFileInvocation"] | components["schemas"]["ScaleLatentsInvocation"] | components["schemas"]["SchedulerInvocation"] | components["schemas"]["Sd3ModelLoaderInvocation"] | components["schemas"]["Sd3TextEncoderInvocation"] | components["schemas"]["SeamlessModeInvocation"] | components["schemas"]["SeedreamImageGenerationInvocation"] | components["schemas"]["SegmentAnythingInvocation"] | components["schemas"]["ShowImageInvocation"] | components["schemas"]["SpandrelImageToImageAutoscaleInvocation"] | components["schemas"]["SpandrelImageToImageInvocation"] | components["schemas"]["StateEmptyInvocation"] | components["schemas"]["StateGetInvocation"] | components["schemas"]["StateMergeInvocation"] | components["schemas"]["StateSetInvocation"] | components["schemas"]["StringBatchInvocation"] | components["schemas"]["StringCollectionInvocation"] | components["schemas"]["StringGenerator"] | components["schemas"]["StringInvocation"] | components["schemas"]["StringJoinInvocation"] | components["schemas"]["StringJoinThreeInvocation"] | components["schemas"]["StringReplaceInvocation"] | components["schemas"]["StringSplitInvocation"] | components["schemas"]["StringSplitNegInvocation"] | components["schemas"]["SubtractInvocation"] | components["schemas"]["T2IAdapterInvocation"] | components["schemas"]["TextLLMInvocation"] | components["schemas"]["TextLLMWithPresetInvocation"] | components["schemas"]["TileToPropertiesInvocation"] | components["schemas"]["TiledMultiDiffusionDenoiseLatents"] | components["schemas"]["UnsharpMaskInvocation"] | components["schemas"]["VAELoaderInvocation"] | components["schemas"]["VideoConcatInvocation"] | components["schemas"]["VideoFrameExtractInvocation"] | components["schemas"]["VideoInvocation"] | components["schemas"]["WanDenoiseInvocation"] | components["schemas"]["WanI2VIdealDimensionsInvocation"] | components["schemas"]["WanImageToLatentsInvocation"] | components["schemas"]["WanLatentsToImageInvocation"] | components["schemas"]["WanLatentsToVideoInvocation"] | components["schemas"]["WanLoRACollectionLoader"] | components["schemas"]["WanLoRALoaderInvocation"] | components["schemas"]["WanModelLoaderInvocation"] | components["schemas"]["WanRefImageEncoderInvocation"] | components["schemas"]["WanTI2VIdealDimensionsInvocation"] | components["schemas"]["WanTextEncoderInvocation"] | components["schemas"]["WanVideoDenoiseInvocation"] | components["schemas"]["WorkflowReturnGetInvocation"] | components["schemas"]["WorkflowReturnInvocation"] | components["schemas"]["WorkflowReturnValueInvocation"] | components["schemas"]["ZImageControlInvocation"] | components["schemas"]["ZImageDenoiseInvocation"] | components["schemas"]["ZImageDenoiseMetaInvocation"] | components["schemas"]["ZImageImageToLatentsInvocation"] | components["schemas"]["ZImageLatentsToImageInvocation"] | components["schemas"]["ZImageLoRACollectionLoader"] | components["schemas"]["ZImageLoRALoaderInvocation"] | components["schemas"]["ZImageModelLoaderInvocation"] | components["schemas"]["ZImagePiDDecodeInvocation"] | components["schemas"]["ZImageSeedVarianceEnhancerInvocation"] | components["schemas"]["ZImageTextEncoderInvocation"]; /** * Invocation Source Id * @description The ID of the prepared invocation's source node @@ -22512,6 +22512,11 @@ export type components = { pidi_edge_detection: components["schemas"]["ImageOutput"]; prompt_from_file: components["schemas"]["StringCollectionOutput"]; prompt_template: components["schemas"]["PromptTemplateOutput"]; + qwen_image_2_1_denoise: components["schemas"]["LatentsOutput"]; + qwen_image_2_1_i2l: components["schemas"]["LatentsOutput"]; + qwen_image_2_1_l2i: components["schemas"]["ImageOutput"]; + qwen_image_2_1_model_loader: components["schemas"]["QwenImage21ModelLoaderOutput"]; + qwen_image_2_1_text_encoder: components["schemas"]["QwenImage21ConditioningOutput"]; qwen_image_denoise: components["schemas"]["LatentsOutput"]; qwen_image_i2l: components["schemas"]["LatentsOutput"]; qwen_image_l2i: components["schemas"]["ImageOutput"]; @@ -22655,7 +22660,7 @@ export type components = { * Invocation * @description The ID of the invocation */ - invocation: components["schemas"]["AddInvocation"] | components["schemas"]["AlibabaCloudImageGenerationInvocation"] | components["schemas"]["AlphaMaskToTensorInvocation"] | components["schemas"]["AnimaDenoiseInvocation"] | components["schemas"]["AnimaDenoiseMetaInvocation"] | components["schemas"]["AnimaImageToLatentsInvocation"] | components["schemas"]["AnimaLLLiteInvocation"] | components["schemas"]["AnimaLatentsToImageInvocation"] | components["schemas"]["AnimaLoRACollectionLoader"] | components["schemas"]["AnimaLoRALoaderInvocation"] | components["schemas"]["AnimaModelLoaderInvocation"] | components["schemas"]["AnimaTextEncoderInvocation"] | components["schemas"]["ApplyMaskTensorToImageInvocation"] | components["schemas"]["ApplyMaskToImageInvocation"] | components["schemas"]["AtlasCloudImageGenerationInvocation"] | components["schemas"]["BlankImageInvocation"] | components["schemas"]["BlendLatentsInvocation"] | components["schemas"]["BooleanCollectionInvocation"] | components["schemas"]["BooleanInvocation"] | components["schemas"]["BooleanLogicInvocation"] | components["schemas"]["BoundingBoxInvocation"] | components["schemas"]["CLIPSkipInvocation"] | components["schemas"]["CV2InfillInvocation"] | components["schemas"]["CalculateImageTilesEvenSplitInvocation"] | components["schemas"]["CalculateImageTilesInvocation"] | components["schemas"]["CalculateImageTilesMinimumOverlapInvocation"] | components["schemas"]["CallSavedWorkflowInvocation"] | components["schemas"]["CannyEdgeDetectionInvocation"] | components["schemas"]["CanvasOutputInvocation"] | components["schemas"]["CanvasPasteBackInvocation"] | components["schemas"]["CanvasV2MaskAndCropInvocation"] | components["schemas"]["CenterPadCropInvocation"] | components["schemas"]["CogView4DenoiseInvocation"] | components["schemas"]["CogView4ImageToLatentsInvocation"] | components["schemas"]["CogView4LatentsToImageInvocation"] | components["schemas"]["CogView4ModelLoaderInvocation"] | components["schemas"]["CogView4TextEncoderInvocation"] | components["schemas"]["CollectInvocation"] | components["schemas"]["CollectionCartesianInvocation"] | components["schemas"]["CollectionConcatInvocation"] | components["schemas"]["CollectionZipInvocation"] | components["schemas"]["ColorCorrectInvocation"] | components["schemas"]["ColorInvocation"] | components["schemas"]["ColorMapInvocation"] | components["schemas"]["CompelInvocation"] | components["schemas"]["ConditioningCollectionInvocation"] | components["schemas"]["ConditioningInvocation"] | components["schemas"]["ContentShuffleInvocation"] | components["schemas"]["ControlNetInvocation"] | components["schemas"]["CoreMetadataInvocation"] | components["schemas"]["CreateDenoiseMaskInvocation"] | components["schemas"]["CreateGradientMaskInvocation"] | components["schemas"]["CropImageToBoundingBoxInvocation"] | components["schemas"]["CropLatentsCoreInvocation"] | components["schemas"]["CvInpaintInvocation"] | components["schemas"]["DWOpenposeDetectionInvocation"] | components["schemas"]["DecodeInvisibleWatermarkInvocation"] | components["schemas"]["DenoiseLatentsInvocation"] | components["schemas"]["DenoiseLatentsMetaInvocation"] | components["schemas"]["DepthAnythingDepthEstimationInvocation"] | components["schemas"]["DivideInvocation"] | components["schemas"]["DynamicPromptInvocation"] | components["schemas"]["ESRGANInvocation"] | components["schemas"]["ErnieImageDenoiseInvocation"] | components["schemas"]["ErnieImageModelLoaderInvocation"] | components["schemas"]["ErnieImagePromptEnhancerInvocation"] | components["schemas"]["ErnieImageTextEncoderInvocation"] | components["schemas"]["ErnieImageVaeDecodeInvocation"] | components["schemas"]["ExpandMaskWithFadeInvocation"] | components["schemas"]["ExtractVideoRangeInvocation"] | components["schemas"]["FLUXLoRACollectionLoader"] | components["schemas"]["FaceIdentifierInvocation"] | components["schemas"]["FaceMaskInvocation"] | components["schemas"]["FaceOffInvocation"] | components["schemas"]["FloatBatchInvocation"] | components["schemas"]["FloatCollectionInvocation"] | components["schemas"]["FloatGenerator"] | components["schemas"]["FloatInvocation"] | components["schemas"]["FloatLinearRangeInvocation"] | components["schemas"]["FloatMathInvocation"] | components["schemas"]["FloatToIntegerInvocation"] | components["schemas"]["Flux2DenoiseInvocation"] | components["schemas"]["Flux2DevLoRACollectionLoader"] | components["schemas"]["Flux2DevLoRALoaderInvocation"] | components["schemas"]["Flux2DevModelLoaderInvocation"] | components["schemas"]["Flux2DevTextEncoderInvocation"] | components["schemas"]["Flux2KleinLoRACollectionLoader"] | components["schemas"]["Flux2KleinLoRALoaderInvocation"] | components["schemas"]["Flux2KleinModelLoaderInvocation"] | components["schemas"]["Flux2KleinTextEncoderInvocation"] | components["schemas"]["Flux2PiDDecodeInvocation"] | components["schemas"]["Flux2VaeDecodeInvocation"] | components["schemas"]["Flux2VaeEncodeInvocation"] | components["schemas"]["FluxControlLoRALoaderInvocation"] | components["schemas"]["FluxControlNetInvocation"] | components["schemas"]["FluxDenoiseInvocation"] | components["schemas"]["FluxDenoiseLatentsMetaInvocation"] | components["schemas"]["FluxFillInvocation"] | components["schemas"]["FluxIPAdapterInvocation"] | components["schemas"]["FluxKontextConcatenateImagesInvocation"] | components["schemas"]["FluxKontextInvocation"] | components["schemas"]["FluxLoRALoaderInvocation"] | components["schemas"]["FluxModelLoaderInvocation"] | components["schemas"]["FluxPiDDecodeInvocation"] | components["schemas"]["FluxReduxInvocation"] | components["schemas"]["FluxTextEncoderInvocation"] | components["schemas"]["FluxVaeDecodeInvocation"] | components["schemas"]["FluxVaeEncodeInvocation"] | components["schemas"]["ForInvocation"] | components["schemas"]["ForReturnInvocation"] | components["schemas"]["FreeUInvocation"] | components["schemas"]["GeminiImageGenerationInvocation"] | components["schemas"]["Gemma2EncoderLoaderInvocation"] | components["schemas"]["GetMaskBoundingBoxInvocation"] | components["schemas"]["GroundingDinoInvocation"] | components["schemas"]["HEDEdgeDetectionInvocation"] | components["schemas"]["HeuristicResizeInvocation"] | components["schemas"]["IPAdapterInvocation"] | components["schemas"]["IdealSizeInvocation"] | components["schemas"]["Ideogram4CaptionBuilderInvocation"] | components["schemas"]["Ideogram4DenoiseInvocation"] | components["schemas"]["Ideogram4LatentsToImageInvocation"] | components["schemas"]["Ideogram4ModelLoaderInvocation"] | components["schemas"]["Ideogram4TextEncoderInvocation"] | components["schemas"]["IfInvocation"] | components["schemas"]["ImageBatchInvocation"] | components["schemas"]["ImageBlurInvocation"] | components["schemas"]["ImageChannelInvocation"] | components["schemas"]["ImageChannelMultiplyInvocation"] | components["schemas"]["ImageChannelOffsetInvocation"] | components["schemas"]["ImageCollectionInvocation"] | components["schemas"]["ImageConvertInvocation"] | components["schemas"]["ImageCropInvocation"] | components["schemas"]["ImageGenerator"] | components["schemas"]["ImageHueAdjustmentInvocation"] | components["schemas"]["ImageInverseLerpInvocation"] | components["schemas"]["ImageInvocation"] | components["schemas"]["ImageLerpInvocation"] | components["schemas"]["ImageMaskToTensorInvocation"] | components["schemas"]["ImageMultiplyInvocation"] | components["schemas"]["ImageNSFWBlurInvocation"] | components["schemas"]["ImageNoiseInvocation"] | components["schemas"]["ImagePanelLayoutInvocation"] | components["schemas"]["ImagePasteInvocation"] | components["schemas"]["ImageResizeInvocation"] | components["schemas"]["ImageScaleInvocation"] | components["schemas"]["ImageToLatentsInvocation"] | components["schemas"]["ImageWatermarkInvocation"] | components["schemas"]["InfillColorInvocation"] | components["schemas"]["InfillPatchMatchInvocation"] | components["schemas"]["InfillTileInvocation"] | components["schemas"]["IntegerBatchInvocation"] | components["schemas"]["IntegerCollectionInvocation"] | components["schemas"]["IntegerGenerator"] | components["schemas"]["IntegerInvocation"] | components["schemas"]["IntegerMathInvocation"] | components["schemas"]["InvertTensorMaskInvocation"] | components["schemas"]["InvokeAdjustImageHuePlusInvocation"] | components["schemas"]["InvokeEquivalentAchromaticLightnessInvocation"] | components["schemas"]["InvokeImageBlendInvocation"] | components["schemas"]["InvokeImageCompositorInvocation"] | components["schemas"]["InvokeImageDilateOrErodeInvocation"] | components["schemas"]["InvokeImageEnhanceInvocation"] | components["schemas"]["InvokeImageValueThresholdsInvocation"] | components["schemas"]["IterateInvocation"] | components["schemas"]["Krea2ConditioningRebalanceInvocation"] | components["schemas"]["Krea2DenoiseInvocation"] | components["schemas"]["Krea2LoRACollectionLoader"] | components["schemas"]["Krea2LoRALoaderInvocation"] | components["schemas"]["Krea2ModelLoaderInvocation"] | components["schemas"]["Krea2SeedVarianceInvocation"] | components["schemas"]["Krea2StyleReferenceInvocation"] | components["schemas"]["Krea2TextEncoderInvocation"] | components["schemas"]["LTX2AudioConditioningInvocation"] | components["schemas"]["LTX2DenoiseInvocation"] | components["schemas"]["LTX2DurationInvocation"] | components["schemas"]["LTX2ExtendConditioningInvocation"] | components["schemas"]["LTX2IdealDimensionsInvocation"] | components["schemas"]["LTX2ImageConditioningInvocation"] | components["schemas"]["LTX2LatentUpsampleInvocation"] | components["schemas"]["LTX2LatentsToVideoInvocation"] | components["schemas"]["LTX2LoRACollectionLoader"] | components["schemas"]["LTX2LoRALoaderInvocation"] | components["schemas"]["LTX2ModelLoaderInvocation"] | components["schemas"]["LTX2TextEncoderInvocation"] | components["schemas"]["LTX2VideoConditioningInvocation"] | components["schemas"]["LaMaInfillInvocation"] | components["schemas"]["LatentsCollectionInvocation"] | components["schemas"]["LatentsInvocation"] | components["schemas"]["LatentsToImageInvocation"] | components["schemas"]["LineartAnimeEdgeDetectionInvocation"] | components["schemas"]["LineartEdgeDetectionInvocation"] | components["schemas"]["LlavaOnevisionVllmInvocation"] | components["schemas"]["LoRACollectionLoader"] | components["schemas"]["LoRALoaderInvocation"] | components["schemas"]["LoRASelectorInvocation"] | components["schemas"]["MLSDDetectionInvocation"] | components["schemas"]["MainModelLoaderInvocation"] | components["schemas"]["MaskCombineInvocation"] | components["schemas"]["MaskEdgeInvocation"] | components["schemas"]["MaskFromAlphaInvocation"] | components["schemas"]["MaskFromIDInvocation"] | components["schemas"]["MaskTensorToImageInvocation"] | components["schemas"]["MediaPipeFaceDetectionInvocation"] | components["schemas"]["MergeMetadataInvocation"] | components["schemas"]["MergeTilesToImageInvocation"] | components["schemas"]["MetadataFieldExtractorInvocation"] | components["schemas"]["MetadataFromImageInvocation"] | components["schemas"]["MetadataInvocation"] | components["schemas"]["MetadataItemInvocation"] | components["schemas"]["MetadataItemLinkedInvocation"] | components["schemas"]["MetadataToBoolCollectionInvocation"] | components["schemas"]["MetadataToBoolInvocation"] | components["schemas"]["MetadataToControlnetsInvocation"] | components["schemas"]["MetadataToFloatCollectionInvocation"] | components["schemas"]["MetadataToFloatInvocation"] | components["schemas"]["MetadataToIPAdaptersInvocation"] | components["schemas"]["MetadataToIntegerCollectionInvocation"] | components["schemas"]["MetadataToIntegerInvocation"] | components["schemas"]["MetadataToLorasCollectionInvocation"] | components["schemas"]["MetadataToLorasInvocation"] | components["schemas"]["MetadataToModelInvocation"] | components["schemas"]["MetadataToSDXLLorasInvocation"] | components["schemas"]["MetadataToSDXLModelInvocation"] | components["schemas"]["MetadataToSchedulerInvocation"] | components["schemas"]["MetadataToStringCollectionInvocation"] | components["schemas"]["MetadataToStringInvocation"] | components["schemas"]["MetadataToT2IAdaptersInvocation"] | components["schemas"]["MetadataToVAEInvocation"] | components["schemas"]["MiniMaxH3DenoiseInvocation"] | components["schemas"]["MiniMaxH3FrameConditioningInvocation"] | components["schemas"]["MiniMaxH3HybridOverlayInvocation"] | components["schemas"]["MiniMaxH3IdealDimensionsInvocation"] | components["schemas"]["MiniMaxH3ImageReferenceInvocation"] | components["schemas"]["MiniMaxH3LatentsToImageInvocation"] | components["schemas"]["MiniMaxH3LatentsToVideoInvocation"] | components["schemas"]["MiniMaxH3LoRACollectionLoader"] | components["schemas"]["MiniMaxH3LoRALoaderInvocation"] | components["schemas"]["MiniMaxH3ModelLoaderInvocation"] | components["schemas"]["MiniMaxH3ReferenceConditioningInvocation"] | components["schemas"]["MiniMaxH3TextEncoderInvocation"] | components["schemas"]["MiniMaxH3VideoReferenceInvocation"] | components["schemas"]["ModelIdentifierInvocation"] | components["schemas"]["MultiplyInvocation"] | components["schemas"]["NoiseInvocation"] | components["schemas"]["NormalMapInvocation"] | components["schemas"]["OklabUnsharpMaskInvocation"] | components["schemas"]["OklchImageHueAdjustmentInvocation"] | components["schemas"]["OpenAIImageGenerationInvocation"] | components["schemas"]["PBRMapsInvocation"] | components["schemas"]["PairTileImageInvocation"] | components["schemas"]["PasteImageIntoBoundingBoxInvocation"] | components["schemas"]["PiDDecoderLoaderInvocation"] | components["schemas"]["PiDUpscaleInvocation"] | components["schemas"]["PiDiNetEdgeDetectionInvocation"] | components["schemas"]["PromptTemplateInvocation"] | components["schemas"]["PromptsFromFileInvocation"] | components["schemas"]["QwenImageDenoiseInvocation"] | components["schemas"]["QwenImageImageToLatentsInvocation"] | components["schemas"]["QwenImageLatentsToImageInvocation"] | components["schemas"]["QwenImageLoRACollectionLoader"] | components["schemas"]["QwenImageLoRALoaderInvocation"] | components["schemas"]["QwenImageModelLoaderInvocation"] | components["schemas"]["QwenImagePiDDecodeInvocation"] | components["schemas"]["QwenImageTextEncoderInvocation"] | components["schemas"]["RandomFloatInvocation"] | components["schemas"]["RandomIntInvocation"] | components["schemas"]["RandomRangeInvocation"] | components["schemas"]["RangeInvocation"] | components["schemas"]["RangeOfSizeInvocation"] | components["schemas"]["RectangleMaskInvocation"] | components["schemas"]["ResizeLatentsInvocation"] | components["schemas"]["RoundInvocation"] | components["schemas"]["SD3DenoiseInvocation"] | components["schemas"]["SD3ImageToLatentsInvocation"] | components["schemas"]["SD3LatentsToImageInvocation"] | components["schemas"]["SD3PiDDecodeInvocation"] | components["schemas"]["SDXLCompelPromptInvocation"] | components["schemas"]["SDXLLoRACollectionLoader"] | components["schemas"]["SDXLLoRALoaderInvocation"] | components["schemas"]["SDXLModelLoaderInvocation"] | components["schemas"]["SDXLPiDDecodeInvocation"] | components["schemas"]["SDXLRefinerCompelPromptInvocation"] | components["schemas"]["SDXLRefinerModelLoaderInvocation"] | components["schemas"]["SaveImageInvocation"] | components["schemas"]["SaveImageToFileInvocation"] | components["schemas"]["ScaleLatentsInvocation"] | components["schemas"]["SchedulerInvocation"] | components["schemas"]["Sd3ModelLoaderInvocation"] | components["schemas"]["Sd3TextEncoderInvocation"] | components["schemas"]["SeamlessModeInvocation"] | components["schemas"]["SeedreamImageGenerationInvocation"] | components["schemas"]["SegmentAnythingInvocation"] | components["schemas"]["ShowImageInvocation"] | components["schemas"]["SpandrelImageToImageAutoscaleInvocation"] | components["schemas"]["SpandrelImageToImageInvocation"] | components["schemas"]["StateEmptyInvocation"] | components["schemas"]["StateGetInvocation"] | components["schemas"]["StateMergeInvocation"] | components["schemas"]["StateSetInvocation"] | components["schemas"]["StringBatchInvocation"] | components["schemas"]["StringCollectionInvocation"] | components["schemas"]["StringGenerator"] | components["schemas"]["StringInvocation"] | components["schemas"]["StringJoinInvocation"] | components["schemas"]["StringJoinThreeInvocation"] | components["schemas"]["StringReplaceInvocation"] | components["schemas"]["StringSplitInvocation"] | components["schemas"]["StringSplitNegInvocation"] | components["schemas"]["SubtractInvocation"] | components["schemas"]["T2IAdapterInvocation"] | components["schemas"]["TextLLMInvocation"] | components["schemas"]["TextLLMWithPresetInvocation"] | components["schemas"]["TileToPropertiesInvocation"] | components["schemas"]["TiledMultiDiffusionDenoiseLatents"] | components["schemas"]["UnsharpMaskInvocation"] | components["schemas"]["VAELoaderInvocation"] | components["schemas"]["VideoConcatInvocation"] | components["schemas"]["VideoFrameExtractInvocation"] | components["schemas"]["VideoInvocation"] | components["schemas"]["WanDenoiseInvocation"] | components["schemas"]["WanI2VIdealDimensionsInvocation"] | components["schemas"]["WanImageToLatentsInvocation"] | components["schemas"]["WanLatentsToImageInvocation"] | components["schemas"]["WanLatentsToVideoInvocation"] | components["schemas"]["WanLoRACollectionLoader"] | components["schemas"]["WanLoRALoaderInvocation"] | components["schemas"]["WanModelLoaderInvocation"] | components["schemas"]["WanRefImageEncoderInvocation"] | components["schemas"]["WanTI2VIdealDimensionsInvocation"] | components["schemas"]["WanTextEncoderInvocation"] | components["schemas"]["WanVideoDenoiseInvocation"] | components["schemas"]["WorkflowReturnGetInvocation"] | components["schemas"]["WorkflowReturnInvocation"] | components["schemas"]["WorkflowReturnValueInvocation"] | components["schemas"]["ZImageControlInvocation"] | components["schemas"]["ZImageDenoiseInvocation"] | components["schemas"]["ZImageDenoiseMetaInvocation"] | components["schemas"]["ZImageImageToLatentsInvocation"] | components["schemas"]["ZImageLatentsToImageInvocation"] | components["schemas"]["ZImageLoRACollectionLoader"] | components["schemas"]["ZImageLoRALoaderInvocation"] | components["schemas"]["ZImageModelLoaderInvocation"] | components["schemas"]["ZImagePiDDecodeInvocation"] | components["schemas"]["ZImageSeedVarianceEnhancerInvocation"] | components["schemas"]["ZImageTextEncoderInvocation"]; + invocation: components["schemas"]["AddInvocation"] | components["schemas"]["AlibabaCloudImageGenerationInvocation"] | components["schemas"]["AlphaMaskToTensorInvocation"] | components["schemas"]["AnimaDenoiseInvocation"] | components["schemas"]["AnimaDenoiseMetaInvocation"] | components["schemas"]["AnimaImageToLatentsInvocation"] | components["schemas"]["AnimaLLLiteInvocation"] | components["schemas"]["AnimaLatentsToImageInvocation"] | components["schemas"]["AnimaLoRACollectionLoader"] | components["schemas"]["AnimaLoRALoaderInvocation"] | components["schemas"]["AnimaModelLoaderInvocation"] | components["schemas"]["AnimaTextEncoderInvocation"] | components["schemas"]["ApplyMaskTensorToImageInvocation"] | components["schemas"]["ApplyMaskToImageInvocation"] | components["schemas"]["AtlasCloudImageGenerationInvocation"] | components["schemas"]["BlankImageInvocation"] | components["schemas"]["BlendLatentsInvocation"] | components["schemas"]["BooleanCollectionInvocation"] | components["schemas"]["BooleanInvocation"] | components["schemas"]["BooleanLogicInvocation"] | components["schemas"]["BoundingBoxInvocation"] | components["schemas"]["CLIPSkipInvocation"] | components["schemas"]["CV2InfillInvocation"] | components["schemas"]["CalculateImageTilesEvenSplitInvocation"] | components["schemas"]["CalculateImageTilesInvocation"] | components["schemas"]["CalculateImageTilesMinimumOverlapInvocation"] | components["schemas"]["CallSavedWorkflowInvocation"] | components["schemas"]["CannyEdgeDetectionInvocation"] | components["schemas"]["CanvasOutputInvocation"] | components["schemas"]["CanvasPasteBackInvocation"] | components["schemas"]["CanvasV2MaskAndCropInvocation"] | components["schemas"]["CenterPadCropInvocation"] | components["schemas"]["CogView4DenoiseInvocation"] | components["schemas"]["CogView4ImageToLatentsInvocation"] | components["schemas"]["CogView4LatentsToImageInvocation"] | components["schemas"]["CogView4ModelLoaderInvocation"] | components["schemas"]["CogView4TextEncoderInvocation"] | components["schemas"]["CollectInvocation"] | components["schemas"]["CollectionCartesianInvocation"] | components["schemas"]["CollectionConcatInvocation"] | components["schemas"]["CollectionZipInvocation"] | components["schemas"]["ColorCorrectInvocation"] | components["schemas"]["ColorInvocation"] | components["schemas"]["ColorMapInvocation"] | components["schemas"]["CompelInvocation"] | components["schemas"]["ConditioningCollectionInvocation"] | components["schemas"]["ConditioningInvocation"] | components["schemas"]["ContentShuffleInvocation"] | components["schemas"]["ControlNetInvocation"] | components["schemas"]["CoreMetadataInvocation"] | components["schemas"]["CreateDenoiseMaskInvocation"] | components["schemas"]["CreateGradientMaskInvocation"] | components["schemas"]["CropImageToBoundingBoxInvocation"] | components["schemas"]["CropLatentsCoreInvocation"] | components["schemas"]["CvInpaintInvocation"] | components["schemas"]["DWOpenposeDetectionInvocation"] | components["schemas"]["DecodeInvisibleWatermarkInvocation"] | components["schemas"]["DenoiseLatentsInvocation"] | components["schemas"]["DenoiseLatentsMetaInvocation"] | components["schemas"]["DepthAnythingDepthEstimationInvocation"] | components["schemas"]["DivideInvocation"] | components["schemas"]["DynamicPromptInvocation"] | components["schemas"]["ESRGANInvocation"] | components["schemas"]["ErnieImageDenoiseInvocation"] | components["schemas"]["ErnieImageModelLoaderInvocation"] | components["schemas"]["ErnieImagePromptEnhancerInvocation"] | components["schemas"]["ErnieImageTextEncoderInvocation"] | components["schemas"]["ErnieImageVaeDecodeInvocation"] | components["schemas"]["ExpandMaskWithFadeInvocation"] | components["schemas"]["ExtractVideoRangeInvocation"] | components["schemas"]["FLUXLoRACollectionLoader"] | components["schemas"]["FaceIdentifierInvocation"] | components["schemas"]["FaceMaskInvocation"] | components["schemas"]["FaceOffInvocation"] | components["schemas"]["FloatBatchInvocation"] | components["schemas"]["FloatCollectionInvocation"] | components["schemas"]["FloatGenerator"] | components["schemas"]["FloatInvocation"] | components["schemas"]["FloatLinearRangeInvocation"] | components["schemas"]["FloatMathInvocation"] | components["schemas"]["FloatToIntegerInvocation"] | components["schemas"]["Flux2DenoiseInvocation"] | components["schemas"]["Flux2DevLoRACollectionLoader"] | components["schemas"]["Flux2DevLoRALoaderInvocation"] | components["schemas"]["Flux2DevModelLoaderInvocation"] | components["schemas"]["Flux2DevTextEncoderInvocation"] | components["schemas"]["Flux2KleinLoRACollectionLoader"] | components["schemas"]["Flux2KleinLoRALoaderInvocation"] | components["schemas"]["Flux2KleinModelLoaderInvocation"] | components["schemas"]["Flux2KleinTextEncoderInvocation"] | components["schemas"]["Flux2PiDDecodeInvocation"] | components["schemas"]["Flux2VaeDecodeInvocation"] | components["schemas"]["Flux2VaeEncodeInvocation"] | components["schemas"]["FluxControlLoRALoaderInvocation"] | components["schemas"]["FluxControlNetInvocation"] | components["schemas"]["FluxDenoiseInvocation"] | components["schemas"]["FluxDenoiseLatentsMetaInvocation"] | components["schemas"]["FluxFillInvocation"] | components["schemas"]["FluxIPAdapterInvocation"] | components["schemas"]["FluxKontextConcatenateImagesInvocation"] | components["schemas"]["FluxKontextInvocation"] | components["schemas"]["FluxLoRALoaderInvocation"] | components["schemas"]["FluxModelLoaderInvocation"] | components["schemas"]["FluxPiDDecodeInvocation"] | components["schemas"]["FluxReduxInvocation"] | components["schemas"]["FluxTextEncoderInvocation"] | components["schemas"]["FluxVaeDecodeInvocation"] | components["schemas"]["FluxVaeEncodeInvocation"] | components["schemas"]["ForInvocation"] | components["schemas"]["ForReturnInvocation"] | components["schemas"]["FreeUInvocation"] | components["schemas"]["GeminiImageGenerationInvocation"] | components["schemas"]["Gemma2EncoderLoaderInvocation"] | components["schemas"]["GetMaskBoundingBoxInvocation"] | components["schemas"]["GroundingDinoInvocation"] | components["schemas"]["HEDEdgeDetectionInvocation"] | components["schemas"]["HeuristicResizeInvocation"] | components["schemas"]["IPAdapterInvocation"] | components["schemas"]["IdealSizeInvocation"] | components["schemas"]["Ideogram4CaptionBuilderInvocation"] | components["schemas"]["Ideogram4DenoiseInvocation"] | components["schemas"]["Ideogram4LatentsToImageInvocation"] | components["schemas"]["Ideogram4ModelLoaderInvocation"] | components["schemas"]["Ideogram4TextEncoderInvocation"] | components["schemas"]["IfInvocation"] | components["schemas"]["ImageBatchInvocation"] | components["schemas"]["ImageBlurInvocation"] | components["schemas"]["ImageChannelInvocation"] | components["schemas"]["ImageChannelMultiplyInvocation"] | components["schemas"]["ImageChannelOffsetInvocation"] | components["schemas"]["ImageCollectionInvocation"] | components["schemas"]["ImageConvertInvocation"] | components["schemas"]["ImageCropInvocation"] | components["schemas"]["ImageGenerator"] | components["schemas"]["ImageHueAdjustmentInvocation"] | components["schemas"]["ImageInverseLerpInvocation"] | components["schemas"]["ImageInvocation"] | components["schemas"]["ImageLerpInvocation"] | components["schemas"]["ImageMaskToTensorInvocation"] | components["schemas"]["ImageMultiplyInvocation"] | components["schemas"]["ImageNSFWBlurInvocation"] | components["schemas"]["ImageNoiseInvocation"] | components["schemas"]["ImagePanelLayoutInvocation"] | components["schemas"]["ImagePasteInvocation"] | components["schemas"]["ImageResizeInvocation"] | components["schemas"]["ImageScaleInvocation"] | components["schemas"]["ImageToLatentsInvocation"] | components["schemas"]["ImageWatermarkInvocation"] | components["schemas"]["InfillColorInvocation"] | components["schemas"]["InfillPatchMatchInvocation"] | components["schemas"]["InfillTileInvocation"] | components["schemas"]["IntegerBatchInvocation"] | components["schemas"]["IntegerCollectionInvocation"] | components["schemas"]["IntegerGenerator"] | components["schemas"]["IntegerInvocation"] | components["schemas"]["IntegerMathInvocation"] | components["schemas"]["InvertTensorMaskInvocation"] | components["schemas"]["InvokeAdjustImageHuePlusInvocation"] | components["schemas"]["InvokeEquivalentAchromaticLightnessInvocation"] | components["schemas"]["InvokeImageBlendInvocation"] | components["schemas"]["InvokeImageCompositorInvocation"] | components["schemas"]["InvokeImageDilateOrErodeInvocation"] | components["schemas"]["InvokeImageEnhanceInvocation"] | components["schemas"]["InvokeImageValueThresholdsInvocation"] | components["schemas"]["IterateInvocation"] | components["schemas"]["Krea2ConditioningRebalanceInvocation"] | components["schemas"]["Krea2DenoiseInvocation"] | components["schemas"]["Krea2LoRACollectionLoader"] | components["schemas"]["Krea2LoRALoaderInvocation"] | components["schemas"]["Krea2ModelLoaderInvocation"] | components["schemas"]["Krea2SeedVarianceInvocation"] | components["schemas"]["Krea2StyleReferenceInvocation"] | components["schemas"]["Krea2TextEncoderInvocation"] | components["schemas"]["LTX2AudioConditioningInvocation"] | components["schemas"]["LTX2DenoiseInvocation"] | components["schemas"]["LTX2DurationInvocation"] | components["schemas"]["LTX2ExtendConditioningInvocation"] | components["schemas"]["LTX2IdealDimensionsInvocation"] | components["schemas"]["LTX2ImageConditioningInvocation"] | components["schemas"]["LTX2LatentUpsampleInvocation"] | components["schemas"]["LTX2LatentsToVideoInvocation"] | components["schemas"]["LTX2LoRACollectionLoader"] | components["schemas"]["LTX2LoRALoaderInvocation"] | components["schemas"]["LTX2ModelLoaderInvocation"] | components["schemas"]["LTX2TextEncoderInvocation"] | components["schemas"]["LTX2VideoConditioningInvocation"] | components["schemas"]["LaMaInfillInvocation"] | components["schemas"]["LatentsCollectionInvocation"] | components["schemas"]["LatentsInvocation"] | components["schemas"]["LatentsToImageInvocation"] | components["schemas"]["LineartAnimeEdgeDetectionInvocation"] | components["schemas"]["LineartEdgeDetectionInvocation"] | components["schemas"]["LlavaOnevisionVllmInvocation"] | components["schemas"]["LoRACollectionLoader"] | components["schemas"]["LoRALoaderInvocation"] | components["schemas"]["LoRASelectorInvocation"] | components["schemas"]["MLSDDetectionInvocation"] | components["schemas"]["MainModelLoaderInvocation"] | components["schemas"]["MaskCombineInvocation"] | components["schemas"]["MaskEdgeInvocation"] | components["schemas"]["MaskFromAlphaInvocation"] | components["schemas"]["MaskFromIDInvocation"] | components["schemas"]["MaskTensorToImageInvocation"] | components["schemas"]["MediaPipeFaceDetectionInvocation"] | components["schemas"]["MergeMetadataInvocation"] | components["schemas"]["MergeTilesToImageInvocation"] | components["schemas"]["MetadataFieldExtractorInvocation"] | components["schemas"]["MetadataFromImageInvocation"] | components["schemas"]["MetadataInvocation"] | components["schemas"]["MetadataItemInvocation"] | components["schemas"]["MetadataItemLinkedInvocation"] | components["schemas"]["MetadataToBoolCollectionInvocation"] | components["schemas"]["MetadataToBoolInvocation"] | components["schemas"]["MetadataToControlnetsInvocation"] | components["schemas"]["MetadataToFloatCollectionInvocation"] | components["schemas"]["MetadataToFloatInvocation"] | components["schemas"]["MetadataToIPAdaptersInvocation"] | components["schemas"]["MetadataToIntegerCollectionInvocation"] | components["schemas"]["MetadataToIntegerInvocation"] | components["schemas"]["MetadataToLorasCollectionInvocation"] | components["schemas"]["MetadataToLorasInvocation"] | components["schemas"]["MetadataToModelInvocation"] | components["schemas"]["MetadataToSDXLLorasInvocation"] | components["schemas"]["MetadataToSDXLModelInvocation"] | components["schemas"]["MetadataToSchedulerInvocation"] | components["schemas"]["MetadataToStringCollectionInvocation"] | components["schemas"]["MetadataToStringInvocation"] | components["schemas"]["MetadataToT2IAdaptersInvocation"] | components["schemas"]["MetadataToVAEInvocation"] | components["schemas"]["MiniMaxH3DenoiseInvocation"] | components["schemas"]["MiniMaxH3FrameConditioningInvocation"] | components["schemas"]["MiniMaxH3HybridOverlayInvocation"] | components["schemas"]["MiniMaxH3IdealDimensionsInvocation"] | components["schemas"]["MiniMaxH3ImageReferenceInvocation"] | components["schemas"]["MiniMaxH3LatentsToImageInvocation"] | components["schemas"]["MiniMaxH3LatentsToVideoInvocation"] | components["schemas"]["MiniMaxH3LoRACollectionLoader"] | components["schemas"]["MiniMaxH3LoRALoaderInvocation"] | components["schemas"]["MiniMaxH3ModelLoaderInvocation"] | components["schemas"]["MiniMaxH3ReferenceConditioningInvocation"] | components["schemas"]["MiniMaxH3TextEncoderInvocation"] | components["schemas"]["MiniMaxH3VideoReferenceInvocation"] | components["schemas"]["ModelIdentifierInvocation"] | components["schemas"]["MultiplyInvocation"] | components["schemas"]["NoiseInvocation"] | components["schemas"]["NormalMapInvocation"] | components["schemas"]["OklabUnsharpMaskInvocation"] | components["schemas"]["OklchImageHueAdjustmentInvocation"] | components["schemas"]["OpenAIImageGenerationInvocation"] | components["schemas"]["PBRMapsInvocation"] | components["schemas"]["PairTileImageInvocation"] | components["schemas"]["PasteImageIntoBoundingBoxInvocation"] | components["schemas"]["PiDDecoderLoaderInvocation"] | components["schemas"]["PiDUpscaleInvocation"] | components["schemas"]["PiDiNetEdgeDetectionInvocation"] | components["schemas"]["PromptTemplateInvocation"] | components["schemas"]["PromptsFromFileInvocation"] | components["schemas"]["QwenImage21DenoiseInvocation"] | components["schemas"]["QwenImage21ImageToLatentsInvocation"] | components["schemas"]["QwenImage21LatentsToImageInvocation"] | components["schemas"]["QwenImage21ModelLoaderInvocation"] | components["schemas"]["QwenImage21TextEncoderInvocation"] | components["schemas"]["QwenImageDenoiseInvocation"] | components["schemas"]["QwenImageImageToLatentsInvocation"] | components["schemas"]["QwenImageLatentsToImageInvocation"] | components["schemas"]["QwenImageLoRACollectionLoader"] | components["schemas"]["QwenImageLoRALoaderInvocation"] | components["schemas"]["QwenImageModelLoaderInvocation"] | components["schemas"]["QwenImagePiDDecodeInvocation"] | components["schemas"]["QwenImageTextEncoderInvocation"] | components["schemas"]["RandomFloatInvocation"] | components["schemas"]["RandomIntInvocation"] | components["schemas"]["RandomRangeInvocation"] | components["schemas"]["RangeInvocation"] | components["schemas"]["RangeOfSizeInvocation"] | components["schemas"]["RectangleMaskInvocation"] | components["schemas"]["ResizeLatentsInvocation"] | components["schemas"]["RoundInvocation"] | components["schemas"]["SD3DenoiseInvocation"] | components["schemas"]["SD3ImageToLatentsInvocation"] | components["schemas"]["SD3LatentsToImageInvocation"] | components["schemas"]["SD3PiDDecodeInvocation"] | components["schemas"]["SDXLCompelPromptInvocation"] | components["schemas"]["SDXLLoRACollectionLoader"] | components["schemas"]["SDXLLoRALoaderInvocation"] | components["schemas"]["SDXLModelLoaderInvocation"] | components["schemas"]["SDXLPiDDecodeInvocation"] | components["schemas"]["SDXLRefinerCompelPromptInvocation"] | components["schemas"]["SDXLRefinerModelLoaderInvocation"] | components["schemas"]["SaveImageInvocation"] | components["schemas"]["SaveImageToFileInvocation"] | components["schemas"]["ScaleLatentsInvocation"] | components["schemas"]["SchedulerInvocation"] | components["schemas"]["Sd3ModelLoaderInvocation"] | components["schemas"]["Sd3TextEncoderInvocation"] | components["schemas"]["SeamlessModeInvocation"] | components["schemas"]["SeedreamImageGenerationInvocation"] | components["schemas"]["SegmentAnythingInvocation"] | components["schemas"]["ShowImageInvocation"] | components["schemas"]["SpandrelImageToImageAutoscaleInvocation"] | components["schemas"]["SpandrelImageToImageInvocation"] | components["schemas"]["StateEmptyInvocation"] | components["schemas"]["StateGetInvocation"] | components["schemas"]["StateMergeInvocation"] | components["schemas"]["StateSetInvocation"] | components["schemas"]["StringBatchInvocation"] | components["schemas"]["StringCollectionInvocation"] | components["schemas"]["StringGenerator"] | components["schemas"]["StringInvocation"] | components["schemas"]["StringJoinInvocation"] | components["schemas"]["StringJoinThreeInvocation"] | components["schemas"]["StringReplaceInvocation"] | components["schemas"]["StringSplitInvocation"] | components["schemas"]["StringSplitNegInvocation"] | components["schemas"]["SubtractInvocation"] | components["schemas"]["T2IAdapterInvocation"] | components["schemas"]["TextLLMInvocation"] | components["schemas"]["TextLLMWithPresetInvocation"] | components["schemas"]["TileToPropertiesInvocation"] | components["schemas"]["TiledMultiDiffusionDenoiseLatents"] | components["schemas"]["UnsharpMaskInvocation"] | components["schemas"]["VAELoaderInvocation"] | components["schemas"]["VideoConcatInvocation"] | components["schemas"]["VideoFrameExtractInvocation"] | components["schemas"]["VideoInvocation"] | components["schemas"]["WanDenoiseInvocation"] | components["schemas"]["WanI2VIdealDimensionsInvocation"] | components["schemas"]["WanImageToLatentsInvocation"] | components["schemas"]["WanLatentsToImageInvocation"] | components["schemas"]["WanLatentsToVideoInvocation"] | components["schemas"]["WanLoRACollectionLoader"] | components["schemas"]["WanLoRALoaderInvocation"] | components["schemas"]["WanModelLoaderInvocation"] | components["schemas"]["WanRefImageEncoderInvocation"] | components["schemas"]["WanTI2VIdealDimensionsInvocation"] | components["schemas"]["WanTextEncoderInvocation"] | components["schemas"]["WanVideoDenoiseInvocation"] | components["schemas"]["WorkflowReturnGetInvocation"] | components["schemas"]["WorkflowReturnInvocation"] | components["schemas"]["WorkflowReturnValueInvocation"] | components["schemas"]["ZImageControlInvocation"] | components["schemas"]["ZImageDenoiseInvocation"] | components["schemas"]["ZImageDenoiseMetaInvocation"] | components["schemas"]["ZImageImageToLatentsInvocation"] | components["schemas"]["ZImageLatentsToImageInvocation"] | components["schemas"]["ZImageLoRACollectionLoader"] | components["schemas"]["ZImageLoRALoaderInvocation"] | components["schemas"]["ZImageModelLoaderInvocation"] | components["schemas"]["ZImagePiDDecodeInvocation"] | components["schemas"]["ZImageSeedVarianceEnhancerInvocation"] | components["schemas"]["ZImageTextEncoderInvocation"]; /** * Invocation Source Id * @description The ID of the prepared invocation's source node @@ -22760,7 +22765,7 @@ export type components = { * Invocation * @description The ID of the invocation */ - invocation: components["schemas"]["AddInvocation"] | components["schemas"]["AlibabaCloudImageGenerationInvocation"] | components["schemas"]["AlphaMaskToTensorInvocation"] | components["schemas"]["AnimaDenoiseInvocation"] | components["schemas"]["AnimaDenoiseMetaInvocation"] | components["schemas"]["AnimaImageToLatentsInvocation"] | components["schemas"]["AnimaLLLiteInvocation"] | components["schemas"]["AnimaLatentsToImageInvocation"] | components["schemas"]["AnimaLoRACollectionLoader"] | components["schemas"]["AnimaLoRALoaderInvocation"] | components["schemas"]["AnimaModelLoaderInvocation"] | components["schemas"]["AnimaTextEncoderInvocation"] | components["schemas"]["ApplyMaskTensorToImageInvocation"] | components["schemas"]["ApplyMaskToImageInvocation"] | components["schemas"]["AtlasCloudImageGenerationInvocation"] | components["schemas"]["BlankImageInvocation"] | components["schemas"]["BlendLatentsInvocation"] | components["schemas"]["BooleanCollectionInvocation"] | components["schemas"]["BooleanInvocation"] | components["schemas"]["BooleanLogicInvocation"] | components["schemas"]["BoundingBoxInvocation"] | components["schemas"]["CLIPSkipInvocation"] | components["schemas"]["CV2InfillInvocation"] | components["schemas"]["CalculateImageTilesEvenSplitInvocation"] | components["schemas"]["CalculateImageTilesInvocation"] | components["schemas"]["CalculateImageTilesMinimumOverlapInvocation"] | components["schemas"]["CallSavedWorkflowInvocation"] | components["schemas"]["CannyEdgeDetectionInvocation"] | components["schemas"]["CanvasOutputInvocation"] | components["schemas"]["CanvasPasteBackInvocation"] | components["schemas"]["CanvasV2MaskAndCropInvocation"] | components["schemas"]["CenterPadCropInvocation"] | components["schemas"]["CogView4DenoiseInvocation"] | components["schemas"]["CogView4ImageToLatentsInvocation"] | components["schemas"]["CogView4LatentsToImageInvocation"] | components["schemas"]["CogView4ModelLoaderInvocation"] | components["schemas"]["CogView4TextEncoderInvocation"] | components["schemas"]["CollectInvocation"] | components["schemas"]["CollectionCartesianInvocation"] | components["schemas"]["CollectionConcatInvocation"] | components["schemas"]["CollectionZipInvocation"] | components["schemas"]["ColorCorrectInvocation"] | components["schemas"]["ColorInvocation"] | components["schemas"]["ColorMapInvocation"] | components["schemas"]["CompelInvocation"] | components["schemas"]["ConditioningCollectionInvocation"] | components["schemas"]["ConditioningInvocation"] | components["schemas"]["ContentShuffleInvocation"] | components["schemas"]["ControlNetInvocation"] | components["schemas"]["CoreMetadataInvocation"] | components["schemas"]["CreateDenoiseMaskInvocation"] | components["schemas"]["CreateGradientMaskInvocation"] | components["schemas"]["CropImageToBoundingBoxInvocation"] | components["schemas"]["CropLatentsCoreInvocation"] | components["schemas"]["CvInpaintInvocation"] | components["schemas"]["DWOpenposeDetectionInvocation"] | components["schemas"]["DecodeInvisibleWatermarkInvocation"] | components["schemas"]["DenoiseLatentsInvocation"] | components["schemas"]["DenoiseLatentsMetaInvocation"] | components["schemas"]["DepthAnythingDepthEstimationInvocation"] | components["schemas"]["DivideInvocation"] | components["schemas"]["DynamicPromptInvocation"] | components["schemas"]["ESRGANInvocation"] | components["schemas"]["ErnieImageDenoiseInvocation"] | components["schemas"]["ErnieImageModelLoaderInvocation"] | components["schemas"]["ErnieImagePromptEnhancerInvocation"] | components["schemas"]["ErnieImageTextEncoderInvocation"] | components["schemas"]["ErnieImageVaeDecodeInvocation"] | components["schemas"]["ExpandMaskWithFadeInvocation"] | components["schemas"]["ExtractVideoRangeInvocation"] | components["schemas"]["FLUXLoRACollectionLoader"] | components["schemas"]["FaceIdentifierInvocation"] | components["schemas"]["FaceMaskInvocation"] | components["schemas"]["FaceOffInvocation"] | components["schemas"]["FloatBatchInvocation"] | components["schemas"]["FloatCollectionInvocation"] | components["schemas"]["FloatGenerator"] | components["schemas"]["FloatInvocation"] | components["schemas"]["FloatLinearRangeInvocation"] | components["schemas"]["FloatMathInvocation"] | components["schemas"]["FloatToIntegerInvocation"] | components["schemas"]["Flux2DenoiseInvocation"] | components["schemas"]["Flux2DevLoRACollectionLoader"] | components["schemas"]["Flux2DevLoRALoaderInvocation"] | components["schemas"]["Flux2DevModelLoaderInvocation"] | components["schemas"]["Flux2DevTextEncoderInvocation"] | components["schemas"]["Flux2KleinLoRACollectionLoader"] | components["schemas"]["Flux2KleinLoRALoaderInvocation"] | components["schemas"]["Flux2KleinModelLoaderInvocation"] | components["schemas"]["Flux2KleinTextEncoderInvocation"] | components["schemas"]["Flux2PiDDecodeInvocation"] | components["schemas"]["Flux2VaeDecodeInvocation"] | components["schemas"]["Flux2VaeEncodeInvocation"] | components["schemas"]["FluxControlLoRALoaderInvocation"] | components["schemas"]["FluxControlNetInvocation"] | components["schemas"]["FluxDenoiseInvocation"] | components["schemas"]["FluxDenoiseLatentsMetaInvocation"] | components["schemas"]["FluxFillInvocation"] | components["schemas"]["FluxIPAdapterInvocation"] | components["schemas"]["FluxKontextConcatenateImagesInvocation"] | components["schemas"]["FluxKontextInvocation"] | components["schemas"]["FluxLoRALoaderInvocation"] | components["schemas"]["FluxModelLoaderInvocation"] | components["schemas"]["FluxPiDDecodeInvocation"] | components["schemas"]["FluxReduxInvocation"] | components["schemas"]["FluxTextEncoderInvocation"] | components["schemas"]["FluxVaeDecodeInvocation"] | components["schemas"]["FluxVaeEncodeInvocation"] | components["schemas"]["ForInvocation"] | components["schemas"]["ForReturnInvocation"] | components["schemas"]["FreeUInvocation"] | components["schemas"]["GeminiImageGenerationInvocation"] | components["schemas"]["Gemma2EncoderLoaderInvocation"] | components["schemas"]["GetMaskBoundingBoxInvocation"] | components["schemas"]["GroundingDinoInvocation"] | components["schemas"]["HEDEdgeDetectionInvocation"] | components["schemas"]["HeuristicResizeInvocation"] | components["schemas"]["IPAdapterInvocation"] | components["schemas"]["IdealSizeInvocation"] | components["schemas"]["Ideogram4CaptionBuilderInvocation"] | components["schemas"]["Ideogram4DenoiseInvocation"] | components["schemas"]["Ideogram4LatentsToImageInvocation"] | components["schemas"]["Ideogram4ModelLoaderInvocation"] | components["schemas"]["Ideogram4TextEncoderInvocation"] | components["schemas"]["IfInvocation"] | components["schemas"]["ImageBatchInvocation"] | components["schemas"]["ImageBlurInvocation"] | components["schemas"]["ImageChannelInvocation"] | components["schemas"]["ImageChannelMultiplyInvocation"] | components["schemas"]["ImageChannelOffsetInvocation"] | components["schemas"]["ImageCollectionInvocation"] | components["schemas"]["ImageConvertInvocation"] | components["schemas"]["ImageCropInvocation"] | components["schemas"]["ImageGenerator"] | components["schemas"]["ImageHueAdjustmentInvocation"] | components["schemas"]["ImageInverseLerpInvocation"] | components["schemas"]["ImageInvocation"] | components["schemas"]["ImageLerpInvocation"] | components["schemas"]["ImageMaskToTensorInvocation"] | components["schemas"]["ImageMultiplyInvocation"] | components["schemas"]["ImageNSFWBlurInvocation"] | components["schemas"]["ImageNoiseInvocation"] | components["schemas"]["ImagePanelLayoutInvocation"] | components["schemas"]["ImagePasteInvocation"] | components["schemas"]["ImageResizeInvocation"] | components["schemas"]["ImageScaleInvocation"] | components["schemas"]["ImageToLatentsInvocation"] | components["schemas"]["ImageWatermarkInvocation"] | components["schemas"]["InfillColorInvocation"] | components["schemas"]["InfillPatchMatchInvocation"] | components["schemas"]["InfillTileInvocation"] | components["schemas"]["IntegerBatchInvocation"] | components["schemas"]["IntegerCollectionInvocation"] | components["schemas"]["IntegerGenerator"] | components["schemas"]["IntegerInvocation"] | components["schemas"]["IntegerMathInvocation"] | components["schemas"]["InvertTensorMaskInvocation"] | components["schemas"]["InvokeAdjustImageHuePlusInvocation"] | components["schemas"]["InvokeEquivalentAchromaticLightnessInvocation"] | components["schemas"]["InvokeImageBlendInvocation"] | components["schemas"]["InvokeImageCompositorInvocation"] | components["schemas"]["InvokeImageDilateOrErodeInvocation"] | components["schemas"]["InvokeImageEnhanceInvocation"] | components["schemas"]["InvokeImageValueThresholdsInvocation"] | components["schemas"]["IterateInvocation"] | components["schemas"]["Krea2ConditioningRebalanceInvocation"] | components["schemas"]["Krea2DenoiseInvocation"] | components["schemas"]["Krea2LoRACollectionLoader"] | components["schemas"]["Krea2LoRALoaderInvocation"] | components["schemas"]["Krea2ModelLoaderInvocation"] | components["schemas"]["Krea2SeedVarianceInvocation"] | components["schemas"]["Krea2StyleReferenceInvocation"] | components["schemas"]["Krea2TextEncoderInvocation"] | components["schemas"]["LTX2AudioConditioningInvocation"] | components["schemas"]["LTX2DenoiseInvocation"] | components["schemas"]["LTX2DurationInvocation"] | components["schemas"]["LTX2ExtendConditioningInvocation"] | components["schemas"]["LTX2IdealDimensionsInvocation"] | components["schemas"]["LTX2ImageConditioningInvocation"] | components["schemas"]["LTX2LatentUpsampleInvocation"] | components["schemas"]["LTX2LatentsToVideoInvocation"] | components["schemas"]["LTX2LoRACollectionLoader"] | components["schemas"]["LTX2LoRALoaderInvocation"] | components["schemas"]["LTX2ModelLoaderInvocation"] | components["schemas"]["LTX2TextEncoderInvocation"] | components["schemas"]["LTX2VideoConditioningInvocation"] | components["schemas"]["LaMaInfillInvocation"] | components["schemas"]["LatentsCollectionInvocation"] | components["schemas"]["LatentsInvocation"] | components["schemas"]["LatentsToImageInvocation"] | components["schemas"]["LineartAnimeEdgeDetectionInvocation"] | components["schemas"]["LineartEdgeDetectionInvocation"] | components["schemas"]["LlavaOnevisionVllmInvocation"] | components["schemas"]["LoRACollectionLoader"] | components["schemas"]["LoRALoaderInvocation"] | components["schemas"]["LoRASelectorInvocation"] | components["schemas"]["MLSDDetectionInvocation"] | components["schemas"]["MainModelLoaderInvocation"] | components["schemas"]["MaskCombineInvocation"] | components["schemas"]["MaskEdgeInvocation"] | components["schemas"]["MaskFromAlphaInvocation"] | components["schemas"]["MaskFromIDInvocation"] | components["schemas"]["MaskTensorToImageInvocation"] | components["schemas"]["MediaPipeFaceDetectionInvocation"] | components["schemas"]["MergeMetadataInvocation"] | components["schemas"]["MergeTilesToImageInvocation"] | components["schemas"]["MetadataFieldExtractorInvocation"] | components["schemas"]["MetadataFromImageInvocation"] | components["schemas"]["MetadataInvocation"] | components["schemas"]["MetadataItemInvocation"] | components["schemas"]["MetadataItemLinkedInvocation"] | components["schemas"]["MetadataToBoolCollectionInvocation"] | components["schemas"]["MetadataToBoolInvocation"] | components["schemas"]["MetadataToControlnetsInvocation"] | components["schemas"]["MetadataToFloatCollectionInvocation"] | components["schemas"]["MetadataToFloatInvocation"] | components["schemas"]["MetadataToIPAdaptersInvocation"] | components["schemas"]["MetadataToIntegerCollectionInvocation"] | components["schemas"]["MetadataToIntegerInvocation"] | components["schemas"]["MetadataToLorasCollectionInvocation"] | components["schemas"]["MetadataToLorasInvocation"] | components["schemas"]["MetadataToModelInvocation"] | components["schemas"]["MetadataToSDXLLorasInvocation"] | components["schemas"]["MetadataToSDXLModelInvocation"] | components["schemas"]["MetadataToSchedulerInvocation"] | components["schemas"]["MetadataToStringCollectionInvocation"] | components["schemas"]["MetadataToStringInvocation"] | components["schemas"]["MetadataToT2IAdaptersInvocation"] | components["schemas"]["MetadataToVAEInvocation"] | components["schemas"]["MiniMaxH3DenoiseInvocation"] | components["schemas"]["MiniMaxH3FrameConditioningInvocation"] | components["schemas"]["MiniMaxH3HybridOverlayInvocation"] | components["schemas"]["MiniMaxH3IdealDimensionsInvocation"] | components["schemas"]["MiniMaxH3ImageReferenceInvocation"] | components["schemas"]["MiniMaxH3LatentsToImageInvocation"] | components["schemas"]["MiniMaxH3LatentsToVideoInvocation"] | components["schemas"]["MiniMaxH3LoRACollectionLoader"] | components["schemas"]["MiniMaxH3LoRALoaderInvocation"] | components["schemas"]["MiniMaxH3ModelLoaderInvocation"] | components["schemas"]["MiniMaxH3ReferenceConditioningInvocation"] | components["schemas"]["MiniMaxH3TextEncoderInvocation"] | components["schemas"]["MiniMaxH3VideoReferenceInvocation"] | components["schemas"]["ModelIdentifierInvocation"] | components["schemas"]["MultiplyInvocation"] | components["schemas"]["NoiseInvocation"] | components["schemas"]["NormalMapInvocation"] | components["schemas"]["OklabUnsharpMaskInvocation"] | components["schemas"]["OklchImageHueAdjustmentInvocation"] | components["schemas"]["OpenAIImageGenerationInvocation"] | components["schemas"]["PBRMapsInvocation"] | components["schemas"]["PairTileImageInvocation"] | components["schemas"]["PasteImageIntoBoundingBoxInvocation"] | components["schemas"]["PiDDecoderLoaderInvocation"] | components["schemas"]["PiDUpscaleInvocation"] | components["schemas"]["PiDiNetEdgeDetectionInvocation"] | components["schemas"]["PromptTemplateInvocation"] | components["schemas"]["PromptsFromFileInvocation"] | components["schemas"]["QwenImageDenoiseInvocation"] | components["schemas"]["QwenImageImageToLatentsInvocation"] | components["schemas"]["QwenImageLatentsToImageInvocation"] | components["schemas"]["QwenImageLoRACollectionLoader"] | components["schemas"]["QwenImageLoRALoaderInvocation"] | components["schemas"]["QwenImageModelLoaderInvocation"] | components["schemas"]["QwenImagePiDDecodeInvocation"] | components["schemas"]["QwenImageTextEncoderInvocation"] | components["schemas"]["RandomFloatInvocation"] | components["schemas"]["RandomIntInvocation"] | components["schemas"]["RandomRangeInvocation"] | components["schemas"]["RangeInvocation"] | components["schemas"]["RangeOfSizeInvocation"] | components["schemas"]["RectangleMaskInvocation"] | components["schemas"]["ResizeLatentsInvocation"] | components["schemas"]["RoundInvocation"] | components["schemas"]["SD3DenoiseInvocation"] | components["schemas"]["SD3ImageToLatentsInvocation"] | components["schemas"]["SD3LatentsToImageInvocation"] | components["schemas"]["SD3PiDDecodeInvocation"] | components["schemas"]["SDXLCompelPromptInvocation"] | components["schemas"]["SDXLLoRACollectionLoader"] | components["schemas"]["SDXLLoRALoaderInvocation"] | components["schemas"]["SDXLModelLoaderInvocation"] | components["schemas"]["SDXLPiDDecodeInvocation"] | components["schemas"]["SDXLRefinerCompelPromptInvocation"] | components["schemas"]["SDXLRefinerModelLoaderInvocation"] | components["schemas"]["SaveImageInvocation"] | components["schemas"]["SaveImageToFileInvocation"] | components["schemas"]["ScaleLatentsInvocation"] | components["schemas"]["SchedulerInvocation"] | components["schemas"]["Sd3ModelLoaderInvocation"] | components["schemas"]["Sd3TextEncoderInvocation"] | components["schemas"]["SeamlessModeInvocation"] | components["schemas"]["SeedreamImageGenerationInvocation"] | components["schemas"]["SegmentAnythingInvocation"] | components["schemas"]["ShowImageInvocation"] | components["schemas"]["SpandrelImageToImageAutoscaleInvocation"] | components["schemas"]["SpandrelImageToImageInvocation"] | components["schemas"]["StateEmptyInvocation"] | components["schemas"]["StateGetInvocation"] | components["schemas"]["StateMergeInvocation"] | components["schemas"]["StateSetInvocation"] | components["schemas"]["StringBatchInvocation"] | components["schemas"]["StringCollectionInvocation"] | components["schemas"]["StringGenerator"] | components["schemas"]["StringInvocation"] | components["schemas"]["StringJoinInvocation"] | components["schemas"]["StringJoinThreeInvocation"] | components["schemas"]["StringReplaceInvocation"] | components["schemas"]["StringSplitInvocation"] | components["schemas"]["StringSplitNegInvocation"] | components["schemas"]["SubtractInvocation"] | components["schemas"]["T2IAdapterInvocation"] | components["schemas"]["TextLLMInvocation"] | components["schemas"]["TextLLMWithPresetInvocation"] | components["schemas"]["TileToPropertiesInvocation"] | components["schemas"]["TiledMultiDiffusionDenoiseLatents"] | components["schemas"]["UnsharpMaskInvocation"] | components["schemas"]["VAELoaderInvocation"] | components["schemas"]["VideoConcatInvocation"] | components["schemas"]["VideoFrameExtractInvocation"] | components["schemas"]["VideoInvocation"] | components["schemas"]["WanDenoiseInvocation"] | components["schemas"]["WanI2VIdealDimensionsInvocation"] | components["schemas"]["WanImageToLatentsInvocation"] | components["schemas"]["WanLatentsToImageInvocation"] | components["schemas"]["WanLatentsToVideoInvocation"] | components["schemas"]["WanLoRACollectionLoader"] | components["schemas"]["WanLoRALoaderInvocation"] | components["schemas"]["WanModelLoaderInvocation"] | components["schemas"]["WanRefImageEncoderInvocation"] | components["schemas"]["WanTI2VIdealDimensionsInvocation"] | components["schemas"]["WanTextEncoderInvocation"] | components["schemas"]["WanVideoDenoiseInvocation"] | components["schemas"]["WorkflowReturnGetInvocation"] | components["schemas"]["WorkflowReturnInvocation"] | components["schemas"]["WorkflowReturnValueInvocation"] | components["schemas"]["ZImageControlInvocation"] | components["schemas"]["ZImageDenoiseInvocation"] | components["schemas"]["ZImageDenoiseMetaInvocation"] | components["schemas"]["ZImageImageToLatentsInvocation"] | components["schemas"]["ZImageLatentsToImageInvocation"] | components["schemas"]["ZImageLoRACollectionLoader"] | components["schemas"]["ZImageLoRALoaderInvocation"] | components["schemas"]["ZImageModelLoaderInvocation"] | components["schemas"]["ZImagePiDDecodeInvocation"] | components["schemas"]["ZImageSeedVarianceEnhancerInvocation"] | components["schemas"]["ZImageTextEncoderInvocation"]; + invocation: components["schemas"]["AddInvocation"] | components["schemas"]["AlibabaCloudImageGenerationInvocation"] | components["schemas"]["AlphaMaskToTensorInvocation"] | components["schemas"]["AnimaDenoiseInvocation"] | components["schemas"]["AnimaDenoiseMetaInvocation"] | components["schemas"]["AnimaImageToLatentsInvocation"] | components["schemas"]["AnimaLLLiteInvocation"] | components["schemas"]["AnimaLatentsToImageInvocation"] | components["schemas"]["AnimaLoRACollectionLoader"] | components["schemas"]["AnimaLoRALoaderInvocation"] | components["schemas"]["AnimaModelLoaderInvocation"] | components["schemas"]["AnimaTextEncoderInvocation"] | components["schemas"]["ApplyMaskTensorToImageInvocation"] | components["schemas"]["ApplyMaskToImageInvocation"] | components["schemas"]["AtlasCloudImageGenerationInvocation"] | components["schemas"]["BlankImageInvocation"] | components["schemas"]["BlendLatentsInvocation"] | components["schemas"]["BooleanCollectionInvocation"] | components["schemas"]["BooleanInvocation"] | components["schemas"]["BooleanLogicInvocation"] | components["schemas"]["BoundingBoxInvocation"] | components["schemas"]["CLIPSkipInvocation"] | components["schemas"]["CV2InfillInvocation"] | components["schemas"]["CalculateImageTilesEvenSplitInvocation"] | components["schemas"]["CalculateImageTilesInvocation"] | components["schemas"]["CalculateImageTilesMinimumOverlapInvocation"] | components["schemas"]["CallSavedWorkflowInvocation"] | components["schemas"]["CannyEdgeDetectionInvocation"] | components["schemas"]["CanvasOutputInvocation"] | components["schemas"]["CanvasPasteBackInvocation"] | components["schemas"]["CanvasV2MaskAndCropInvocation"] | components["schemas"]["CenterPadCropInvocation"] | components["schemas"]["CogView4DenoiseInvocation"] | components["schemas"]["CogView4ImageToLatentsInvocation"] | components["schemas"]["CogView4LatentsToImageInvocation"] | components["schemas"]["CogView4ModelLoaderInvocation"] | components["schemas"]["CogView4TextEncoderInvocation"] | components["schemas"]["CollectInvocation"] | components["schemas"]["CollectionCartesianInvocation"] | components["schemas"]["CollectionConcatInvocation"] | components["schemas"]["CollectionZipInvocation"] | components["schemas"]["ColorCorrectInvocation"] | components["schemas"]["ColorInvocation"] | components["schemas"]["ColorMapInvocation"] | components["schemas"]["CompelInvocation"] | components["schemas"]["ConditioningCollectionInvocation"] | components["schemas"]["ConditioningInvocation"] | components["schemas"]["ContentShuffleInvocation"] | components["schemas"]["ControlNetInvocation"] | components["schemas"]["CoreMetadataInvocation"] | components["schemas"]["CreateDenoiseMaskInvocation"] | components["schemas"]["CreateGradientMaskInvocation"] | components["schemas"]["CropImageToBoundingBoxInvocation"] | components["schemas"]["CropLatentsCoreInvocation"] | components["schemas"]["CvInpaintInvocation"] | components["schemas"]["DWOpenposeDetectionInvocation"] | components["schemas"]["DecodeInvisibleWatermarkInvocation"] | components["schemas"]["DenoiseLatentsInvocation"] | components["schemas"]["DenoiseLatentsMetaInvocation"] | components["schemas"]["DepthAnythingDepthEstimationInvocation"] | components["schemas"]["DivideInvocation"] | components["schemas"]["DynamicPromptInvocation"] | components["schemas"]["ESRGANInvocation"] | components["schemas"]["ErnieImageDenoiseInvocation"] | components["schemas"]["ErnieImageModelLoaderInvocation"] | components["schemas"]["ErnieImagePromptEnhancerInvocation"] | components["schemas"]["ErnieImageTextEncoderInvocation"] | components["schemas"]["ErnieImageVaeDecodeInvocation"] | components["schemas"]["ExpandMaskWithFadeInvocation"] | components["schemas"]["ExtractVideoRangeInvocation"] | components["schemas"]["FLUXLoRACollectionLoader"] | components["schemas"]["FaceIdentifierInvocation"] | components["schemas"]["FaceMaskInvocation"] | components["schemas"]["FaceOffInvocation"] | components["schemas"]["FloatBatchInvocation"] | components["schemas"]["FloatCollectionInvocation"] | components["schemas"]["FloatGenerator"] | components["schemas"]["FloatInvocation"] | components["schemas"]["FloatLinearRangeInvocation"] | components["schemas"]["FloatMathInvocation"] | components["schemas"]["FloatToIntegerInvocation"] | components["schemas"]["Flux2DenoiseInvocation"] | components["schemas"]["Flux2DevLoRACollectionLoader"] | components["schemas"]["Flux2DevLoRALoaderInvocation"] | components["schemas"]["Flux2DevModelLoaderInvocation"] | components["schemas"]["Flux2DevTextEncoderInvocation"] | components["schemas"]["Flux2KleinLoRACollectionLoader"] | components["schemas"]["Flux2KleinLoRALoaderInvocation"] | components["schemas"]["Flux2KleinModelLoaderInvocation"] | components["schemas"]["Flux2KleinTextEncoderInvocation"] | components["schemas"]["Flux2PiDDecodeInvocation"] | components["schemas"]["Flux2VaeDecodeInvocation"] | components["schemas"]["Flux2VaeEncodeInvocation"] | components["schemas"]["FluxControlLoRALoaderInvocation"] | components["schemas"]["FluxControlNetInvocation"] | components["schemas"]["FluxDenoiseInvocation"] | components["schemas"]["FluxDenoiseLatentsMetaInvocation"] | components["schemas"]["FluxFillInvocation"] | components["schemas"]["FluxIPAdapterInvocation"] | components["schemas"]["FluxKontextConcatenateImagesInvocation"] | components["schemas"]["FluxKontextInvocation"] | components["schemas"]["FluxLoRALoaderInvocation"] | components["schemas"]["FluxModelLoaderInvocation"] | components["schemas"]["FluxPiDDecodeInvocation"] | components["schemas"]["FluxReduxInvocation"] | components["schemas"]["FluxTextEncoderInvocation"] | components["schemas"]["FluxVaeDecodeInvocation"] | components["schemas"]["FluxVaeEncodeInvocation"] | components["schemas"]["ForInvocation"] | components["schemas"]["ForReturnInvocation"] | components["schemas"]["FreeUInvocation"] | components["schemas"]["GeminiImageGenerationInvocation"] | components["schemas"]["Gemma2EncoderLoaderInvocation"] | components["schemas"]["GetMaskBoundingBoxInvocation"] | components["schemas"]["GroundingDinoInvocation"] | components["schemas"]["HEDEdgeDetectionInvocation"] | components["schemas"]["HeuristicResizeInvocation"] | components["schemas"]["IPAdapterInvocation"] | components["schemas"]["IdealSizeInvocation"] | components["schemas"]["Ideogram4CaptionBuilderInvocation"] | components["schemas"]["Ideogram4DenoiseInvocation"] | components["schemas"]["Ideogram4LatentsToImageInvocation"] | components["schemas"]["Ideogram4ModelLoaderInvocation"] | components["schemas"]["Ideogram4TextEncoderInvocation"] | components["schemas"]["IfInvocation"] | components["schemas"]["ImageBatchInvocation"] | components["schemas"]["ImageBlurInvocation"] | components["schemas"]["ImageChannelInvocation"] | components["schemas"]["ImageChannelMultiplyInvocation"] | components["schemas"]["ImageChannelOffsetInvocation"] | components["schemas"]["ImageCollectionInvocation"] | components["schemas"]["ImageConvertInvocation"] | components["schemas"]["ImageCropInvocation"] | components["schemas"]["ImageGenerator"] | components["schemas"]["ImageHueAdjustmentInvocation"] | components["schemas"]["ImageInverseLerpInvocation"] | components["schemas"]["ImageInvocation"] | components["schemas"]["ImageLerpInvocation"] | components["schemas"]["ImageMaskToTensorInvocation"] | components["schemas"]["ImageMultiplyInvocation"] | components["schemas"]["ImageNSFWBlurInvocation"] | components["schemas"]["ImageNoiseInvocation"] | components["schemas"]["ImagePanelLayoutInvocation"] | components["schemas"]["ImagePasteInvocation"] | components["schemas"]["ImageResizeInvocation"] | components["schemas"]["ImageScaleInvocation"] | components["schemas"]["ImageToLatentsInvocation"] | components["schemas"]["ImageWatermarkInvocation"] | components["schemas"]["InfillColorInvocation"] | components["schemas"]["InfillPatchMatchInvocation"] | components["schemas"]["InfillTileInvocation"] | components["schemas"]["IntegerBatchInvocation"] | components["schemas"]["IntegerCollectionInvocation"] | components["schemas"]["IntegerGenerator"] | components["schemas"]["IntegerInvocation"] | components["schemas"]["IntegerMathInvocation"] | components["schemas"]["InvertTensorMaskInvocation"] | components["schemas"]["InvokeAdjustImageHuePlusInvocation"] | components["schemas"]["InvokeEquivalentAchromaticLightnessInvocation"] | components["schemas"]["InvokeImageBlendInvocation"] | components["schemas"]["InvokeImageCompositorInvocation"] | components["schemas"]["InvokeImageDilateOrErodeInvocation"] | components["schemas"]["InvokeImageEnhanceInvocation"] | components["schemas"]["InvokeImageValueThresholdsInvocation"] | components["schemas"]["IterateInvocation"] | components["schemas"]["Krea2ConditioningRebalanceInvocation"] | components["schemas"]["Krea2DenoiseInvocation"] | components["schemas"]["Krea2LoRACollectionLoader"] | components["schemas"]["Krea2LoRALoaderInvocation"] | components["schemas"]["Krea2ModelLoaderInvocation"] | components["schemas"]["Krea2SeedVarianceInvocation"] | components["schemas"]["Krea2StyleReferenceInvocation"] | components["schemas"]["Krea2TextEncoderInvocation"] | components["schemas"]["LTX2AudioConditioningInvocation"] | components["schemas"]["LTX2DenoiseInvocation"] | components["schemas"]["LTX2DurationInvocation"] | components["schemas"]["LTX2ExtendConditioningInvocation"] | components["schemas"]["LTX2IdealDimensionsInvocation"] | components["schemas"]["LTX2ImageConditioningInvocation"] | components["schemas"]["LTX2LatentUpsampleInvocation"] | components["schemas"]["LTX2LatentsToVideoInvocation"] | components["schemas"]["LTX2LoRACollectionLoader"] | components["schemas"]["LTX2LoRALoaderInvocation"] | components["schemas"]["LTX2ModelLoaderInvocation"] | components["schemas"]["LTX2TextEncoderInvocation"] | components["schemas"]["LTX2VideoConditioningInvocation"] | components["schemas"]["LaMaInfillInvocation"] | components["schemas"]["LatentsCollectionInvocation"] | components["schemas"]["LatentsInvocation"] | components["schemas"]["LatentsToImageInvocation"] | components["schemas"]["LineartAnimeEdgeDetectionInvocation"] | components["schemas"]["LineartEdgeDetectionInvocation"] | components["schemas"]["LlavaOnevisionVllmInvocation"] | components["schemas"]["LoRACollectionLoader"] | components["schemas"]["LoRALoaderInvocation"] | components["schemas"]["LoRASelectorInvocation"] | components["schemas"]["MLSDDetectionInvocation"] | components["schemas"]["MainModelLoaderInvocation"] | components["schemas"]["MaskCombineInvocation"] | components["schemas"]["MaskEdgeInvocation"] | components["schemas"]["MaskFromAlphaInvocation"] | components["schemas"]["MaskFromIDInvocation"] | components["schemas"]["MaskTensorToImageInvocation"] | components["schemas"]["MediaPipeFaceDetectionInvocation"] | components["schemas"]["MergeMetadataInvocation"] | components["schemas"]["MergeTilesToImageInvocation"] | components["schemas"]["MetadataFieldExtractorInvocation"] | components["schemas"]["MetadataFromImageInvocation"] | components["schemas"]["MetadataInvocation"] | components["schemas"]["MetadataItemInvocation"] | components["schemas"]["MetadataItemLinkedInvocation"] | components["schemas"]["MetadataToBoolCollectionInvocation"] | components["schemas"]["MetadataToBoolInvocation"] | components["schemas"]["MetadataToControlnetsInvocation"] | components["schemas"]["MetadataToFloatCollectionInvocation"] | components["schemas"]["MetadataToFloatInvocation"] | components["schemas"]["MetadataToIPAdaptersInvocation"] | components["schemas"]["MetadataToIntegerCollectionInvocation"] | components["schemas"]["MetadataToIntegerInvocation"] | components["schemas"]["MetadataToLorasCollectionInvocation"] | components["schemas"]["MetadataToLorasInvocation"] | components["schemas"]["MetadataToModelInvocation"] | components["schemas"]["MetadataToSDXLLorasInvocation"] | components["schemas"]["MetadataToSDXLModelInvocation"] | components["schemas"]["MetadataToSchedulerInvocation"] | components["schemas"]["MetadataToStringCollectionInvocation"] | components["schemas"]["MetadataToStringInvocation"] | components["schemas"]["MetadataToT2IAdaptersInvocation"] | components["schemas"]["MetadataToVAEInvocation"] | components["schemas"]["MiniMaxH3DenoiseInvocation"] | components["schemas"]["MiniMaxH3FrameConditioningInvocation"] | components["schemas"]["MiniMaxH3HybridOverlayInvocation"] | components["schemas"]["MiniMaxH3IdealDimensionsInvocation"] | components["schemas"]["MiniMaxH3ImageReferenceInvocation"] | components["schemas"]["MiniMaxH3LatentsToImageInvocation"] | components["schemas"]["MiniMaxH3LatentsToVideoInvocation"] | components["schemas"]["MiniMaxH3LoRACollectionLoader"] | components["schemas"]["MiniMaxH3LoRALoaderInvocation"] | components["schemas"]["MiniMaxH3ModelLoaderInvocation"] | components["schemas"]["MiniMaxH3ReferenceConditioningInvocation"] | components["schemas"]["MiniMaxH3TextEncoderInvocation"] | components["schemas"]["MiniMaxH3VideoReferenceInvocation"] | components["schemas"]["ModelIdentifierInvocation"] | components["schemas"]["MultiplyInvocation"] | components["schemas"]["NoiseInvocation"] | components["schemas"]["NormalMapInvocation"] | components["schemas"]["OklabUnsharpMaskInvocation"] | components["schemas"]["OklchImageHueAdjustmentInvocation"] | components["schemas"]["OpenAIImageGenerationInvocation"] | components["schemas"]["PBRMapsInvocation"] | components["schemas"]["PairTileImageInvocation"] | components["schemas"]["PasteImageIntoBoundingBoxInvocation"] | components["schemas"]["PiDDecoderLoaderInvocation"] | components["schemas"]["PiDUpscaleInvocation"] | components["schemas"]["PiDiNetEdgeDetectionInvocation"] | components["schemas"]["PromptTemplateInvocation"] | components["schemas"]["PromptsFromFileInvocation"] | components["schemas"]["QwenImage21DenoiseInvocation"] | components["schemas"]["QwenImage21ImageToLatentsInvocation"] | components["schemas"]["QwenImage21LatentsToImageInvocation"] | components["schemas"]["QwenImage21ModelLoaderInvocation"] | components["schemas"]["QwenImage21TextEncoderInvocation"] | components["schemas"]["QwenImageDenoiseInvocation"] | components["schemas"]["QwenImageImageToLatentsInvocation"] | components["schemas"]["QwenImageLatentsToImageInvocation"] | components["schemas"]["QwenImageLoRACollectionLoader"] | components["schemas"]["QwenImageLoRALoaderInvocation"] | components["schemas"]["QwenImageModelLoaderInvocation"] | components["schemas"]["QwenImagePiDDecodeInvocation"] | components["schemas"]["QwenImageTextEncoderInvocation"] | components["schemas"]["RandomFloatInvocation"] | components["schemas"]["RandomIntInvocation"] | components["schemas"]["RandomRangeInvocation"] | components["schemas"]["RangeInvocation"] | components["schemas"]["RangeOfSizeInvocation"] | components["schemas"]["RectangleMaskInvocation"] | components["schemas"]["ResizeLatentsInvocation"] | components["schemas"]["RoundInvocation"] | components["schemas"]["SD3DenoiseInvocation"] | components["schemas"]["SD3ImageToLatentsInvocation"] | components["schemas"]["SD3LatentsToImageInvocation"] | components["schemas"]["SD3PiDDecodeInvocation"] | components["schemas"]["SDXLCompelPromptInvocation"] | components["schemas"]["SDXLLoRACollectionLoader"] | components["schemas"]["SDXLLoRALoaderInvocation"] | components["schemas"]["SDXLModelLoaderInvocation"] | components["schemas"]["SDXLPiDDecodeInvocation"] | components["schemas"]["SDXLRefinerCompelPromptInvocation"] | components["schemas"]["SDXLRefinerModelLoaderInvocation"] | components["schemas"]["SaveImageInvocation"] | components["schemas"]["SaveImageToFileInvocation"] | components["schemas"]["ScaleLatentsInvocation"] | components["schemas"]["SchedulerInvocation"] | components["schemas"]["Sd3ModelLoaderInvocation"] | components["schemas"]["Sd3TextEncoderInvocation"] | components["schemas"]["SeamlessModeInvocation"] | components["schemas"]["SeedreamImageGenerationInvocation"] | components["schemas"]["SegmentAnythingInvocation"] | components["schemas"]["ShowImageInvocation"] | components["schemas"]["SpandrelImageToImageAutoscaleInvocation"] | components["schemas"]["SpandrelImageToImageInvocation"] | components["schemas"]["StateEmptyInvocation"] | components["schemas"]["StateGetInvocation"] | components["schemas"]["StateMergeInvocation"] | components["schemas"]["StateSetInvocation"] | components["schemas"]["StringBatchInvocation"] | components["schemas"]["StringCollectionInvocation"] | components["schemas"]["StringGenerator"] | components["schemas"]["StringInvocation"] | components["schemas"]["StringJoinInvocation"] | components["schemas"]["StringJoinThreeInvocation"] | components["schemas"]["StringReplaceInvocation"] | components["schemas"]["StringSplitInvocation"] | components["schemas"]["StringSplitNegInvocation"] | components["schemas"]["SubtractInvocation"] | components["schemas"]["T2IAdapterInvocation"] | components["schemas"]["TextLLMInvocation"] | components["schemas"]["TextLLMWithPresetInvocation"] | components["schemas"]["TileToPropertiesInvocation"] | components["schemas"]["TiledMultiDiffusionDenoiseLatents"] | components["schemas"]["UnsharpMaskInvocation"] | components["schemas"]["VAELoaderInvocation"] | components["schemas"]["VideoConcatInvocation"] | components["schemas"]["VideoFrameExtractInvocation"] | components["schemas"]["VideoInvocation"] | components["schemas"]["WanDenoiseInvocation"] | components["schemas"]["WanI2VIdealDimensionsInvocation"] | components["schemas"]["WanImageToLatentsInvocation"] | components["schemas"]["WanLatentsToImageInvocation"] | components["schemas"]["WanLatentsToVideoInvocation"] | components["schemas"]["WanLoRACollectionLoader"] | components["schemas"]["WanLoRALoaderInvocation"] | components["schemas"]["WanModelLoaderInvocation"] | components["schemas"]["WanRefImageEncoderInvocation"] | components["schemas"]["WanTI2VIdealDimensionsInvocation"] | components["schemas"]["WanTextEncoderInvocation"] | components["schemas"]["WanVideoDenoiseInvocation"] | components["schemas"]["WorkflowReturnGetInvocation"] | components["schemas"]["WorkflowReturnInvocation"] | components["schemas"]["WorkflowReturnValueInvocation"] | components["schemas"]["ZImageControlInvocation"] | components["schemas"]["ZImageDenoiseInvocation"] | components["schemas"]["ZImageDenoiseMetaInvocation"] | components["schemas"]["ZImageImageToLatentsInvocation"] | components["schemas"]["ZImageLatentsToImageInvocation"] | components["schemas"]["ZImageLoRACollectionLoader"] | components["schemas"]["ZImageLoRALoaderInvocation"] | components["schemas"]["ZImageModelLoaderInvocation"] | components["schemas"]["ZImagePiDDecodeInvocation"] | components["schemas"]["ZImageSeedVarianceEnhancerInvocation"] | components["schemas"]["ZImageTextEncoderInvocation"]; /** * Invocation Source Id * @description The ID of the prepared invocation's source node @@ -30173,6 +30178,95 @@ export type components = { */ pruned: boolean; }; + /** + * Main_Checkpoint_QwenImage21_Config + * @description Model config for Qwen-Image-2.1 single-file transformers (bf16, ComfyUI fp8 scaled or int8 convrot). + */ + Main_Checkpoint_QwenImage21_Config: { + /** + * Key + * @description A unique key for this model. + */ + key: string; + /** + * Hash + * @description The hash of the model file(s). + */ + hash: string; + /** + * Path + * @description Path to the model on the filesystem. Relative paths are relative to the Invoke root directory. + */ + path: string; + /** + * File Size + * @description The size of the model in bytes. + */ + file_size: number; + /** + * Name + * @description Name of the model. + */ + name: string; + /** + * Description + * @description Model description + */ + description: string | null; + /** + * Source + * @description The original source of the model (path, URL or repo_id). + */ + source: string; + /** @description The type of source */ + source_type: components["schemas"]["ModelSourceType"]; + /** + * Source Api Response + * @description The original API response from the source, as stringified JSON. + */ + source_api_response: string | null; + /** + * Source Url + * @description Optional URL for the model (e.g. download page or model page). + */ + source_url: string | null; + /** + * Cover Image + * @description Url for image to preview model + */ + cover_image: string | null; + /** + * Type + * @default main + * @constant + */ + type: "main"; + /** + * Trigger Phrases + * @description Set of trigger phrases for this model + */ + trigger_phrases: string[] | null; + /** @description Default settings for this model */ + default_settings: components["schemas"]["MainModelDefaultSettings"] | null; + /** + * Config Path + * @description Path to the config for this model, if any. + */ + config_path: string | null; + /** + * Base + * @default qwen-image-2-1 + * @constant + */ + base: "qwen-image-2-1"; + /** + * Format + * @default checkpoint + * @constant + */ + format: "checkpoint"; + variant: components["schemas"]["QwenImage21VariantType"]; + }; /** * Main_Checkpoint_QwenImage_Config * @description Model config for Qwen Image single-file checkpoint models (safetensors, etc). @@ -31534,6 +31628,92 @@ export type components = { */ components_only: boolean; }; + /** + * Main_Diffusers_QwenImage21_Config + * @description Model config for Qwen-Image-2.1 diffusers pipelines. + */ + Main_Diffusers_QwenImage21_Config: { + /** + * Key + * @description A unique key for this model. + */ + key: string; + /** + * Hash + * @description The hash of the model file(s). + */ + hash: string; + /** + * Path + * @description Path to the model on the filesystem. Relative paths are relative to the Invoke root directory. + */ + path: string; + /** + * File Size + * @description The size of the model in bytes. + */ + file_size: number; + /** + * Name + * @description Name of the model. + */ + name: string; + /** + * Description + * @description Model description + */ + description: string | null; + /** + * Source + * @description The original source of the model (path, URL or repo_id). + */ + source: string; + /** @description The type of source */ + source_type: components["schemas"]["ModelSourceType"]; + /** + * Source Api Response + * @description The original API response from the source, as stringified JSON. + */ + source_api_response: string | null; + /** + * Source Url + * @description Optional URL for the model (e.g. download page or model page). + */ + source_url: string | null; + /** + * Cover Image + * @description Url for image to preview model + */ + cover_image: string | null; + /** + * Type + * @default main + * @constant + */ + type: "main"; + /** + * Trigger Phrases + * @description Set of trigger phrases for this model + */ + trigger_phrases: string[] | null; + /** @description Default settings for this model */ + default_settings: components["schemas"]["MainModelDefaultSettings"] | null; + /** + * Format + * @default diffusers + * @constant + */ + format: "diffusers"; + /** @default */ + repo_variant: components["schemas"]["ModelRepoVariant"]; + /** + * Base + * @default qwen-image-2-1 + * @constant + */ + base: "qwen-image-2-1"; + variant: components["schemas"]["QwenImage21VariantType"]; + }; /** * Main_Diffusers_QwenImage_Config * @description Model config for Qwen Image diffusers models (both txt2img and edit). @@ -32691,6 +32871,95 @@ export type components = { format: "gguf_quantized"; variant: components["schemas"]["Krea2VariantType"]; }; + /** + * Main_GGUF_QwenImage21_Config + * @description Model config for GGUF-quantized Qwen-Image-2.1 transformers. + */ + Main_GGUF_QwenImage21_Config: { + /** + * Key + * @description A unique key for this model. + */ + key: string; + /** + * Hash + * @description The hash of the model file(s). + */ + hash: string; + /** + * Path + * @description Path to the model on the filesystem. Relative paths are relative to the Invoke root directory. + */ + path: string; + /** + * File Size + * @description The size of the model in bytes. + */ + file_size: number; + /** + * Name + * @description Name of the model. + */ + name: string; + /** + * Description + * @description Model description + */ + description: string | null; + /** + * Source + * @description The original source of the model (path, URL or repo_id). + */ + source: string; + /** @description The type of source */ + source_type: components["schemas"]["ModelSourceType"]; + /** + * Source Api Response + * @description The original API response from the source, as stringified JSON. + */ + source_api_response: string | null; + /** + * Source Url + * @description Optional URL for the model (e.g. download page or model page). + */ + source_url: string | null; + /** + * Cover Image + * @description Url for image to preview model + */ + cover_image: string | null; + /** + * Type + * @default main + * @constant + */ + type: "main"; + /** + * Trigger Phrases + * @description Set of trigger phrases for this model + */ + trigger_phrases: string[] | null; + /** @description Default settings for this model */ + default_settings: components["schemas"]["MainModelDefaultSettings"] | null; + /** + * Config Path + * @description Path to the config for this model, if any. + */ + config_path: string | null; + /** + * Base + * @default qwen-image-2-1 + * @constant + */ + base: "qwen-image-2-1"; + /** + * Format + * @default gguf_quantized + * @constant + */ + format: "gguf_quantized"; + variant: components["schemas"]["QwenImage21VariantType"]; + }; /** * Main_GGUF_QwenImage_Config * @description Model config for GGUF-quantized Qwen Image transformer models. @@ -36956,7 +37225,7 @@ export type components = { * Config * @description The installed model's config */ - config: components["schemas"]["Main_Diffusers_SD1_Config"] | components["schemas"]["Main_Diffusers_SD2_Config"] | components["schemas"]["Main_Diffusers_SDXL_Config"] | components["schemas"]["Main_Diffusers_SDXLRefiner_Config"] | components["schemas"]["Main_Diffusers_SD3_Config"] | components["schemas"]["Main_Diffusers_FLUX_Config"] | components["schemas"]["Main_Diffusers_Flux2_Config"] | components["schemas"]["Main_Diffusers_CogView4_Config"] | components["schemas"]["Main_Diffusers_QwenImage_Config"] | components["schemas"]["Main_Diffusers_Wan_Config"] | components["schemas"]["Main_Diffusers_ZImage_Config"] | components["schemas"]["Main_Diffusers_ErnieImage_Config"] | components["schemas"]["Main_Diffusers_Ideogram4_Config"] | components["schemas"]["Main_Diffusers_Krea2_Config"] | components["schemas"]["Main_Diffusers_MiniMaxH3_Config"] | components["schemas"]["Main_Diffusers_LTX2_Config"] | components["schemas"]["Main_Checkpoint_SD1_Config"] | components["schemas"]["Main_Checkpoint_SD2_Config"] | components["schemas"]["Main_Checkpoint_SDXL_Config"] | components["schemas"]["Main_Checkpoint_SDXLRefiner_Config"] | components["schemas"]["Main_Checkpoint_Flux2_Config"] | components["schemas"]["Main_Checkpoint_FLUX_Config"] | components["schemas"]["Main_Checkpoint_QwenImage_Config"] | components["schemas"]["Main_Checkpoint_Wan_Config"] | components["schemas"]["Main_Checkpoint_ZImage_Config"] | components["schemas"]["Main_Checkpoint_ErnieImage_Config"] | components["schemas"]["Main_Checkpoint_Ideogram4_Config"] | components["schemas"]["Main_Checkpoint_Krea2_Config"] | components["schemas"]["Main_Checkpoint_Anima_Config"] | components["schemas"]["Main_Checkpoint_MiniMaxH3_Config"] | components["schemas"]["Main_Checkpoint_LTX2_Config"] | components["schemas"]["Main_BnBNF4_FLUX_Config"] | components["schemas"]["Main_GGUF_Flux2_Config"] | components["schemas"]["Main_GGUF_FLUX_Config"] | components["schemas"]["Main_GGUF_QwenImage_Config"] | components["schemas"]["Main_GGUF_Wan_Config"] | components["schemas"]["Main_GGUF_ZImage_Config"] | components["schemas"]["Main_GGUF_Krea2_Config"] | components["schemas"]["Main_GGUF_Ideogram4_Config"] | components["schemas"]["Main_GGUF_ErnieImage_Config"] | components["schemas"]["Main_SDNQ_Diffusers_Flux2_Config"] | components["schemas"]["Main_SDNQ_Diffusers_FLUX_Config"] | components["schemas"]["Main_SDNQ_Diffusers_ZImage_Config"] | components["schemas"]["VAE_Checkpoint_SD1_Config"] | components["schemas"]["VAE_Checkpoint_SD2_Config"] | components["schemas"]["VAE_Checkpoint_SDXL_Config"] | components["schemas"]["VAE_Checkpoint_FLUX_Config"] | components["schemas"]["VAE_Checkpoint_SD3_Config"] | components["schemas"]["VAE_Checkpoint_Flux2_Config"] | components["schemas"]["VAE_Checkpoint_Wan_Config"] | components["schemas"]["VAE_Checkpoint_QwenImage_Config"] | components["schemas"]["VAE_Checkpoint_Anima_Config"] | components["schemas"]["VAE_Diffusers_SD1_Config"] | components["schemas"]["VAE_Diffusers_SDXL_Config"] | components["schemas"]["VAE_Diffusers_FLUX_Config"] | components["schemas"]["VAE_Diffusers_SD3_Config"] | components["schemas"]["VAE_Diffusers_Flux2_Config"] | components["schemas"]["VAE_Diffusers_Wan_Config"] | components["schemas"]["PiDDecoder_Checkpoint_FLUX_Config"] | components["schemas"]["PiDDecoder_Checkpoint_Flux2_Config"] | components["schemas"]["PiDDecoder_Checkpoint_SD3_Config"] | components["schemas"]["PiDDecoder_Checkpoint_SDXL_Config"] | components["schemas"]["PiDDecoder_Checkpoint_QwenImage_Config"] | components["schemas"]["ControlNet_Checkpoint_SD1_Config"] | components["schemas"]["ControlNet_Checkpoint_SD2_Config"] | components["schemas"]["ControlNet_Checkpoint_SDXL_Config"] | components["schemas"]["ControlNet_Checkpoint_FLUX_Config"] | components["schemas"]["ControlNet_Checkpoint_ZImage_Config"] | components["schemas"]["ControlNet_Checkpoint_Anima_Config"] | components["schemas"]["ControlNet_Diffusers_SD1_Config"] | components["schemas"]["ControlNet_Diffusers_SD2_Config"] | components["schemas"]["ControlNet_Diffusers_SDXL_Config"] | components["schemas"]["ControlNet_Diffusers_FLUX_Config"] | components["schemas"]["LoRA_LyCORIS_SD1_Config"] | components["schemas"]["LoRA_LyCORIS_SD2_Config"] | components["schemas"]["LoRA_LyCORIS_SDXL_Config"] | components["schemas"]["LoRA_LyCORIS_Flux2_Config"] | components["schemas"]["LoRA_LyCORIS_FLUX_Config"] | components["schemas"]["LoRA_LyCORIS_ZImage_Config"] | components["schemas"]["LoRA_LyCORIS_Krea2_Config"] | components["schemas"]["LoRA_LyCORIS_QwenImage_Config"] | components["schemas"]["LoRA_LyCORIS_LTX2_Config"] | components["schemas"]["LoRA_LyCORIS_MiniMaxH3_Config"] | components["schemas"]["LoRA_LyCORIS_Wan_Config"] | components["schemas"]["LoRA_LyCORIS_Anima_Config"] | components["schemas"]["LoRA_OMI_SDXL_Config"] | components["schemas"]["LoRA_OMI_FLUX_Config"] | components["schemas"]["LoRA_Diffusers_SD1_Config"] | components["schemas"]["LoRA_Diffusers_SD2_Config"] | components["schemas"]["LoRA_Diffusers_SDXL_Config"] | components["schemas"]["LoRA_Diffusers_Flux2_Config"] | components["schemas"]["LoRA_Diffusers_FLUX_Config"] | components["schemas"]["LoRA_Diffusers_ZImage_Config"] | components["schemas"]["ControlLoRA_LyCORIS_FLUX_Config"] | components["schemas"]["T5Encoder_T5Encoder_Config"] | components["schemas"]["T5Encoder_BnBLLMint8_Config"] | components["schemas"]["T5Encoder_SDNQ_Config"] | components["schemas"]["T5Encoder_GGUF_Config"] | components["schemas"]["Qwen3VLEncoder_Checkpoint_MiniMaxH3_Config"] | components["schemas"]["Qwen3VLEncoder_Checkpoint_Config"] | components["schemas"]["Qwen3VLEncoder_GGUF_Config"] | components["schemas"]["Qwen3VLEncoder_Qwen3VLEncoder_Config"] | components["schemas"]["Qwen35Encoder_Checkpoint_Config"] | components["schemas"]["Qwen3Encoder_Qwen3Encoder_Config"] | components["schemas"]["Qwen3Encoder_Checkpoint_Config"] | components["schemas"]["Qwen3Encoder_GGUF_Config"] | components["schemas"]["Qwen3Encoder_SDNQ_Folder_Config"] | components["schemas"]["MistralEncoder_Diffusers_Config"] | components["schemas"]["MistralEncoder_Checkpoint_Config"] | components["schemas"]["MistralEncoder_GGUF_Config"] | components["schemas"]["Gemma2Encoder_Gemma2Encoder_Config"] | components["schemas"]["Gemma4Encoder_Gemma4Encoder_LTX2_Config"] | components["schemas"]["Gemma2Encoder_GGUF_Config"] | components["schemas"]["QwenVLEncoder_Diffusers_Config"] | components["schemas"]["QwenVLEncoder_Checkpoint_Config"] | components["schemas"]["WanT5Encoder_WanT5Encoder_Config"] | components["schemas"]["TI_File_SD1_Config"] | components["schemas"]["TI_File_SD2_Config"] | components["schemas"]["TI_File_SDXL_Config"] | components["schemas"]["TI_Folder_SD1_Config"] | components["schemas"]["TI_Folder_SD2_Config"] | components["schemas"]["TI_Folder_SDXL_Config"] | components["schemas"]["IPAdapter_InvokeAI_SD1_Config"] | components["schemas"]["IPAdapter_InvokeAI_SD2_Config"] | components["schemas"]["IPAdapter_InvokeAI_SDXL_Config"] | components["schemas"]["IPAdapter_Checkpoint_SD1_Config"] | components["schemas"]["IPAdapter_Checkpoint_SD2_Config"] | components["schemas"]["IPAdapter_Checkpoint_SDXL_Config"] | components["schemas"]["IPAdapter_Checkpoint_FLUX_Config"] | components["schemas"]["T2IAdapter_Diffusers_SD1_Config"] | components["schemas"]["T2IAdapter_Diffusers_SDXL_Config"] | components["schemas"]["Spandrel_Checkpoint_Config"] | components["schemas"]["CLIPEmbed_Diffusers_G_Config"] | components["schemas"]["CLIPEmbed_Diffusers_L_Config"] | components["schemas"]["CLIPEmbed_Checkpoint_G_Config"] | components["schemas"]["CLIPEmbed_Checkpoint_L_Config"] | components["schemas"]["CLIPVision_Diffusers_Config"] | components["schemas"]["SigLIP_Diffusers_Config"] | components["schemas"]["FLUXRedux_Checkpoint_Config"] | components["schemas"]["LTX2DurationHead_Checkpoint_Config"] | components["schemas"]["LlavaOnevision_Diffusers_Config"] | components["schemas"]["TextLLM_Diffusers_Config"] | components["schemas"]["ExternalApiModelConfig"] | components["schemas"]["Unknown_Config"]; + config: components["schemas"]["Main_Diffusers_SD1_Config"] | components["schemas"]["Main_Diffusers_SD2_Config"] | components["schemas"]["Main_Diffusers_SDXL_Config"] | components["schemas"]["Main_Diffusers_SDXLRefiner_Config"] | components["schemas"]["Main_Diffusers_SD3_Config"] | components["schemas"]["Main_Diffusers_FLUX_Config"] | components["schemas"]["Main_Diffusers_Flux2_Config"] | components["schemas"]["Main_Diffusers_CogView4_Config"] | components["schemas"]["Main_Diffusers_QwenImage_Config"] | components["schemas"]["Main_Diffusers_QwenImage21_Config"] | components["schemas"]["Main_Diffusers_Wan_Config"] | components["schemas"]["Main_Diffusers_ZImage_Config"] | components["schemas"]["Main_Diffusers_ErnieImage_Config"] | components["schemas"]["Main_Diffusers_Ideogram4_Config"] | components["schemas"]["Main_Diffusers_Krea2_Config"] | components["schemas"]["Main_Diffusers_MiniMaxH3_Config"] | components["schemas"]["Main_Diffusers_LTX2_Config"] | components["schemas"]["Main_Checkpoint_SD1_Config"] | components["schemas"]["Main_Checkpoint_SD2_Config"] | components["schemas"]["Main_Checkpoint_SDXL_Config"] | components["schemas"]["Main_Checkpoint_SDXLRefiner_Config"] | components["schemas"]["Main_Checkpoint_Flux2_Config"] | components["schemas"]["Main_Checkpoint_FLUX_Config"] | components["schemas"]["Main_Checkpoint_QwenImage_Config"] | components["schemas"]["Main_Checkpoint_QwenImage21_Config"] | components["schemas"]["Main_Checkpoint_Wan_Config"] | components["schemas"]["Main_Checkpoint_ZImage_Config"] | components["schemas"]["Main_Checkpoint_ErnieImage_Config"] | components["schemas"]["Main_Checkpoint_Ideogram4_Config"] | components["schemas"]["Main_Checkpoint_Krea2_Config"] | components["schemas"]["Main_Checkpoint_Anima_Config"] | components["schemas"]["Main_Checkpoint_MiniMaxH3_Config"] | components["schemas"]["Main_Checkpoint_LTX2_Config"] | components["schemas"]["Main_BnBNF4_FLUX_Config"] | components["schemas"]["Main_GGUF_Flux2_Config"] | components["schemas"]["Main_GGUF_FLUX_Config"] | components["schemas"]["Main_GGUF_QwenImage_Config"] | components["schemas"]["Main_GGUF_QwenImage21_Config"] | components["schemas"]["Main_GGUF_Wan_Config"] | components["schemas"]["Main_GGUF_ZImage_Config"] | components["schemas"]["Main_GGUF_Krea2_Config"] | components["schemas"]["Main_GGUF_Ideogram4_Config"] | components["schemas"]["Main_GGUF_ErnieImage_Config"] | components["schemas"]["Main_SDNQ_Diffusers_Flux2_Config"] | components["schemas"]["Main_SDNQ_Diffusers_FLUX_Config"] | components["schemas"]["Main_SDNQ_Diffusers_ZImage_Config"] | components["schemas"]["VAE_Checkpoint_SD1_Config"] | components["schemas"]["VAE_Checkpoint_SD2_Config"] | components["schemas"]["VAE_Checkpoint_SDXL_Config"] | components["schemas"]["VAE_Checkpoint_FLUX_Config"] | components["schemas"]["VAE_Checkpoint_SD3_Config"] | components["schemas"]["VAE_Checkpoint_Flux2_Config"] | components["schemas"]["VAE_Checkpoint_Wan_Config"] | components["schemas"]["VAE_Checkpoint_QwenImage_Config"] | components["schemas"]["VAE_Checkpoint_Anima_Config"] | components["schemas"]["VAE_Checkpoint_QwenImage21_Config"] | components["schemas"]["VAE_Diffusers_SD1_Config"] | components["schemas"]["VAE_Diffusers_SDXL_Config"] | components["schemas"]["VAE_Diffusers_FLUX_Config"] | components["schemas"]["VAE_Diffusers_SD3_Config"] | components["schemas"]["VAE_Diffusers_Flux2_Config"] | components["schemas"]["VAE_Diffusers_Wan_Config"] | components["schemas"]["VAE_Diffusers_QwenImage21_Config"] | components["schemas"]["PiDDecoder_Checkpoint_FLUX_Config"] | components["schemas"]["PiDDecoder_Checkpoint_Flux2_Config"] | components["schemas"]["PiDDecoder_Checkpoint_SD3_Config"] | components["schemas"]["PiDDecoder_Checkpoint_SDXL_Config"] | components["schemas"]["PiDDecoder_Checkpoint_QwenImage_Config"] | components["schemas"]["ControlNet_Checkpoint_SD1_Config"] | components["schemas"]["ControlNet_Checkpoint_SD2_Config"] | components["schemas"]["ControlNet_Checkpoint_SDXL_Config"] | components["schemas"]["ControlNet_Checkpoint_FLUX_Config"] | components["schemas"]["ControlNet_Checkpoint_ZImage_Config"] | components["schemas"]["ControlNet_Checkpoint_Anima_Config"] | components["schemas"]["ControlNet_Diffusers_SD1_Config"] | components["schemas"]["ControlNet_Diffusers_SD2_Config"] | components["schemas"]["ControlNet_Diffusers_SDXL_Config"] | components["schemas"]["ControlNet_Diffusers_FLUX_Config"] | components["schemas"]["LoRA_LyCORIS_SD1_Config"] | components["schemas"]["LoRA_LyCORIS_SD2_Config"] | components["schemas"]["LoRA_LyCORIS_SDXL_Config"] | components["schemas"]["LoRA_LyCORIS_Flux2_Config"] | components["schemas"]["LoRA_LyCORIS_FLUX_Config"] | components["schemas"]["LoRA_LyCORIS_ZImage_Config"] | components["schemas"]["LoRA_LyCORIS_Krea2_Config"] | components["schemas"]["LoRA_LyCORIS_QwenImage_Config"] | components["schemas"]["LoRA_LyCORIS_LTX2_Config"] | components["schemas"]["LoRA_LyCORIS_MiniMaxH3_Config"] | components["schemas"]["LoRA_LyCORIS_Wan_Config"] | components["schemas"]["LoRA_LyCORIS_Anima_Config"] | components["schemas"]["LoRA_OMI_SDXL_Config"] | components["schemas"]["LoRA_OMI_FLUX_Config"] | components["schemas"]["LoRA_Diffusers_SD1_Config"] | components["schemas"]["LoRA_Diffusers_SD2_Config"] | components["schemas"]["LoRA_Diffusers_SDXL_Config"] | components["schemas"]["LoRA_Diffusers_Flux2_Config"] | components["schemas"]["LoRA_Diffusers_FLUX_Config"] | components["schemas"]["LoRA_Diffusers_ZImage_Config"] | components["schemas"]["ControlLoRA_LyCORIS_FLUX_Config"] | components["schemas"]["T5Encoder_T5Encoder_Config"] | components["schemas"]["T5Encoder_BnBLLMint8_Config"] | components["schemas"]["T5Encoder_SDNQ_Config"] | components["schemas"]["T5Encoder_GGUF_Config"] | components["schemas"]["Qwen3VLEncoder_Checkpoint_MiniMaxH3_Config"] | components["schemas"]["Qwen3VLEncoder_Checkpoint_Config"] | components["schemas"]["Qwen3VLEncoder_GGUF_Config"] | components["schemas"]["Qwen3VLEncoder_Qwen3VLEncoder_Config"] | components["schemas"]["Qwen35Encoder_Checkpoint_Config"] | components["schemas"]["Qwen3Encoder_Qwen3Encoder_Config"] | components["schemas"]["Qwen3Encoder_Checkpoint_Config"] | components["schemas"]["Qwen3Encoder_GGUF_Config"] | components["schemas"]["Qwen3Encoder_SDNQ_Folder_Config"] | components["schemas"]["MistralEncoder_Diffusers_Config"] | components["schemas"]["MistralEncoder_Checkpoint_Config"] | components["schemas"]["MistralEncoder_GGUF_Config"] | components["schemas"]["Gemma2Encoder_Gemma2Encoder_Config"] | components["schemas"]["Gemma4Encoder_Gemma4Encoder_LTX2_Config"] | components["schemas"]["Gemma2Encoder_GGUF_Config"] | components["schemas"]["QwenVLEncoder_Diffusers_Config"] | components["schemas"]["QwenVLEncoder_Checkpoint_Config"] | components["schemas"]["WanT5Encoder_WanT5Encoder_Config"] | components["schemas"]["TI_File_SD1_Config"] | components["schemas"]["TI_File_SD2_Config"] | components["schemas"]["TI_File_SDXL_Config"] | components["schemas"]["TI_Folder_SD1_Config"] | components["schemas"]["TI_Folder_SD2_Config"] | components["schemas"]["TI_Folder_SDXL_Config"] | components["schemas"]["IPAdapter_InvokeAI_SD1_Config"] | components["schemas"]["IPAdapter_InvokeAI_SD2_Config"] | components["schemas"]["IPAdapter_InvokeAI_SDXL_Config"] | components["schemas"]["IPAdapter_Checkpoint_SD1_Config"] | components["schemas"]["IPAdapter_Checkpoint_SD2_Config"] | components["schemas"]["IPAdapter_Checkpoint_SDXL_Config"] | components["schemas"]["IPAdapter_Checkpoint_FLUX_Config"] | components["schemas"]["T2IAdapter_Diffusers_SD1_Config"] | components["schemas"]["T2IAdapter_Diffusers_SDXL_Config"] | components["schemas"]["Spandrel_Checkpoint_Config"] | components["schemas"]["CLIPEmbed_Diffusers_G_Config"] | components["schemas"]["CLIPEmbed_Diffusers_L_Config"] | components["schemas"]["CLIPEmbed_Checkpoint_G_Config"] | components["schemas"]["CLIPEmbed_Checkpoint_L_Config"] | components["schemas"]["CLIPVision_Diffusers_Config"] | components["schemas"]["SigLIP_Diffusers_Config"] | components["schemas"]["FLUXRedux_Checkpoint_Config"] | components["schemas"]["LTX2DurationHead_Checkpoint_Config"] | components["schemas"]["LlavaOnevision_Diffusers_Config"] | components["schemas"]["TextLLM_Diffusers_Config"] | components["schemas"]["ExternalApiModelConfig"] | components["schemas"]["Unknown_Config"]; }; /** * ModelInstallDownloadProgressEvent @@ -37122,7 +37391,7 @@ export type components = { * Config Out * @description After successful installation, this will hold the configuration object. */ - config_out?: (components["schemas"]["Main_Diffusers_SD1_Config"] | components["schemas"]["Main_Diffusers_SD2_Config"] | components["schemas"]["Main_Diffusers_SDXL_Config"] | components["schemas"]["Main_Diffusers_SDXLRefiner_Config"] | components["schemas"]["Main_Diffusers_SD3_Config"] | components["schemas"]["Main_Diffusers_FLUX_Config"] | components["schemas"]["Main_Diffusers_Flux2_Config"] | components["schemas"]["Main_Diffusers_CogView4_Config"] | components["schemas"]["Main_Diffusers_QwenImage_Config"] | components["schemas"]["Main_Diffusers_Wan_Config"] | components["schemas"]["Main_Diffusers_ZImage_Config"] | components["schemas"]["Main_Diffusers_ErnieImage_Config"] | components["schemas"]["Main_Diffusers_Ideogram4_Config"] | components["schemas"]["Main_Diffusers_Krea2_Config"] | components["schemas"]["Main_Diffusers_MiniMaxH3_Config"] | components["schemas"]["Main_Diffusers_LTX2_Config"] | components["schemas"]["Main_Checkpoint_SD1_Config"] | components["schemas"]["Main_Checkpoint_SD2_Config"] | components["schemas"]["Main_Checkpoint_SDXL_Config"] | components["schemas"]["Main_Checkpoint_SDXLRefiner_Config"] | components["schemas"]["Main_Checkpoint_Flux2_Config"] | components["schemas"]["Main_Checkpoint_FLUX_Config"] | components["schemas"]["Main_Checkpoint_QwenImage_Config"] | components["schemas"]["Main_Checkpoint_Wan_Config"] | components["schemas"]["Main_Checkpoint_ZImage_Config"] | components["schemas"]["Main_Checkpoint_ErnieImage_Config"] | components["schemas"]["Main_Checkpoint_Ideogram4_Config"] | components["schemas"]["Main_Checkpoint_Krea2_Config"] | components["schemas"]["Main_Checkpoint_Anima_Config"] | components["schemas"]["Main_Checkpoint_MiniMaxH3_Config"] | components["schemas"]["Main_Checkpoint_LTX2_Config"] | components["schemas"]["Main_BnBNF4_FLUX_Config"] | components["schemas"]["Main_GGUF_Flux2_Config"] | components["schemas"]["Main_GGUF_FLUX_Config"] | components["schemas"]["Main_GGUF_QwenImage_Config"] | components["schemas"]["Main_GGUF_Wan_Config"] | components["schemas"]["Main_GGUF_ZImage_Config"] | components["schemas"]["Main_GGUF_Krea2_Config"] | components["schemas"]["Main_GGUF_Ideogram4_Config"] | components["schemas"]["Main_GGUF_ErnieImage_Config"] | components["schemas"]["Main_SDNQ_Diffusers_Flux2_Config"] | components["schemas"]["Main_SDNQ_Diffusers_FLUX_Config"] | components["schemas"]["Main_SDNQ_Diffusers_ZImage_Config"] | components["schemas"]["VAE_Checkpoint_SD1_Config"] | components["schemas"]["VAE_Checkpoint_SD2_Config"] | components["schemas"]["VAE_Checkpoint_SDXL_Config"] | components["schemas"]["VAE_Checkpoint_FLUX_Config"] | components["schemas"]["VAE_Checkpoint_SD3_Config"] | components["schemas"]["VAE_Checkpoint_Flux2_Config"] | components["schemas"]["VAE_Checkpoint_Wan_Config"] | components["schemas"]["VAE_Checkpoint_QwenImage_Config"] | components["schemas"]["VAE_Checkpoint_Anima_Config"] | components["schemas"]["VAE_Diffusers_SD1_Config"] | components["schemas"]["VAE_Diffusers_SDXL_Config"] | components["schemas"]["VAE_Diffusers_FLUX_Config"] | components["schemas"]["VAE_Diffusers_SD3_Config"] | components["schemas"]["VAE_Diffusers_Flux2_Config"] | components["schemas"]["VAE_Diffusers_Wan_Config"] | components["schemas"]["PiDDecoder_Checkpoint_FLUX_Config"] | components["schemas"]["PiDDecoder_Checkpoint_Flux2_Config"] | components["schemas"]["PiDDecoder_Checkpoint_SD3_Config"] | components["schemas"]["PiDDecoder_Checkpoint_SDXL_Config"] | components["schemas"]["PiDDecoder_Checkpoint_QwenImage_Config"] | components["schemas"]["ControlNet_Checkpoint_SD1_Config"] | components["schemas"]["ControlNet_Checkpoint_SD2_Config"] | components["schemas"]["ControlNet_Checkpoint_SDXL_Config"] | components["schemas"]["ControlNet_Checkpoint_FLUX_Config"] | components["schemas"]["ControlNet_Checkpoint_ZImage_Config"] | components["schemas"]["ControlNet_Checkpoint_Anima_Config"] | components["schemas"]["ControlNet_Diffusers_SD1_Config"] | components["schemas"]["ControlNet_Diffusers_SD2_Config"] | components["schemas"]["ControlNet_Diffusers_SDXL_Config"] | components["schemas"]["ControlNet_Diffusers_FLUX_Config"] | components["schemas"]["LoRA_LyCORIS_SD1_Config"] | components["schemas"]["LoRA_LyCORIS_SD2_Config"] | components["schemas"]["LoRA_LyCORIS_SDXL_Config"] | components["schemas"]["LoRA_LyCORIS_Flux2_Config"] | components["schemas"]["LoRA_LyCORIS_FLUX_Config"] | components["schemas"]["LoRA_LyCORIS_ZImage_Config"] | components["schemas"]["LoRA_LyCORIS_Krea2_Config"] | components["schemas"]["LoRA_LyCORIS_QwenImage_Config"] | components["schemas"]["LoRA_LyCORIS_LTX2_Config"] | components["schemas"]["LoRA_LyCORIS_MiniMaxH3_Config"] | components["schemas"]["LoRA_LyCORIS_Wan_Config"] | components["schemas"]["LoRA_LyCORIS_Anima_Config"] | components["schemas"]["LoRA_OMI_SDXL_Config"] | components["schemas"]["LoRA_OMI_FLUX_Config"] | components["schemas"]["LoRA_Diffusers_SD1_Config"] | components["schemas"]["LoRA_Diffusers_SD2_Config"] | components["schemas"]["LoRA_Diffusers_SDXL_Config"] | components["schemas"]["LoRA_Diffusers_Flux2_Config"] | components["schemas"]["LoRA_Diffusers_FLUX_Config"] | components["schemas"]["LoRA_Diffusers_ZImage_Config"] | components["schemas"]["ControlLoRA_LyCORIS_FLUX_Config"] | components["schemas"]["T5Encoder_T5Encoder_Config"] | components["schemas"]["T5Encoder_BnBLLMint8_Config"] | components["schemas"]["T5Encoder_SDNQ_Config"] | components["schemas"]["T5Encoder_GGUF_Config"] | components["schemas"]["Qwen3VLEncoder_Checkpoint_MiniMaxH3_Config"] | components["schemas"]["Qwen3VLEncoder_Checkpoint_Config"] | components["schemas"]["Qwen3VLEncoder_GGUF_Config"] | components["schemas"]["Qwen3VLEncoder_Qwen3VLEncoder_Config"] | components["schemas"]["Qwen35Encoder_Checkpoint_Config"] | components["schemas"]["Qwen3Encoder_Qwen3Encoder_Config"] | components["schemas"]["Qwen3Encoder_Checkpoint_Config"] | components["schemas"]["Qwen3Encoder_GGUF_Config"] | components["schemas"]["Qwen3Encoder_SDNQ_Folder_Config"] | components["schemas"]["MistralEncoder_Diffusers_Config"] | components["schemas"]["MistralEncoder_Checkpoint_Config"] | components["schemas"]["MistralEncoder_GGUF_Config"] | components["schemas"]["Gemma2Encoder_Gemma2Encoder_Config"] | components["schemas"]["Gemma4Encoder_Gemma4Encoder_LTX2_Config"] | components["schemas"]["Gemma2Encoder_GGUF_Config"] | components["schemas"]["QwenVLEncoder_Diffusers_Config"] | components["schemas"]["QwenVLEncoder_Checkpoint_Config"] | components["schemas"]["WanT5Encoder_WanT5Encoder_Config"] | components["schemas"]["TI_File_SD1_Config"] | components["schemas"]["TI_File_SD2_Config"] | components["schemas"]["TI_File_SDXL_Config"] | components["schemas"]["TI_Folder_SD1_Config"] | components["schemas"]["TI_Folder_SD2_Config"] | components["schemas"]["TI_Folder_SDXL_Config"] | components["schemas"]["IPAdapter_InvokeAI_SD1_Config"] | components["schemas"]["IPAdapter_InvokeAI_SD2_Config"] | components["schemas"]["IPAdapter_InvokeAI_SDXL_Config"] | components["schemas"]["IPAdapter_Checkpoint_SD1_Config"] | components["schemas"]["IPAdapter_Checkpoint_SD2_Config"] | components["schemas"]["IPAdapter_Checkpoint_SDXL_Config"] | components["schemas"]["IPAdapter_Checkpoint_FLUX_Config"] | components["schemas"]["T2IAdapter_Diffusers_SD1_Config"] | components["schemas"]["T2IAdapter_Diffusers_SDXL_Config"] | components["schemas"]["Spandrel_Checkpoint_Config"] | components["schemas"]["CLIPEmbed_Diffusers_G_Config"] | components["schemas"]["CLIPEmbed_Diffusers_L_Config"] | components["schemas"]["CLIPEmbed_Checkpoint_G_Config"] | components["schemas"]["CLIPEmbed_Checkpoint_L_Config"] | components["schemas"]["CLIPVision_Diffusers_Config"] | components["schemas"]["SigLIP_Diffusers_Config"] | components["schemas"]["FLUXRedux_Checkpoint_Config"] | components["schemas"]["LTX2DurationHead_Checkpoint_Config"] | components["schemas"]["LlavaOnevision_Diffusers_Config"] | components["schemas"]["TextLLM_Diffusers_Config"] | components["schemas"]["ExternalApiModelConfig"] | components["schemas"]["Unknown_Config"]) | null; + config_out?: (components["schemas"]["Main_Diffusers_SD1_Config"] | components["schemas"]["Main_Diffusers_SD2_Config"] | components["schemas"]["Main_Diffusers_SDXL_Config"] | components["schemas"]["Main_Diffusers_SDXLRefiner_Config"] | components["schemas"]["Main_Diffusers_SD3_Config"] | components["schemas"]["Main_Diffusers_FLUX_Config"] | components["schemas"]["Main_Diffusers_Flux2_Config"] | components["schemas"]["Main_Diffusers_CogView4_Config"] | components["schemas"]["Main_Diffusers_QwenImage_Config"] | components["schemas"]["Main_Diffusers_QwenImage21_Config"] | components["schemas"]["Main_Diffusers_Wan_Config"] | components["schemas"]["Main_Diffusers_ZImage_Config"] | components["schemas"]["Main_Diffusers_ErnieImage_Config"] | components["schemas"]["Main_Diffusers_Ideogram4_Config"] | components["schemas"]["Main_Diffusers_Krea2_Config"] | components["schemas"]["Main_Diffusers_MiniMaxH3_Config"] | components["schemas"]["Main_Diffusers_LTX2_Config"] | components["schemas"]["Main_Checkpoint_SD1_Config"] | components["schemas"]["Main_Checkpoint_SD2_Config"] | components["schemas"]["Main_Checkpoint_SDXL_Config"] | components["schemas"]["Main_Checkpoint_SDXLRefiner_Config"] | components["schemas"]["Main_Checkpoint_Flux2_Config"] | components["schemas"]["Main_Checkpoint_FLUX_Config"] | components["schemas"]["Main_Checkpoint_QwenImage_Config"] | components["schemas"]["Main_Checkpoint_QwenImage21_Config"] | components["schemas"]["Main_Checkpoint_Wan_Config"] | components["schemas"]["Main_Checkpoint_ZImage_Config"] | components["schemas"]["Main_Checkpoint_ErnieImage_Config"] | components["schemas"]["Main_Checkpoint_Ideogram4_Config"] | components["schemas"]["Main_Checkpoint_Krea2_Config"] | components["schemas"]["Main_Checkpoint_Anima_Config"] | components["schemas"]["Main_Checkpoint_MiniMaxH3_Config"] | components["schemas"]["Main_Checkpoint_LTX2_Config"] | components["schemas"]["Main_BnBNF4_FLUX_Config"] | components["schemas"]["Main_GGUF_Flux2_Config"] | components["schemas"]["Main_GGUF_FLUX_Config"] | components["schemas"]["Main_GGUF_QwenImage_Config"] | components["schemas"]["Main_GGUF_QwenImage21_Config"] | components["schemas"]["Main_GGUF_Wan_Config"] | components["schemas"]["Main_GGUF_ZImage_Config"] | components["schemas"]["Main_GGUF_Krea2_Config"] | components["schemas"]["Main_GGUF_Ideogram4_Config"] | components["schemas"]["Main_GGUF_ErnieImage_Config"] | components["schemas"]["Main_SDNQ_Diffusers_Flux2_Config"] | components["schemas"]["Main_SDNQ_Diffusers_FLUX_Config"] | components["schemas"]["Main_SDNQ_Diffusers_ZImage_Config"] | components["schemas"]["VAE_Checkpoint_SD1_Config"] | components["schemas"]["VAE_Checkpoint_SD2_Config"] | components["schemas"]["VAE_Checkpoint_SDXL_Config"] | components["schemas"]["VAE_Checkpoint_FLUX_Config"] | components["schemas"]["VAE_Checkpoint_SD3_Config"] | components["schemas"]["VAE_Checkpoint_Flux2_Config"] | components["schemas"]["VAE_Checkpoint_Wan_Config"] | components["schemas"]["VAE_Checkpoint_QwenImage_Config"] | components["schemas"]["VAE_Checkpoint_Anima_Config"] | components["schemas"]["VAE_Checkpoint_QwenImage21_Config"] | components["schemas"]["VAE_Diffusers_SD1_Config"] | components["schemas"]["VAE_Diffusers_SDXL_Config"] | components["schemas"]["VAE_Diffusers_FLUX_Config"] | components["schemas"]["VAE_Diffusers_SD3_Config"] | components["schemas"]["VAE_Diffusers_Flux2_Config"] | components["schemas"]["VAE_Diffusers_Wan_Config"] | components["schemas"]["VAE_Diffusers_QwenImage21_Config"] | components["schemas"]["PiDDecoder_Checkpoint_FLUX_Config"] | components["schemas"]["PiDDecoder_Checkpoint_Flux2_Config"] | components["schemas"]["PiDDecoder_Checkpoint_SD3_Config"] | components["schemas"]["PiDDecoder_Checkpoint_SDXL_Config"] | components["schemas"]["PiDDecoder_Checkpoint_QwenImage_Config"] | components["schemas"]["ControlNet_Checkpoint_SD1_Config"] | components["schemas"]["ControlNet_Checkpoint_SD2_Config"] | components["schemas"]["ControlNet_Checkpoint_SDXL_Config"] | components["schemas"]["ControlNet_Checkpoint_FLUX_Config"] | components["schemas"]["ControlNet_Checkpoint_ZImage_Config"] | components["schemas"]["ControlNet_Checkpoint_Anima_Config"] | components["schemas"]["ControlNet_Diffusers_SD1_Config"] | components["schemas"]["ControlNet_Diffusers_SD2_Config"] | components["schemas"]["ControlNet_Diffusers_SDXL_Config"] | components["schemas"]["ControlNet_Diffusers_FLUX_Config"] | components["schemas"]["LoRA_LyCORIS_SD1_Config"] | components["schemas"]["LoRA_LyCORIS_SD2_Config"] | components["schemas"]["LoRA_LyCORIS_SDXL_Config"] | components["schemas"]["LoRA_LyCORIS_Flux2_Config"] | components["schemas"]["LoRA_LyCORIS_FLUX_Config"] | components["schemas"]["LoRA_LyCORIS_ZImage_Config"] | components["schemas"]["LoRA_LyCORIS_Krea2_Config"] | components["schemas"]["LoRA_LyCORIS_QwenImage_Config"] | components["schemas"]["LoRA_LyCORIS_LTX2_Config"] | components["schemas"]["LoRA_LyCORIS_MiniMaxH3_Config"] | components["schemas"]["LoRA_LyCORIS_Wan_Config"] | components["schemas"]["LoRA_LyCORIS_Anima_Config"] | components["schemas"]["LoRA_OMI_SDXL_Config"] | components["schemas"]["LoRA_OMI_FLUX_Config"] | components["schemas"]["LoRA_Diffusers_SD1_Config"] | components["schemas"]["LoRA_Diffusers_SD2_Config"] | components["schemas"]["LoRA_Diffusers_SDXL_Config"] | components["schemas"]["LoRA_Diffusers_Flux2_Config"] | components["schemas"]["LoRA_Diffusers_FLUX_Config"] | components["schemas"]["LoRA_Diffusers_ZImage_Config"] | components["schemas"]["ControlLoRA_LyCORIS_FLUX_Config"] | components["schemas"]["T5Encoder_T5Encoder_Config"] | components["schemas"]["T5Encoder_BnBLLMint8_Config"] | components["schemas"]["T5Encoder_SDNQ_Config"] | components["schemas"]["T5Encoder_GGUF_Config"] | components["schemas"]["Qwen3VLEncoder_Checkpoint_MiniMaxH3_Config"] | components["schemas"]["Qwen3VLEncoder_Checkpoint_Config"] | components["schemas"]["Qwen3VLEncoder_GGUF_Config"] | components["schemas"]["Qwen3VLEncoder_Qwen3VLEncoder_Config"] | components["schemas"]["Qwen35Encoder_Checkpoint_Config"] | components["schemas"]["Qwen3Encoder_Qwen3Encoder_Config"] | components["schemas"]["Qwen3Encoder_Checkpoint_Config"] | components["schemas"]["Qwen3Encoder_GGUF_Config"] | components["schemas"]["Qwen3Encoder_SDNQ_Folder_Config"] | components["schemas"]["MistralEncoder_Diffusers_Config"] | components["schemas"]["MistralEncoder_Checkpoint_Config"] | components["schemas"]["MistralEncoder_GGUF_Config"] | components["schemas"]["Gemma2Encoder_Gemma2Encoder_Config"] | components["schemas"]["Gemma4Encoder_Gemma4Encoder_LTX2_Config"] | components["schemas"]["Gemma2Encoder_GGUF_Config"] | components["schemas"]["QwenVLEncoder_Diffusers_Config"] | components["schemas"]["QwenVLEncoder_Checkpoint_Config"] | components["schemas"]["WanT5Encoder_WanT5Encoder_Config"] | components["schemas"]["TI_File_SD1_Config"] | components["schemas"]["TI_File_SD2_Config"] | components["schemas"]["TI_File_SDXL_Config"] | components["schemas"]["TI_Folder_SD1_Config"] | components["schemas"]["TI_Folder_SD2_Config"] | components["schemas"]["TI_Folder_SDXL_Config"] | components["schemas"]["IPAdapter_InvokeAI_SD1_Config"] | components["schemas"]["IPAdapter_InvokeAI_SD2_Config"] | components["schemas"]["IPAdapter_InvokeAI_SDXL_Config"] | components["schemas"]["IPAdapter_Checkpoint_SD1_Config"] | components["schemas"]["IPAdapter_Checkpoint_SD2_Config"] | components["schemas"]["IPAdapter_Checkpoint_SDXL_Config"] | components["schemas"]["IPAdapter_Checkpoint_FLUX_Config"] | components["schemas"]["T2IAdapter_Diffusers_SD1_Config"] | components["schemas"]["T2IAdapter_Diffusers_SDXL_Config"] | components["schemas"]["Spandrel_Checkpoint_Config"] | components["schemas"]["CLIPEmbed_Diffusers_G_Config"] | components["schemas"]["CLIPEmbed_Diffusers_L_Config"] | components["schemas"]["CLIPEmbed_Checkpoint_G_Config"] | components["schemas"]["CLIPEmbed_Checkpoint_L_Config"] | components["schemas"]["CLIPVision_Diffusers_Config"] | components["schemas"]["SigLIP_Diffusers_Config"] | components["schemas"]["FLUXRedux_Checkpoint_Config"] | components["schemas"]["LTX2DurationHead_Checkpoint_Config"] | components["schemas"]["LlavaOnevision_Diffusers_Config"] | components["schemas"]["TextLLM_Diffusers_Config"] | components["schemas"]["ExternalApiModelConfig"] | components["schemas"]["Unknown_Config"]) | null; /** * Inplace * @description Leave model in its current location; otherwise install under models directory @@ -37208,7 +37477,7 @@ export type components = { * Config * @description The model's config */ - config: components["schemas"]["Main_Diffusers_SD1_Config"] | components["schemas"]["Main_Diffusers_SD2_Config"] | components["schemas"]["Main_Diffusers_SDXL_Config"] | components["schemas"]["Main_Diffusers_SDXLRefiner_Config"] | components["schemas"]["Main_Diffusers_SD3_Config"] | components["schemas"]["Main_Diffusers_FLUX_Config"] | components["schemas"]["Main_Diffusers_Flux2_Config"] | components["schemas"]["Main_Diffusers_CogView4_Config"] | components["schemas"]["Main_Diffusers_QwenImage_Config"] | components["schemas"]["Main_Diffusers_Wan_Config"] | components["schemas"]["Main_Diffusers_ZImage_Config"] | components["schemas"]["Main_Diffusers_ErnieImage_Config"] | components["schemas"]["Main_Diffusers_Ideogram4_Config"] | components["schemas"]["Main_Diffusers_Krea2_Config"] | components["schemas"]["Main_Diffusers_MiniMaxH3_Config"] | components["schemas"]["Main_Diffusers_LTX2_Config"] | components["schemas"]["Main_Checkpoint_SD1_Config"] | components["schemas"]["Main_Checkpoint_SD2_Config"] | components["schemas"]["Main_Checkpoint_SDXL_Config"] | components["schemas"]["Main_Checkpoint_SDXLRefiner_Config"] | components["schemas"]["Main_Checkpoint_Flux2_Config"] | components["schemas"]["Main_Checkpoint_FLUX_Config"] | components["schemas"]["Main_Checkpoint_QwenImage_Config"] | components["schemas"]["Main_Checkpoint_Wan_Config"] | components["schemas"]["Main_Checkpoint_ZImage_Config"] | components["schemas"]["Main_Checkpoint_ErnieImage_Config"] | components["schemas"]["Main_Checkpoint_Ideogram4_Config"] | components["schemas"]["Main_Checkpoint_Krea2_Config"] | components["schemas"]["Main_Checkpoint_Anima_Config"] | components["schemas"]["Main_Checkpoint_MiniMaxH3_Config"] | components["schemas"]["Main_Checkpoint_LTX2_Config"] | components["schemas"]["Main_BnBNF4_FLUX_Config"] | components["schemas"]["Main_GGUF_Flux2_Config"] | components["schemas"]["Main_GGUF_FLUX_Config"] | components["schemas"]["Main_GGUF_QwenImage_Config"] | components["schemas"]["Main_GGUF_Wan_Config"] | components["schemas"]["Main_GGUF_ZImage_Config"] | components["schemas"]["Main_GGUF_Krea2_Config"] | components["schemas"]["Main_GGUF_Ideogram4_Config"] | components["schemas"]["Main_GGUF_ErnieImage_Config"] | components["schemas"]["Main_SDNQ_Diffusers_Flux2_Config"] | components["schemas"]["Main_SDNQ_Diffusers_FLUX_Config"] | components["schemas"]["Main_SDNQ_Diffusers_ZImage_Config"] | components["schemas"]["VAE_Checkpoint_SD1_Config"] | components["schemas"]["VAE_Checkpoint_SD2_Config"] | components["schemas"]["VAE_Checkpoint_SDXL_Config"] | components["schemas"]["VAE_Checkpoint_FLUX_Config"] | components["schemas"]["VAE_Checkpoint_SD3_Config"] | components["schemas"]["VAE_Checkpoint_Flux2_Config"] | components["schemas"]["VAE_Checkpoint_Wan_Config"] | components["schemas"]["VAE_Checkpoint_QwenImage_Config"] | components["schemas"]["VAE_Checkpoint_Anima_Config"] | components["schemas"]["VAE_Diffusers_SD1_Config"] | components["schemas"]["VAE_Diffusers_SDXL_Config"] | components["schemas"]["VAE_Diffusers_FLUX_Config"] | components["schemas"]["VAE_Diffusers_SD3_Config"] | components["schemas"]["VAE_Diffusers_Flux2_Config"] | components["schemas"]["VAE_Diffusers_Wan_Config"] | components["schemas"]["PiDDecoder_Checkpoint_FLUX_Config"] | components["schemas"]["PiDDecoder_Checkpoint_Flux2_Config"] | components["schemas"]["PiDDecoder_Checkpoint_SD3_Config"] | components["schemas"]["PiDDecoder_Checkpoint_SDXL_Config"] | components["schemas"]["PiDDecoder_Checkpoint_QwenImage_Config"] | components["schemas"]["ControlNet_Checkpoint_SD1_Config"] | components["schemas"]["ControlNet_Checkpoint_SD2_Config"] | components["schemas"]["ControlNet_Checkpoint_SDXL_Config"] | components["schemas"]["ControlNet_Checkpoint_FLUX_Config"] | components["schemas"]["ControlNet_Checkpoint_ZImage_Config"] | components["schemas"]["ControlNet_Checkpoint_Anima_Config"] | components["schemas"]["ControlNet_Diffusers_SD1_Config"] | components["schemas"]["ControlNet_Diffusers_SD2_Config"] | components["schemas"]["ControlNet_Diffusers_SDXL_Config"] | components["schemas"]["ControlNet_Diffusers_FLUX_Config"] | components["schemas"]["LoRA_LyCORIS_SD1_Config"] | components["schemas"]["LoRA_LyCORIS_SD2_Config"] | components["schemas"]["LoRA_LyCORIS_SDXL_Config"] | components["schemas"]["LoRA_LyCORIS_Flux2_Config"] | components["schemas"]["LoRA_LyCORIS_FLUX_Config"] | components["schemas"]["LoRA_LyCORIS_ZImage_Config"] | components["schemas"]["LoRA_LyCORIS_Krea2_Config"] | components["schemas"]["LoRA_LyCORIS_QwenImage_Config"] | components["schemas"]["LoRA_LyCORIS_LTX2_Config"] | components["schemas"]["LoRA_LyCORIS_MiniMaxH3_Config"] | components["schemas"]["LoRA_LyCORIS_Wan_Config"] | components["schemas"]["LoRA_LyCORIS_Anima_Config"] | components["schemas"]["LoRA_OMI_SDXL_Config"] | components["schemas"]["LoRA_OMI_FLUX_Config"] | components["schemas"]["LoRA_Diffusers_SD1_Config"] | components["schemas"]["LoRA_Diffusers_SD2_Config"] | components["schemas"]["LoRA_Diffusers_SDXL_Config"] | components["schemas"]["LoRA_Diffusers_Flux2_Config"] | components["schemas"]["LoRA_Diffusers_FLUX_Config"] | components["schemas"]["LoRA_Diffusers_ZImage_Config"] | components["schemas"]["ControlLoRA_LyCORIS_FLUX_Config"] | components["schemas"]["T5Encoder_T5Encoder_Config"] | components["schemas"]["T5Encoder_BnBLLMint8_Config"] | components["schemas"]["T5Encoder_SDNQ_Config"] | components["schemas"]["T5Encoder_GGUF_Config"] | components["schemas"]["Qwen3VLEncoder_Checkpoint_MiniMaxH3_Config"] | components["schemas"]["Qwen3VLEncoder_Checkpoint_Config"] | components["schemas"]["Qwen3VLEncoder_GGUF_Config"] | components["schemas"]["Qwen3VLEncoder_Qwen3VLEncoder_Config"] | components["schemas"]["Qwen35Encoder_Checkpoint_Config"] | components["schemas"]["Qwen3Encoder_Qwen3Encoder_Config"] | components["schemas"]["Qwen3Encoder_Checkpoint_Config"] | components["schemas"]["Qwen3Encoder_GGUF_Config"] | components["schemas"]["Qwen3Encoder_SDNQ_Folder_Config"] | components["schemas"]["MistralEncoder_Diffusers_Config"] | components["schemas"]["MistralEncoder_Checkpoint_Config"] | components["schemas"]["MistralEncoder_GGUF_Config"] | components["schemas"]["Gemma2Encoder_Gemma2Encoder_Config"] | components["schemas"]["Gemma4Encoder_Gemma4Encoder_LTX2_Config"] | components["schemas"]["Gemma2Encoder_GGUF_Config"] | components["schemas"]["QwenVLEncoder_Diffusers_Config"] | components["schemas"]["QwenVLEncoder_Checkpoint_Config"] | components["schemas"]["WanT5Encoder_WanT5Encoder_Config"] | components["schemas"]["TI_File_SD1_Config"] | components["schemas"]["TI_File_SD2_Config"] | components["schemas"]["TI_File_SDXL_Config"] | components["schemas"]["TI_Folder_SD1_Config"] | components["schemas"]["TI_Folder_SD2_Config"] | components["schemas"]["TI_Folder_SDXL_Config"] | components["schemas"]["IPAdapter_InvokeAI_SD1_Config"] | components["schemas"]["IPAdapter_InvokeAI_SD2_Config"] | components["schemas"]["IPAdapter_InvokeAI_SDXL_Config"] | components["schemas"]["IPAdapter_Checkpoint_SD1_Config"] | components["schemas"]["IPAdapter_Checkpoint_SD2_Config"] | components["schemas"]["IPAdapter_Checkpoint_SDXL_Config"] | components["schemas"]["IPAdapter_Checkpoint_FLUX_Config"] | components["schemas"]["T2IAdapter_Diffusers_SD1_Config"] | components["schemas"]["T2IAdapter_Diffusers_SDXL_Config"] | components["schemas"]["Spandrel_Checkpoint_Config"] | components["schemas"]["CLIPEmbed_Diffusers_G_Config"] | components["schemas"]["CLIPEmbed_Diffusers_L_Config"] | components["schemas"]["CLIPEmbed_Checkpoint_G_Config"] | components["schemas"]["CLIPEmbed_Checkpoint_L_Config"] | components["schemas"]["CLIPVision_Diffusers_Config"] | components["schemas"]["SigLIP_Diffusers_Config"] | components["schemas"]["FLUXRedux_Checkpoint_Config"] | components["schemas"]["LTX2DurationHead_Checkpoint_Config"] | components["schemas"]["LlavaOnevision_Diffusers_Config"] | components["schemas"]["TextLLM_Diffusers_Config"] | components["schemas"]["ExternalApiModelConfig"] | components["schemas"]["Unknown_Config"]; + config: components["schemas"]["Main_Diffusers_SD1_Config"] | components["schemas"]["Main_Diffusers_SD2_Config"] | components["schemas"]["Main_Diffusers_SDXL_Config"] | components["schemas"]["Main_Diffusers_SDXLRefiner_Config"] | components["schemas"]["Main_Diffusers_SD3_Config"] | components["schemas"]["Main_Diffusers_FLUX_Config"] | components["schemas"]["Main_Diffusers_Flux2_Config"] | components["schemas"]["Main_Diffusers_CogView4_Config"] | components["schemas"]["Main_Diffusers_QwenImage_Config"] | components["schemas"]["Main_Diffusers_QwenImage21_Config"] | components["schemas"]["Main_Diffusers_Wan_Config"] | components["schemas"]["Main_Diffusers_ZImage_Config"] | components["schemas"]["Main_Diffusers_ErnieImage_Config"] | components["schemas"]["Main_Diffusers_Ideogram4_Config"] | components["schemas"]["Main_Diffusers_Krea2_Config"] | components["schemas"]["Main_Diffusers_MiniMaxH3_Config"] | components["schemas"]["Main_Diffusers_LTX2_Config"] | components["schemas"]["Main_Checkpoint_SD1_Config"] | components["schemas"]["Main_Checkpoint_SD2_Config"] | components["schemas"]["Main_Checkpoint_SDXL_Config"] | components["schemas"]["Main_Checkpoint_SDXLRefiner_Config"] | components["schemas"]["Main_Checkpoint_Flux2_Config"] | components["schemas"]["Main_Checkpoint_FLUX_Config"] | components["schemas"]["Main_Checkpoint_QwenImage_Config"] | components["schemas"]["Main_Checkpoint_QwenImage21_Config"] | components["schemas"]["Main_Checkpoint_Wan_Config"] | components["schemas"]["Main_Checkpoint_ZImage_Config"] | components["schemas"]["Main_Checkpoint_ErnieImage_Config"] | components["schemas"]["Main_Checkpoint_Ideogram4_Config"] | components["schemas"]["Main_Checkpoint_Krea2_Config"] | components["schemas"]["Main_Checkpoint_Anima_Config"] | components["schemas"]["Main_Checkpoint_MiniMaxH3_Config"] | components["schemas"]["Main_Checkpoint_LTX2_Config"] | components["schemas"]["Main_BnBNF4_FLUX_Config"] | components["schemas"]["Main_GGUF_Flux2_Config"] | components["schemas"]["Main_GGUF_FLUX_Config"] | components["schemas"]["Main_GGUF_QwenImage_Config"] | components["schemas"]["Main_GGUF_QwenImage21_Config"] | components["schemas"]["Main_GGUF_Wan_Config"] | components["schemas"]["Main_GGUF_ZImage_Config"] | components["schemas"]["Main_GGUF_Krea2_Config"] | components["schemas"]["Main_GGUF_Ideogram4_Config"] | components["schemas"]["Main_GGUF_ErnieImage_Config"] | components["schemas"]["Main_SDNQ_Diffusers_Flux2_Config"] | components["schemas"]["Main_SDNQ_Diffusers_FLUX_Config"] | components["schemas"]["Main_SDNQ_Diffusers_ZImage_Config"] | components["schemas"]["VAE_Checkpoint_SD1_Config"] | components["schemas"]["VAE_Checkpoint_SD2_Config"] | components["schemas"]["VAE_Checkpoint_SDXL_Config"] | components["schemas"]["VAE_Checkpoint_FLUX_Config"] | components["schemas"]["VAE_Checkpoint_SD3_Config"] | components["schemas"]["VAE_Checkpoint_Flux2_Config"] | components["schemas"]["VAE_Checkpoint_Wan_Config"] | components["schemas"]["VAE_Checkpoint_QwenImage_Config"] | components["schemas"]["VAE_Checkpoint_Anima_Config"] | components["schemas"]["VAE_Checkpoint_QwenImage21_Config"] | components["schemas"]["VAE_Diffusers_SD1_Config"] | components["schemas"]["VAE_Diffusers_SDXL_Config"] | components["schemas"]["VAE_Diffusers_FLUX_Config"] | components["schemas"]["VAE_Diffusers_SD3_Config"] | components["schemas"]["VAE_Diffusers_Flux2_Config"] | components["schemas"]["VAE_Diffusers_Wan_Config"] | components["schemas"]["VAE_Diffusers_QwenImage21_Config"] | components["schemas"]["PiDDecoder_Checkpoint_FLUX_Config"] | components["schemas"]["PiDDecoder_Checkpoint_Flux2_Config"] | components["schemas"]["PiDDecoder_Checkpoint_SD3_Config"] | components["schemas"]["PiDDecoder_Checkpoint_SDXL_Config"] | components["schemas"]["PiDDecoder_Checkpoint_QwenImage_Config"] | components["schemas"]["ControlNet_Checkpoint_SD1_Config"] | components["schemas"]["ControlNet_Checkpoint_SD2_Config"] | components["schemas"]["ControlNet_Checkpoint_SDXL_Config"] | components["schemas"]["ControlNet_Checkpoint_FLUX_Config"] | components["schemas"]["ControlNet_Checkpoint_ZImage_Config"] | components["schemas"]["ControlNet_Checkpoint_Anima_Config"] | components["schemas"]["ControlNet_Diffusers_SD1_Config"] | components["schemas"]["ControlNet_Diffusers_SD2_Config"] | components["schemas"]["ControlNet_Diffusers_SDXL_Config"] | components["schemas"]["ControlNet_Diffusers_FLUX_Config"] | components["schemas"]["LoRA_LyCORIS_SD1_Config"] | components["schemas"]["LoRA_LyCORIS_SD2_Config"] | components["schemas"]["LoRA_LyCORIS_SDXL_Config"] | components["schemas"]["LoRA_LyCORIS_Flux2_Config"] | components["schemas"]["LoRA_LyCORIS_FLUX_Config"] | components["schemas"]["LoRA_LyCORIS_ZImage_Config"] | components["schemas"]["LoRA_LyCORIS_Krea2_Config"] | components["schemas"]["LoRA_LyCORIS_QwenImage_Config"] | components["schemas"]["LoRA_LyCORIS_LTX2_Config"] | components["schemas"]["LoRA_LyCORIS_MiniMaxH3_Config"] | components["schemas"]["LoRA_LyCORIS_Wan_Config"] | components["schemas"]["LoRA_LyCORIS_Anima_Config"] | components["schemas"]["LoRA_OMI_SDXL_Config"] | components["schemas"]["LoRA_OMI_FLUX_Config"] | components["schemas"]["LoRA_Diffusers_SD1_Config"] | components["schemas"]["LoRA_Diffusers_SD2_Config"] | components["schemas"]["LoRA_Diffusers_SDXL_Config"] | components["schemas"]["LoRA_Diffusers_Flux2_Config"] | components["schemas"]["LoRA_Diffusers_FLUX_Config"] | components["schemas"]["LoRA_Diffusers_ZImage_Config"] | components["schemas"]["ControlLoRA_LyCORIS_FLUX_Config"] | components["schemas"]["T5Encoder_T5Encoder_Config"] | components["schemas"]["T5Encoder_BnBLLMint8_Config"] | components["schemas"]["T5Encoder_SDNQ_Config"] | components["schemas"]["T5Encoder_GGUF_Config"] | components["schemas"]["Qwen3VLEncoder_Checkpoint_MiniMaxH3_Config"] | components["schemas"]["Qwen3VLEncoder_Checkpoint_Config"] | components["schemas"]["Qwen3VLEncoder_GGUF_Config"] | components["schemas"]["Qwen3VLEncoder_Qwen3VLEncoder_Config"] | components["schemas"]["Qwen35Encoder_Checkpoint_Config"] | components["schemas"]["Qwen3Encoder_Qwen3Encoder_Config"] | components["schemas"]["Qwen3Encoder_Checkpoint_Config"] | components["schemas"]["Qwen3Encoder_GGUF_Config"] | components["schemas"]["Qwen3Encoder_SDNQ_Folder_Config"] | components["schemas"]["MistralEncoder_Diffusers_Config"] | components["schemas"]["MistralEncoder_Checkpoint_Config"] | components["schemas"]["MistralEncoder_GGUF_Config"] | components["schemas"]["Gemma2Encoder_Gemma2Encoder_Config"] | components["schemas"]["Gemma4Encoder_Gemma4Encoder_LTX2_Config"] | components["schemas"]["Gemma2Encoder_GGUF_Config"] | components["schemas"]["QwenVLEncoder_Diffusers_Config"] | components["schemas"]["QwenVLEncoder_Checkpoint_Config"] | components["schemas"]["WanT5Encoder_WanT5Encoder_Config"] | components["schemas"]["TI_File_SD1_Config"] | components["schemas"]["TI_File_SD2_Config"] | components["schemas"]["TI_File_SDXL_Config"] | components["schemas"]["TI_Folder_SD1_Config"] | components["schemas"]["TI_Folder_SD2_Config"] | components["schemas"]["TI_Folder_SDXL_Config"] | components["schemas"]["IPAdapter_InvokeAI_SD1_Config"] | components["schemas"]["IPAdapter_InvokeAI_SD2_Config"] | components["schemas"]["IPAdapter_InvokeAI_SDXL_Config"] | components["schemas"]["IPAdapter_Checkpoint_SD1_Config"] | components["schemas"]["IPAdapter_Checkpoint_SD2_Config"] | components["schemas"]["IPAdapter_Checkpoint_SDXL_Config"] | components["schemas"]["IPAdapter_Checkpoint_FLUX_Config"] | components["schemas"]["T2IAdapter_Diffusers_SD1_Config"] | components["schemas"]["T2IAdapter_Diffusers_SDXL_Config"] | components["schemas"]["Spandrel_Checkpoint_Config"] | components["schemas"]["CLIPEmbed_Diffusers_G_Config"] | components["schemas"]["CLIPEmbed_Diffusers_L_Config"] | components["schemas"]["CLIPEmbed_Checkpoint_G_Config"] | components["schemas"]["CLIPEmbed_Checkpoint_L_Config"] | components["schemas"]["CLIPVision_Diffusers_Config"] | components["schemas"]["SigLIP_Diffusers_Config"] | components["schemas"]["FLUXRedux_Checkpoint_Config"] | components["schemas"]["LTX2DurationHead_Checkpoint_Config"] | components["schemas"]["LlavaOnevision_Diffusers_Config"] | components["schemas"]["TextLLM_Diffusers_Config"] | components["schemas"]["ExternalApiModelConfig"] | components["schemas"]["Unknown_Config"]; /** * @description The submodel type, if any * @default null @@ -37235,7 +37504,7 @@ export type components = { * Config * @description The model's config */ - config: components["schemas"]["Main_Diffusers_SD1_Config"] | components["schemas"]["Main_Diffusers_SD2_Config"] | components["schemas"]["Main_Diffusers_SDXL_Config"] | components["schemas"]["Main_Diffusers_SDXLRefiner_Config"] | components["schemas"]["Main_Diffusers_SD3_Config"] | components["schemas"]["Main_Diffusers_FLUX_Config"] | components["schemas"]["Main_Diffusers_Flux2_Config"] | components["schemas"]["Main_Diffusers_CogView4_Config"] | components["schemas"]["Main_Diffusers_QwenImage_Config"] | components["schemas"]["Main_Diffusers_Wan_Config"] | components["schemas"]["Main_Diffusers_ZImage_Config"] | components["schemas"]["Main_Diffusers_ErnieImage_Config"] | components["schemas"]["Main_Diffusers_Ideogram4_Config"] | components["schemas"]["Main_Diffusers_Krea2_Config"] | components["schemas"]["Main_Diffusers_MiniMaxH3_Config"] | components["schemas"]["Main_Diffusers_LTX2_Config"] | components["schemas"]["Main_Checkpoint_SD1_Config"] | components["schemas"]["Main_Checkpoint_SD2_Config"] | components["schemas"]["Main_Checkpoint_SDXL_Config"] | components["schemas"]["Main_Checkpoint_SDXLRefiner_Config"] | components["schemas"]["Main_Checkpoint_Flux2_Config"] | components["schemas"]["Main_Checkpoint_FLUX_Config"] | components["schemas"]["Main_Checkpoint_QwenImage_Config"] | components["schemas"]["Main_Checkpoint_Wan_Config"] | components["schemas"]["Main_Checkpoint_ZImage_Config"] | components["schemas"]["Main_Checkpoint_ErnieImage_Config"] | components["schemas"]["Main_Checkpoint_Ideogram4_Config"] | components["schemas"]["Main_Checkpoint_Krea2_Config"] | components["schemas"]["Main_Checkpoint_Anima_Config"] | components["schemas"]["Main_Checkpoint_MiniMaxH3_Config"] | components["schemas"]["Main_Checkpoint_LTX2_Config"] | components["schemas"]["Main_BnBNF4_FLUX_Config"] | components["schemas"]["Main_GGUF_Flux2_Config"] | components["schemas"]["Main_GGUF_FLUX_Config"] | components["schemas"]["Main_GGUF_QwenImage_Config"] | components["schemas"]["Main_GGUF_Wan_Config"] | components["schemas"]["Main_GGUF_ZImage_Config"] | components["schemas"]["Main_GGUF_Krea2_Config"] | components["schemas"]["Main_GGUF_Ideogram4_Config"] | components["schemas"]["Main_GGUF_ErnieImage_Config"] | components["schemas"]["Main_SDNQ_Diffusers_Flux2_Config"] | components["schemas"]["Main_SDNQ_Diffusers_FLUX_Config"] | components["schemas"]["Main_SDNQ_Diffusers_ZImage_Config"] | components["schemas"]["VAE_Checkpoint_SD1_Config"] | components["schemas"]["VAE_Checkpoint_SD2_Config"] | components["schemas"]["VAE_Checkpoint_SDXL_Config"] | components["schemas"]["VAE_Checkpoint_FLUX_Config"] | components["schemas"]["VAE_Checkpoint_SD3_Config"] | components["schemas"]["VAE_Checkpoint_Flux2_Config"] | components["schemas"]["VAE_Checkpoint_Wan_Config"] | components["schemas"]["VAE_Checkpoint_QwenImage_Config"] | components["schemas"]["VAE_Checkpoint_Anima_Config"] | components["schemas"]["VAE_Diffusers_SD1_Config"] | components["schemas"]["VAE_Diffusers_SDXL_Config"] | components["schemas"]["VAE_Diffusers_FLUX_Config"] | components["schemas"]["VAE_Diffusers_SD3_Config"] | components["schemas"]["VAE_Diffusers_Flux2_Config"] | components["schemas"]["VAE_Diffusers_Wan_Config"] | components["schemas"]["PiDDecoder_Checkpoint_FLUX_Config"] | components["schemas"]["PiDDecoder_Checkpoint_Flux2_Config"] | components["schemas"]["PiDDecoder_Checkpoint_SD3_Config"] | components["schemas"]["PiDDecoder_Checkpoint_SDXL_Config"] | components["schemas"]["PiDDecoder_Checkpoint_QwenImage_Config"] | components["schemas"]["ControlNet_Checkpoint_SD1_Config"] | components["schemas"]["ControlNet_Checkpoint_SD2_Config"] | components["schemas"]["ControlNet_Checkpoint_SDXL_Config"] | components["schemas"]["ControlNet_Checkpoint_FLUX_Config"] | components["schemas"]["ControlNet_Checkpoint_ZImage_Config"] | components["schemas"]["ControlNet_Checkpoint_Anima_Config"] | components["schemas"]["ControlNet_Diffusers_SD1_Config"] | components["schemas"]["ControlNet_Diffusers_SD2_Config"] | components["schemas"]["ControlNet_Diffusers_SDXL_Config"] | components["schemas"]["ControlNet_Diffusers_FLUX_Config"] | components["schemas"]["LoRA_LyCORIS_SD1_Config"] | components["schemas"]["LoRA_LyCORIS_SD2_Config"] | components["schemas"]["LoRA_LyCORIS_SDXL_Config"] | components["schemas"]["LoRA_LyCORIS_Flux2_Config"] | components["schemas"]["LoRA_LyCORIS_FLUX_Config"] | components["schemas"]["LoRA_LyCORIS_ZImage_Config"] | components["schemas"]["LoRA_LyCORIS_Krea2_Config"] | components["schemas"]["LoRA_LyCORIS_QwenImage_Config"] | components["schemas"]["LoRA_LyCORIS_LTX2_Config"] | components["schemas"]["LoRA_LyCORIS_MiniMaxH3_Config"] | components["schemas"]["LoRA_LyCORIS_Wan_Config"] | components["schemas"]["LoRA_LyCORIS_Anima_Config"] | components["schemas"]["LoRA_OMI_SDXL_Config"] | components["schemas"]["LoRA_OMI_FLUX_Config"] | components["schemas"]["LoRA_Diffusers_SD1_Config"] | components["schemas"]["LoRA_Diffusers_SD2_Config"] | components["schemas"]["LoRA_Diffusers_SDXL_Config"] | components["schemas"]["LoRA_Diffusers_Flux2_Config"] | components["schemas"]["LoRA_Diffusers_FLUX_Config"] | components["schemas"]["LoRA_Diffusers_ZImage_Config"] | components["schemas"]["ControlLoRA_LyCORIS_FLUX_Config"] | components["schemas"]["T5Encoder_T5Encoder_Config"] | components["schemas"]["T5Encoder_BnBLLMint8_Config"] | components["schemas"]["T5Encoder_SDNQ_Config"] | components["schemas"]["T5Encoder_GGUF_Config"] | components["schemas"]["Qwen3VLEncoder_Checkpoint_MiniMaxH3_Config"] | components["schemas"]["Qwen3VLEncoder_Checkpoint_Config"] | components["schemas"]["Qwen3VLEncoder_GGUF_Config"] | components["schemas"]["Qwen3VLEncoder_Qwen3VLEncoder_Config"] | components["schemas"]["Qwen35Encoder_Checkpoint_Config"] | components["schemas"]["Qwen3Encoder_Qwen3Encoder_Config"] | components["schemas"]["Qwen3Encoder_Checkpoint_Config"] | components["schemas"]["Qwen3Encoder_GGUF_Config"] | components["schemas"]["Qwen3Encoder_SDNQ_Folder_Config"] | components["schemas"]["MistralEncoder_Diffusers_Config"] | components["schemas"]["MistralEncoder_Checkpoint_Config"] | components["schemas"]["MistralEncoder_GGUF_Config"] | components["schemas"]["Gemma2Encoder_Gemma2Encoder_Config"] | components["schemas"]["Gemma4Encoder_Gemma4Encoder_LTX2_Config"] | components["schemas"]["Gemma2Encoder_GGUF_Config"] | components["schemas"]["QwenVLEncoder_Diffusers_Config"] | components["schemas"]["QwenVLEncoder_Checkpoint_Config"] | components["schemas"]["WanT5Encoder_WanT5Encoder_Config"] | components["schemas"]["TI_File_SD1_Config"] | components["schemas"]["TI_File_SD2_Config"] | components["schemas"]["TI_File_SDXL_Config"] | components["schemas"]["TI_Folder_SD1_Config"] | components["schemas"]["TI_Folder_SD2_Config"] | components["schemas"]["TI_Folder_SDXL_Config"] | components["schemas"]["IPAdapter_InvokeAI_SD1_Config"] | components["schemas"]["IPAdapter_InvokeAI_SD2_Config"] | components["schemas"]["IPAdapter_InvokeAI_SDXL_Config"] | components["schemas"]["IPAdapter_Checkpoint_SD1_Config"] | components["schemas"]["IPAdapter_Checkpoint_SD2_Config"] | components["schemas"]["IPAdapter_Checkpoint_SDXL_Config"] | components["schemas"]["IPAdapter_Checkpoint_FLUX_Config"] | components["schemas"]["T2IAdapter_Diffusers_SD1_Config"] | components["schemas"]["T2IAdapter_Diffusers_SDXL_Config"] | components["schemas"]["Spandrel_Checkpoint_Config"] | components["schemas"]["CLIPEmbed_Diffusers_G_Config"] | components["schemas"]["CLIPEmbed_Diffusers_L_Config"] | components["schemas"]["CLIPEmbed_Checkpoint_G_Config"] | components["schemas"]["CLIPEmbed_Checkpoint_L_Config"] | components["schemas"]["CLIPVision_Diffusers_Config"] | components["schemas"]["SigLIP_Diffusers_Config"] | components["schemas"]["FLUXRedux_Checkpoint_Config"] | components["schemas"]["LTX2DurationHead_Checkpoint_Config"] | components["schemas"]["LlavaOnevision_Diffusers_Config"] | components["schemas"]["TextLLM_Diffusers_Config"] | components["schemas"]["ExternalApiModelConfig"] | components["schemas"]["Unknown_Config"]; + config: components["schemas"]["Main_Diffusers_SD1_Config"] | components["schemas"]["Main_Diffusers_SD2_Config"] | components["schemas"]["Main_Diffusers_SDXL_Config"] | components["schemas"]["Main_Diffusers_SDXLRefiner_Config"] | components["schemas"]["Main_Diffusers_SD3_Config"] | components["schemas"]["Main_Diffusers_FLUX_Config"] | components["schemas"]["Main_Diffusers_Flux2_Config"] | components["schemas"]["Main_Diffusers_CogView4_Config"] | components["schemas"]["Main_Diffusers_QwenImage_Config"] | components["schemas"]["Main_Diffusers_QwenImage21_Config"] | components["schemas"]["Main_Diffusers_Wan_Config"] | components["schemas"]["Main_Diffusers_ZImage_Config"] | components["schemas"]["Main_Diffusers_ErnieImage_Config"] | components["schemas"]["Main_Diffusers_Ideogram4_Config"] | components["schemas"]["Main_Diffusers_Krea2_Config"] | components["schemas"]["Main_Diffusers_MiniMaxH3_Config"] | components["schemas"]["Main_Diffusers_LTX2_Config"] | components["schemas"]["Main_Checkpoint_SD1_Config"] | components["schemas"]["Main_Checkpoint_SD2_Config"] | components["schemas"]["Main_Checkpoint_SDXL_Config"] | components["schemas"]["Main_Checkpoint_SDXLRefiner_Config"] | components["schemas"]["Main_Checkpoint_Flux2_Config"] | components["schemas"]["Main_Checkpoint_FLUX_Config"] | components["schemas"]["Main_Checkpoint_QwenImage_Config"] | components["schemas"]["Main_Checkpoint_QwenImage21_Config"] | components["schemas"]["Main_Checkpoint_Wan_Config"] | components["schemas"]["Main_Checkpoint_ZImage_Config"] | components["schemas"]["Main_Checkpoint_ErnieImage_Config"] | components["schemas"]["Main_Checkpoint_Ideogram4_Config"] | components["schemas"]["Main_Checkpoint_Krea2_Config"] | components["schemas"]["Main_Checkpoint_Anima_Config"] | components["schemas"]["Main_Checkpoint_MiniMaxH3_Config"] | components["schemas"]["Main_Checkpoint_LTX2_Config"] | components["schemas"]["Main_BnBNF4_FLUX_Config"] | components["schemas"]["Main_GGUF_Flux2_Config"] | components["schemas"]["Main_GGUF_FLUX_Config"] | components["schemas"]["Main_GGUF_QwenImage_Config"] | components["schemas"]["Main_GGUF_QwenImage21_Config"] | components["schemas"]["Main_GGUF_Wan_Config"] | components["schemas"]["Main_GGUF_ZImage_Config"] | components["schemas"]["Main_GGUF_Krea2_Config"] | components["schemas"]["Main_GGUF_Ideogram4_Config"] | components["schemas"]["Main_GGUF_ErnieImage_Config"] | components["schemas"]["Main_SDNQ_Diffusers_Flux2_Config"] | components["schemas"]["Main_SDNQ_Diffusers_FLUX_Config"] | components["schemas"]["Main_SDNQ_Diffusers_ZImage_Config"] | components["schemas"]["VAE_Checkpoint_SD1_Config"] | components["schemas"]["VAE_Checkpoint_SD2_Config"] | components["schemas"]["VAE_Checkpoint_SDXL_Config"] | components["schemas"]["VAE_Checkpoint_FLUX_Config"] | components["schemas"]["VAE_Checkpoint_SD3_Config"] | components["schemas"]["VAE_Checkpoint_Flux2_Config"] | components["schemas"]["VAE_Checkpoint_Wan_Config"] | components["schemas"]["VAE_Checkpoint_QwenImage_Config"] | components["schemas"]["VAE_Checkpoint_Anima_Config"] | components["schemas"]["VAE_Checkpoint_QwenImage21_Config"] | components["schemas"]["VAE_Diffusers_SD1_Config"] | components["schemas"]["VAE_Diffusers_SDXL_Config"] | components["schemas"]["VAE_Diffusers_FLUX_Config"] | components["schemas"]["VAE_Diffusers_SD3_Config"] | components["schemas"]["VAE_Diffusers_Flux2_Config"] | components["schemas"]["VAE_Diffusers_Wan_Config"] | components["schemas"]["VAE_Diffusers_QwenImage21_Config"] | components["schemas"]["PiDDecoder_Checkpoint_FLUX_Config"] | components["schemas"]["PiDDecoder_Checkpoint_Flux2_Config"] | components["schemas"]["PiDDecoder_Checkpoint_SD3_Config"] | components["schemas"]["PiDDecoder_Checkpoint_SDXL_Config"] | components["schemas"]["PiDDecoder_Checkpoint_QwenImage_Config"] | components["schemas"]["ControlNet_Checkpoint_SD1_Config"] | components["schemas"]["ControlNet_Checkpoint_SD2_Config"] | components["schemas"]["ControlNet_Checkpoint_SDXL_Config"] | components["schemas"]["ControlNet_Checkpoint_FLUX_Config"] | components["schemas"]["ControlNet_Checkpoint_ZImage_Config"] | components["schemas"]["ControlNet_Checkpoint_Anima_Config"] | components["schemas"]["ControlNet_Diffusers_SD1_Config"] | components["schemas"]["ControlNet_Diffusers_SD2_Config"] | components["schemas"]["ControlNet_Diffusers_SDXL_Config"] | components["schemas"]["ControlNet_Diffusers_FLUX_Config"] | components["schemas"]["LoRA_LyCORIS_SD1_Config"] | components["schemas"]["LoRA_LyCORIS_SD2_Config"] | components["schemas"]["LoRA_LyCORIS_SDXL_Config"] | components["schemas"]["LoRA_LyCORIS_Flux2_Config"] | components["schemas"]["LoRA_LyCORIS_FLUX_Config"] | components["schemas"]["LoRA_LyCORIS_ZImage_Config"] | components["schemas"]["LoRA_LyCORIS_Krea2_Config"] | components["schemas"]["LoRA_LyCORIS_QwenImage_Config"] | components["schemas"]["LoRA_LyCORIS_LTX2_Config"] | components["schemas"]["LoRA_LyCORIS_MiniMaxH3_Config"] | components["schemas"]["LoRA_LyCORIS_Wan_Config"] | components["schemas"]["LoRA_LyCORIS_Anima_Config"] | components["schemas"]["LoRA_OMI_SDXL_Config"] | components["schemas"]["LoRA_OMI_FLUX_Config"] | components["schemas"]["LoRA_Diffusers_SD1_Config"] | components["schemas"]["LoRA_Diffusers_SD2_Config"] | components["schemas"]["LoRA_Diffusers_SDXL_Config"] | components["schemas"]["LoRA_Diffusers_Flux2_Config"] | components["schemas"]["LoRA_Diffusers_FLUX_Config"] | components["schemas"]["LoRA_Diffusers_ZImage_Config"] | components["schemas"]["ControlLoRA_LyCORIS_FLUX_Config"] | components["schemas"]["T5Encoder_T5Encoder_Config"] | components["schemas"]["T5Encoder_BnBLLMint8_Config"] | components["schemas"]["T5Encoder_SDNQ_Config"] | components["schemas"]["T5Encoder_GGUF_Config"] | components["schemas"]["Qwen3VLEncoder_Checkpoint_MiniMaxH3_Config"] | components["schemas"]["Qwen3VLEncoder_Checkpoint_Config"] | components["schemas"]["Qwen3VLEncoder_GGUF_Config"] | components["schemas"]["Qwen3VLEncoder_Qwen3VLEncoder_Config"] | components["schemas"]["Qwen35Encoder_Checkpoint_Config"] | components["schemas"]["Qwen3Encoder_Qwen3Encoder_Config"] | components["schemas"]["Qwen3Encoder_Checkpoint_Config"] | components["schemas"]["Qwen3Encoder_GGUF_Config"] | components["schemas"]["Qwen3Encoder_SDNQ_Folder_Config"] | components["schemas"]["MistralEncoder_Diffusers_Config"] | components["schemas"]["MistralEncoder_Checkpoint_Config"] | components["schemas"]["MistralEncoder_GGUF_Config"] | components["schemas"]["Gemma2Encoder_Gemma2Encoder_Config"] | components["schemas"]["Gemma4Encoder_Gemma4Encoder_LTX2_Config"] | components["schemas"]["Gemma2Encoder_GGUF_Config"] | components["schemas"]["QwenVLEncoder_Diffusers_Config"] | components["schemas"]["QwenVLEncoder_Checkpoint_Config"] | components["schemas"]["WanT5Encoder_WanT5Encoder_Config"] | components["schemas"]["TI_File_SD1_Config"] | components["schemas"]["TI_File_SD2_Config"] | components["schemas"]["TI_File_SDXL_Config"] | components["schemas"]["TI_Folder_SD1_Config"] | components["schemas"]["TI_Folder_SD2_Config"] | components["schemas"]["TI_Folder_SDXL_Config"] | components["schemas"]["IPAdapter_InvokeAI_SD1_Config"] | components["schemas"]["IPAdapter_InvokeAI_SD2_Config"] | components["schemas"]["IPAdapter_InvokeAI_SDXL_Config"] | components["schemas"]["IPAdapter_Checkpoint_SD1_Config"] | components["schemas"]["IPAdapter_Checkpoint_SD2_Config"] | components["schemas"]["IPAdapter_Checkpoint_SDXL_Config"] | components["schemas"]["IPAdapter_Checkpoint_FLUX_Config"] | components["schemas"]["T2IAdapter_Diffusers_SD1_Config"] | components["schemas"]["T2IAdapter_Diffusers_SDXL_Config"] | components["schemas"]["Spandrel_Checkpoint_Config"] | components["schemas"]["CLIPEmbed_Diffusers_G_Config"] | components["schemas"]["CLIPEmbed_Diffusers_L_Config"] | components["schemas"]["CLIPEmbed_Checkpoint_G_Config"] | components["schemas"]["CLIPEmbed_Checkpoint_L_Config"] | components["schemas"]["CLIPVision_Diffusers_Config"] | components["schemas"]["SigLIP_Diffusers_Config"] | components["schemas"]["FLUXRedux_Checkpoint_Config"] | components["schemas"]["LTX2DurationHead_Checkpoint_Config"] | components["schemas"]["LlavaOnevision_Diffusers_Config"] | components["schemas"]["TextLLM_Diffusers_Config"] | components["schemas"]["ExternalApiModelConfig"] | components["schemas"]["Unknown_Config"]; /** * @description The submodel type, if any * @default null @@ -37367,7 +37636,7 @@ export type components = { * Variant * @description The variant of the model. */ - variant?: components["schemas"]["ModelVariantType"] | components["schemas"]["ClipVariantType"] | components["schemas"]["FluxVariantType"] | components["schemas"]["Flux2VariantType"] | components["schemas"]["ZImageVariantType"] | components["schemas"]["QwenImageVariantType"] | components["schemas"]["WanVariantType"] | components["schemas"]["WanLoRAVariantType"] | components["schemas"]["Qwen3VariantType"] | components["schemas"]["Qwen3VLVariantType"] | components["schemas"]["Qwen35VariantType"] | components["schemas"]["AnimaVariantType"] | components["schemas"]["Krea2VariantType"] | components["schemas"]["MiniMaxH3VariantType"] | components["schemas"]["LTX2VariantType"] | components["schemas"]["MistralVariantType"] | components["schemas"]["PiDDecoderVariantType"] | null; + variant?: components["schemas"]["ModelVariantType"] | components["schemas"]["ClipVariantType"] | components["schemas"]["FluxVariantType"] | components["schemas"]["Flux2VariantType"] | components["schemas"]["ZImageVariantType"] | components["schemas"]["QwenImageVariantType"] | components["schemas"]["WanVariantType"] | components["schemas"]["WanLoRAVariantType"] | components["schemas"]["Qwen3VariantType"] | components["schemas"]["Qwen3VLVariantType"] | components["schemas"]["Qwen35VariantType"] | components["schemas"]["AnimaVariantType"] | components["schemas"]["Krea2VariantType"] | components["schemas"]["QwenImage21VariantType"] | components["schemas"]["MiniMaxH3VariantType"] | components["schemas"]["LTX2VariantType"] | components["schemas"]["MistralVariantType"] | components["schemas"]["PiDDecoderVariantType"] | null; /** @description The prediction type of the model. */ prediction_type?: components["schemas"]["SchedulerPredictionType"] | null; /** @@ -37462,7 +37731,7 @@ export type components = { */ ModelsList: { /** Models */ - models: (components["schemas"]["Main_Diffusers_SD1_Config"] | components["schemas"]["Main_Diffusers_SD2_Config"] | components["schemas"]["Main_Diffusers_SDXL_Config"] | components["schemas"]["Main_Diffusers_SDXLRefiner_Config"] | components["schemas"]["Main_Diffusers_SD3_Config"] | components["schemas"]["Main_Diffusers_FLUX_Config"] | components["schemas"]["Main_Diffusers_Flux2_Config"] | components["schemas"]["Main_Diffusers_CogView4_Config"] | components["schemas"]["Main_Diffusers_QwenImage_Config"] | components["schemas"]["Main_Diffusers_Wan_Config"] | components["schemas"]["Main_Diffusers_ZImage_Config"] | components["schemas"]["Main_Diffusers_ErnieImage_Config"] | components["schemas"]["Main_Diffusers_Ideogram4_Config"] | components["schemas"]["Main_Diffusers_Krea2_Config"] | components["schemas"]["Main_Diffusers_MiniMaxH3_Config"] | components["schemas"]["Main_Diffusers_LTX2_Config"] | components["schemas"]["Main_Checkpoint_SD1_Config"] | components["schemas"]["Main_Checkpoint_SD2_Config"] | components["schemas"]["Main_Checkpoint_SDXL_Config"] | components["schemas"]["Main_Checkpoint_SDXLRefiner_Config"] | components["schemas"]["Main_Checkpoint_Flux2_Config"] | components["schemas"]["Main_Checkpoint_FLUX_Config"] | components["schemas"]["Main_Checkpoint_QwenImage_Config"] | components["schemas"]["Main_Checkpoint_Wan_Config"] | components["schemas"]["Main_Checkpoint_ZImage_Config"] | components["schemas"]["Main_Checkpoint_ErnieImage_Config"] | components["schemas"]["Main_Checkpoint_Ideogram4_Config"] | components["schemas"]["Main_Checkpoint_Krea2_Config"] | components["schemas"]["Main_Checkpoint_Anima_Config"] | components["schemas"]["Main_Checkpoint_MiniMaxH3_Config"] | components["schemas"]["Main_Checkpoint_LTX2_Config"] | components["schemas"]["Main_BnBNF4_FLUX_Config"] | components["schemas"]["Main_GGUF_Flux2_Config"] | components["schemas"]["Main_GGUF_FLUX_Config"] | components["schemas"]["Main_GGUF_QwenImage_Config"] | components["schemas"]["Main_GGUF_Wan_Config"] | components["schemas"]["Main_GGUF_ZImage_Config"] | components["schemas"]["Main_GGUF_Krea2_Config"] | components["schemas"]["Main_GGUF_Ideogram4_Config"] | components["schemas"]["Main_GGUF_ErnieImage_Config"] | components["schemas"]["Main_SDNQ_Diffusers_Flux2_Config"] | components["schemas"]["Main_SDNQ_Diffusers_FLUX_Config"] | components["schemas"]["Main_SDNQ_Diffusers_ZImage_Config"] | components["schemas"]["VAE_Checkpoint_SD1_Config"] | components["schemas"]["VAE_Checkpoint_SD2_Config"] | components["schemas"]["VAE_Checkpoint_SDXL_Config"] | components["schemas"]["VAE_Checkpoint_FLUX_Config"] | components["schemas"]["VAE_Checkpoint_SD3_Config"] | components["schemas"]["VAE_Checkpoint_Flux2_Config"] | components["schemas"]["VAE_Checkpoint_Wan_Config"] | components["schemas"]["VAE_Checkpoint_QwenImage_Config"] | components["schemas"]["VAE_Checkpoint_Anima_Config"] | components["schemas"]["VAE_Diffusers_SD1_Config"] | components["schemas"]["VAE_Diffusers_SDXL_Config"] | components["schemas"]["VAE_Diffusers_FLUX_Config"] | components["schemas"]["VAE_Diffusers_SD3_Config"] | components["schemas"]["VAE_Diffusers_Flux2_Config"] | components["schemas"]["VAE_Diffusers_Wan_Config"] | components["schemas"]["PiDDecoder_Checkpoint_FLUX_Config"] | components["schemas"]["PiDDecoder_Checkpoint_Flux2_Config"] | components["schemas"]["PiDDecoder_Checkpoint_SD3_Config"] | components["schemas"]["PiDDecoder_Checkpoint_SDXL_Config"] | components["schemas"]["PiDDecoder_Checkpoint_QwenImage_Config"] | components["schemas"]["ControlNet_Checkpoint_SD1_Config"] | components["schemas"]["ControlNet_Checkpoint_SD2_Config"] | components["schemas"]["ControlNet_Checkpoint_SDXL_Config"] | components["schemas"]["ControlNet_Checkpoint_FLUX_Config"] | components["schemas"]["ControlNet_Checkpoint_ZImage_Config"] | components["schemas"]["ControlNet_Checkpoint_Anima_Config"] | components["schemas"]["ControlNet_Diffusers_SD1_Config"] | components["schemas"]["ControlNet_Diffusers_SD2_Config"] | components["schemas"]["ControlNet_Diffusers_SDXL_Config"] | components["schemas"]["ControlNet_Diffusers_FLUX_Config"] | components["schemas"]["LoRA_LyCORIS_SD1_Config"] | components["schemas"]["LoRA_LyCORIS_SD2_Config"] | components["schemas"]["LoRA_LyCORIS_SDXL_Config"] | components["schemas"]["LoRA_LyCORIS_Flux2_Config"] | components["schemas"]["LoRA_LyCORIS_FLUX_Config"] | components["schemas"]["LoRA_LyCORIS_ZImage_Config"] | components["schemas"]["LoRA_LyCORIS_Krea2_Config"] | components["schemas"]["LoRA_LyCORIS_QwenImage_Config"] | components["schemas"]["LoRA_LyCORIS_LTX2_Config"] | components["schemas"]["LoRA_LyCORIS_MiniMaxH3_Config"] | components["schemas"]["LoRA_LyCORIS_Wan_Config"] | components["schemas"]["LoRA_LyCORIS_Anima_Config"] | components["schemas"]["LoRA_OMI_SDXL_Config"] | components["schemas"]["LoRA_OMI_FLUX_Config"] | components["schemas"]["LoRA_Diffusers_SD1_Config"] | components["schemas"]["LoRA_Diffusers_SD2_Config"] | components["schemas"]["LoRA_Diffusers_SDXL_Config"] | components["schemas"]["LoRA_Diffusers_Flux2_Config"] | components["schemas"]["LoRA_Diffusers_FLUX_Config"] | components["schemas"]["LoRA_Diffusers_ZImage_Config"] | components["schemas"]["ControlLoRA_LyCORIS_FLUX_Config"] | components["schemas"]["T5Encoder_T5Encoder_Config"] | components["schemas"]["T5Encoder_BnBLLMint8_Config"] | components["schemas"]["T5Encoder_SDNQ_Config"] | components["schemas"]["T5Encoder_GGUF_Config"] | components["schemas"]["Qwen3VLEncoder_Checkpoint_MiniMaxH3_Config"] | components["schemas"]["Qwen3VLEncoder_Checkpoint_Config"] | components["schemas"]["Qwen3VLEncoder_GGUF_Config"] | components["schemas"]["Qwen3VLEncoder_Qwen3VLEncoder_Config"] | components["schemas"]["Qwen35Encoder_Checkpoint_Config"] | components["schemas"]["Qwen3Encoder_Qwen3Encoder_Config"] | components["schemas"]["Qwen3Encoder_Checkpoint_Config"] | components["schemas"]["Qwen3Encoder_GGUF_Config"] | components["schemas"]["Qwen3Encoder_SDNQ_Folder_Config"] | components["schemas"]["MistralEncoder_Diffusers_Config"] | components["schemas"]["MistralEncoder_Checkpoint_Config"] | components["schemas"]["MistralEncoder_GGUF_Config"] | components["schemas"]["Gemma2Encoder_Gemma2Encoder_Config"] | components["schemas"]["Gemma4Encoder_Gemma4Encoder_LTX2_Config"] | components["schemas"]["Gemma2Encoder_GGUF_Config"] | components["schemas"]["QwenVLEncoder_Diffusers_Config"] | components["schemas"]["QwenVLEncoder_Checkpoint_Config"] | components["schemas"]["WanT5Encoder_WanT5Encoder_Config"] | components["schemas"]["TI_File_SD1_Config"] | components["schemas"]["TI_File_SD2_Config"] | components["schemas"]["TI_File_SDXL_Config"] | components["schemas"]["TI_Folder_SD1_Config"] | components["schemas"]["TI_Folder_SD2_Config"] | components["schemas"]["TI_Folder_SDXL_Config"] | components["schemas"]["IPAdapter_InvokeAI_SD1_Config"] | components["schemas"]["IPAdapter_InvokeAI_SD2_Config"] | components["schemas"]["IPAdapter_InvokeAI_SDXL_Config"] | components["schemas"]["IPAdapter_Checkpoint_SD1_Config"] | components["schemas"]["IPAdapter_Checkpoint_SD2_Config"] | components["schemas"]["IPAdapter_Checkpoint_SDXL_Config"] | components["schemas"]["IPAdapter_Checkpoint_FLUX_Config"] | components["schemas"]["T2IAdapter_Diffusers_SD1_Config"] | components["schemas"]["T2IAdapter_Diffusers_SDXL_Config"] | components["schemas"]["Spandrel_Checkpoint_Config"] | components["schemas"]["CLIPEmbed_Diffusers_G_Config"] | components["schemas"]["CLIPEmbed_Diffusers_L_Config"] | components["schemas"]["CLIPEmbed_Checkpoint_G_Config"] | components["schemas"]["CLIPEmbed_Checkpoint_L_Config"] | components["schemas"]["CLIPVision_Diffusers_Config"] | components["schemas"]["SigLIP_Diffusers_Config"] | components["schemas"]["FLUXRedux_Checkpoint_Config"] | components["schemas"]["LTX2DurationHead_Checkpoint_Config"] | components["schemas"]["LlavaOnevision_Diffusers_Config"] | components["schemas"]["TextLLM_Diffusers_Config"] | components["schemas"]["ExternalApiModelConfig"] | components["schemas"]["Unknown_Config"])[]; + models: (components["schemas"]["Main_Diffusers_SD1_Config"] | components["schemas"]["Main_Diffusers_SD2_Config"] | components["schemas"]["Main_Diffusers_SDXL_Config"] | components["schemas"]["Main_Diffusers_SDXLRefiner_Config"] | components["schemas"]["Main_Diffusers_SD3_Config"] | components["schemas"]["Main_Diffusers_FLUX_Config"] | components["schemas"]["Main_Diffusers_Flux2_Config"] | components["schemas"]["Main_Diffusers_CogView4_Config"] | components["schemas"]["Main_Diffusers_QwenImage_Config"] | components["schemas"]["Main_Diffusers_QwenImage21_Config"] | components["schemas"]["Main_Diffusers_Wan_Config"] | components["schemas"]["Main_Diffusers_ZImage_Config"] | components["schemas"]["Main_Diffusers_ErnieImage_Config"] | components["schemas"]["Main_Diffusers_Ideogram4_Config"] | components["schemas"]["Main_Diffusers_Krea2_Config"] | components["schemas"]["Main_Diffusers_MiniMaxH3_Config"] | components["schemas"]["Main_Diffusers_LTX2_Config"] | components["schemas"]["Main_Checkpoint_SD1_Config"] | components["schemas"]["Main_Checkpoint_SD2_Config"] | components["schemas"]["Main_Checkpoint_SDXL_Config"] | components["schemas"]["Main_Checkpoint_SDXLRefiner_Config"] | components["schemas"]["Main_Checkpoint_Flux2_Config"] | components["schemas"]["Main_Checkpoint_FLUX_Config"] | components["schemas"]["Main_Checkpoint_QwenImage_Config"] | components["schemas"]["Main_Checkpoint_QwenImage21_Config"] | components["schemas"]["Main_Checkpoint_Wan_Config"] | components["schemas"]["Main_Checkpoint_ZImage_Config"] | components["schemas"]["Main_Checkpoint_ErnieImage_Config"] | components["schemas"]["Main_Checkpoint_Ideogram4_Config"] | components["schemas"]["Main_Checkpoint_Krea2_Config"] | components["schemas"]["Main_Checkpoint_Anima_Config"] | components["schemas"]["Main_Checkpoint_MiniMaxH3_Config"] | components["schemas"]["Main_Checkpoint_LTX2_Config"] | components["schemas"]["Main_BnBNF4_FLUX_Config"] | components["schemas"]["Main_GGUF_Flux2_Config"] | components["schemas"]["Main_GGUF_FLUX_Config"] | components["schemas"]["Main_GGUF_QwenImage_Config"] | components["schemas"]["Main_GGUF_QwenImage21_Config"] | components["schemas"]["Main_GGUF_Wan_Config"] | components["schemas"]["Main_GGUF_ZImage_Config"] | components["schemas"]["Main_GGUF_Krea2_Config"] | components["schemas"]["Main_GGUF_Ideogram4_Config"] | components["schemas"]["Main_GGUF_ErnieImage_Config"] | components["schemas"]["Main_SDNQ_Diffusers_Flux2_Config"] | components["schemas"]["Main_SDNQ_Diffusers_FLUX_Config"] | components["schemas"]["Main_SDNQ_Diffusers_ZImage_Config"] | components["schemas"]["VAE_Checkpoint_SD1_Config"] | components["schemas"]["VAE_Checkpoint_SD2_Config"] | components["schemas"]["VAE_Checkpoint_SDXL_Config"] | components["schemas"]["VAE_Checkpoint_FLUX_Config"] | components["schemas"]["VAE_Checkpoint_SD3_Config"] | components["schemas"]["VAE_Checkpoint_Flux2_Config"] | components["schemas"]["VAE_Checkpoint_Wan_Config"] | components["schemas"]["VAE_Checkpoint_QwenImage_Config"] | components["schemas"]["VAE_Checkpoint_Anima_Config"] | components["schemas"]["VAE_Checkpoint_QwenImage21_Config"] | components["schemas"]["VAE_Diffusers_SD1_Config"] | components["schemas"]["VAE_Diffusers_SDXL_Config"] | components["schemas"]["VAE_Diffusers_FLUX_Config"] | components["schemas"]["VAE_Diffusers_SD3_Config"] | components["schemas"]["VAE_Diffusers_Flux2_Config"] | components["schemas"]["VAE_Diffusers_Wan_Config"] | components["schemas"]["VAE_Diffusers_QwenImage21_Config"] | components["schemas"]["PiDDecoder_Checkpoint_FLUX_Config"] | components["schemas"]["PiDDecoder_Checkpoint_Flux2_Config"] | components["schemas"]["PiDDecoder_Checkpoint_SD3_Config"] | components["schemas"]["PiDDecoder_Checkpoint_SDXL_Config"] | components["schemas"]["PiDDecoder_Checkpoint_QwenImage_Config"] | components["schemas"]["ControlNet_Checkpoint_SD1_Config"] | components["schemas"]["ControlNet_Checkpoint_SD2_Config"] | components["schemas"]["ControlNet_Checkpoint_SDXL_Config"] | components["schemas"]["ControlNet_Checkpoint_FLUX_Config"] | components["schemas"]["ControlNet_Checkpoint_ZImage_Config"] | components["schemas"]["ControlNet_Checkpoint_Anima_Config"] | components["schemas"]["ControlNet_Diffusers_SD1_Config"] | components["schemas"]["ControlNet_Diffusers_SD2_Config"] | components["schemas"]["ControlNet_Diffusers_SDXL_Config"] | components["schemas"]["ControlNet_Diffusers_FLUX_Config"] | components["schemas"]["LoRA_LyCORIS_SD1_Config"] | components["schemas"]["LoRA_LyCORIS_SD2_Config"] | components["schemas"]["LoRA_LyCORIS_SDXL_Config"] | components["schemas"]["LoRA_LyCORIS_Flux2_Config"] | components["schemas"]["LoRA_LyCORIS_FLUX_Config"] | components["schemas"]["LoRA_LyCORIS_ZImage_Config"] | components["schemas"]["LoRA_LyCORIS_Krea2_Config"] | components["schemas"]["LoRA_LyCORIS_QwenImage_Config"] | components["schemas"]["LoRA_LyCORIS_LTX2_Config"] | components["schemas"]["LoRA_LyCORIS_MiniMaxH3_Config"] | components["schemas"]["LoRA_LyCORIS_Wan_Config"] | components["schemas"]["LoRA_LyCORIS_Anima_Config"] | components["schemas"]["LoRA_OMI_SDXL_Config"] | components["schemas"]["LoRA_OMI_FLUX_Config"] | components["schemas"]["LoRA_Diffusers_SD1_Config"] | components["schemas"]["LoRA_Diffusers_SD2_Config"] | components["schemas"]["LoRA_Diffusers_SDXL_Config"] | components["schemas"]["LoRA_Diffusers_Flux2_Config"] | components["schemas"]["LoRA_Diffusers_FLUX_Config"] | components["schemas"]["LoRA_Diffusers_ZImage_Config"] | components["schemas"]["ControlLoRA_LyCORIS_FLUX_Config"] | components["schemas"]["T5Encoder_T5Encoder_Config"] | components["schemas"]["T5Encoder_BnBLLMint8_Config"] | components["schemas"]["T5Encoder_SDNQ_Config"] | components["schemas"]["T5Encoder_GGUF_Config"] | components["schemas"]["Qwen3VLEncoder_Checkpoint_MiniMaxH3_Config"] | components["schemas"]["Qwen3VLEncoder_Checkpoint_Config"] | components["schemas"]["Qwen3VLEncoder_GGUF_Config"] | components["schemas"]["Qwen3VLEncoder_Qwen3VLEncoder_Config"] | components["schemas"]["Qwen35Encoder_Checkpoint_Config"] | components["schemas"]["Qwen3Encoder_Qwen3Encoder_Config"] | components["schemas"]["Qwen3Encoder_Checkpoint_Config"] | components["schemas"]["Qwen3Encoder_GGUF_Config"] | components["schemas"]["Qwen3Encoder_SDNQ_Folder_Config"] | components["schemas"]["MistralEncoder_Diffusers_Config"] | components["schemas"]["MistralEncoder_Checkpoint_Config"] | components["schemas"]["MistralEncoder_GGUF_Config"] | components["schemas"]["Gemma2Encoder_Gemma2Encoder_Config"] | components["schemas"]["Gemma4Encoder_Gemma4Encoder_LTX2_Config"] | components["schemas"]["Gemma2Encoder_GGUF_Config"] | components["schemas"]["QwenVLEncoder_Diffusers_Config"] | components["schemas"]["QwenVLEncoder_Checkpoint_Config"] | components["schemas"]["WanT5Encoder_WanT5Encoder_Config"] | components["schemas"]["TI_File_SD1_Config"] | components["schemas"]["TI_File_SD2_Config"] | components["schemas"]["TI_File_SDXL_Config"] | components["schemas"]["TI_Folder_SD1_Config"] | components["schemas"]["TI_Folder_SD2_Config"] | components["schemas"]["TI_Folder_SDXL_Config"] | components["schemas"]["IPAdapter_InvokeAI_SD1_Config"] | components["schemas"]["IPAdapter_InvokeAI_SD2_Config"] | components["schemas"]["IPAdapter_InvokeAI_SDXL_Config"] | components["schemas"]["IPAdapter_Checkpoint_SD1_Config"] | components["schemas"]["IPAdapter_Checkpoint_SD2_Config"] | components["schemas"]["IPAdapter_Checkpoint_SDXL_Config"] | components["schemas"]["IPAdapter_Checkpoint_FLUX_Config"] | components["schemas"]["T2IAdapter_Diffusers_SD1_Config"] | components["schemas"]["T2IAdapter_Diffusers_SDXL_Config"] | components["schemas"]["Spandrel_Checkpoint_Config"] | components["schemas"]["CLIPEmbed_Diffusers_G_Config"] | components["schemas"]["CLIPEmbed_Diffusers_L_Config"] | components["schemas"]["CLIPEmbed_Checkpoint_G_Config"] | components["schemas"]["CLIPEmbed_Checkpoint_L_Config"] | components["schemas"]["CLIPVision_Diffusers_Config"] | components["schemas"]["SigLIP_Diffusers_Config"] | components["schemas"]["FLUXRedux_Checkpoint_Config"] | components["schemas"]["LTX2DurationHead_Checkpoint_Config"] | components["schemas"]["LlavaOnevision_Diffusers_Config"] | components["schemas"]["TextLLM_Diffusers_Config"] | components["schemas"]["ExternalApiModelConfig"] | components["schemas"]["Unknown_Config"])[]; }; /** * Multiply Integers @@ -40583,10 +40852,10 @@ export type components = { */ Qwen3VariantType: "qwen3_4b" | "qwen3_8b" | "qwen3_06b"; /** - * QwenImageConditioningField - * @description A Qwen Image Edit conditioning tensor primitive value + * QwenImage21ConditioningField + * @description A Qwen-Image-2.1 conditioning tensor primitive value */ - QwenImageConditioningField: { + QwenImage21ConditioningField: { /** * Conditioning Name * @description The name of conditioning tensor @@ -40594,24 +40863,401 @@ export type components = { conditioning_name: string; }; /** - * QwenImageConditioningOutput - * @description Base class for nodes that output a Qwen Image Edit conditioning tensor. + * QwenImage21ConditioningOutput + * @description Base class for nodes that output a Qwen-Image-2.1 conditioning tensor. */ - QwenImageConditioningOutput: { + QwenImage21ConditioningOutput: { /** @description Conditioning tensor */ - conditioning: components["schemas"]["QwenImageConditioningField"]; + conditioning: components["schemas"]["QwenImage21ConditioningField"]; /** * type - * @default qwen_image_conditioning_output + * @default qwen_image_2_1_conditioning_output * @constant */ - type: "qwen_image_conditioning_output"; + type: "qwen_image_2_1_conditioning_output"; }; /** - * Denoise - Qwen Image - * @description Run the denoising process with a Qwen Image model. + * Denoise - Qwen-Image-2.1 + * @description Run the denoising process with a Qwen-Image-2.1 model. */ - QwenImageDenoiseInvocation: { + QwenImage21DenoiseInvocation: { + /** + * @description The board to save the image to + * @default null + */ + board?: components["schemas"]["BoardField"] | null; + /** + * @description Optional metadata to be saved with the image + * @default null + */ + metadata?: components["schemas"]["MetadataField"] | null; + /** + * Id + * @description The id of this instance of an invocation. Must be unique among all instances of invocations. + */ + id: string; + /** + * Is Intermediate + * @description Whether or not this is an intermediate invocation. + * @default false + */ + is_intermediate?: boolean; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; + /** + * @description Latents tensor + * @default null + */ + latents?: components["schemas"]["LatentsField"] | null; + /** + * @description A mask of the region to apply the denoising process to. Values of 0.0 represent the regions to be fully denoised, and 1.0 represent the regions to be preserved. + * @default null + */ + denoise_mask?: components["schemas"]["DenoiseMaskField"] | null; + /** + * Denoising Start + * @description When to start denoising, expressed a percentage of total steps + * @default 0 + */ + denoising_start?: number; + /** + * Denoising End + * @description When to stop denoising, expressed a percentage of total steps + * @default 1 + */ + denoising_end?: number; + /** + * Transformer + * @description Qwen-Image-2.1 model (Transformer) to load + * @default null + */ + transformer?: components["schemas"]["TransformerField"] | null; + /** + * @description Positive conditioning tensor + * @default null + */ + positive_conditioning?: components["schemas"]["QwenImage21ConditioningField"] | null; + /** + * @description Negative conditioning tensor + * @default null + */ + negative_conditioning?: components["schemas"]["QwenImage21ConditioningField"] | null; + /** + * CFG Scale + * @description Classifier-Free Guidance scale + * @default 1 + */ + cfg_scale?: number | number[]; + /** + * Width + * @description Width of the generated image. + * @default 1024 + */ + width?: number; + /** + * Height + * @description Height of the generated image. + * @default 1024 + */ + height?: number; + /** + * Steps + * @description Number of steps to run Turbo is distilled for its shipped 8-step schedule; other counts resample it. + * @default 40 + */ + steps?: number; + /** + * Seed + * @description Randomness seed for reproducibility. + * @default 0 + */ + seed?: number; + /** + * type + * @default qwen_image_2_1_denoise + * @constant + */ + type: "qwen_image_2_1_denoise"; + }; + /** + * Image to Latents - Qwen-Image-2.1 + * @description Encodes an image into Qwen-Image-2.1 latents. The image is encoded opaque; its alpha is not read. + */ + QwenImage21ImageToLatentsInvocation: { + /** + * @description The board to save the image to + * @default null + */ + board?: components["schemas"]["BoardField"] | null; + /** + * @description Optional metadata to be saved with the image + * @default null + */ + metadata?: components["schemas"]["MetadataField"] | null; + /** + * Id + * @description The id of this instance of an invocation. Must be unique among all instances of invocations. + */ + id: string; + /** + * Is Intermediate + * @description Whether or not this is an intermediate invocation. + * @default false + */ + is_intermediate?: boolean; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; + /** + * @description The image to encode. + * @default null + */ + image?: components["schemas"]["ImageField"] | null; + /** + * @description VAE + * @default null + */ + vae?: components["schemas"]["VAEField"] | null; + /** + * Tiled + * @description Processing using overlapping tiles (reduce memory consumption) + * @default false + */ + tiled?: boolean; + /** + * Tile Size + * @description The tile size for VAE tiling in pixels (image space). If set to 0, the default tile size for the model will be used. Larger tile sizes generally produce better results at the cost of higher memory usage. + * @default 0 + */ + tile_size?: number; + /** + * type + * @default qwen_image_2_1_i2l + * @constant + */ + type: "qwen_image_2_1_i2l"; + }; + /** + * Latents to Image - Qwen-Image-2.1 + * @description Decodes Qwen-Image-2.1 latents into an image. Opaque results are saved as RGB, transparent ones as RGBA. + */ + QwenImage21LatentsToImageInvocation: { + /** + * @description The board to save the image to + * @default null + */ + board?: components["schemas"]["BoardField"] | null; + /** + * @description Optional metadata to be saved with the image + * @default null + */ + metadata?: components["schemas"]["MetadataField"] | null; + /** + * Id + * @description The id of this instance of an invocation. Must be unique among all instances of invocations. + */ + id: string; + /** + * Is Intermediate + * @description Whether or not this is an intermediate invocation. + * @default false + */ + is_intermediate?: boolean; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; + /** + * @description Latents tensor + * @default null + */ + latents?: components["schemas"]["LatentsField"] | null; + /** + * @description VAE + * @default null + */ + vae?: components["schemas"]["VAEField"] | null; + /** + * Tiled + * @description Processing using overlapping tiles (reduce memory consumption) + * @default false + */ + tiled?: boolean; + /** + * Tile Size + * @description The tile size for VAE tiling in pixels (image space). If set to 0, the default tile size for the model will be used. Larger tile sizes generally produce better results at the cost of higher memory usage. + * @default 0 + */ + tile_size?: number; + /** + * type + * @default qwen_image_2_1_l2i + * @constant + */ + type: "qwen_image_2_1_l2i"; + }; + /** + * Main Model - Qwen-Image-2.1 + * @description Loads a Qwen-Image-2.1 model, outputting its submodels. + * + * A diffusers pipeline brings its own VAE and Qwen3-VL-8B encoder. A single-file or GGUF transformer has + * neither, so it needs a standalone VAE and encoder. + */ + QwenImage21ModelLoaderInvocation: { + /** + * Id + * @description The id of this instance of an invocation. Must be unique among all instances of invocations. + */ + id: string; + /** + * Is Intermediate + * @description Whether or not this is an intermediate invocation. + * @default false + */ + is_intermediate?: boolean; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; + /** + * Transformer + * @description Qwen-Image-2.1 model (Transformer) to load + */ + model: components["schemas"]["ModelIdentifierField"]; + /** + * VAE + * @description Standalone Qwen-Image-2.1 VAE. If not provided, the VAE is loaded from the diffusers model. + * @default null + */ + vae_model?: components["schemas"]["ModelIdentifierField"] | null; + /** + * Qwen3-VL Encoder + * @description Standalone Qwen3-VL 8B encoder. If not provided, the encoder is loaded from the diffusers model. + * @default null + */ + qwen3_vl_encoder_model?: components["schemas"]["ModelIdentifierField"] | null; + /** + * type + * @default qwen_image_2_1_model_loader + * @constant + */ + type: "qwen_image_2_1_model_loader"; + }; + /** + * QwenImage21ModelLoaderOutput + * @description Qwen-Image-2.1 model loader output. + */ + QwenImage21ModelLoaderOutput: { + /** + * Transformer + * @description Transformer + */ + transformer: components["schemas"]["TransformerField"]; + /** + * Qwen3-VL Encoder + * @description Qwen3-VL tokenizer and text encoder + */ + qwen3_vl_encoder: components["schemas"]["Qwen3VLEncoderField"]; + /** + * VAE + * @description VAE + */ + vae: components["schemas"]["VAEField"]; + /** + * type + * @default qwen_image_2_1_model_loader_output + * @constant + */ + type: "qwen_image_2_1_model_loader_output"; + }; + /** + * Prompt - Qwen-Image-2.1 + * @description Encodes a text prompt for Qwen-Image-2.1 with its Qwen3-VL-8B encoder. + */ + QwenImage21TextEncoderInvocation: { + /** + * Id + * @description The id of this instance of an invocation. Must be unique among all instances of invocations. + */ + id: string; + /** + * Is Intermediate + * @description Whether or not this is an intermediate invocation. + * @default false + */ + is_intermediate?: boolean; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; + /** + * Prompt + * @description Text prompt describing the desired image. + * @default null + */ + prompt?: string | null; + /** + * Qwen3-VL Encoder + * @description Qwen3-VL tokenizer and text encoder + * @default null + */ + qwen3_vl_encoder?: components["schemas"]["Qwen3VLEncoderField"] | null; + /** + * type + * @default qwen_image_2_1_text_encoder + * @constant + */ + type: "qwen_image_2_1_text_encoder"; + }; + /** + * QwenImage21VariantType + * @description Qwen-Image-2.1 variants. The weights share one architecture; what differs is the sampling schedule. + * @enum {string} + */ + QwenImage21VariantType: "qwen_image_21_base" | "qwen_image_21_turbo"; + /** + * QwenImageConditioningField + * @description A Qwen Image Edit conditioning tensor primitive value + */ + QwenImageConditioningField: { + /** + * Conditioning Name + * @description The name of conditioning tensor + */ + conditioning_name: string; + }; + /** + * QwenImageConditioningOutput + * @description Base class for nodes that output a Qwen Image Edit conditioning tensor. + */ + QwenImageConditioningOutput: { + /** @description Conditioning tensor */ + conditioning: components["schemas"]["QwenImageConditioningField"]; + /** + * type + * @default qwen_image_conditioning_output + * @constant + */ + type: "qwen_image_conditioning_output"; + }; + /** + * Denoise - Qwen Image + * @description Run the denoising process with a Qwen Image model. + */ + QwenImageDenoiseInvocation: { /** * @description The board to save the image to * @default null @@ -44341,7 +44987,7 @@ export type components = { type: components["schemas"]["ModelType"]; format?: components["schemas"]["ModelFormat"] | null; /** Variant */ - variant?: components["schemas"]["ModelVariantType"] | components["schemas"]["ClipVariantType"] | components["schemas"]["FluxVariantType"] | components["schemas"]["Flux2VariantType"] | components["schemas"]["ZImageVariantType"] | components["schemas"]["QwenImageVariantType"] | components["schemas"]["WanVariantType"] | components["schemas"]["WanLoRAVariantType"] | components["schemas"]["Qwen3VariantType"] | components["schemas"]["Qwen3VLVariantType"] | components["schemas"]["Qwen35VariantType"] | components["schemas"]["AnimaVariantType"] | components["schemas"]["Krea2VariantType"] | components["schemas"]["MiniMaxH3VariantType"] | components["schemas"]["LTX2VariantType"] | components["schemas"]["MistralVariantType"] | components["schemas"]["PiDDecoderVariantType"] | null; + variant?: components["schemas"]["ModelVariantType"] | components["schemas"]["ClipVariantType"] | components["schemas"]["FluxVariantType"] | components["schemas"]["Flux2VariantType"] | components["schemas"]["ZImageVariantType"] | components["schemas"]["QwenImageVariantType"] | components["schemas"]["WanVariantType"] | components["schemas"]["WanLoRAVariantType"] | components["schemas"]["Qwen3VariantType"] | components["schemas"]["Qwen3VLVariantType"] | components["schemas"]["Qwen35VariantType"] | components["schemas"]["AnimaVariantType"] | components["schemas"]["Krea2VariantType"] | components["schemas"]["QwenImage21VariantType"] | components["schemas"]["MiniMaxH3VariantType"] | components["schemas"]["LTX2VariantType"] | components["schemas"]["MistralVariantType"] | components["schemas"]["PiDDecoderVariantType"] | null; /** * Is Installed * @default false @@ -44386,7 +45032,7 @@ export type components = { type: components["schemas"]["ModelType"]; format?: components["schemas"]["ModelFormat"] | null; /** Variant */ - variant?: components["schemas"]["ModelVariantType"] | components["schemas"]["ClipVariantType"] | components["schemas"]["FluxVariantType"] | components["schemas"]["Flux2VariantType"] | components["schemas"]["ZImageVariantType"] | components["schemas"]["QwenImageVariantType"] | components["schemas"]["WanVariantType"] | components["schemas"]["WanLoRAVariantType"] | components["schemas"]["Qwen3VariantType"] | components["schemas"]["Qwen3VLVariantType"] | components["schemas"]["Qwen35VariantType"] | components["schemas"]["AnimaVariantType"] | components["schemas"]["Krea2VariantType"] | components["schemas"]["MiniMaxH3VariantType"] | components["schemas"]["LTX2VariantType"] | components["schemas"]["MistralVariantType"] | components["schemas"]["PiDDecoderVariantType"] | null; + variant?: components["schemas"]["ModelVariantType"] | components["schemas"]["ClipVariantType"] | components["schemas"]["FluxVariantType"] | components["schemas"]["Flux2VariantType"] | components["schemas"]["ZImageVariantType"] | components["schemas"]["QwenImageVariantType"] | components["schemas"]["WanVariantType"] | components["schemas"]["WanLoRAVariantType"] | components["schemas"]["Qwen3VariantType"] | components["schemas"]["Qwen3VLVariantType"] | components["schemas"]["Qwen35VariantType"] | components["schemas"]["AnimaVariantType"] | components["schemas"]["Krea2VariantType"] | components["schemas"]["QwenImage21VariantType"] | components["schemas"]["MiniMaxH3VariantType"] | components["schemas"]["LTX2VariantType"] | components["schemas"]["MistralVariantType"] | components["schemas"]["PiDDecoderVariantType"] | null; /** * Is Installed * @default false @@ -45080,7 +45726,7 @@ export type components = { path_or_prefix: string; model_type: components["schemas"]["ModelType"]; /** Variant */ - variant?: components["schemas"]["ModelVariantType"] | components["schemas"]["ClipVariantType"] | components["schemas"]["FluxVariantType"] | components["schemas"]["Flux2VariantType"] | components["schemas"]["ZImageVariantType"] | components["schemas"]["QwenImageVariantType"] | components["schemas"]["WanVariantType"] | components["schemas"]["WanLoRAVariantType"] | components["schemas"]["Qwen3VariantType"] | components["schemas"]["Qwen3VLVariantType"] | components["schemas"]["Qwen35VariantType"] | components["schemas"]["AnimaVariantType"] | components["schemas"]["Krea2VariantType"] | components["schemas"]["MiniMaxH3VariantType"] | components["schemas"]["LTX2VariantType"] | components["schemas"]["MistralVariantType"] | components["schemas"]["PiDDecoderVariantType"] | null; + variant?: components["schemas"]["ModelVariantType"] | components["schemas"]["ClipVariantType"] | components["schemas"]["FluxVariantType"] | components["schemas"]["Flux2VariantType"] | components["schemas"]["ZImageVariantType"] | components["schemas"]["QwenImageVariantType"] | components["schemas"]["WanVariantType"] | components["schemas"]["WanLoRAVariantType"] | components["schemas"]["Qwen3VariantType"] | components["schemas"]["Qwen3VLVariantType"] | components["schemas"]["Qwen35VariantType"] | components["schemas"]["AnimaVariantType"] | components["schemas"]["Krea2VariantType"] | components["schemas"]["QwenImage21VariantType"] | components["schemas"]["MiniMaxH3VariantType"] | components["schemas"]["LTX2VariantType"] | components["schemas"]["MistralVariantType"] | components["schemas"]["PiDDecoderVariantType"] | null; }; /** * Subtract Integers @@ -47570,6 +48216,92 @@ export type components = { */ cpu_only: boolean | null; }; + /** + * VAE_Checkpoint_QwenImage21_Config + * @description Model config for Qwen-Image-2.1 VAE single files (AutoencoderKLQwenImage21, diffusers or ComfyUI layout). + */ + VAE_Checkpoint_QwenImage21_Config: { + /** + * Key + * @description A unique key for this model. + */ + key: string; + /** + * Hash + * @description The hash of the model file(s). + */ + hash: string; + /** + * Path + * @description Path to the model on the filesystem. Relative paths are relative to the Invoke root directory. + */ + path: string; + /** + * File Size + * @description The size of the model in bytes. + */ + file_size: number; + /** + * Name + * @description Name of the model. + */ + name: string; + /** + * Description + * @description Model description + */ + description: string | null; + /** + * Source + * @description The original source of the model (path, URL or repo_id). + */ + source: string; + /** @description The type of source */ + source_type: components["schemas"]["ModelSourceType"]; + /** + * Source Api Response + * @description The original API response from the source, as stringified JSON. + */ + source_api_response: string | null; + /** + * Source Url + * @description Optional URL for the model (e.g. download page or model page). + */ + source_url: string | null; + /** + * Cover Image + * @description Url for image to preview model + */ + cover_image: string | null; + /** + * Config Path + * @description Path to the config for this model, if any. + */ + config_path: string | null; + /** + * Type + * @default vae + * @constant + */ + type: "vae"; + /** + * Format + * @default checkpoint + * @constant + */ + format: "checkpoint"; + /** + * Base + * @default qwen-image-2-1 + * @constant + */ + base: "qwen-image-2-1"; + /** + * Cpu Only + * @description Whether this model should run on CPU only + */ + cpu_only: boolean | null; + }; /** * VAE_Checkpoint_QwenImage_Config * @description Model config for Qwen Image VAE checkpoint models (AutoencoderKLQwenImage). @@ -48246,6 +48978,89 @@ export type components = { */ cpu_only: boolean | null; }; + /** + * VAE_Diffusers_QwenImage21_Config + * @description Model config for a Qwen-Image-2.1 VAE folder in diffusers format (AutoencoderKLQwenImage21). + */ + VAE_Diffusers_QwenImage21_Config: { + /** + * Key + * @description A unique key for this model. + */ + key: string; + /** + * Hash + * @description The hash of the model file(s). + */ + hash: string; + /** + * Path + * @description Path to the model on the filesystem. Relative paths are relative to the Invoke root directory. + */ + path: string; + /** + * File Size + * @description The size of the model in bytes. + */ + file_size: number; + /** + * Name + * @description Name of the model. + */ + name: string; + /** + * Description + * @description Model description + */ + description: string | null; + /** + * Source + * @description The original source of the model (path, URL or repo_id). + */ + source: string; + /** @description The type of source */ + source_type: components["schemas"]["ModelSourceType"]; + /** + * Source Api Response + * @description The original API response from the source, as stringified JSON. + */ + source_api_response: string | null; + /** + * Source Url + * @description Optional URL for the model (e.g. download page or model page). + */ + source_url: string | null; + /** + * Cover Image + * @description Url for image to preview model + */ + cover_image: string | null; + /** + * Format + * @default diffusers + * @constant + */ + format: "diffusers"; + /** @default */ + repo_variant: components["schemas"]["ModelRepoVariant"]; + /** + * Type + * @default vae + * @constant + */ + type: "vae"; + /** + * Base + * @default qwen-image-2-1 + * @constant + */ + base: "qwen-image-2-1"; + /** + * Cpu Only + * @description Whether this model should run on CPU only + */ + cpu_only: boolean | null; + }; /** VAE_Diffusers_SD1_Config */ VAE_Diffusers_SD1_Config: { /** @@ -53411,7 +54226,7 @@ export interface operations { [name: string]: unknown; }; content: { - "application/json": components["schemas"]["Main_Diffusers_SD1_Config"] | components["schemas"]["Main_Diffusers_SD2_Config"] | components["schemas"]["Main_Diffusers_SDXL_Config"] | components["schemas"]["Main_Diffusers_SDXLRefiner_Config"] | components["schemas"]["Main_Diffusers_SD3_Config"] | components["schemas"]["Main_Diffusers_FLUX_Config"] | components["schemas"]["Main_Diffusers_Flux2_Config"] | components["schemas"]["Main_Diffusers_CogView4_Config"] | components["schemas"]["Main_Diffusers_QwenImage_Config"] | components["schemas"]["Main_Diffusers_Wan_Config"] | components["schemas"]["Main_Diffusers_ZImage_Config"] | components["schemas"]["Main_Diffusers_ErnieImage_Config"] | components["schemas"]["Main_Diffusers_Ideogram4_Config"] | components["schemas"]["Main_Diffusers_Krea2_Config"] | components["schemas"]["Main_Diffusers_MiniMaxH3_Config"] | components["schemas"]["Main_Diffusers_LTX2_Config"] | components["schemas"]["Main_Checkpoint_SD1_Config"] | components["schemas"]["Main_Checkpoint_SD2_Config"] | components["schemas"]["Main_Checkpoint_SDXL_Config"] | components["schemas"]["Main_Checkpoint_SDXLRefiner_Config"] | components["schemas"]["Main_Checkpoint_Flux2_Config"] | components["schemas"]["Main_Checkpoint_FLUX_Config"] | components["schemas"]["Main_Checkpoint_QwenImage_Config"] | components["schemas"]["Main_Checkpoint_Wan_Config"] | components["schemas"]["Main_Checkpoint_ZImage_Config"] | components["schemas"]["Main_Checkpoint_ErnieImage_Config"] | components["schemas"]["Main_Checkpoint_Ideogram4_Config"] | components["schemas"]["Main_Checkpoint_Krea2_Config"] | components["schemas"]["Main_Checkpoint_Anima_Config"] | components["schemas"]["Main_Checkpoint_MiniMaxH3_Config"] | components["schemas"]["Main_Checkpoint_LTX2_Config"] | components["schemas"]["Main_BnBNF4_FLUX_Config"] | components["schemas"]["Main_GGUF_Flux2_Config"] | components["schemas"]["Main_GGUF_FLUX_Config"] | components["schemas"]["Main_GGUF_QwenImage_Config"] | components["schemas"]["Main_GGUF_Wan_Config"] | components["schemas"]["Main_GGUF_ZImage_Config"] | components["schemas"]["Main_GGUF_Krea2_Config"] | components["schemas"]["Main_GGUF_Ideogram4_Config"] | components["schemas"]["Main_GGUF_ErnieImage_Config"] | components["schemas"]["Main_SDNQ_Diffusers_Flux2_Config"] | components["schemas"]["Main_SDNQ_Diffusers_FLUX_Config"] | components["schemas"]["Main_SDNQ_Diffusers_ZImage_Config"] | components["schemas"]["VAE_Checkpoint_SD1_Config"] | components["schemas"]["VAE_Checkpoint_SD2_Config"] | components["schemas"]["VAE_Checkpoint_SDXL_Config"] | components["schemas"]["VAE_Checkpoint_FLUX_Config"] | components["schemas"]["VAE_Checkpoint_SD3_Config"] | components["schemas"]["VAE_Checkpoint_Flux2_Config"] | components["schemas"]["VAE_Checkpoint_Wan_Config"] | components["schemas"]["VAE_Checkpoint_QwenImage_Config"] | components["schemas"]["VAE_Checkpoint_Anima_Config"] | components["schemas"]["VAE_Diffusers_SD1_Config"] | components["schemas"]["VAE_Diffusers_SDXL_Config"] | components["schemas"]["VAE_Diffusers_FLUX_Config"] | components["schemas"]["VAE_Diffusers_SD3_Config"] | components["schemas"]["VAE_Diffusers_Flux2_Config"] | components["schemas"]["VAE_Diffusers_Wan_Config"] | components["schemas"]["PiDDecoder_Checkpoint_FLUX_Config"] | components["schemas"]["PiDDecoder_Checkpoint_Flux2_Config"] | components["schemas"]["PiDDecoder_Checkpoint_SD3_Config"] | components["schemas"]["PiDDecoder_Checkpoint_SDXL_Config"] | components["schemas"]["PiDDecoder_Checkpoint_QwenImage_Config"] | components["schemas"]["ControlNet_Checkpoint_SD1_Config"] | components["schemas"]["ControlNet_Checkpoint_SD2_Config"] | components["schemas"]["ControlNet_Checkpoint_SDXL_Config"] | components["schemas"]["ControlNet_Checkpoint_FLUX_Config"] | components["schemas"]["ControlNet_Checkpoint_ZImage_Config"] | components["schemas"]["ControlNet_Checkpoint_Anima_Config"] | components["schemas"]["ControlNet_Diffusers_SD1_Config"] | components["schemas"]["ControlNet_Diffusers_SD2_Config"] | components["schemas"]["ControlNet_Diffusers_SDXL_Config"] | components["schemas"]["ControlNet_Diffusers_FLUX_Config"] | components["schemas"]["LoRA_LyCORIS_SD1_Config"] | components["schemas"]["LoRA_LyCORIS_SD2_Config"] | components["schemas"]["LoRA_LyCORIS_SDXL_Config"] | components["schemas"]["LoRA_LyCORIS_Flux2_Config"] | components["schemas"]["LoRA_LyCORIS_FLUX_Config"] | components["schemas"]["LoRA_LyCORIS_ZImage_Config"] | components["schemas"]["LoRA_LyCORIS_Krea2_Config"] | components["schemas"]["LoRA_LyCORIS_QwenImage_Config"] | components["schemas"]["LoRA_LyCORIS_LTX2_Config"] | components["schemas"]["LoRA_LyCORIS_MiniMaxH3_Config"] | components["schemas"]["LoRA_LyCORIS_Wan_Config"] | components["schemas"]["LoRA_LyCORIS_Anima_Config"] | components["schemas"]["LoRA_OMI_SDXL_Config"] | components["schemas"]["LoRA_OMI_FLUX_Config"] | components["schemas"]["LoRA_Diffusers_SD1_Config"] | components["schemas"]["LoRA_Diffusers_SD2_Config"] | components["schemas"]["LoRA_Diffusers_SDXL_Config"] | components["schemas"]["LoRA_Diffusers_Flux2_Config"] | components["schemas"]["LoRA_Diffusers_FLUX_Config"] | components["schemas"]["LoRA_Diffusers_ZImage_Config"] | components["schemas"]["ControlLoRA_LyCORIS_FLUX_Config"] | components["schemas"]["T5Encoder_T5Encoder_Config"] | components["schemas"]["T5Encoder_BnBLLMint8_Config"] | components["schemas"]["T5Encoder_SDNQ_Config"] | components["schemas"]["T5Encoder_GGUF_Config"] | components["schemas"]["Qwen3VLEncoder_Checkpoint_MiniMaxH3_Config"] | components["schemas"]["Qwen3VLEncoder_Checkpoint_Config"] | components["schemas"]["Qwen3VLEncoder_GGUF_Config"] | components["schemas"]["Qwen3VLEncoder_Qwen3VLEncoder_Config"] | components["schemas"]["Qwen35Encoder_Checkpoint_Config"] | components["schemas"]["Qwen3Encoder_Qwen3Encoder_Config"] | components["schemas"]["Qwen3Encoder_Checkpoint_Config"] | components["schemas"]["Qwen3Encoder_GGUF_Config"] | components["schemas"]["Qwen3Encoder_SDNQ_Folder_Config"] | components["schemas"]["MistralEncoder_Diffusers_Config"] | components["schemas"]["MistralEncoder_Checkpoint_Config"] | components["schemas"]["MistralEncoder_GGUF_Config"] | components["schemas"]["Gemma2Encoder_Gemma2Encoder_Config"] | components["schemas"]["Gemma4Encoder_Gemma4Encoder_LTX2_Config"] | components["schemas"]["Gemma2Encoder_GGUF_Config"] | components["schemas"]["QwenVLEncoder_Diffusers_Config"] | components["schemas"]["QwenVLEncoder_Checkpoint_Config"] | components["schemas"]["WanT5Encoder_WanT5Encoder_Config"] | components["schemas"]["TI_File_SD1_Config"] | components["schemas"]["TI_File_SD2_Config"] | components["schemas"]["TI_File_SDXL_Config"] | components["schemas"]["TI_Folder_SD1_Config"] | components["schemas"]["TI_Folder_SD2_Config"] | components["schemas"]["TI_Folder_SDXL_Config"] | components["schemas"]["IPAdapter_InvokeAI_SD1_Config"] | components["schemas"]["IPAdapter_InvokeAI_SD2_Config"] | components["schemas"]["IPAdapter_InvokeAI_SDXL_Config"] | components["schemas"]["IPAdapter_Checkpoint_SD1_Config"] | components["schemas"]["IPAdapter_Checkpoint_SD2_Config"] | components["schemas"]["IPAdapter_Checkpoint_SDXL_Config"] | components["schemas"]["IPAdapter_Checkpoint_FLUX_Config"] | components["schemas"]["T2IAdapter_Diffusers_SD1_Config"] | components["schemas"]["T2IAdapter_Diffusers_SDXL_Config"] | components["schemas"]["Spandrel_Checkpoint_Config"] | components["schemas"]["CLIPEmbed_Diffusers_G_Config"] | components["schemas"]["CLIPEmbed_Diffusers_L_Config"] | components["schemas"]["CLIPEmbed_Checkpoint_G_Config"] | components["schemas"]["CLIPEmbed_Checkpoint_L_Config"] | components["schemas"]["CLIPVision_Diffusers_Config"] | components["schemas"]["SigLIP_Diffusers_Config"] | components["schemas"]["FLUXRedux_Checkpoint_Config"] | components["schemas"]["LTX2DurationHead_Checkpoint_Config"] | components["schemas"]["LlavaOnevision_Diffusers_Config"] | components["schemas"]["TextLLM_Diffusers_Config"] | components["schemas"]["ExternalApiModelConfig"] | components["schemas"]["Unknown_Config"]; + "application/json": components["schemas"]["Main_Diffusers_SD1_Config"] | components["schemas"]["Main_Diffusers_SD2_Config"] | components["schemas"]["Main_Diffusers_SDXL_Config"] | components["schemas"]["Main_Diffusers_SDXLRefiner_Config"] | components["schemas"]["Main_Diffusers_SD3_Config"] | components["schemas"]["Main_Diffusers_FLUX_Config"] | components["schemas"]["Main_Diffusers_Flux2_Config"] | components["schemas"]["Main_Diffusers_CogView4_Config"] | components["schemas"]["Main_Diffusers_QwenImage_Config"] | components["schemas"]["Main_Diffusers_QwenImage21_Config"] | components["schemas"]["Main_Diffusers_Wan_Config"] | components["schemas"]["Main_Diffusers_ZImage_Config"] | components["schemas"]["Main_Diffusers_ErnieImage_Config"] | components["schemas"]["Main_Diffusers_Ideogram4_Config"] | components["schemas"]["Main_Diffusers_Krea2_Config"] | components["schemas"]["Main_Diffusers_MiniMaxH3_Config"] | components["schemas"]["Main_Diffusers_LTX2_Config"] | components["schemas"]["Main_Checkpoint_SD1_Config"] | components["schemas"]["Main_Checkpoint_SD2_Config"] | components["schemas"]["Main_Checkpoint_SDXL_Config"] | components["schemas"]["Main_Checkpoint_SDXLRefiner_Config"] | components["schemas"]["Main_Checkpoint_Flux2_Config"] | components["schemas"]["Main_Checkpoint_FLUX_Config"] | components["schemas"]["Main_Checkpoint_QwenImage_Config"] | components["schemas"]["Main_Checkpoint_QwenImage21_Config"] | components["schemas"]["Main_Checkpoint_Wan_Config"] | components["schemas"]["Main_Checkpoint_ZImage_Config"] | components["schemas"]["Main_Checkpoint_ErnieImage_Config"] | components["schemas"]["Main_Checkpoint_Ideogram4_Config"] | components["schemas"]["Main_Checkpoint_Krea2_Config"] | components["schemas"]["Main_Checkpoint_Anima_Config"] | components["schemas"]["Main_Checkpoint_MiniMaxH3_Config"] | components["schemas"]["Main_Checkpoint_LTX2_Config"] | components["schemas"]["Main_BnBNF4_FLUX_Config"] | components["schemas"]["Main_GGUF_Flux2_Config"] | components["schemas"]["Main_GGUF_FLUX_Config"] | components["schemas"]["Main_GGUF_QwenImage_Config"] | components["schemas"]["Main_GGUF_QwenImage21_Config"] | components["schemas"]["Main_GGUF_Wan_Config"] | components["schemas"]["Main_GGUF_ZImage_Config"] | components["schemas"]["Main_GGUF_Krea2_Config"] | components["schemas"]["Main_GGUF_Ideogram4_Config"] | components["schemas"]["Main_GGUF_ErnieImage_Config"] | components["schemas"]["Main_SDNQ_Diffusers_Flux2_Config"] | components["schemas"]["Main_SDNQ_Diffusers_FLUX_Config"] | components["schemas"]["Main_SDNQ_Diffusers_ZImage_Config"] | components["schemas"]["VAE_Checkpoint_SD1_Config"] | components["schemas"]["VAE_Checkpoint_SD2_Config"] | components["schemas"]["VAE_Checkpoint_SDXL_Config"] | components["schemas"]["VAE_Checkpoint_FLUX_Config"] | components["schemas"]["VAE_Checkpoint_SD3_Config"] | components["schemas"]["VAE_Checkpoint_Flux2_Config"] | components["schemas"]["VAE_Checkpoint_Wan_Config"] | components["schemas"]["VAE_Checkpoint_QwenImage_Config"] | components["schemas"]["VAE_Checkpoint_Anima_Config"] | components["schemas"]["VAE_Checkpoint_QwenImage21_Config"] | components["schemas"]["VAE_Diffusers_SD1_Config"] | components["schemas"]["VAE_Diffusers_SDXL_Config"] | components["schemas"]["VAE_Diffusers_FLUX_Config"] | components["schemas"]["VAE_Diffusers_SD3_Config"] | components["schemas"]["VAE_Diffusers_Flux2_Config"] | components["schemas"]["VAE_Diffusers_Wan_Config"] | components["schemas"]["VAE_Diffusers_QwenImage21_Config"] | components["schemas"]["PiDDecoder_Checkpoint_FLUX_Config"] | components["schemas"]["PiDDecoder_Checkpoint_Flux2_Config"] | components["schemas"]["PiDDecoder_Checkpoint_SD3_Config"] | components["schemas"]["PiDDecoder_Checkpoint_SDXL_Config"] | components["schemas"]["PiDDecoder_Checkpoint_QwenImage_Config"] | components["schemas"]["ControlNet_Checkpoint_SD1_Config"] | components["schemas"]["ControlNet_Checkpoint_SD2_Config"] | components["schemas"]["ControlNet_Checkpoint_SDXL_Config"] | components["schemas"]["ControlNet_Checkpoint_FLUX_Config"] | components["schemas"]["ControlNet_Checkpoint_ZImage_Config"] | components["schemas"]["ControlNet_Checkpoint_Anima_Config"] | components["schemas"]["ControlNet_Diffusers_SD1_Config"] | components["schemas"]["ControlNet_Diffusers_SD2_Config"] | components["schemas"]["ControlNet_Diffusers_SDXL_Config"] | components["schemas"]["ControlNet_Diffusers_FLUX_Config"] | components["schemas"]["LoRA_LyCORIS_SD1_Config"] | components["schemas"]["LoRA_LyCORIS_SD2_Config"] | components["schemas"]["LoRA_LyCORIS_SDXL_Config"] | components["schemas"]["LoRA_LyCORIS_Flux2_Config"] | components["schemas"]["LoRA_LyCORIS_FLUX_Config"] | components["schemas"]["LoRA_LyCORIS_ZImage_Config"] | components["schemas"]["LoRA_LyCORIS_Krea2_Config"] | components["schemas"]["LoRA_LyCORIS_QwenImage_Config"] | components["schemas"]["LoRA_LyCORIS_LTX2_Config"] | components["schemas"]["LoRA_LyCORIS_MiniMaxH3_Config"] | components["schemas"]["LoRA_LyCORIS_Wan_Config"] | components["schemas"]["LoRA_LyCORIS_Anima_Config"] | components["schemas"]["LoRA_OMI_SDXL_Config"] | components["schemas"]["LoRA_OMI_FLUX_Config"] | components["schemas"]["LoRA_Diffusers_SD1_Config"] | components["schemas"]["LoRA_Diffusers_SD2_Config"] | components["schemas"]["LoRA_Diffusers_SDXL_Config"] | components["schemas"]["LoRA_Diffusers_Flux2_Config"] | components["schemas"]["LoRA_Diffusers_FLUX_Config"] | components["schemas"]["LoRA_Diffusers_ZImage_Config"] | components["schemas"]["ControlLoRA_LyCORIS_FLUX_Config"] | components["schemas"]["T5Encoder_T5Encoder_Config"] | components["schemas"]["T5Encoder_BnBLLMint8_Config"] | components["schemas"]["T5Encoder_SDNQ_Config"] | components["schemas"]["T5Encoder_GGUF_Config"] | components["schemas"]["Qwen3VLEncoder_Checkpoint_MiniMaxH3_Config"] | components["schemas"]["Qwen3VLEncoder_Checkpoint_Config"] | components["schemas"]["Qwen3VLEncoder_GGUF_Config"] | components["schemas"]["Qwen3VLEncoder_Qwen3VLEncoder_Config"] | components["schemas"]["Qwen35Encoder_Checkpoint_Config"] | components["schemas"]["Qwen3Encoder_Qwen3Encoder_Config"] | components["schemas"]["Qwen3Encoder_Checkpoint_Config"] | components["schemas"]["Qwen3Encoder_GGUF_Config"] | components["schemas"]["Qwen3Encoder_SDNQ_Folder_Config"] | components["schemas"]["MistralEncoder_Diffusers_Config"] | components["schemas"]["MistralEncoder_Checkpoint_Config"] | components["schemas"]["MistralEncoder_GGUF_Config"] | components["schemas"]["Gemma2Encoder_Gemma2Encoder_Config"] | components["schemas"]["Gemma4Encoder_Gemma4Encoder_LTX2_Config"] | components["schemas"]["Gemma2Encoder_GGUF_Config"] | components["schemas"]["QwenVLEncoder_Diffusers_Config"] | components["schemas"]["QwenVLEncoder_Checkpoint_Config"] | components["schemas"]["WanT5Encoder_WanT5Encoder_Config"] | components["schemas"]["TI_File_SD1_Config"] | components["schemas"]["TI_File_SD2_Config"] | components["schemas"]["TI_File_SDXL_Config"] | components["schemas"]["TI_Folder_SD1_Config"] | components["schemas"]["TI_Folder_SD2_Config"] | components["schemas"]["TI_Folder_SDXL_Config"] | components["schemas"]["IPAdapter_InvokeAI_SD1_Config"] | components["schemas"]["IPAdapter_InvokeAI_SD2_Config"] | components["schemas"]["IPAdapter_InvokeAI_SDXL_Config"] | components["schemas"]["IPAdapter_Checkpoint_SD1_Config"] | components["schemas"]["IPAdapter_Checkpoint_SD2_Config"] | components["schemas"]["IPAdapter_Checkpoint_SDXL_Config"] | components["schemas"]["IPAdapter_Checkpoint_FLUX_Config"] | components["schemas"]["T2IAdapter_Diffusers_SD1_Config"] | components["schemas"]["T2IAdapter_Diffusers_SDXL_Config"] | components["schemas"]["Spandrel_Checkpoint_Config"] | components["schemas"]["CLIPEmbed_Diffusers_G_Config"] | components["schemas"]["CLIPEmbed_Diffusers_L_Config"] | components["schemas"]["CLIPEmbed_Checkpoint_G_Config"] | components["schemas"]["CLIPEmbed_Checkpoint_L_Config"] | components["schemas"]["CLIPVision_Diffusers_Config"] | components["schemas"]["SigLIP_Diffusers_Config"] | components["schemas"]["FLUXRedux_Checkpoint_Config"] | components["schemas"]["LTX2DurationHead_Checkpoint_Config"] | components["schemas"]["LlavaOnevision_Diffusers_Config"] | components["schemas"]["TextLLM_Diffusers_Config"] | components["schemas"]["ExternalApiModelConfig"] | components["schemas"]["Unknown_Config"]; }; }; /** @description Validation Error */ @@ -53443,7 +54258,7 @@ export interface operations { [name: string]: unknown; }; content: { - "application/json": components["schemas"]["Main_Diffusers_SD1_Config"] | components["schemas"]["Main_Diffusers_SD2_Config"] | components["schemas"]["Main_Diffusers_SDXL_Config"] | components["schemas"]["Main_Diffusers_SDXLRefiner_Config"] | components["schemas"]["Main_Diffusers_SD3_Config"] | components["schemas"]["Main_Diffusers_FLUX_Config"] | components["schemas"]["Main_Diffusers_Flux2_Config"] | components["schemas"]["Main_Diffusers_CogView4_Config"] | components["schemas"]["Main_Diffusers_QwenImage_Config"] | components["schemas"]["Main_Diffusers_Wan_Config"] | components["schemas"]["Main_Diffusers_ZImage_Config"] | components["schemas"]["Main_Diffusers_ErnieImage_Config"] | components["schemas"]["Main_Diffusers_Ideogram4_Config"] | components["schemas"]["Main_Diffusers_Krea2_Config"] | components["schemas"]["Main_Diffusers_MiniMaxH3_Config"] | components["schemas"]["Main_Diffusers_LTX2_Config"] | components["schemas"]["Main_Checkpoint_SD1_Config"] | components["schemas"]["Main_Checkpoint_SD2_Config"] | components["schemas"]["Main_Checkpoint_SDXL_Config"] | components["schemas"]["Main_Checkpoint_SDXLRefiner_Config"] | components["schemas"]["Main_Checkpoint_Flux2_Config"] | components["schemas"]["Main_Checkpoint_FLUX_Config"] | components["schemas"]["Main_Checkpoint_QwenImage_Config"] | components["schemas"]["Main_Checkpoint_Wan_Config"] | components["schemas"]["Main_Checkpoint_ZImage_Config"] | components["schemas"]["Main_Checkpoint_ErnieImage_Config"] | components["schemas"]["Main_Checkpoint_Ideogram4_Config"] | components["schemas"]["Main_Checkpoint_Krea2_Config"] | components["schemas"]["Main_Checkpoint_Anima_Config"] | components["schemas"]["Main_Checkpoint_MiniMaxH3_Config"] | components["schemas"]["Main_Checkpoint_LTX2_Config"] | components["schemas"]["Main_BnBNF4_FLUX_Config"] | components["schemas"]["Main_GGUF_Flux2_Config"] | components["schemas"]["Main_GGUF_FLUX_Config"] | components["schemas"]["Main_GGUF_QwenImage_Config"] | components["schemas"]["Main_GGUF_Wan_Config"] | components["schemas"]["Main_GGUF_ZImage_Config"] | components["schemas"]["Main_GGUF_Krea2_Config"] | components["schemas"]["Main_GGUF_Ideogram4_Config"] | components["schemas"]["Main_GGUF_ErnieImage_Config"] | components["schemas"]["Main_SDNQ_Diffusers_Flux2_Config"] | components["schemas"]["Main_SDNQ_Diffusers_FLUX_Config"] | components["schemas"]["Main_SDNQ_Diffusers_ZImage_Config"] | components["schemas"]["VAE_Checkpoint_SD1_Config"] | components["schemas"]["VAE_Checkpoint_SD2_Config"] | components["schemas"]["VAE_Checkpoint_SDXL_Config"] | components["schemas"]["VAE_Checkpoint_FLUX_Config"] | components["schemas"]["VAE_Checkpoint_SD3_Config"] | components["schemas"]["VAE_Checkpoint_Flux2_Config"] | components["schemas"]["VAE_Checkpoint_Wan_Config"] | components["schemas"]["VAE_Checkpoint_QwenImage_Config"] | components["schemas"]["VAE_Checkpoint_Anima_Config"] | components["schemas"]["VAE_Diffusers_SD1_Config"] | components["schemas"]["VAE_Diffusers_SDXL_Config"] | components["schemas"]["VAE_Diffusers_FLUX_Config"] | components["schemas"]["VAE_Diffusers_SD3_Config"] | components["schemas"]["VAE_Diffusers_Flux2_Config"] | components["schemas"]["VAE_Diffusers_Wan_Config"] | components["schemas"]["PiDDecoder_Checkpoint_FLUX_Config"] | components["schemas"]["PiDDecoder_Checkpoint_Flux2_Config"] | components["schemas"]["PiDDecoder_Checkpoint_SD3_Config"] | components["schemas"]["PiDDecoder_Checkpoint_SDXL_Config"] | components["schemas"]["PiDDecoder_Checkpoint_QwenImage_Config"] | components["schemas"]["ControlNet_Checkpoint_SD1_Config"] | components["schemas"]["ControlNet_Checkpoint_SD2_Config"] | components["schemas"]["ControlNet_Checkpoint_SDXL_Config"] | components["schemas"]["ControlNet_Checkpoint_FLUX_Config"] | components["schemas"]["ControlNet_Checkpoint_ZImage_Config"] | components["schemas"]["ControlNet_Checkpoint_Anima_Config"] | components["schemas"]["ControlNet_Diffusers_SD1_Config"] | components["schemas"]["ControlNet_Diffusers_SD2_Config"] | components["schemas"]["ControlNet_Diffusers_SDXL_Config"] | components["schemas"]["ControlNet_Diffusers_FLUX_Config"] | components["schemas"]["LoRA_LyCORIS_SD1_Config"] | components["schemas"]["LoRA_LyCORIS_SD2_Config"] | components["schemas"]["LoRA_LyCORIS_SDXL_Config"] | components["schemas"]["LoRA_LyCORIS_Flux2_Config"] | components["schemas"]["LoRA_LyCORIS_FLUX_Config"] | components["schemas"]["LoRA_LyCORIS_ZImage_Config"] | components["schemas"]["LoRA_LyCORIS_Krea2_Config"] | components["schemas"]["LoRA_LyCORIS_QwenImage_Config"] | components["schemas"]["LoRA_LyCORIS_LTX2_Config"] | components["schemas"]["LoRA_LyCORIS_MiniMaxH3_Config"] | components["schemas"]["LoRA_LyCORIS_Wan_Config"] | components["schemas"]["LoRA_LyCORIS_Anima_Config"] | components["schemas"]["LoRA_OMI_SDXL_Config"] | components["schemas"]["LoRA_OMI_FLUX_Config"] | components["schemas"]["LoRA_Diffusers_SD1_Config"] | components["schemas"]["LoRA_Diffusers_SD2_Config"] | components["schemas"]["LoRA_Diffusers_SDXL_Config"] | components["schemas"]["LoRA_Diffusers_Flux2_Config"] | components["schemas"]["LoRA_Diffusers_FLUX_Config"] | components["schemas"]["LoRA_Diffusers_ZImage_Config"] | components["schemas"]["ControlLoRA_LyCORIS_FLUX_Config"] | components["schemas"]["T5Encoder_T5Encoder_Config"] | components["schemas"]["T5Encoder_BnBLLMint8_Config"] | components["schemas"]["T5Encoder_SDNQ_Config"] | components["schemas"]["T5Encoder_GGUF_Config"] | components["schemas"]["Qwen3VLEncoder_Checkpoint_MiniMaxH3_Config"] | components["schemas"]["Qwen3VLEncoder_Checkpoint_Config"] | components["schemas"]["Qwen3VLEncoder_GGUF_Config"] | components["schemas"]["Qwen3VLEncoder_Qwen3VLEncoder_Config"] | components["schemas"]["Qwen35Encoder_Checkpoint_Config"] | components["schemas"]["Qwen3Encoder_Qwen3Encoder_Config"] | components["schemas"]["Qwen3Encoder_Checkpoint_Config"] | components["schemas"]["Qwen3Encoder_GGUF_Config"] | components["schemas"]["Qwen3Encoder_SDNQ_Folder_Config"] | components["schemas"]["MistralEncoder_Diffusers_Config"] | components["schemas"]["MistralEncoder_Checkpoint_Config"] | components["schemas"]["MistralEncoder_GGUF_Config"] | components["schemas"]["Gemma2Encoder_Gemma2Encoder_Config"] | components["schemas"]["Gemma4Encoder_Gemma4Encoder_LTX2_Config"] | components["schemas"]["Gemma2Encoder_GGUF_Config"] | components["schemas"]["QwenVLEncoder_Diffusers_Config"] | components["schemas"]["QwenVLEncoder_Checkpoint_Config"] | components["schemas"]["WanT5Encoder_WanT5Encoder_Config"] | components["schemas"]["TI_File_SD1_Config"] | components["schemas"]["TI_File_SD2_Config"] | components["schemas"]["TI_File_SDXL_Config"] | components["schemas"]["TI_Folder_SD1_Config"] | components["schemas"]["TI_Folder_SD2_Config"] | components["schemas"]["TI_Folder_SDXL_Config"] | components["schemas"]["IPAdapter_InvokeAI_SD1_Config"] | components["schemas"]["IPAdapter_InvokeAI_SD2_Config"] | components["schemas"]["IPAdapter_InvokeAI_SDXL_Config"] | components["schemas"]["IPAdapter_Checkpoint_SD1_Config"] | components["schemas"]["IPAdapter_Checkpoint_SD2_Config"] | components["schemas"]["IPAdapter_Checkpoint_SDXL_Config"] | components["schemas"]["IPAdapter_Checkpoint_FLUX_Config"] | components["schemas"]["T2IAdapter_Diffusers_SD1_Config"] | components["schemas"]["T2IAdapter_Diffusers_SDXL_Config"] | components["schemas"]["Spandrel_Checkpoint_Config"] | components["schemas"]["CLIPEmbed_Diffusers_G_Config"] | components["schemas"]["CLIPEmbed_Diffusers_L_Config"] | components["schemas"]["CLIPEmbed_Checkpoint_G_Config"] | components["schemas"]["CLIPEmbed_Checkpoint_L_Config"] | components["schemas"]["CLIPVision_Diffusers_Config"] | components["schemas"]["SigLIP_Diffusers_Config"] | components["schemas"]["FLUXRedux_Checkpoint_Config"] | components["schemas"]["LTX2DurationHead_Checkpoint_Config"] | components["schemas"]["LlavaOnevision_Diffusers_Config"] | components["schemas"]["TextLLM_Diffusers_Config"] | components["schemas"]["ExternalApiModelConfig"] | components["schemas"]["Unknown_Config"]; + "application/json": components["schemas"]["Main_Diffusers_SD1_Config"] | components["schemas"]["Main_Diffusers_SD2_Config"] | components["schemas"]["Main_Diffusers_SDXL_Config"] | components["schemas"]["Main_Diffusers_SDXLRefiner_Config"] | components["schemas"]["Main_Diffusers_SD3_Config"] | components["schemas"]["Main_Diffusers_FLUX_Config"] | components["schemas"]["Main_Diffusers_Flux2_Config"] | components["schemas"]["Main_Diffusers_CogView4_Config"] | components["schemas"]["Main_Diffusers_QwenImage_Config"] | components["schemas"]["Main_Diffusers_QwenImage21_Config"] | components["schemas"]["Main_Diffusers_Wan_Config"] | components["schemas"]["Main_Diffusers_ZImage_Config"] | components["schemas"]["Main_Diffusers_ErnieImage_Config"] | components["schemas"]["Main_Diffusers_Ideogram4_Config"] | components["schemas"]["Main_Diffusers_Krea2_Config"] | components["schemas"]["Main_Diffusers_MiniMaxH3_Config"] | components["schemas"]["Main_Diffusers_LTX2_Config"] | components["schemas"]["Main_Checkpoint_SD1_Config"] | components["schemas"]["Main_Checkpoint_SD2_Config"] | components["schemas"]["Main_Checkpoint_SDXL_Config"] | components["schemas"]["Main_Checkpoint_SDXLRefiner_Config"] | components["schemas"]["Main_Checkpoint_Flux2_Config"] | components["schemas"]["Main_Checkpoint_FLUX_Config"] | components["schemas"]["Main_Checkpoint_QwenImage_Config"] | components["schemas"]["Main_Checkpoint_QwenImage21_Config"] | components["schemas"]["Main_Checkpoint_Wan_Config"] | components["schemas"]["Main_Checkpoint_ZImage_Config"] | components["schemas"]["Main_Checkpoint_ErnieImage_Config"] | components["schemas"]["Main_Checkpoint_Ideogram4_Config"] | components["schemas"]["Main_Checkpoint_Krea2_Config"] | components["schemas"]["Main_Checkpoint_Anima_Config"] | components["schemas"]["Main_Checkpoint_MiniMaxH3_Config"] | components["schemas"]["Main_Checkpoint_LTX2_Config"] | components["schemas"]["Main_BnBNF4_FLUX_Config"] | components["schemas"]["Main_GGUF_Flux2_Config"] | components["schemas"]["Main_GGUF_FLUX_Config"] | components["schemas"]["Main_GGUF_QwenImage_Config"] | components["schemas"]["Main_GGUF_QwenImage21_Config"] | components["schemas"]["Main_GGUF_Wan_Config"] | components["schemas"]["Main_GGUF_ZImage_Config"] | components["schemas"]["Main_GGUF_Krea2_Config"] | components["schemas"]["Main_GGUF_Ideogram4_Config"] | components["schemas"]["Main_GGUF_ErnieImage_Config"] | components["schemas"]["Main_SDNQ_Diffusers_Flux2_Config"] | components["schemas"]["Main_SDNQ_Diffusers_FLUX_Config"] | components["schemas"]["Main_SDNQ_Diffusers_ZImage_Config"] | components["schemas"]["VAE_Checkpoint_SD1_Config"] | components["schemas"]["VAE_Checkpoint_SD2_Config"] | components["schemas"]["VAE_Checkpoint_SDXL_Config"] | components["schemas"]["VAE_Checkpoint_FLUX_Config"] | components["schemas"]["VAE_Checkpoint_SD3_Config"] | components["schemas"]["VAE_Checkpoint_Flux2_Config"] | components["schemas"]["VAE_Checkpoint_Wan_Config"] | components["schemas"]["VAE_Checkpoint_QwenImage_Config"] | components["schemas"]["VAE_Checkpoint_Anima_Config"] | components["schemas"]["VAE_Checkpoint_QwenImage21_Config"] | components["schemas"]["VAE_Diffusers_SD1_Config"] | components["schemas"]["VAE_Diffusers_SDXL_Config"] | components["schemas"]["VAE_Diffusers_FLUX_Config"] | components["schemas"]["VAE_Diffusers_SD3_Config"] | components["schemas"]["VAE_Diffusers_Flux2_Config"] | components["schemas"]["VAE_Diffusers_Wan_Config"] | components["schemas"]["VAE_Diffusers_QwenImage21_Config"] | components["schemas"]["PiDDecoder_Checkpoint_FLUX_Config"] | components["schemas"]["PiDDecoder_Checkpoint_Flux2_Config"] | components["schemas"]["PiDDecoder_Checkpoint_SD3_Config"] | components["schemas"]["PiDDecoder_Checkpoint_SDXL_Config"] | components["schemas"]["PiDDecoder_Checkpoint_QwenImage_Config"] | components["schemas"]["ControlNet_Checkpoint_SD1_Config"] | components["schemas"]["ControlNet_Checkpoint_SD2_Config"] | components["schemas"]["ControlNet_Checkpoint_SDXL_Config"] | components["schemas"]["ControlNet_Checkpoint_FLUX_Config"] | components["schemas"]["ControlNet_Checkpoint_ZImage_Config"] | components["schemas"]["ControlNet_Checkpoint_Anima_Config"] | components["schemas"]["ControlNet_Diffusers_SD1_Config"] | components["schemas"]["ControlNet_Diffusers_SD2_Config"] | components["schemas"]["ControlNet_Diffusers_SDXL_Config"] | components["schemas"]["ControlNet_Diffusers_FLUX_Config"] | components["schemas"]["LoRA_LyCORIS_SD1_Config"] | components["schemas"]["LoRA_LyCORIS_SD2_Config"] | components["schemas"]["LoRA_LyCORIS_SDXL_Config"] | components["schemas"]["LoRA_LyCORIS_Flux2_Config"] | components["schemas"]["LoRA_LyCORIS_FLUX_Config"] | components["schemas"]["LoRA_LyCORIS_ZImage_Config"] | components["schemas"]["LoRA_LyCORIS_Krea2_Config"] | components["schemas"]["LoRA_LyCORIS_QwenImage_Config"] | components["schemas"]["LoRA_LyCORIS_LTX2_Config"] | components["schemas"]["LoRA_LyCORIS_MiniMaxH3_Config"] | components["schemas"]["LoRA_LyCORIS_Wan_Config"] | components["schemas"]["LoRA_LyCORIS_Anima_Config"] | components["schemas"]["LoRA_OMI_SDXL_Config"] | components["schemas"]["LoRA_OMI_FLUX_Config"] | components["schemas"]["LoRA_Diffusers_SD1_Config"] | components["schemas"]["LoRA_Diffusers_SD2_Config"] | components["schemas"]["LoRA_Diffusers_SDXL_Config"] | components["schemas"]["LoRA_Diffusers_Flux2_Config"] | components["schemas"]["LoRA_Diffusers_FLUX_Config"] | components["schemas"]["LoRA_Diffusers_ZImage_Config"] | components["schemas"]["ControlLoRA_LyCORIS_FLUX_Config"] | components["schemas"]["T5Encoder_T5Encoder_Config"] | components["schemas"]["T5Encoder_BnBLLMint8_Config"] | components["schemas"]["T5Encoder_SDNQ_Config"] | components["schemas"]["T5Encoder_GGUF_Config"] | components["schemas"]["Qwen3VLEncoder_Checkpoint_MiniMaxH3_Config"] | components["schemas"]["Qwen3VLEncoder_Checkpoint_Config"] | components["schemas"]["Qwen3VLEncoder_GGUF_Config"] | components["schemas"]["Qwen3VLEncoder_Qwen3VLEncoder_Config"] | components["schemas"]["Qwen35Encoder_Checkpoint_Config"] | components["schemas"]["Qwen3Encoder_Qwen3Encoder_Config"] | components["schemas"]["Qwen3Encoder_Checkpoint_Config"] | components["schemas"]["Qwen3Encoder_GGUF_Config"] | components["schemas"]["Qwen3Encoder_SDNQ_Folder_Config"] | components["schemas"]["MistralEncoder_Diffusers_Config"] | components["schemas"]["MistralEncoder_Checkpoint_Config"] | components["schemas"]["MistralEncoder_GGUF_Config"] | components["schemas"]["Gemma2Encoder_Gemma2Encoder_Config"] | components["schemas"]["Gemma4Encoder_Gemma4Encoder_LTX2_Config"] | components["schemas"]["Gemma2Encoder_GGUF_Config"] | components["schemas"]["QwenVLEncoder_Diffusers_Config"] | components["schemas"]["QwenVLEncoder_Checkpoint_Config"] | components["schemas"]["WanT5Encoder_WanT5Encoder_Config"] | components["schemas"]["TI_File_SD1_Config"] | components["schemas"]["TI_File_SD2_Config"] | components["schemas"]["TI_File_SDXL_Config"] | components["schemas"]["TI_Folder_SD1_Config"] | components["schemas"]["TI_Folder_SD2_Config"] | components["schemas"]["TI_Folder_SDXL_Config"] | components["schemas"]["IPAdapter_InvokeAI_SD1_Config"] | components["schemas"]["IPAdapter_InvokeAI_SD2_Config"] | components["schemas"]["IPAdapter_InvokeAI_SDXL_Config"] | components["schemas"]["IPAdapter_Checkpoint_SD1_Config"] | components["schemas"]["IPAdapter_Checkpoint_SD2_Config"] | components["schemas"]["IPAdapter_Checkpoint_SDXL_Config"] | components["schemas"]["IPAdapter_Checkpoint_FLUX_Config"] | components["schemas"]["T2IAdapter_Diffusers_SD1_Config"] | components["schemas"]["T2IAdapter_Diffusers_SDXL_Config"] | components["schemas"]["Spandrel_Checkpoint_Config"] | components["schemas"]["CLIPEmbed_Diffusers_G_Config"] | components["schemas"]["CLIPEmbed_Diffusers_L_Config"] | components["schemas"]["CLIPEmbed_Checkpoint_G_Config"] | components["schemas"]["CLIPEmbed_Checkpoint_L_Config"] | components["schemas"]["CLIPVision_Diffusers_Config"] | components["schemas"]["SigLIP_Diffusers_Config"] | components["schemas"]["FLUXRedux_Checkpoint_Config"] | components["schemas"]["LTX2DurationHead_Checkpoint_Config"] | components["schemas"]["LlavaOnevision_Diffusers_Config"] | components["schemas"]["TextLLM_Diffusers_Config"] | components["schemas"]["ExternalApiModelConfig"] | components["schemas"]["Unknown_Config"]; }; }; /** @description Validation Error */ @@ -53495,7 +54310,7 @@ export interface operations { * "upcast_attention": false * } */ - "application/json": components["schemas"]["Main_Diffusers_SD1_Config"] | components["schemas"]["Main_Diffusers_SD2_Config"] | components["schemas"]["Main_Diffusers_SDXL_Config"] | components["schemas"]["Main_Diffusers_SDXLRefiner_Config"] | components["schemas"]["Main_Diffusers_SD3_Config"] | components["schemas"]["Main_Diffusers_FLUX_Config"] | components["schemas"]["Main_Diffusers_Flux2_Config"] | components["schemas"]["Main_Diffusers_CogView4_Config"] | components["schemas"]["Main_Diffusers_QwenImage_Config"] | components["schemas"]["Main_Diffusers_Wan_Config"] | components["schemas"]["Main_Diffusers_ZImage_Config"] | components["schemas"]["Main_Diffusers_ErnieImage_Config"] | components["schemas"]["Main_Diffusers_Ideogram4_Config"] | components["schemas"]["Main_Diffusers_Krea2_Config"] | components["schemas"]["Main_Diffusers_MiniMaxH3_Config"] | components["schemas"]["Main_Diffusers_LTX2_Config"] | components["schemas"]["Main_Checkpoint_SD1_Config"] | components["schemas"]["Main_Checkpoint_SD2_Config"] | components["schemas"]["Main_Checkpoint_SDXL_Config"] | components["schemas"]["Main_Checkpoint_SDXLRefiner_Config"] | components["schemas"]["Main_Checkpoint_Flux2_Config"] | components["schemas"]["Main_Checkpoint_FLUX_Config"] | components["schemas"]["Main_Checkpoint_QwenImage_Config"] | components["schemas"]["Main_Checkpoint_Wan_Config"] | components["schemas"]["Main_Checkpoint_ZImage_Config"] | components["schemas"]["Main_Checkpoint_ErnieImage_Config"] | components["schemas"]["Main_Checkpoint_Ideogram4_Config"] | components["schemas"]["Main_Checkpoint_Krea2_Config"] | components["schemas"]["Main_Checkpoint_Anima_Config"] | components["schemas"]["Main_Checkpoint_MiniMaxH3_Config"] | components["schemas"]["Main_Checkpoint_LTX2_Config"] | components["schemas"]["Main_BnBNF4_FLUX_Config"] | components["schemas"]["Main_GGUF_Flux2_Config"] | components["schemas"]["Main_GGUF_FLUX_Config"] | components["schemas"]["Main_GGUF_QwenImage_Config"] | components["schemas"]["Main_GGUF_Wan_Config"] | components["schemas"]["Main_GGUF_ZImage_Config"] | components["schemas"]["Main_GGUF_Krea2_Config"] | components["schemas"]["Main_GGUF_Ideogram4_Config"] | components["schemas"]["Main_GGUF_ErnieImage_Config"] | components["schemas"]["Main_SDNQ_Diffusers_Flux2_Config"] | components["schemas"]["Main_SDNQ_Diffusers_FLUX_Config"] | components["schemas"]["Main_SDNQ_Diffusers_ZImage_Config"] | components["schemas"]["VAE_Checkpoint_SD1_Config"] | components["schemas"]["VAE_Checkpoint_SD2_Config"] | components["schemas"]["VAE_Checkpoint_SDXL_Config"] | components["schemas"]["VAE_Checkpoint_FLUX_Config"] | components["schemas"]["VAE_Checkpoint_SD3_Config"] | components["schemas"]["VAE_Checkpoint_Flux2_Config"] | components["schemas"]["VAE_Checkpoint_Wan_Config"] | components["schemas"]["VAE_Checkpoint_QwenImage_Config"] | components["schemas"]["VAE_Checkpoint_Anima_Config"] | components["schemas"]["VAE_Diffusers_SD1_Config"] | components["schemas"]["VAE_Diffusers_SDXL_Config"] | components["schemas"]["VAE_Diffusers_FLUX_Config"] | components["schemas"]["VAE_Diffusers_SD3_Config"] | components["schemas"]["VAE_Diffusers_Flux2_Config"] | components["schemas"]["VAE_Diffusers_Wan_Config"] | components["schemas"]["PiDDecoder_Checkpoint_FLUX_Config"] | components["schemas"]["PiDDecoder_Checkpoint_Flux2_Config"] | components["schemas"]["PiDDecoder_Checkpoint_SD3_Config"] | components["schemas"]["PiDDecoder_Checkpoint_SDXL_Config"] | components["schemas"]["PiDDecoder_Checkpoint_QwenImage_Config"] | components["schemas"]["ControlNet_Checkpoint_SD1_Config"] | components["schemas"]["ControlNet_Checkpoint_SD2_Config"] | components["schemas"]["ControlNet_Checkpoint_SDXL_Config"] | components["schemas"]["ControlNet_Checkpoint_FLUX_Config"] | components["schemas"]["ControlNet_Checkpoint_ZImage_Config"] | components["schemas"]["ControlNet_Checkpoint_Anima_Config"] | components["schemas"]["ControlNet_Diffusers_SD1_Config"] | components["schemas"]["ControlNet_Diffusers_SD2_Config"] | components["schemas"]["ControlNet_Diffusers_SDXL_Config"] | components["schemas"]["ControlNet_Diffusers_FLUX_Config"] | components["schemas"]["LoRA_LyCORIS_SD1_Config"] | components["schemas"]["LoRA_LyCORIS_SD2_Config"] | components["schemas"]["LoRA_LyCORIS_SDXL_Config"] | components["schemas"]["LoRA_LyCORIS_Flux2_Config"] | components["schemas"]["LoRA_LyCORIS_FLUX_Config"] | components["schemas"]["LoRA_LyCORIS_ZImage_Config"] | components["schemas"]["LoRA_LyCORIS_Krea2_Config"] | components["schemas"]["LoRA_LyCORIS_QwenImage_Config"] | components["schemas"]["LoRA_LyCORIS_LTX2_Config"] | components["schemas"]["LoRA_LyCORIS_MiniMaxH3_Config"] | components["schemas"]["LoRA_LyCORIS_Wan_Config"] | components["schemas"]["LoRA_LyCORIS_Anima_Config"] | components["schemas"]["LoRA_OMI_SDXL_Config"] | components["schemas"]["LoRA_OMI_FLUX_Config"] | components["schemas"]["LoRA_Diffusers_SD1_Config"] | components["schemas"]["LoRA_Diffusers_SD2_Config"] | components["schemas"]["LoRA_Diffusers_SDXL_Config"] | components["schemas"]["LoRA_Diffusers_Flux2_Config"] | components["schemas"]["LoRA_Diffusers_FLUX_Config"] | components["schemas"]["LoRA_Diffusers_ZImage_Config"] | components["schemas"]["ControlLoRA_LyCORIS_FLUX_Config"] | components["schemas"]["T5Encoder_T5Encoder_Config"] | components["schemas"]["T5Encoder_BnBLLMint8_Config"] | components["schemas"]["T5Encoder_SDNQ_Config"] | components["schemas"]["T5Encoder_GGUF_Config"] | components["schemas"]["Qwen3VLEncoder_Checkpoint_MiniMaxH3_Config"] | components["schemas"]["Qwen3VLEncoder_Checkpoint_Config"] | components["schemas"]["Qwen3VLEncoder_GGUF_Config"] | components["schemas"]["Qwen3VLEncoder_Qwen3VLEncoder_Config"] | components["schemas"]["Qwen35Encoder_Checkpoint_Config"] | components["schemas"]["Qwen3Encoder_Qwen3Encoder_Config"] | components["schemas"]["Qwen3Encoder_Checkpoint_Config"] | components["schemas"]["Qwen3Encoder_GGUF_Config"] | components["schemas"]["Qwen3Encoder_SDNQ_Folder_Config"] | components["schemas"]["MistralEncoder_Diffusers_Config"] | components["schemas"]["MistralEncoder_Checkpoint_Config"] | components["schemas"]["MistralEncoder_GGUF_Config"] | components["schemas"]["Gemma2Encoder_Gemma2Encoder_Config"] | components["schemas"]["Gemma4Encoder_Gemma4Encoder_LTX2_Config"] | components["schemas"]["Gemma2Encoder_GGUF_Config"] | components["schemas"]["QwenVLEncoder_Diffusers_Config"] | components["schemas"]["QwenVLEncoder_Checkpoint_Config"] | components["schemas"]["WanT5Encoder_WanT5Encoder_Config"] | components["schemas"]["TI_File_SD1_Config"] | components["schemas"]["TI_File_SD2_Config"] | components["schemas"]["TI_File_SDXL_Config"] | components["schemas"]["TI_Folder_SD1_Config"] | components["schemas"]["TI_Folder_SD2_Config"] | components["schemas"]["TI_Folder_SDXL_Config"] | components["schemas"]["IPAdapter_InvokeAI_SD1_Config"] | components["schemas"]["IPAdapter_InvokeAI_SD2_Config"] | components["schemas"]["IPAdapter_InvokeAI_SDXL_Config"] | components["schemas"]["IPAdapter_Checkpoint_SD1_Config"] | components["schemas"]["IPAdapter_Checkpoint_SD2_Config"] | components["schemas"]["IPAdapter_Checkpoint_SDXL_Config"] | components["schemas"]["IPAdapter_Checkpoint_FLUX_Config"] | components["schemas"]["T2IAdapter_Diffusers_SD1_Config"] | components["schemas"]["T2IAdapter_Diffusers_SDXL_Config"] | components["schemas"]["Spandrel_Checkpoint_Config"] | components["schemas"]["CLIPEmbed_Diffusers_G_Config"] | components["schemas"]["CLIPEmbed_Diffusers_L_Config"] | components["schemas"]["CLIPEmbed_Checkpoint_G_Config"] | components["schemas"]["CLIPEmbed_Checkpoint_L_Config"] | components["schemas"]["CLIPVision_Diffusers_Config"] | components["schemas"]["SigLIP_Diffusers_Config"] | components["schemas"]["FLUXRedux_Checkpoint_Config"] | components["schemas"]["LTX2DurationHead_Checkpoint_Config"] | components["schemas"]["LlavaOnevision_Diffusers_Config"] | components["schemas"]["TextLLM_Diffusers_Config"] | components["schemas"]["ExternalApiModelConfig"] | components["schemas"]["Unknown_Config"]; + "application/json": components["schemas"]["Main_Diffusers_SD1_Config"] | components["schemas"]["Main_Diffusers_SD2_Config"] | components["schemas"]["Main_Diffusers_SDXL_Config"] | components["schemas"]["Main_Diffusers_SDXLRefiner_Config"] | components["schemas"]["Main_Diffusers_SD3_Config"] | components["schemas"]["Main_Diffusers_FLUX_Config"] | components["schemas"]["Main_Diffusers_Flux2_Config"] | components["schemas"]["Main_Diffusers_CogView4_Config"] | components["schemas"]["Main_Diffusers_QwenImage_Config"] | components["schemas"]["Main_Diffusers_QwenImage21_Config"] | components["schemas"]["Main_Diffusers_Wan_Config"] | components["schemas"]["Main_Diffusers_ZImage_Config"] | components["schemas"]["Main_Diffusers_ErnieImage_Config"] | components["schemas"]["Main_Diffusers_Ideogram4_Config"] | components["schemas"]["Main_Diffusers_Krea2_Config"] | components["schemas"]["Main_Diffusers_MiniMaxH3_Config"] | components["schemas"]["Main_Diffusers_LTX2_Config"] | components["schemas"]["Main_Checkpoint_SD1_Config"] | components["schemas"]["Main_Checkpoint_SD2_Config"] | components["schemas"]["Main_Checkpoint_SDXL_Config"] | components["schemas"]["Main_Checkpoint_SDXLRefiner_Config"] | components["schemas"]["Main_Checkpoint_Flux2_Config"] | components["schemas"]["Main_Checkpoint_FLUX_Config"] | components["schemas"]["Main_Checkpoint_QwenImage_Config"] | components["schemas"]["Main_Checkpoint_QwenImage21_Config"] | components["schemas"]["Main_Checkpoint_Wan_Config"] | components["schemas"]["Main_Checkpoint_ZImage_Config"] | components["schemas"]["Main_Checkpoint_ErnieImage_Config"] | components["schemas"]["Main_Checkpoint_Ideogram4_Config"] | components["schemas"]["Main_Checkpoint_Krea2_Config"] | components["schemas"]["Main_Checkpoint_Anima_Config"] | components["schemas"]["Main_Checkpoint_MiniMaxH3_Config"] | components["schemas"]["Main_Checkpoint_LTX2_Config"] | components["schemas"]["Main_BnBNF4_FLUX_Config"] | components["schemas"]["Main_GGUF_Flux2_Config"] | components["schemas"]["Main_GGUF_FLUX_Config"] | components["schemas"]["Main_GGUF_QwenImage_Config"] | components["schemas"]["Main_GGUF_QwenImage21_Config"] | components["schemas"]["Main_GGUF_Wan_Config"] | components["schemas"]["Main_GGUF_ZImage_Config"] | components["schemas"]["Main_GGUF_Krea2_Config"] | components["schemas"]["Main_GGUF_Ideogram4_Config"] | components["schemas"]["Main_GGUF_ErnieImage_Config"] | components["schemas"]["Main_SDNQ_Diffusers_Flux2_Config"] | components["schemas"]["Main_SDNQ_Diffusers_FLUX_Config"] | components["schemas"]["Main_SDNQ_Diffusers_ZImage_Config"] | components["schemas"]["VAE_Checkpoint_SD1_Config"] | components["schemas"]["VAE_Checkpoint_SD2_Config"] | components["schemas"]["VAE_Checkpoint_SDXL_Config"] | components["schemas"]["VAE_Checkpoint_FLUX_Config"] | components["schemas"]["VAE_Checkpoint_SD3_Config"] | components["schemas"]["VAE_Checkpoint_Flux2_Config"] | components["schemas"]["VAE_Checkpoint_Wan_Config"] | components["schemas"]["VAE_Checkpoint_QwenImage_Config"] | components["schemas"]["VAE_Checkpoint_Anima_Config"] | components["schemas"]["VAE_Checkpoint_QwenImage21_Config"] | components["schemas"]["VAE_Diffusers_SD1_Config"] | components["schemas"]["VAE_Diffusers_SDXL_Config"] | components["schemas"]["VAE_Diffusers_FLUX_Config"] | components["schemas"]["VAE_Diffusers_SD3_Config"] | components["schemas"]["VAE_Diffusers_Flux2_Config"] | components["schemas"]["VAE_Diffusers_Wan_Config"] | components["schemas"]["VAE_Diffusers_QwenImage21_Config"] | components["schemas"]["PiDDecoder_Checkpoint_FLUX_Config"] | components["schemas"]["PiDDecoder_Checkpoint_Flux2_Config"] | components["schemas"]["PiDDecoder_Checkpoint_SD3_Config"] | components["schemas"]["PiDDecoder_Checkpoint_SDXL_Config"] | components["schemas"]["PiDDecoder_Checkpoint_QwenImage_Config"] | components["schemas"]["ControlNet_Checkpoint_SD1_Config"] | components["schemas"]["ControlNet_Checkpoint_SD2_Config"] | components["schemas"]["ControlNet_Checkpoint_SDXL_Config"] | components["schemas"]["ControlNet_Checkpoint_FLUX_Config"] | components["schemas"]["ControlNet_Checkpoint_ZImage_Config"] | components["schemas"]["ControlNet_Checkpoint_Anima_Config"] | components["schemas"]["ControlNet_Diffusers_SD1_Config"] | components["schemas"]["ControlNet_Diffusers_SD2_Config"] | components["schemas"]["ControlNet_Diffusers_SDXL_Config"] | components["schemas"]["ControlNet_Diffusers_FLUX_Config"] | components["schemas"]["LoRA_LyCORIS_SD1_Config"] | components["schemas"]["LoRA_LyCORIS_SD2_Config"] | components["schemas"]["LoRA_LyCORIS_SDXL_Config"] | components["schemas"]["LoRA_LyCORIS_Flux2_Config"] | components["schemas"]["LoRA_LyCORIS_FLUX_Config"] | components["schemas"]["LoRA_LyCORIS_ZImage_Config"] | components["schemas"]["LoRA_LyCORIS_Krea2_Config"] | components["schemas"]["LoRA_LyCORIS_QwenImage_Config"] | components["schemas"]["LoRA_LyCORIS_LTX2_Config"] | components["schemas"]["LoRA_LyCORIS_MiniMaxH3_Config"] | components["schemas"]["LoRA_LyCORIS_Wan_Config"] | components["schemas"]["LoRA_LyCORIS_Anima_Config"] | components["schemas"]["LoRA_OMI_SDXL_Config"] | components["schemas"]["LoRA_OMI_FLUX_Config"] | components["schemas"]["LoRA_Diffusers_SD1_Config"] | components["schemas"]["LoRA_Diffusers_SD2_Config"] | components["schemas"]["LoRA_Diffusers_SDXL_Config"] | components["schemas"]["LoRA_Diffusers_Flux2_Config"] | components["schemas"]["LoRA_Diffusers_FLUX_Config"] | components["schemas"]["LoRA_Diffusers_ZImage_Config"] | components["schemas"]["ControlLoRA_LyCORIS_FLUX_Config"] | components["schemas"]["T5Encoder_T5Encoder_Config"] | components["schemas"]["T5Encoder_BnBLLMint8_Config"] | components["schemas"]["T5Encoder_SDNQ_Config"] | components["schemas"]["T5Encoder_GGUF_Config"] | components["schemas"]["Qwen3VLEncoder_Checkpoint_MiniMaxH3_Config"] | components["schemas"]["Qwen3VLEncoder_Checkpoint_Config"] | components["schemas"]["Qwen3VLEncoder_GGUF_Config"] | components["schemas"]["Qwen3VLEncoder_Qwen3VLEncoder_Config"] | components["schemas"]["Qwen35Encoder_Checkpoint_Config"] | components["schemas"]["Qwen3Encoder_Qwen3Encoder_Config"] | components["schemas"]["Qwen3Encoder_Checkpoint_Config"] | components["schemas"]["Qwen3Encoder_GGUF_Config"] | components["schemas"]["Qwen3Encoder_SDNQ_Folder_Config"] | components["schemas"]["MistralEncoder_Diffusers_Config"] | components["schemas"]["MistralEncoder_Checkpoint_Config"] | components["schemas"]["MistralEncoder_GGUF_Config"] | components["schemas"]["Gemma2Encoder_Gemma2Encoder_Config"] | components["schemas"]["Gemma4Encoder_Gemma4Encoder_LTX2_Config"] | components["schemas"]["Gemma2Encoder_GGUF_Config"] | components["schemas"]["QwenVLEncoder_Diffusers_Config"] | components["schemas"]["QwenVLEncoder_Checkpoint_Config"] | components["schemas"]["WanT5Encoder_WanT5Encoder_Config"] | components["schemas"]["TI_File_SD1_Config"] | components["schemas"]["TI_File_SD2_Config"] | components["schemas"]["TI_File_SDXL_Config"] | components["schemas"]["TI_Folder_SD1_Config"] | components["schemas"]["TI_Folder_SD2_Config"] | components["schemas"]["TI_Folder_SDXL_Config"] | components["schemas"]["IPAdapter_InvokeAI_SD1_Config"] | components["schemas"]["IPAdapter_InvokeAI_SD2_Config"] | components["schemas"]["IPAdapter_InvokeAI_SDXL_Config"] | components["schemas"]["IPAdapter_Checkpoint_SD1_Config"] | components["schemas"]["IPAdapter_Checkpoint_SD2_Config"] | components["schemas"]["IPAdapter_Checkpoint_SDXL_Config"] | components["schemas"]["IPAdapter_Checkpoint_FLUX_Config"] | components["schemas"]["T2IAdapter_Diffusers_SD1_Config"] | components["schemas"]["T2IAdapter_Diffusers_SDXL_Config"] | components["schemas"]["Spandrel_Checkpoint_Config"] | components["schemas"]["CLIPEmbed_Diffusers_G_Config"] | components["schemas"]["CLIPEmbed_Diffusers_L_Config"] | components["schemas"]["CLIPEmbed_Checkpoint_G_Config"] | components["schemas"]["CLIPEmbed_Checkpoint_L_Config"] | components["schemas"]["CLIPVision_Diffusers_Config"] | components["schemas"]["SigLIP_Diffusers_Config"] | components["schemas"]["FLUXRedux_Checkpoint_Config"] | components["schemas"]["LTX2DurationHead_Checkpoint_Config"] | components["schemas"]["LlavaOnevision_Diffusers_Config"] | components["schemas"]["TextLLM_Diffusers_Config"] | components["schemas"]["ExternalApiModelConfig"] | components["schemas"]["Unknown_Config"]; }; }; /** @description Bad request */ @@ -53609,7 +54424,7 @@ export interface operations { * "upcast_attention": false * } */ - "application/json": components["schemas"]["Main_Diffusers_SD1_Config"] | components["schemas"]["Main_Diffusers_SD2_Config"] | components["schemas"]["Main_Diffusers_SDXL_Config"] | components["schemas"]["Main_Diffusers_SDXLRefiner_Config"] | components["schemas"]["Main_Diffusers_SD3_Config"] | components["schemas"]["Main_Diffusers_FLUX_Config"] | components["schemas"]["Main_Diffusers_Flux2_Config"] | components["schemas"]["Main_Diffusers_CogView4_Config"] | components["schemas"]["Main_Diffusers_QwenImage_Config"] | components["schemas"]["Main_Diffusers_Wan_Config"] | components["schemas"]["Main_Diffusers_ZImage_Config"] | components["schemas"]["Main_Diffusers_ErnieImage_Config"] | components["schemas"]["Main_Diffusers_Ideogram4_Config"] | components["schemas"]["Main_Diffusers_Krea2_Config"] | components["schemas"]["Main_Diffusers_MiniMaxH3_Config"] | components["schemas"]["Main_Diffusers_LTX2_Config"] | components["schemas"]["Main_Checkpoint_SD1_Config"] | components["schemas"]["Main_Checkpoint_SD2_Config"] | components["schemas"]["Main_Checkpoint_SDXL_Config"] | components["schemas"]["Main_Checkpoint_SDXLRefiner_Config"] | components["schemas"]["Main_Checkpoint_Flux2_Config"] | components["schemas"]["Main_Checkpoint_FLUX_Config"] | components["schemas"]["Main_Checkpoint_QwenImage_Config"] | components["schemas"]["Main_Checkpoint_Wan_Config"] | components["schemas"]["Main_Checkpoint_ZImage_Config"] | components["schemas"]["Main_Checkpoint_ErnieImage_Config"] | components["schemas"]["Main_Checkpoint_Ideogram4_Config"] | components["schemas"]["Main_Checkpoint_Krea2_Config"] | components["schemas"]["Main_Checkpoint_Anima_Config"] | components["schemas"]["Main_Checkpoint_MiniMaxH3_Config"] | components["schemas"]["Main_Checkpoint_LTX2_Config"] | components["schemas"]["Main_BnBNF4_FLUX_Config"] | components["schemas"]["Main_GGUF_Flux2_Config"] | components["schemas"]["Main_GGUF_FLUX_Config"] | components["schemas"]["Main_GGUF_QwenImage_Config"] | components["schemas"]["Main_GGUF_Wan_Config"] | components["schemas"]["Main_GGUF_ZImage_Config"] | components["schemas"]["Main_GGUF_Krea2_Config"] | components["schemas"]["Main_GGUF_Ideogram4_Config"] | components["schemas"]["Main_GGUF_ErnieImage_Config"] | components["schemas"]["Main_SDNQ_Diffusers_Flux2_Config"] | components["schemas"]["Main_SDNQ_Diffusers_FLUX_Config"] | components["schemas"]["Main_SDNQ_Diffusers_ZImage_Config"] | components["schemas"]["VAE_Checkpoint_SD1_Config"] | components["schemas"]["VAE_Checkpoint_SD2_Config"] | components["schemas"]["VAE_Checkpoint_SDXL_Config"] | components["schemas"]["VAE_Checkpoint_FLUX_Config"] | components["schemas"]["VAE_Checkpoint_SD3_Config"] | components["schemas"]["VAE_Checkpoint_Flux2_Config"] | components["schemas"]["VAE_Checkpoint_Wan_Config"] | components["schemas"]["VAE_Checkpoint_QwenImage_Config"] | components["schemas"]["VAE_Checkpoint_Anima_Config"] | components["schemas"]["VAE_Diffusers_SD1_Config"] | components["schemas"]["VAE_Diffusers_SDXL_Config"] | components["schemas"]["VAE_Diffusers_FLUX_Config"] | components["schemas"]["VAE_Diffusers_SD3_Config"] | components["schemas"]["VAE_Diffusers_Flux2_Config"] | components["schemas"]["VAE_Diffusers_Wan_Config"] | components["schemas"]["PiDDecoder_Checkpoint_FLUX_Config"] | components["schemas"]["PiDDecoder_Checkpoint_Flux2_Config"] | components["schemas"]["PiDDecoder_Checkpoint_SD3_Config"] | components["schemas"]["PiDDecoder_Checkpoint_SDXL_Config"] | components["schemas"]["PiDDecoder_Checkpoint_QwenImage_Config"] | components["schemas"]["ControlNet_Checkpoint_SD1_Config"] | components["schemas"]["ControlNet_Checkpoint_SD2_Config"] | components["schemas"]["ControlNet_Checkpoint_SDXL_Config"] | components["schemas"]["ControlNet_Checkpoint_FLUX_Config"] | components["schemas"]["ControlNet_Checkpoint_ZImage_Config"] | components["schemas"]["ControlNet_Checkpoint_Anima_Config"] | components["schemas"]["ControlNet_Diffusers_SD1_Config"] | components["schemas"]["ControlNet_Diffusers_SD2_Config"] | components["schemas"]["ControlNet_Diffusers_SDXL_Config"] | components["schemas"]["ControlNet_Diffusers_FLUX_Config"] | components["schemas"]["LoRA_LyCORIS_SD1_Config"] | components["schemas"]["LoRA_LyCORIS_SD2_Config"] | components["schemas"]["LoRA_LyCORIS_SDXL_Config"] | components["schemas"]["LoRA_LyCORIS_Flux2_Config"] | components["schemas"]["LoRA_LyCORIS_FLUX_Config"] | components["schemas"]["LoRA_LyCORIS_ZImage_Config"] | components["schemas"]["LoRA_LyCORIS_Krea2_Config"] | components["schemas"]["LoRA_LyCORIS_QwenImage_Config"] | components["schemas"]["LoRA_LyCORIS_LTX2_Config"] | components["schemas"]["LoRA_LyCORIS_MiniMaxH3_Config"] | components["schemas"]["LoRA_LyCORIS_Wan_Config"] | components["schemas"]["LoRA_LyCORIS_Anima_Config"] | components["schemas"]["LoRA_OMI_SDXL_Config"] | components["schemas"]["LoRA_OMI_FLUX_Config"] | components["schemas"]["LoRA_Diffusers_SD1_Config"] | components["schemas"]["LoRA_Diffusers_SD2_Config"] | components["schemas"]["LoRA_Diffusers_SDXL_Config"] | components["schemas"]["LoRA_Diffusers_Flux2_Config"] | components["schemas"]["LoRA_Diffusers_FLUX_Config"] | components["schemas"]["LoRA_Diffusers_ZImage_Config"] | components["schemas"]["ControlLoRA_LyCORIS_FLUX_Config"] | components["schemas"]["T5Encoder_T5Encoder_Config"] | components["schemas"]["T5Encoder_BnBLLMint8_Config"] | components["schemas"]["T5Encoder_SDNQ_Config"] | components["schemas"]["T5Encoder_GGUF_Config"] | components["schemas"]["Qwen3VLEncoder_Checkpoint_MiniMaxH3_Config"] | components["schemas"]["Qwen3VLEncoder_Checkpoint_Config"] | components["schemas"]["Qwen3VLEncoder_GGUF_Config"] | components["schemas"]["Qwen3VLEncoder_Qwen3VLEncoder_Config"] | components["schemas"]["Qwen35Encoder_Checkpoint_Config"] | components["schemas"]["Qwen3Encoder_Qwen3Encoder_Config"] | components["schemas"]["Qwen3Encoder_Checkpoint_Config"] | components["schemas"]["Qwen3Encoder_GGUF_Config"] | components["schemas"]["Qwen3Encoder_SDNQ_Folder_Config"] | components["schemas"]["MistralEncoder_Diffusers_Config"] | components["schemas"]["MistralEncoder_Checkpoint_Config"] | components["schemas"]["MistralEncoder_GGUF_Config"] | components["schemas"]["Gemma2Encoder_Gemma2Encoder_Config"] | components["schemas"]["Gemma4Encoder_Gemma4Encoder_LTX2_Config"] | components["schemas"]["Gemma2Encoder_GGUF_Config"] | components["schemas"]["QwenVLEncoder_Diffusers_Config"] | components["schemas"]["QwenVLEncoder_Checkpoint_Config"] | components["schemas"]["WanT5Encoder_WanT5Encoder_Config"] | components["schemas"]["TI_File_SD1_Config"] | components["schemas"]["TI_File_SD2_Config"] | components["schemas"]["TI_File_SDXL_Config"] | components["schemas"]["TI_Folder_SD1_Config"] | components["schemas"]["TI_Folder_SD2_Config"] | components["schemas"]["TI_Folder_SDXL_Config"] | components["schemas"]["IPAdapter_InvokeAI_SD1_Config"] | components["schemas"]["IPAdapter_InvokeAI_SD2_Config"] | components["schemas"]["IPAdapter_InvokeAI_SDXL_Config"] | components["schemas"]["IPAdapter_Checkpoint_SD1_Config"] | components["schemas"]["IPAdapter_Checkpoint_SD2_Config"] | components["schemas"]["IPAdapter_Checkpoint_SDXL_Config"] | components["schemas"]["IPAdapter_Checkpoint_FLUX_Config"] | components["schemas"]["T2IAdapter_Diffusers_SD1_Config"] | components["schemas"]["T2IAdapter_Diffusers_SDXL_Config"] | components["schemas"]["Spandrel_Checkpoint_Config"] | components["schemas"]["CLIPEmbed_Diffusers_G_Config"] | components["schemas"]["CLIPEmbed_Diffusers_L_Config"] | components["schemas"]["CLIPEmbed_Checkpoint_G_Config"] | components["schemas"]["CLIPEmbed_Checkpoint_L_Config"] | components["schemas"]["CLIPVision_Diffusers_Config"] | components["schemas"]["SigLIP_Diffusers_Config"] | components["schemas"]["FLUXRedux_Checkpoint_Config"] | components["schemas"]["LTX2DurationHead_Checkpoint_Config"] | components["schemas"]["LlavaOnevision_Diffusers_Config"] | components["schemas"]["TextLLM_Diffusers_Config"] | components["schemas"]["ExternalApiModelConfig"] | components["schemas"]["Unknown_Config"]; + "application/json": components["schemas"]["Main_Diffusers_SD1_Config"] | components["schemas"]["Main_Diffusers_SD2_Config"] | components["schemas"]["Main_Diffusers_SDXL_Config"] | components["schemas"]["Main_Diffusers_SDXLRefiner_Config"] | components["schemas"]["Main_Diffusers_SD3_Config"] | components["schemas"]["Main_Diffusers_FLUX_Config"] | components["schemas"]["Main_Diffusers_Flux2_Config"] | components["schemas"]["Main_Diffusers_CogView4_Config"] | components["schemas"]["Main_Diffusers_QwenImage_Config"] | components["schemas"]["Main_Diffusers_QwenImage21_Config"] | components["schemas"]["Main_Diffusers_Wan_Config"] | components["schemas"]["Main_Diffusers_ZImage_Config"] | components["schemas"]["Main_Diffusers_ErnieImage_Config"] | components["schemas"]["Main_Diffusers_Ideogram4_Config"] | components["schemas"]["Main_Diffusers_Krea2_Config"] | components["schemas"]["Main_Diffusers_MiniMaxH3_Config"] | components["schemas"]["Main_Diffusers_LTX2_Config"] | components["schemas"]["Main_Checkpoint_SD1_Config"] | components["schemas"]["Main_Checkpoint_SD2_Config"] | components["schemas"]["Main_Checkpoint_SDXL_Config"] | components["schemas"]["Main_Checkpoint_SDXLRefiner_Config"] | components["schemas"]["Main_Checkpoint_Flux2_Config"] | components["schemas"]["Main_Checkpoint_FLUX_Config"] | components["schemas"]["Main_Checkpoint_QwenImage_Config"] | components["schemas"]["Main_Checkpoint_QwenImage21_Config"] | components["schemas"]["Main_Checkpoint_Wan_Config"] | components["schemas"]["Main_Checkpoint_ZImage_Config"] | components["schemas"]["Main_Checkpoint_ErnieImage_Config"] | components["schemas"]["Main_Checkpoint_Ideogram4_Config"] | components["schemas"]["Main_Checkpoint_Krea2_Config"] | components["schemas"]["Main_Checkpoint_Anima_Config"] | components["schemas"]["Main_Checkpoint_MiniMaxH3_Config"] | components["schemas"]["Main_Checkpoint_LTX2_Config"] | components["schemas"]["Main_BnBNF4_FLUX_Config"] | components["schemas"]["Main_GGUF_Flux2_Config"] | components["schemas"]["Main_GGUF_FLUX_Config"] | components["schemas"]["Main_GGUF_QwenImage_Config"] | components["schemas"]["Main_GGUF_QwenImage21_Config"] | components["schemas"]["Main_GGUF_Wan_Config"] | components["schemas"]["Main_GGUF_ZImage_Config"] | components["schemas"]["Main_GGUF_Krea2_Config"] | components["schemas"]["Main_GGUF_Ideogram4_Config"] | components["schemas"]["Main_GGUF_ErnieImage_Config"] | components["schemas"]["Main_SDNQ_Diffusers_Flux2_Config"] | components["schemas"]["Main_SDNQ_Diffusers_FLUX_Config"] | components["schemas"]["Main_SDNQ_Diffusers_ZImage_Config"] | components["schemas"]["VAE_Checkpoint_SD1_Config"] | components["schemas"]["VAE_Checkpoint_SD2_Config"] | components["schemas"]["VAE_Checkpoint_SDXL_Config"] | components["schemas"]["VAE_Checkpoint_FLUX_Config"] | components["schemas"]["VAE_Checkpoint_SD3_Config"] | components["schemas"]["VAE_Checkpoint_Flux2_Config"] | components["schemas"]["VAE_Checkpoint_Wan_Config"] | components["schemas"]["VAE_Checkpoint_QwenImage_Config"] | components["schemas"]["VAE_Checkpoint_Anima_Config"] | components["schemas"]["VAE_Checkpoint_QwenImage21_Config"] | components["schemas"]["VAE_Diffusers_SD1_Config"] | components["schemas"]["VAE_Diffusers_SDXL_Config"] | components["schemas"]["VAE_Diffusers_FLUX_Config"] | components["schemas"]["VAE_Diffusers_SD3_Config"] | components["schemas"]["VAE_Diffusers_Flux2_Config"] | components["schemas"]["VAE_Diffusers_Wan_Config"] | components["schemas"]["VAE_Diffusers_QwenImage21_Config"] | components["schemas"]["PiDDecoder_Checkpoint_FLUX_Config"] | components["schemas"]["PiDDecoder_Checkpoint_Flux2_Config"] | components["schemas"]["PiDDecoder_Checkpoint_SD3_Config"] | components["schemas"]["PiDDecoder_Checkpoint_SDXL_Config"] | components["schemas"]["PiDDecoder_Checkpoint_QwenImage_Config"] | components["schemas"]["ControlNet_Checkpoint_SD1_Config"] | components["schemas"]["ControlNet_Checkpoint_SD2_Config"] | components["schemas"]["ControlNet_Checkpoint_SDXL_Config"] | components["schemas"]["ControlNet_Checkpoint_FLUX_Config"] | components["schemas"]["ControlNet_Checkpoint_ZImage_Config"] | components["schemas"]["ControlNet_Checkpoint_Anima_Config"] | components["schemas"]["ControlNet_Diffusers_SD1_Config"] | components["schemas"]["ControlNet_Diffusers_SD2_Config"] | components["schemas"]["ControlNet_Diffusers_SDXL_Config"] | components["schemas"]["ControlNet_Diffusers_FLUX_Config"] | components["schemas"]["LoRA_LyCORIS_SD1_Config"] | components["schemas"]["LoRA_LyCORIS_SD2_Config"] | components["schemas"]["LoRA_LyCORIS_SDXL_Config"] | components["schemas"]["LoRA_LyCORIS_Flux2_Config"] | components["schemas"]["LoRA_LyCORIS_FLUX_Config"] | components["schemas"]["LoRA_LyCORIS_ZImage_Config"] | components["schemas"]["LoRA_LyCORIS_Krea2_Config"] | components["schemas"]["LoRA_LyCORIS_QwenImage_Config"] | components["schemas"]["LoRA_LyCORIS_LTX2_Config"] | components["schemas"]["LoRA_LyCORIS_MiniMaxH3_Config"] | components["schemas"]["LoRA_LyCORIS_Wan_Config"] | components["schemas"]["LoRA_LyCORIS_Anima_Config"] | components["schemas"]["LoRA_OMI_SDXL_Config"] | components["schemas"]["LoRA_OMI_FLUX_Config"] | components["schemas"]["LoRA_Diffusers_SD1_Config"] | components["schemas"]["LoRA_Diffusers_SD2_Config"] | components["schemas"]["LoRA_Diffusers_SDXL_Config"] | components["schemas"]["LoRA_Diffusers_Flux2_Config"] | components["schemas"]["LoRA_Diffusers_FLUX_Config"] | components["schemas"]["LoRA_Diffusers_ZImage_Config"] | components["schemas"]["ControlLoRA_LyCORIS_FLUX_Config"] | components["schemas"]["T5Encoder_T5Encoder_Config"] | components["schemas"]["T5Encoder_BnBLLMint8_Config"] | components["schemas"]["T5Encoder_SDNQ_Config"] | components["schemas"]["T5Encoder_GGUF_Config"] | components["schemas"]["Qwen3VLEncoder_Checkpoint_MiniMaxH3_Config"] | components["schemas"]["Qwen3VLEncoder_Checkpoint_Config"] | components["schemas"]["Qwen3VLEncoder_GGUF_Config"] | components["schemas"]["Qwen3VLEncoder_Qwen3VLEncoder_Config"] | components["schemas"]["Qwen35Encoder_Checkpoint_Config"] | components["schemas"]["Qwen3Encoder_Qwen3Encoder_Config"] | components["schemas"]["Qwen3Encoder_Checkpoint_Config"] | components["schemas"]["Qwen3Encoder_GGUF_Config"] | components["schemas"]["Qwen3Encoder_SDNQ_Folder_Config"] | components["schemas"]["MistralEncoder_Diffusers_Config"] | components["schemas"]["MistralEncoder_Checkpoint_Config"] | components["schemas"]["MistralEncoder_GGUF_Config"] | components["schemas"]["Gemma2Encoder_Gemma2Encoder_Config"] | components["schemas"]["Gemma4Encoder_Gemma4Encoder_LTX2_Config"] | components["schemas"]["Gemma2Encoder_GGUF_Config"] | components["schemas"]["QwenVLEncoder_Diffusers_Config"] | components["schemas"]["QwenVLEncoder_Checkpoint_Config"] | components["schemas"]["WanT5Encoder_WanT5Encoder_Config"] | components["schemas"]["TI_File_SD1_Config"] | components["schemas"]["TI_File_SD2_Config"] | components["schemas"]["TI_File_SDXL_Config"] | components["schemas"]["TI_Folder_SD1_Config"] | components["schemas"]["TI_Folder_SD2_Config"] | components["schemas"]["TI_Folder_SDXL_Config"] | components["schemas"]["IPAdapter_InvokeAI_SD1_Config"] | components["schemas"]["IPAdapter_InvokeAI_SD2_Config"] | components["schemas"]["IPAdapter_InvokeAI_SDXL_Config"] | components["schemas"]["IPAdapter_Checkpoint_SD1_Config"] | components["schemas"]["IPAdapter_Checkpoint_SD2_Config"] | components["schemas"]["IPAdapter_Checkpoint_SDXL_Config"] | components["schemas"]["IPAdapter_Checkpoint_FLUX_Config"] | components["schemas"]["T2IAdapter_Diffusers_SD1_Config"] | components["schemas"]["T2IAdapter_Diffusers_SDXL_Config"] | components["schemas"]["Spandrel_Checkpoint_Config"] | components["schemas"]["CLIPEmbed_Diffusers_G_Config"] | components["schemas"]["CLIPEmbed_Diffusers_L_Config"] | components["schemas"]["CLIPEmbed_Checkpoint_G_Config"] | components["schemas"]["CLIPEmbed_Checkpoint_L_Config"] | components["schemas"]["CLIPVision_Diffusers_Config"] | components["schemas"]["SigLIP_Diffusers_Config"] | components["schemas"]["FLUXRedux_Checkpoint_Config"] | components["schemas"]["LTX2DurationHead_Checkpoint_Config"] | components["schemas"]["LlavaOnevision_Diffusers_Config"] | components["schemas"]["TextLLM_Diffusers_Config"] | components["schemas"]["ExternalApiModelConfig"] | components["schemas"]["Unknown_Config"]; }; }; /** @description Bad request */ @@ -53682,7 +54497,7 @@ export interface operations { * "upcast_attention": false * } */ - "application/json": components["schemas"]["Main_Diffusers_SD1_Config"] | components["schemas"]["Main_Diffusers_SD2_Config"] | components["schemas"]["Main_Diffusers_SDXL_Config"] | components["schemas"]["Main_Diffusers_SDXLRefiner_Config"] | components["schemas"]["Main_Diffusers_SD3_Config"] | components["schemas"]["Main_Diffusers_FLUX_Config"] | components["schemas"]["Main_Diffusers_Flux2_Config"] | components["schemas"]["Main_Diffusers_CogView4_Config"] | components["schemas"]["Main_Diffusers_QwenImage_Config"] | components["schemas"]["Main_Diffusers_Wan_Config"] | components["schemas"]["Main_Diffusers_ZImage_Config"] | components["schemas"]["Main_Diffusers_ErnieImage_Config"] | components["schemas"]["Main_Diffusers_Ideogram4_Config"] | components["schemas"]["Main_Diffusers_Krea2_Config"] | components["schemas"]["Main_Diffusers_MiniMaxH3_Config"] | components["schemas"]["Main_Diffusers_LTX2_Config"] | components["schemas"]["Main_Checkpoint_SD1_Config"] | components["schemas"]["Main_Checkpoint_SD2_Config"] | components["schemas"]["Main_Checkpoint_SDXL_Config"] | components["schemas"]["Main_Checkpoint_SDXLRefiner_Config"] | components["schemas"]["Main_Checkpoint_Flux2_Config"] | components["schemas"]["Main_Checkpoint_FLUX_Config"] | components["schemas"]["Main_Checkpoint_QwenImage_Config"] | components["schemas"]["Main_Checkpoint_Wan_Config"] | components["schemas"]["Main_Checkpoint_ZImage_Config"] | components["schemas"]["Main_Checkpoint_ErnieImage_Config"] | components["schemas"]["Main_Checkpoint_Ideogram4_Config"] | components["schemas"]["Main_Checkpoint_Krea2_Config"] | components["schemas"]["Main_Checkpoint_Anima_Config"] | components["schemas"]["Main_Checkpoint_MiniMaxH3_Config"] | components["schemas"]["Main_Checkpoint_LTX2_Config"] | components["schemas"]["Main_BnBNF4_FLUX_Config"] | components["schemas"]["Main_GGUF_Flux2_Config"] | components["schemas"]["Main_GGUF_FLUX_Config"] | components["schemas"]["Main_GGUF_QwenImage_Config"] | components["schemas"]["Main_GGUF_Wan_Config"] | components["schemas"]["Main_GGUF_ZImage_Config"] | components["schemas"]["Main_GGUF_Krea2_Config"] | components["schemas"]["Main_GGUF_Ideogram4_Config"] | components["schemas"]["Main_GGUF_ErnieImage_Config"] | components["schemas"]["Main_SDNQ_Diffusers_Flux2_Config"] | components["schemas"]["Main_SDNQ_Diffusers_FLUX_Config"] | components["schemas"]["Main_SDNQ_Diffusers_ZImage_Config"] | components["schemas"]["VAE_Checkpoint_SD1_Config"] | components["schemas"]["VAE_Checkpoint_SD2_Config"] | components["schemas"]["VAE_Checkpoint_SDXL_Config"] | components["schemas"]["VAE_Checkpoint_FLUX_Config"] | components["schemas"]["VAE_Checkpoint_SD3_Config"] | components["schemas"]["VAE_Checkpoint_Flux2_Config"] | components["schemas"]["VAE_Checkpoint_Wan_Config"] | components["schemas"]["VAE_Checkpoint_QwenImage_Config"] | components["schemas"]["VAE_Checkpoint_Anima_Config"] | components["schemas"]["VAE_Diffusers_SD1_Config"] | components["schemas"]["VAE_Diffusers_SDXL_Config"] | components["schemas"]["VAE_Diffusers_FLUX_Config"] | components["schemas"]["VAE_Diffusers_SD3_Config"] | components["schemas"]["VAE_Diffusers_Flux2_Config"] | components["schemas"]["VAE_Diffusers_Wan_Config"] | components["schemas"]["PiDDecoder_Checkpoint_FLUX_Config"] | components["schemas"]["PiDDecoder_Checkpoint_Flux2_Config"] | components["schemas"]["PiDDecoder_Checkpoint_SD3_Config"] | components["schemas"]["PiDDecoder_Checkpoint_SDXL_Config"] | components["schemas"]["PiDDecoder_Checkpoint_QwenImage_Config"] | components["schemas"]["ControlNet_Checkpoint_SD1_Config"] | components["schemas"]["ControlNet_Checkpoint_SD2_Config"] | components["schemas"]["ControlNet_Checkpoint_SDXL_Config"] | components["schemas"]["ControlNet_Checkpoint_FLUX_Config"] | components["schemas"]["ControlNet_Checkpoint_ZImage_Config"] | components["schemas"]["ControlNet_Checkpoint_Anima_Config"] | components["schemas"]["ControlNet_Diffusers_SD1_Config"] | components["schemas"]["ControlNet_Diffusers_SD2_Config"] | components["schemas"]["ControlNet_Diffusers_SDXL_Config"] | components["schemas"]["ControlNet_Diffusers_FLUX_Config"] | components["schemas"]["LoRA_LyCORIS_SD1_Config"] | components["schemas"]["LoRA_LyCORIS_SD2_Config"] | components["schemas"]["LoRA_LyCORIS_SDXL_Config"] | components["schemas"]["LoRA_LyCORIS_Flux2_Config"] | components["schemas"]["LoRA_LyCORIS_FLUX_Config"] | components["schemas"]["LoRA_LyCORIS_ZImage_Config"] | components["schemas"]["LoRA_LyCORIS_Krea2_Config"] | components["schemas"]["LoRA_LyCORIS_QwenImage_Config"] | components["schemas"]["LoRA_LyCORIS_LTX2_Config"] | components["schemas"]["LoRA_LyCORIS_MiniMaxH3_Config"] | components["schemas"]["LoRA_LyCORIS_Wan_Config"] | components["schemas"]["LoRA_LyCORIS_Anima_Config"] | components["schemas"]["LoRA_OMI_SDXL_Config"] | components["schemas"]["LoRA_OMI_FLUX_Config"] | components["schemas"]["LoRA_Diffusers_SD1_Config"] | components["schemas"]["LoRA_Diffusers_SD2_Config"] | components["schemas"]["LoRA_Diffusers_SDXL_Config"] | components["schemas"]["LoRA_Diffusers_Flux2_Config"] | components["schemas"]["LoRA_Diffusers_FLUX_Config"] | components["schemas"]["LoRA_Diffusers_ZImage_Config"] | components["schemas"]["ControlLoRA_LyCORIS_FLUX_Config"] | components["schemas"]["T5Encoder_T5Encoder_Config"] | components["schemas"]["T5Encoder_BnBLLMint8_Config"] | components["schemas"]["T5Encoder_SDNQ_Config"] | components["schemas"]["T5Encoder_GGUF_Config"] | components["schemas"]["Qwen3VLEncoder_Checkpoint_MiniMaxH3_Config"] | components["schemas"]["Qwen3VLEncoder_Checkpoint_Config"] | components["schemas"]["Qwen3VLEncoder_GGUF_Config"] | components["schemas"]["Qwen3VLEncoder_Qwen3VLEncoder_Config"] | components["schemas"]["Qwen35Encoder_Checkpoint_Config"] | components["schemas"]["Qwen3Encoder_Qwen3Encoder_Config"] | components["schemas"]["Qwen3Encoder_Checkpoint_Config"] | components["schemas"]["Qwen3Encoder_GGUF_Config"] | components["schemas"]["Qwen3Encoder_SDNQ_Folder_Config"] | components["schemas"]["MistralEncoder_Diffusers_Config"] | components["schemas"]["MistralEncoder_Checkpoint_Config"] | components["schemas"]["MistralEncoder_GGUF_Config"] | components["schemas"]["Gemma2Encoder_Gemma2Encoder_Config"] | components["schemas"]["Gemma4Encoder_Gemma4Encoder_LTX2_Config"] | components["schemas"]["Gemma2Encoder_GGUF_Config"] | components["schemas"]["QwenVLEncoder_Diffusers_Config"] | components["schemas"]["QwenVLEncoder_Checkpoint_Config"] | components["schemas"]["WanT5Encoder_WanT5Encoder_Config"] | components["schemas"]["TI_File_SD1_Config"] | components["schemas"]["TI_File_SD2_Config"] | components["schemas"]["TI_File_SDXL_Config"] | components["schemas"]["TI_Folder_SD1_Config"] | components["schemas"]["TI_Folder_SD2_Config"] | components["schemas"]["TI_Folder_SDXL_Config"] | components["schemas"]["IPAdapter_InvokeAI_SD1_Config"] | components["schemas"]["IPAdapter_InvokeAI_SD2_Config"] | components["schemas"]["IPAdapter_InvokeAI_SDXL_Config"] | components["schemas"]["IPAdapter_Checkpoint_SD1_Config"] | components["schemas"]["IPAdapter_Checkpoint_SD2_Config"] | components["schemas"]["IPAdapter_Checkpoint_SDXL_Config"] | components["schemas"]["IPAdapter_Checkpoint_FLUX_Config"] | components["schemas"]["T2IAdapter_Diffusers_SD1_Config"] | components["schemas"]["T2IAdapter_Diffusers_SDXL_Config"] | components["schemas"]["Spandrel_Checkpoint_Config"] | components["schemas"]["CLIPEmbed_Diffusers_G_Config"] | components["schemas"]["CLIPEmbed_Diffusers_L_Config"] | components["schemas"]["CLIPEmbed_Checkpoint_G_Config"] | components["schemas"]["CLIPEmbed_Checkpoint_L_Config"] | components["schemas"]["CLIPVision_Diffusers_Config"] | components["schemas"]["SigLIP_Diffusers_Config"] | components["schemas"]["FLUXRedux_Checkpoint_Config"] | components["schemas"]["LTX2DurationHead_Checkpoint_Config"] | components["schemas"]["LlavaOnevision_Diffusers_Config"] | components["schemas"]["TextLLM_Diffusers_Config"] | components["schemas"]["ExternalApiModelConfig"] | components["schemas"]["Unknown_Config"]; + "application/json": components["schemas"]["Main_Diffusers_SD1_Config"] | components["schemas"]["Main_Diffusers_SD2_Config"] | components["schemas"]["Main_Diffusers_SDXL_Config"] | components["schemas"]["Main_Diffusers_SDXLRefiner_Config"] | components["schemas"]["Main_Diffusers_SD3_Config"] | components["schemas"]["Main_Diffusers_FLUX_Config"] | components["schemas"]["Main_Diffusers_Flux2_Config"] | components["schemas"]["Main_Diffusers_CogView4_Config"] | components["schemas"]["Main_Diffusers_QwenImage_Config"] | components["schemas"]["Main_Diffusers_QwenImage21_Config"] | components["schemas"]["Main_Diffusers_Wan_Config"] | components["schemas"]["Main_Diffusers_ZImage_Config"] | components["schemas"]["Main_Diffusers_ErnieImage_Config"] | components["schemas"]["Main_Diffusers_Ideogram4_Config"] | components["schemas"]["Main_Diffusers_Krea2_Config"] | components["schemas"]["Main_Diffusers_MiniMaxH3_Config"] | components["schemas"]["Main_Diffusers_LTX2_Config"] | components["schemas"]["Main_Checkpoint_SD1_Config"] | components["schemas"]["Main_Checkpoint_SD2_Config"] | components["schemas"]["Main_Checkpoint_SDXL_Config"] | components["schemas"]["Main_Checkpoint_SDXLRefiner_Config"] | components["schemas"]["Main_Checkpoint_Flux2_Config"] | components["schemas"]["Main_Checkpoint_FLUX_Config"] | components["schemas"]["Main_Checkpoint_QwenImage_Config"] | components["schemas"]["Main_Checkpoint_QwenImage21_Config"] | components["schemas"]["Main_Checkpoint_Wan_Config"] | components["schemas"]["Main_Checkpoint_ZImage_Config"] | components["schemas"]["Main_Checkpoint_ErnieImage_Config"] | components["schemas"]["Main_Checkpoint_Ideogram4_Config"] | components["schemas"]["Main_Checkpoint_Krea2_Config"] | components["schemas"]["Main_Checkpoint_Anima_Config"] | components["schemas"]["Main_Checkpoint_MiniMaxH3_Config"] | components["schemas"]["Main_Checkpoint_LTX2_Config"] | components["schemas"]["Main_BnBNF4_FLUX_Config"] | components["schemas"]["Main_GGUF_Flux2_Config"] | components["schemas"]["Main_GGUF_FLUX_Config"] | components["schemas"]["Main_GGUF_QwenImage_Config"] | components["schemas"]["Main_GGUF_QwenImage21_Config"] | components["schemas"]["Main_GGUF_Wan_Config"] | components["schemas"]["Main_GGUF_ZImage_Config"] | components["schemas"]["Main_GGUF_Krea2_Config"] | components["schemas"]["Main_GGUF_Ideogram4_Config"] | components["schemas"]["Main_GGUF_ErnieImage_Config"] | components["schemas"]["Main_SDNQ_Diffusers_Flux2_Config"] | components["schemas"]["Main_SDNQ_Diffusers_FLUX_Config"] | components["schemas"]["Main_SDNQ_Diffusers_ZImage_Config"] | components["schemas"]["VAE_Checkpoint_SD1_Config"] | components["schemas"]["VAE_Checkpoint_SD2_Config"] | components["schemas"]["VAE_Checkpoint_SDXL_Config"] | components["schemas"]["VAE_Checkpoint_FLUX_Config"] | components["schemas"]["VAE_Checkpoint_SD3_Config"] | components["schemas"]["VAE_Checkpoint_Flux2_Config"] | components["schemas"]["VAE_Checkpoint_Wan_Config"] | components["schemas"]["VAE_Checkpoint_QwenImage_Config"] | components["schemas"]["VAE_Checkpoint_Anima_Config"] | components["schemas"]["VAE_Checkpoint_QwenImage21_Config"] | components["schemas"]["VAE_Diffusers_SD1_Config"] | components["schemas"]["VAE_Diffusers_SDXL_Config"] | components["schemas"]["VAE_Diffusers_FLUX_Config"] | components["schemas"]["VAE_Diffusers_SD3_Config"] | components["schemas"]["VAE_Diffusers_Flux2_Config"] | components["schemas"]["VAE_Diffusers_Wan_Config"] | components["schemas"]["VAE_Diffusers_QwenImage21_Config"] | components["schemas"]["PiDDecoder_Checkpoint_FLUX_Config"] | components["schemas"]["PiDDecoder_Checkpoint_Flux2_Config"] | components["schemas"]["PiDDecoder_Checkpoint_SD3_Config"] | components["schemas"]["PiDDecoder_Checkpoint_SDXL_Config"] | components["schemas"]["PiDDecoder_Checkpoint_QwenImage_Config"] | components["schemas"]["ControlNet_Checkpoint_SD1_Config"] | components["schemas"]["ControlNet_Checkpoint_SD2_Config"] | components["schemas"]["ControlNet_Checkpoint_SDXL_Config"] | components["schemas"]["ControlNet_Checkpoint_FLUX_Config"] | components["schemas"]["ControlNet_Checkpoint_ZImage_Config"] | components["schemas"]["ControlNet_Checkpoint_Anima_Config"] | components["schemas"]["ControlNet_Diffusers_SD1_Config"] | components["schemas"]["ControlNet_Diffusers_SD2_Config"] | components["schemas"]["ControlNet_Diffusers_SDXL_Config"] | components["schemas"]["ControlNet_Diffusers_FLUX_Config"] | components["schemas"]["LoRA_LyCORIS_SD1_Config"] | components["schemas"]["LoRA_LyCORIS_SD2_Config"] | components["schemas"]["LoRA_LyCORIS_SDXL_Config"] | components["schemas"]["LoRA_LyCORIS_Flux2_Config"] | components["schemas"]["LoRA_LyCORIS_FLUX_Config"] | components["schemas"]["LoRA_LyCORIS_ZImage_Config"] | components["schemas"]["LoRA_LyCORIS_Krea2_Config"] | components["schemas"]["LoRA_LyCORIS_QwenImage_Config"] | components["schemas"]["LoRA_LyCORIS_LTX2_Config"] | components["schemas"]["LoRA_LyCORIS_MiniMaxH3_Config"] | components["schemas"]["LoRA_LyCORIS_Wan_Config"] | components["schemas"]["LoRA_LyCORIS_Anima_Config"] | components["schemas"]["LoRA_OMI_SDXL_Config"] | components["schemas"]["LoRA_OMI_FLUX_Config"] | components["schemas"]["LoRA_Diffusers_SD1_Config"] | components["schemas"]["LoRA_Diffusers_SD2_Config"] | components["schemas"]["LoRA_Diffusers_SDXL_Config"] | components["schemas"]["LoRA_Diffusers_Flux2_Config"] | components["schemas"]["LoRA_Diffusers_FLUX_Config"] | components["schemas"]["LoRA_Diffusers_ZImage_Config"] | components["schemas"]["ControlLoRA_LyCORIS_FLUX_Config"] | components["schemas"]["T5Encoder_T5Encoder_Config"] | components["schemas"]["T5Encoder_BnBLLMint8_Config"] | components["schemas"]["T5Encoder_SDNQ_Config"] | components["schemas"]["T5Encoder_GGUF_Config"] | components["schemas"]["Qwen3VLEncoder_Checkpoint_MiniMaxH3_Config"] | components["schemas"]["Qwen3VLEncoder_Checkpoint_Config"] | components["schemas"]["Qwen3VLEncoder_GGUF_Config"] | components["schemas"]["Qwen3VLEncoder_Qwen3VLEncoder_Config"] | components["schemas"]["Qwen35Encoder_Checkpoint_Config"] | components["schemas"]["Qwen3Encoder_Qwen3Encoder_Config"] | components["schemas"]["Qwen3Encoder_Checkpoint_Config"] | components["schemas"]["Qwen3Encoder_GGUF_Config"] | components["schemas"]["Qwen3Encoder_SDNQ_Folder_Config"] | components["schemas"]["MistralEncoder_Diffusers_Config"] | components["schemas"]["MistralEncoder_Checkpoint_Config"] | components["schemas"]["MistralEncoder_GGUF_Config"] | components["schemas"]["Gemma2Encoder_Gemma2Encoder_Config"] | components["schemas"]["Gemma4Encoder_Gemma4Encoder_LTX2_Config"] | components["schemas"]["Gemma2Encoder_GGUF_Config"] | components["schemas"]["QwenVLEncoder_Diffusers_Config"] | components["schemas"]["QwenVLEncoder_Checkpoint_Config"] | components["schemas"]["WanT5Encoder_WanT5Encoder_Config"] | components["schemas"]["TI_File_SD1_Config"] | components["schemas"]["TI_File_SD2_Config"] | components["schemas"]["TI_File_SDXL_Config"] | components["schemas"]["TI_Folder_SD1_Config"] | components["schemas"]["TI_Folder_SD2_Config"] | components["schemas"]["TI_Folder_SDXL_Config"] | components["schemas"]["IPAdapter_InvokeAI_SD1_Config"] | components["schemas"]["IPAdapter_InvokeAI_SD2_Config"] | components["schemas"]["IPAdapter_InvokeAI_SDXL_Config"] | components["schemas"]["IPAdapter_Checkpoint_SD1_Config"] | components["schemas"]["IPAdapter_Checkpoint_SD2_Config"] | components["schemas"]["IPAdapter_Checkpoint_SDXL_Config"] | components["schemas"]["IPAdapter_Checkpoint_FLUX_Config"] | components["schemas"]["T2IAdapter_Diffusers_SD1_Config"] | components["schemas"]["T2IAdapter_Diffusers_SDXL_Config"] | components["schemas"]["Spandrel_Checkpoint_Config"] | components["schemas"]["CLIPEmbed_Diffusers_G_Config"] | components["schemas"]["CLIPEmbed_Diffusers_L_Config"] | components["schemas"]["CLIPEmbed_Checkpoint_G_Config"] | components["schemas"]["CLIPEmbed_Checkpoint_L_Config"] | components["schemas"]["CLIPVision_Diffusers_Config"] | components["schemas"]["SigLIP_Diffusers_Config"] | components["schemas"]["FLUXRedux_Checkpoint_Config"] | components["schemas"]["LTX2DurationHead_Checkpoint_Config"] | components["schemas"]["LlavaOnevision_Diffusers_Config"] | components["schemas"]["TextLLM_Diffusers_Config"] | components["schemas"]["ExternalApiModelConfig"] | components["schemas"]["Unknown_Config"]; }; }; /** @description Bad request */ @@ -54483,7 +55298,7 @@ export interface operations { * "upcast_attention": false * } */ - "application/json": components["schemas"]["Main_Diffusers_SD1_Config"] | components["schemas"]["Main_Diffusers_SD2_Config"] | components["schemas"]["Main_Diffusers_SDXL_Config"] | components["schemas"]["Main_Diffusers_SDXLRefiner_Config"] | components["schemas"]["Main_Diffusers_SD3_Config"] | components["schemas"]["Main_Diffusers_FLUX_Config"] | components["schemas"]["Main_Diffusers_Flux2_Config"] | components["schemas"]["Main_Diffusers_CogView4_Config"] | components["schemas"]["Main_Diffusers_QwenImage_Config"] | components["schemas"]["Main_Diffusers_Wan_Config"] | components["schemas"]["Main_Diffusers_ZImage_Config"] | components["schemas"]["Main_Diffusers_ErnieImage_Config"] | components["schemas"]["Main_Diffusers_Ideogram4_Config"] | components["schemas"]["Main_Diffusers_Krea2_Config"] | components["schemas"]["Main_Diffusers_MiniMaxH3_Config"] | components["schemas"]["Main_Diffusers_LTX2_Config"] | components["schemas"]["Main_Checkpoint_SD1_Config"] | components["schemas"]["Main_Checkpoint_SD2_Config"] | components["schemas"]["Main_Checkpoint_SDXL_Config"] | components["schemas"]["Main_Checkpoint_SDXLRefiner_Config"] | components["schemas"]["Main_Checkpoint_Flux2_Config"] | components["schemas"]["Main_Checkpoint_FLUX_Config"] | components["schemas"]["Main_Checkpoint_QwenImage_Config"] | components["schemas"]["Main_Checkpoint_Wan_Config"] | components["schemas"]["Main_Checkpoint_ZImage_Config"] | components["schemas"]["Main_Checkpoint_ErnieImage_Config"] | components["schemas"]["Main_Checkpoint_Ideogram4_Config"] | components["schemas"]["Main_Checkpoint_Krea2_Config"] | components["schemas"]["Main_Checkpoint_Anima_Config"] | components["schemas"]["Main_Checkpoint_MiniMaxH3_Config"] | components["schemas"]["Main_Checkpoint_LTX2_Config"] | components["schemas"]["Main_BnBNF4_FLUX_Config"] | components["schemas"]["Main_GGUF_Flux2_Config"] | components["schemas"]["Main_GGUF_FLUX_Config"] | components["schemas"]["Main_GGUF_QwenImage_Config"] | components["schemas"]["Main_GGUF_Wan_Config"] | components["schemas"]["Main_GGUF_ZImage_Config"] | components["schemas"]["Main_GGUF_Krea2_Config"] | components["schemas"]["Main_GGUF_Ideogram4_Config"] | components["schemas"]["Main_GGUF_ErnieImage_Config"] | components["schemas"]["Main_SDNQ_Diffusers_Flux2_Config"] | components["schemas"]["Main_SDNQ_Diffusers_FLUX_Config"] | components["schemas"]["Main_SDNQ_Diffusers_ZImage_Config"] | components["schemas"]["VAE_Checkpoint_SD1_Config"] | components["schemas"]["VAE_Checkpoint_SD2_Config"] | components["schemas"]["VAE_Checkpoint_SDXL_Config"] | components["schemas"]["VAE_Checkpoint_FLUX_Config"] | components["schemas"]["VAE_Checkpoint_SD3_Config"] | components["schemas"]["VAE_Checkpoint_Flux2_Config"] | components["schemas"]["VAE_Checkpoint_Wan_Config"] | components["schemas"]["VAE_Checkpoint_QwenImage_Config"] | components["schemas"]["VAE_Checkpoint_Anima_Config"] | components["schemas"]["VAE_Diffusers_SD1_Config"] | components["schemas"]["VAE_Diffusers_SDXL_Config"] | components["schemas"]["VAE_Diffusers_FLUX_Config"] | components["schemas"]["VAE_Diffusers_SD3_Config"] | components["schemas"]["VAE_Diffusers_Flux2_Config"] | components["schemas"]["VAE_Diffusers_Wan_Config"] | components["schemas"]["PiDDecoder_Checkpoint_FLUX_Config"] | components["schemas"]["PiDDecoder_Checkpoint_Flux2_Config"] | components["schemas"]["PiDDecoder_Checkpoint_SD3_Config"] | components["schemas"]["PiDDecoder_Checkpoint_SDXL_Config"] | components["schemas"]["PiDDecoder_Checkpoint_QwenImage_Config"] | components["schemas"]["ControlNet_Checkpoint_SD1_Config"] | components["schemas"]["ControlNet_Checkpoint_SD2_Config"] | components["schemas"]["ControlNet_Checkpoint_SDXL_Config"] | components["schemas"]["ControlNet_Checkpoint_FLUX_Config"] | components["schemas"]["ControlNet_Checkpoint_ZImage_Config"] | components["schemas"]["ControlNet_Checkpoint_Anima_Config"] | components["schemas"]["ControlNet_Diffusers_SD1_Config"] | components["schemas"]["ControlNet_Diffusers_SD2_Config"] | components["schemas"]["ControlNet_Diffusers_SDXL_Config"] | components["schemas"]["ControlNet_Diffusers_FLUX_Config"] | components["schemas"]["LoRA_LyCORIS_SD1_Config"] | components["schemas"]["LoRA_LyCORIS_SD2_Config"] | components["schemas"]["LoRA_LyCORIS_SDXL_Config"] | components["schemas"]["LoRA_LyCORIS_Flux2_Config"] | components["schemas"]["LoRA_LyCORIS_FLUX_Config"] | components["schemas"]["LoRA_LyCORIS_ZImage_Config"] | components["schemas"]["LoRA_LyCORIS_Krea2_Config"] | components["schemas"]["LoRA_LyCORIS_QwenImage_Config"] | components["schemas"]["LoRA_LyCORIS_LTX2_Config"] | components["schemas"]["LoRA_LyCORIS_MiniMaxH3_Config"] | components["schemas"]["LoRA_LyCORIS_Wan_Config"] | components["schemas"]["LoRA_LyCORIS_Anima_Config"] | components["schemas"]["LoRA_OMI_SDXL_Config"] | components["schemas"]["LoRA_OMI_FLUX_Config"] | components["schemas"]["LoRA_Diffusers_SD1_Config"] | components["schemas"]["LoRA_Diffusers_SD2_Config"] | components["schemas"]["LoRA_Diffusers_SDXL_Config"] | components["schemas"]["LoRA_Diffusers_Flux2_Config"] | components["schemas"]["LoRA_Diffusers_FLUX_Config"] | components["schemas"]["LoRA_Diffusers_ZImage_Config"] | components["schemas"]["ControlLoRA_LyCORIS_FLUX_Config"] | components["schemas"]["T5Encoder_T5Encoder_Config"] | components["schemas"]["T5Encoder_BnBLLMint8_Config"] | components["schemas"]["T5Encoder_SDNQ_Config"] | components["schemas"]["T5Encoder_GGUF_Config"] | components["schemas"]["Qwen3VLEncoder_Checkpoint_MiniMaxH3_Config"] | components["schemas"]["Qwen3VLEncoder_Checkpoint_Config"] | components["schemas"]["Qwen3VLEncoder_GGUF_Config"] | components["schemas"]["Qwen3VLEncoder_Qwen3VLEncoder_Config"] | components["schemas"]["Qwen35Encoder_Checkpoint_Config"] | components["schemas"]["Qwen3Encoder_Qwen3Encoder_Config"] | components["schemas"]["Qwen3Encoder_Checkpoint_Config"] | components["schemas"]["Qwen3Encoder_GGUF_Config"] | components["schemas"]["Qwen3Encoder_SDNQ_Folder_Config"] | components["schemas"]["MistralEncoder_Diffusers_Config"] | components["schemas"]["MistralEncoder_Checkpoint_Config"] | components["schemas"]["MistralEncoder_GGUF_Config"] | components["schemas"]["Gemma2Encoder_Gemma2Encoder_Config"] | components["schemas"]["Gemma4Encoder_Gemma4Encoder_LTX2_Config"] | components["schemas"]["Gemma2Encoder_GGUF_Config"] | components["schemas"]["QwenVLEncoder_Diffusers_Config"] | components["schemas"]["QwenVLEncoder_Checkpoint_Config"] | components["schemas"]["WanT5Encoder_WanT5Encoder_Config"] | components["schemas"]["TI_File_SD1_Config"] | components["schemas"]["TI_File_SD2_Config"] | components["schemas"]["TI_File_SDXL_Config"] | components["schemas"]["TI_Folder_SD1_Config"] | components["schemas"]["TI_Folder_SD2_Config"] | components["schemas"]["TI_Folder_SDXL_Config"] | components["schemas"]["IPAdapter_InvokeAI_SD1_Config"] | components["schemas"]["IPAdapter_InvokeAI_SD2_Config"] | components["schemas"]["IPAdapter_InvokeAI_SDXL_Config"] | components["schemas"]["IPAdapter_Checkpoint_SD1_Config"] | components["schemas"]["IPAdapter_Checkpoint_SD2_Config"] | components["schemas"]["IPAdapter_Checkpoint_SDXL_Config"] | components["schemas"]["IPAdapter_Checkpoint_FLUX_Config"] | components["schemas"]["T2IAdapter_Diffusers_SD1_Config"] | components["schemas"]["T2IAdapter_Diffusers_SDXL_Config"] | components["schemas"]["Spandrel_Checkpoint_Config"] | components["schemas"]["CLIPEmbed_Diffusers_G_Config"] | components["schemas"]["CLIPEmbed_Diffusers_L_Config"] | components["schemas"]["CLIPEmbed_Checkpoint_G_Config"] | components["schemas"]["CLIPEmbed_Checkpoint_L_Config"] | components["schemas"]["CLIPVision_Diffusers_Config"] | components["schemas"]["SigLIP_Diffusers_Config"] | components["schemas"]["FLUXRedux_Checkpoint_Config"] | components["schemas"]["LTX2DurationHead_Checkpoint_Config"] | components["schemas"]["LlavaOnevision_Diffusers_Config"] | components["schemas"]["TextLLM_Diffusers_Config"] | components["schemas"]["ExternalApiModelConfig"] | components["schemas"]["Unknown_Config"]; + "application/json": components["schemas"]["Main_Diffusers_SD1_Config"] | components["schemas"]["Main_Diffusers_SD2_Config"] | components["schemas"]["Main_Diffusers_SDXL_Config"] | components["schemas"]["Main_Diffusers_SDXLRefiner_Config"] | components["schemas"]["Main_Diffusers_SD3_Config"] | components["schemas"]["Main_Diffusers_FLUX_Config"] | components["schemas"]["Main_Diffusers_Flux2_Config"] | components["schemas"]["Main_Diffusers_CogView4_Config"] | components["schemas"]["Main_Diffusers_QwenImage_Config"] | components["schemas"]["Main_Diffusers_QwenImage21_Config"] | components["schemas"]["Main_Diffusers_Wan_Config"] | components["schemas"]["Main_Diffusers_ZImage_Config"] | components["schemas"]["Main_Diffusers_ErnieImage_Config"] | components["schemas"]["Main_Diffusers_Ideogram4_Config"] | components["schemas"]["Main_Diffusers_Krea2_Config"] | components["schemas"]["Main_Diffusers_MiniMaxH3_Config"] | components["schemas"]["Main_Diffusers_LTX2_Config"] | components["schemas"]["Main_Checkpoint_SD1_Config"] | components["schemas"]["Main_Checkpoint_SD2_Config"] | components["schemas"]["Main_Checkpoint_SDXL_Config"] | components["schemas"]["Main_Checkpoint_SDXLRefiner_Config"] | components["schemas"]["Main_Checkpoint_Flux2_Config"] | components["schemas"]["Main_Checkpoint_FLUX_Config"] | components["schemas"]["Main_Checkpoint_QwenImage_Config"] | components["schemas"]["Main_Checkpoint_QwenImage21_Config"] | components["schemas"]["Main_Checkpoint_Wan_Config"] | components["schemas"]["Main_Checkpoint_ZImage_Config"] | components["schemas"]["Main_Checkpoint_ErnieImage_Config"] | components["schemas"]["Main_Checkpoint_Ideogram4_Config"] | components["schemas"]["Main_Checkpoint_Krea2_Config"] | components["schemas"]["Main_Checkpoint_Anima_Config"] | components["schemas"]["Main_Checkpoint_MiniMaxH3_Config"] | components["schemas"]["Main_Checkpoint_LTX2_Config"] | components["schemas"]["Main_BnBNF4_FLUX_Config"] | components["schemas"]["Main_GGUF_Flux2_Config"] | components["schemas"]["Main_GGUF_FLUX_Config"] | components["schemas"]["Main_GGUF_QwenImage_Config"] | components["schemas"]["Main_GGUF_QwenImage21_Config"] | components["schemas"]["Main_GGUF_Wan_Config"] | components["schemas"]["Main_GGUF_ZImage_Config"] | components["schemas"]["Main_GGUF_Krea2_Config"] | components["schemas"]["Main_GGUF_Ideogram4_Config"] | components["schemas"]["Main_GGUF_ErnieImage_Config"] | components["schemas"]["Main_SDNQ_Diffusers_Flux2_Config"] | components["schemas"]["Main_SDNQ_Diffusers_FLUX_Config"] | components["schemas"]["Main_SDNQ_Diffusers_ZImage_Config"] | components["schemas"]["VAE_Checkpoint_SD1_Config"] | components["schemas"]["VAE_Checkpoint_SD2_Config"] | components["schemas"]["VAE_Checkpoint_SDXL_Config"] | components["schemas"]["VAE_Checkpoint_FLUX_Config"] | components["schemas"]["VAE_Checkpoint_SD3_Config"] | components["schemas"]["VAE_Checkpoint_Flux2_Config"] | components["schemas"]["VAE_Checkpoint_Wan_Config"] | components["schemas"]["VAE_Checkpoint_QwenImage_Config"] | components["schemas"]["VAE_Checkpoint_Anima_Config"] | components["schemas"]["VAE_Checkpoint_QwenImage21_Config"] | components["schemas"]["VAE_Diffusers_SD1_Config"] | components["schemas"]["VAE_Diffusers_SDXL_Config"] | components["schemas"]["VAE_Diffusers_FLUX_Config"] | components["schemas"]["VAE_Diffusers_SD3_Config"] | components["schemas"]["VAE_Diffusers_Flux2_Config"] | components["schemas"]["VAE_Diffusers_Wan_Config"] | components["schemas"]["VAE_Diffusers_QwenImage21_Config"] | components["schemas"]["PiDDecoder_Checkpoint_FLUX_Config"] | components["schemas"]["PiDDecoder_Checkpoint_Flux2_Config"] | components["schemas"]["PiDDecoder_Checkpoint_SD3_Config"] | components["schemas"]["PiDDecoder_Checkpoint_SDXL_Config"] | components["schemas"]["PiDDecoder_Checkpoint_QwenImage_Config"] | components["schemas"]["ControlNet_Checkpoint_SD1_Config"] | components["schemas"]["ControlNet_Checkpoint_SD2_Config"] | components["schemas"]["ControlNet_Checkpoint_SDXL_Config"] | components["schemas"]["ControlNet_Checkpoint_FLUX_Config"] | components["schemas"]["ControlNet_Checkpoint_ZImage_Config"] | components["schemas"]["ControlNet_Checkpoint_Anima_Config"] | components["schemas"]["ControlNet_Diffusers_SD1_Config"] | components["schemas"]["ControlNet_Diffusers_SD2_Config"] | components["schemas"]["ControlNet_Diffusers_SDXL_Config"] | components["schemas"]["ControlNet_Diffusers_FLUX_Config"] | components["schemas"]["LoRA_LyCORIS_SD1_Config"] | components["schemas"]["LoRA_LyCORIS_SD2_Config"] | components["schemas"]["LoRA_LyCORIS_SDXL_Config"] | components["schemas"]["LoRA_LyCORIS_Flux2_Config"] | components["schemas"]["LoRA_LyCORIS_FLUX_Config"] | components["schemas"]["LoRA_LyCORIS_ZImage_Config"] | components["schemas"]["LoRA_LyCORIS_Krea2_Config"] | components["schemas"]["LoRA_LyCORIS_QwenImage_Config"] | components["schemas"]["LoRA_LyCORIS_LTX2_Config"] | components["schemas"]["LoRA_LyCORIS_MiniMaxH3_Config"] | components["schemas"]["LoRA_LyCORIS_Wan_Config"] | components["schemas"]["LoRA_LyCORIS_Anima_Config"] | components["schemas"]["LoRA_OMI_SDXL_Config"] | components["schemas"]["LoRA_OMI_FLUX_Config"] | components["schemas"]["LoRA_Diffusers_SD1_Config"] | components["schemas"]["LoRA_Diffusers_SD2_Config"] | components["schemas"]["LoRA_Diffusers_SDXL_Config"] | components["schemas"]["LoRA_Diffusers_Flux2_Config"] | components["schemas"]["LoRA_Diffusers_FLUX_Config"] | components["schemas"]["LoRA_Diffusers_ZImage_Config"] | components["schemas"]["ControlLoRA_LyCORIS_FLUX_Config"] | components["schemas"]["T5Encoder_T5Encoder_Config"] | components["schemas"]["T5Encoder_BnBLLMint8_Config"] | components["schemas"]["T5Encoder_SDNQ_Config"] | components["schemas"]["T5Encoder_GGUF_Config"] | components["schemas"]["Qwen3VLEncoder_Checkpoint_MiniMaxH3_Config"] | components["schemas"]["Qwen3VLEncoder_Checkpoint_Config"] | components["schemas"]["Qwen3VLEncoder_GGUF_Config"] | components["schemas"]["Qwen3VLEncoder_Qwen3VLEncoder_Config"] | components["schemas"]["Qwen35Encoder_Checkpoint_Config"] | components["schemas"]["Qwen3Encoder_Qwen3Encoder_Config"] | components["schemas"]["Qwen3Encoder_Checkpoint_Config"] | components["schemas"]["Qwen3Encoder_GGUF_Config"] | components["schemas"]["Qwen3Encoder_SDNQ_Folder_Config"] | components["schemas"]["MistralEncoder_Diffusers_Config"] | components["schemas"]["MistralEncoder_Checkpoint_Config"] | components["schemas"]["MistralEncoder_GGUF_Config"] | components["schemas"]["Gemma2Encoder_Gemma2Encoder_Config"] | components["schemas"]["Gemma4Encoder_Gemma4Encoder_LTX2_Config"] | components["schemas"]["Gemma2Encoder_GGUF_Config"] | components["schemas"]["QwenVLEncoder_Diffusers_Config"] | components["schemas"]["QwenVLEncoder_Checkpoint_Config"] | components["schemas"]["WanT5Encoder_WanT5Encoder_Config"] | components["schemas"]["TI_File_SD1_Config"] | components["schemas"]["TI_File_SD2_Config"] | components["schemas"]["TI_File_SDXL_Config"] | components["schemas"]["TI_Folder_SD1_Config"] | components["schemas"]["TI_Folder_SD2_Config"] | components["schemas"]["TI_Folder_SDXL_Config"] | components["schemas"]["IPAdapter_InvokeAI_SD1_Config"] | components["schemas"]["IPAdapter_InvokeAI_SD2_Config"] | components["schemas"]["IPAdapter_InvokeAI_SDXL_Config"] | components["schemas"]["IPAdapter_Checkpoint_SD1_Config"] | components["schemas"]["IPAdapter_Checkpoint_SD2_Config"] | components["schemas"]["IPAdapter_Checkpoint_SDXL_Config"] | components["schemas"]["IPAdapter_Checkpoint_FLUX_Config"] | components["schemas"]["T2IAdapter_Diffusers_SD1_Config"] | components["schemas"]["T2IAdapter_Diffusers_SDXL_Config"] | components["schemas"]["Spandrel_Checkpoint_Config"] | components["schemas"]["CLIPEmbed_Diffusers_G_Config"] | components["schemas"]["CLIPEmbed_Diffusers_L_Config"] | components["schemas"]["CLIPEmbed_Checkpoint_G_Config"] | components["schemas"]["CLIPEmbed_Checkpoint_L_Config"] | components["schemas"]["CLIPVision_Diffusers_Config"] | components["schemas"]["SigLIP_Diffusers_Config"] | components["schemas"]["FLUXRedux_Checkpoint_Config"] | components["schemas"]["LTX2DurationHead_Checkpoint_Config"] | components["schemas"]["LlavaOnevision_Diffusers_Config"] | components["schemas"]["TextLLM_Diffusers_Config"] | components["schemas"]["ExternalApiModelConfig"] | components["schemas"]["Unknown_Config"]; }; }; /** @description Bad request */ diff --git a/invokeai/frontend/webv1/src/features/modelManagerV2/models.ts b/invokeai/frontend/webv1/src/features/modelManagerV2/models.ts index f2e318dccb2..40c3ace24e3 100644 --- a/invokeai/frontend/webv1/src/features/modelManagerV2/models.ts +++ b/invokeai/frontend/webv1/src/features/modelManagerV2/models.ts @@ -208,6 +208,7 @@ export const MODEL_BASE_TO_COLOR: Record = { 'ernie-image': 'pink', 'krea-2': 'pink', 'ideogram-4': 'pink', + 'qwen-image-2-1': 'orange', external: 'orange', anima: 'invokePurple', wan: 'cyan', @@ -269,6 +270,7 @@ export const MODEL_BASE_TO_LONG_NAME: Record = { 'ernie-image': 'ERNIE-Image', 'krea-2': 'Krea-2', 'ideogram-4': 'Ideogram 4', + 'qwen-image-2-1': 'Qwen-Image-2.1', external: 'External', anima: 'Anima', wan: 'Wan 2.2', @@ -295,6 +297,7 @@ export const MODEL_BASE_TO_SHORT_NAME: Record = { 'ernie-image': 'ERNIE-Image', 'krea-2': 'Krea-2', 'ideogram-4': 'Ideogram4', + 'qwen-image-2-1': 'QwenImg2.1', external: 'External', anima: 'Anima', wan: 'Wan', @@ -322,6 +325,8 @@ export const MODEL_VARIANT_TO_LONG_NAME: Record = { gigantic: 'CLIP G', generate: 'Qwen Image', edit: 'Qwen Image Edit', + qwen_image_21_base: 'Qwen-Image-2.1 Base', + qwen_image_21_turbo: 'Qwen-Image-2.1 Turbo', fl2va: 'MiniMax H3 FL2VA', ref2va: 'MiniMax H3 Ref2VA', ltx2_dev: 'LTX-2 Dev', diff --git a/invokeai/frontend/webv1/src/features/nodes/types/common.ts b/invokeai/frontend/webv1/src/features/nodes/types/common.ts index 1fb3bb84b6c..e4171891114 100644 --- a/invokeai/frontend/webv1/src/features/nodes/types/common.ts +++ b/invokeai/frontend/webv1/src/features/nodes/types/common.ts @@ -117,6 +117,7 @@ export const zBaseModelType = z.enum([ 'ernie-image', 'krea-2', 'ideogram-4', + 'qwen-image-2-1', 'external', 'anima', 'wan', @@ -208,6 +209,7 @@ export const zFlux2VariantType = z.enum(['klein_4b', 'klein_4b_base', 'klein_9b' export const zZImageVariantType = z.enum(['turbo', 'zbase']); export const zKrea2VariantType = z.enum(['krea2_turbo', 'krea2_base']); const zQwenImageVariantType = z.enum(['generate', 'edit']); +const zQwenImage21VariantType = z.enum(['qwen_image_21_base', 'qwen_image_21_turbo']); const zWanVariantType = z.enum(['t2v_a14b', 'i2v_a14b', 'ti2v_5b']); /** Wan LoRA variant — identifies which model FAMILY (inner_dim) a LoRA * targets. A14B = inner_dim 5120 (both T2V and I2V), 5B = inner_dim 3072. */ @@ -228,6 +230,7 @@ export const zAnyModelVariant = z.union([ zZImageVariantType, zKrea2VariantType, zQwenImageVariantType, + zQwenImage21VariantType, zWanVariantType, zWanLoRAVariantType, zQwen3VariantType, diff --git a/invokeai/frontend/webv2/src/features/generation/core/__fixtures__/architectureCapabilities.json b/invokeai/frontend/webv2/src/features/generation/core/__fixtures__/architectureCapabilities.json index 24d4aa25ce7..01f6efbee4f 100644 --- a/invokeai/frontend/webv2/src/features/generation/core/__fixtures__/architectureCapabilities.json +++ b/invokeai/frontend/webv2/src/features/generation/core/__fixtures__/architectureCapabilities.json @@ -827,6 +827,88 @@ ] } }, + { + "base": "qwen-image-2-1", + "variant": null, + "features": { + "negative_prompt": { + "visible": true, + "usage": "cfg-gated" + }, + "dimension_grid": 32, + "guidance_label": "CFG", + "guidance_min": 1.0, + "guidance_max": null, + "scheduler_set": "flow", + "scheduler_applies_to_graph": false, + "control_kinds": [], + "max_reference_images": 0, + "reference_images_require_variant": null, + "supports_regional_guidance": false, + "regional_negative": false, + "clip_skip_max": null, + "supports_seamless": false, + "supports_cfg_rescale": false, + "sd_vae_override": false, + "color_compensation": false, + "vae_precision": false + }, + "defaults": { + "vae": null, + "vae_precision": null, + "scheduler": "euler", + "steps": 40, + "cfg_scale": 1.0, + "cfg_rescale_multiplier": null, + "width": 1024, + "height": 1024, + "guidance": null, + "cpu_only": null, + "fp8_storage": null + }, + "vae": null + }, + { + "base": "qwen-image-2-1", + "variant": "qwen_image_21_turbo", + "features": { + "negative_prompt": { + "visible": true, + "usage": "cfg-gated" + }, + "dimension_grid": 32, + "guidance_label": "CFG", + "guidance_min": 1.0, + "guidance_max": null, + "scheduler_set": "flow", + "scheduler_applies_to_graph": false, + "control_kinds": [], + "max_reference_images": 0, + "reference_images_require_variant": null, + "supports_regional_guidance": false, + "regional_negative": false, + "clip_skip_max": null, + "supports_seamless": false, + "supports_cfg_rescale": false, + "sd_vae_override": false, + "color_compensation": false, + "vae_precision": false + }, + "defaults": { + "vae": null, + "vae_precision": null, + "scheduler": "euler", + "steps": 8, + "cfg_scale": 1.0, + "cfg_rescale_multiplier": null, + "width": 1024, + "height": 1024, + "guidance": null, + "cpu_only": null, + "fp8_storage": null + }, + "vae": null + }, { "base": "sd-1", "variant": null, diff --git a/invokeai/frontend/webv2/src/features/generation/core/__snapshots__/generateGraphNodeTypes.json b/invokeai/frontend/webv2/src/features/generation/core/__snapshots__/generateGraphNodeTypes.json index 88a3f8d4de9..c82de6d94d3 100644 --- a/invokeai/frontend/webv2/src/features/generation/core/__snapshots__/generateGraphNodeTypes.json +++ b/invokeai/frontend/webv2/src/features/generation/core/__snapshots__/generateGraphNodeTypes.json @@ -227,6 +227,24 @@ "string" ] }, + "qwen-image-2-1": { + "componentsFilled": { + "diffusers": [], + "standalone-components": [ + "qwen3VLEncoderModel", + "vae" + ] + }, + "nodeTypes": [ + "core_metadata", + "integer", + "qwen_image_2_1_denoise", + "qwen_image_2_1_l2i", + "qwen_image_2_1_model_loader", + "qwen_image_2_1_text_encoder", + "string" + ] + }, "wan": { "componentsFilled": { "diffusers": [], @@ -530,6 +548,7 @@ "flux2_txt2img", "ideogram4_txt2img", "krea2_txt2img", + "qwen_image_2_1_txt2img", "qwen_image_txt2img", "sd3_txt2img", "sdxl_txt2img", @@ -1257,6 +1276,88 @@ "noise" ] }, + "qwen_image_2_1_denoise": { + "inputs": [ + "positive_conditioning", + "seed", + "transformer" + ], + "literalInputs": { + "cfg_scale": [ + 1 + ], + "height": [ + 1024 + ], + "is_intermediate": [ + true + ], + "steps": [ + 40 + ], + "use_cache": [ + true + ], + "width": [ + 1024 + ] + }, + "outputs": [ + "latents" + ] + }, + "qwen_image_2_1_l2i": { + "inputs": [ + "latents", + "metadata", + "vae" + ], + "literalInputs": { + "is_intermediate": [ + false + ], + "use_cache": [ + false + ] + }, + "outputs": [] + }, + "qwen_image_2_1_model_loader": { + "inputs": [], + "literalInputs": { + "is_intermediate": [ + true + ], + "model": [], + "qwen3_vl_encoder_model": [], + "use_cache": [ + true + ], + "vae_model": [] + }, + "outputs": [ + "qwen3_vl_encoder", + "transformer", + "vae" + ] + }, + "qwen_image_2_1_text_encoder": { + "inputs": [ + "prompt", + "qwen3_vl_encoder" + ], + "literalInputs": { + "is_intermediate": [ + true + ], + "use_cache": [ + true + ] + }, + "outputs": [ + "conditioning" + ] + }, "qwen_image_denoise": { "inputs": [ "negative_conditioning", diff --git a/invokeai/frontend/webv2/src/features/generation/core/baseGenerationPolicies.ts b/invokeai/frontend/webv2/src/features/generation/core/baseGenerationPolicies.ts index 1119d78feab..73949ffc2dd 100644 --- a/invokeai/frontend/webv2/src/features/generation/core/baseGenerationPolicies.ts +++ b/invokeai/frontend/webv2/src/features/generation/core/baseGenerationPolicies.ts @@ -38,7 +38,7 @@ import { isErnieImageMistralEncoder, isFlux2MistralEncoder, isFlux2Qwen3EncoderForModel, - isIdeogram4Qwen3VlEncoder, + isQwen3Vl8bEncoder, isIdeogram4UnconditionalBranch, isKrea2Qwen3VlEncoder, isNonAnimaQwen3Encoder, @@ -981,6 +981,27 @@ const getBaseComponentSectionPolicy = ( missingMessage: 'Generate needs a Qwen3-VL Encoder for non-Diffusers Krea-2 models.', }, ]); + case 'qwen-image-2-1': + // A Diffusers pipeline brings its own VAE and encoder; single-file and GGUF transformers need both. + return createPolicy(model.format !== 'diffusers', [ + { + ...vaeSlot( + 'Qwen-Image-2.1 decodes with its own 64-channel RGBA VAE. Required for non-Diffusers Qwen-Image-2.1 models.', + isAcceptedVae + ), + required: (ctx) => ctx.model.format !== 'diffusers', + missingMessage: 'Generate needs a VAE for non-Diffusers Qwen-Image-2.1 models.', + }, + { + ...qwen3VlEncoderSlot( + 'Qwen-Image-2.1 conditions on the Qwen3-VL 8B encoder, not the 4B one Krea-2 uses. Required for ' + + 'non-Diffusers Qwen-Image-2.1 models.', + isQwen3Vl8bEncoder + ), + required: (ctx) => ctx.model.format !== 'diffusers', + missingMessage: 'Generate needs a Qwen3-VL 8B Encoder for non-Diffusers Qwen-Image-2.1 models.', + }, + ]); case 'ernie-image': // Bundled ERNIE models supply components; standalone models need explicit components. return createPolicy(model.format !== 'diffusers', [ @@ -1016,7 +1037,7 @@ const getBaseComponentSectionPolicy = ( ...qwen3VlEncoderSlot( 'Ideogram 4 conditions on the Qwen3-VL 8B encoder, not the 4B one Krea-2 uses. Required ' + 'for non-Diffusers Ideogram 4 models.', - isIdeogram4Qwen3VlEncoder + isQwen3Vl8bEncoder ), required: (ctx) => ctx.model.format !== 'diffusers', missingMessage: 'Generate needs a Qwen3-VL 8B Encoder for non-Diffusers Ideogram 4 models.', diff --git a/invokeai/frontend/webv2/src/features/generation/core/canvas/compileCanvasGraph.test.ts b/invokeai/frontend/webv2/src/features/generation/core/canvas/compileCanvasGraph.test.ts index 173df0c1d99..726bba5b198 100644 --- a/invokeai/frontend/webv2/src/features/generation/core/canvas/compileCanvasGraph.test.ts +++ b/invokeai/frontend/webv2/src/features/generation/core/canvas/compileCanvasGraph.test.ts @@ -58,6 +58,13 @@ const krea2Model: MainModelConfig = { name: 'Krea-2', type: 'main', }; +const qwenImage21Model: MainModelConfig = { + base: 'qwen-image-2-1', + format: 'diffusers', + key: 'qwen-image-2-1-model', + name: 'Qwen-Image-2.1', + type: 'main', +}; const externalModel: GenerateModelConfig = { base: 'external', capabilities: { modes: ['txt2img'], supports_seed: true }, @@ -271,6 +278,15 @@ const BASE_CASES: BaseCase[] = [ img2imgMode: 'anima_img2img', optimizedDenoising: false, }, + { + model: qwenImage21Model, + encodeType: 'qwen_image_2_1_i2l', + outputType: 'qwen_image_2_1_l2i', + denoiseType: 'qwen_image_2_1_denoise', + txt2imgMode: 'qwen_image_2_1_txt2img', + img2imgMode: 'qwen_image_2_1_img2img', + optimizedDenoising: false, + }, ]; seedArchitectureCapabilities(); diff --git a/invokeai/frontend/webv2/src/features/generation/core/canvas/compileCanvasGraph.ts b/invokeai/frontend/webv2/src/features/generation/core/canvas/compileCanvasGraph.ts index 8155895bd1e..28d57fd137d 100644 --- a/invokeai/frontend/webv2/src/features/generation/core/canvas/compileCanvasGraph.ts +++ b/invokeai/frontend/webv2/src/features/generation/core/canvas/compileCanvasGraph.ts @@ -37,6 +37,7 @@ const CANVAS_I2L_NODE_TYPES: Partial> = { 'z-image': 'z_image_i2l', // Krea-2 shares the Qwen-Image VAE, so it encodes with that family's node too. 'krea-2': 'qwen_image_i2l', + 'qwen-image-2-1': 'qwen_image_2_1_i2l', anima: 'anima_i2l', wan: 'wan_i2l', // Ideogram lacks an encode node; reject these modes with an actionable error. diff --git a/invokeai/frontend/webv2/src/features/generation/core/componentCompatibility.ts b/invokeai/frontend/webv2/src/features/generation/core/componentCompatibility.ts index 32b3ed6fd6d..ce5ecf38019 100644 --- a/invokeai/frontend/webv2/src/features/generation/core/componentCompatibility.ts +++ b/invokeai/frontend/webv2/src/features/generation/core/componentCompatibility.ts @@ -90,11 +90,11 @@ export const isFlux2MistralEncoder: GenerateComponentFilter = (model) => export const isErnieImageMistralEncoder: GenerateComponentFilter = (model) => model.type === 'mistral_encoder' && model.variant === MINISTRAL_3B_VARIANT; -/** Krea's 4B encoder is incompatible with Ideogram's 8B encoder. */ +/** Krea-2 conditions on the 4B encoder; Ideogram 4 and Qwen-Image-2.1 on the 8B one. The two are not interchangeable. */ export const isKrea2Qwen3VlEncoder: GenerateComponentFilter = (model) => model.type === 'qwen3_vl_encoder' && model.variant === 'qwen3_vl_4b'; -export const isIdeogram4Qwen3VlEncoder: GenerateComponentFilter = (model) => +export const isQwen3Vl8bEncoder: GenerateComponentFilter = (model) => model.type === 'qwen3_vl_encoder' && model.variant === 'qwen3_vl_8b'; /** Exclude only single-file unconditional branches (safetensors or GGUF); Diffusers bundles both branches. */ diff --git a/invokeai/frontend/webv2/src/features/generation/core/contracts.ts b/invokeai/frontend/webv2/src/features/generation/core/contracts.ts index a50ef3d3b14..60489f4a5a4 100644 --- a/invokeai/frontend/webv2/src/features/generation/core/contracts.ts +++ b/invokeai/frontend/webv2/src/features/generation/core/contracts.ts @@ -65,6 +65,7 @@ export type KnownGenerationModelBase = | 'cogview4' | 'ernie-image' | 'qwen-image' + | 'qwen-image-2-1' | 'z-image' | 'ideogram-4' | 'krea-2' diff --git a/invokeai/frontend/webv2/src/features/generation/core/graph.test.ts b/invokeai/frontend/webv2/src/features/generation/core/graph.test.ts index 4ba5c25d044..f61e441084f 100644 --- a/invokeai/frontend/webv2/src/features/generation/core/graph.test.ts +++ b/invokeai/frontend/webv2/src/features/generation/core/graph.test.ts @@ -1041,6 +1041,70 @@ describe('Krea-2, Ideogram 4 and Wan graphs', () => { }); }); +describe('Qwen-Image-2.1 graphs', () => { + const qwen21Diffusers: MainModelConfig = { + base: 'qwen-image-2-1', + format: 'diffusers', + key: 'qwen21-diffusers', + name: 'Qwen-Image-2.1', + type: 'main', + variant: 'qwen_image_21_base', + }; + const qwen21Gguf: MainModelConfig = { + base: 'qwen-image-2-1', + format: 'gguf_quantized', + key: 'qwen21-gguf', + name: 'Qwen-Image-2.1 Q4_K_M', + type: 'main', + variant: 'qwen_image_21_base', + }; + const qwen21Vae: VaeModelConfig = { + base: 'qwen-image-2-1', + key: 'qwen21-vae', + name: 'Qwen-Image-2.1 VAE', + type: 'vae', + }; + const qwen3Vl8bEncoder: ComponentModelConfig = { + base: 'any', + key: 'qwen3-vl-8b', + name: 'Qwen3-VL 8B', + type: 'qwen3_vl_encoder', + variant: 'qwen3_vl_8b', + }; + + it('runs the negative prompt only with CFG above 1, wired through its own encoder', () => { + // Qwen-Image-2.1 is sampled without guidance by default; there the model takes no negative input. + const withoutCfg = compile(qwen21Diffusers, { cfgScale: 1 }); + + expect(withoutCfg.nodes.neg_cond).toBeUndefined(); + expect(getEdge(withoutCfg, 'denoise_latents', 'negative_conditioning')).toBeUndefined(); + + const withCfg = compile(qwen21Diffusers, { cfgScale: 4 }); + + expect(withCfg.nodes.neg_cond?.type).toBe('qwen_image_2_1_text_encoder'); + expect(getEdge(withCfg, 'denoise_latents', 'negative_conditioning')?.source.node_id).toBe('neg_cond'); + expect(getEdge(withCfg, 'neg_cond', 'prompt')?.source.node_id).toBe('negative_prompt'); + expect(getEdge(withCfg, 'neg_cond', 'qwen3_vl_encoder')?.source).toEqual({ + field: 'qwen3_vl_encoder', + node_id: 'model_loader', + }); + expect(withCfg.nodes.denoise_latents).toMatchObject({ cfg_scale: 4 }); + }); + + it('requires the VAE and the encoder for a GGUF transformer, and passes them to the loader', () => { + expect(() => compile(qwen21Gguf, { qwen3VLEncoderModel: qwen3Vl8bEncoder })).toThrow( + 'Generate needs a VAE for non-Diffusers Qwen-Image-2.1 models.' + ); + expect(() => compile(qwen21Gguf, { vae: qwen21Vae })).toThrow( + 'Generate needs a Qwen3-VL 8B Encoder for non-Diffusers Qwen-Image-2.1 models.' + ); + + const graph = compile(qwen21Gguf, { qwen3VLEncoderModel: qwen3Vl8bEncoder, vae: qwen21Vae }); + + expect(graph.nodes.model_loader).toMatchObject({ qwen3_vl_encoder_model: qwen3Vl8bEncoder, vae_model: qwen21Vae }); + }); +}); + describe('ERNIE-Image graphs', () => { const ernieModel: MainModelConfig = { base: 'ernie-image', diff --git a/invokeai/frontend/webv2/src/features/generation/core/graph.ts b/invokeai/frontend/webv2/src/features/generation/core/graph.ts index 02be3aae118..a1478499ef1 100644 --- a/invokeai/frontend/webv2/src/features/generation/core/graph.ts +++ b/invokeai/frontend/webv2/src/features/generation/core/graph.ts @@ -35,7 +35,7 @@ import { isErnieImageMistralEncoder, isFlux2MistralEncoder, isFlux2Qwen3EncoderForModel, - isIdeogram4Qwen3VlEncoder, + isQwen3Vl8bEncoder, isKrea2Qwen3VlEncoder, isNonAnimaQwen3Encoder, isSelfContainedSDNQFlux1Pipeline, @@ -1285,6 +1285,60 @@ const buildKrea2Graph = ( return graph; }; +const buildQwenImage21Graph = ( + settings: GenerateSettings, + model: MainModelConfig, + outputIsIntermediate: boolean, + projectSettings: GenerationProjectSettings +): BackendGraphContract => { + // A Diffusers pipeline brings its VAE and encoder; for single-file and GGUF transformers the generation policy + // requires both before this runs. + const vaeModel = getCompatibleVae(settings, model); + const qwen3VlEncoderModel = getCompatibleComponent(settings.qwen3VLEncoderModel, isQwen3Vl8bEncoder); + + const graph: BackendGraphContract = { edges: [], id: createId('qwen_image_2_1_graph'), nodes: {} }; + const { negativePrompt, positivePrompt, seed } = addPromptAndSeedNodes(graph); + // True CFG runs only above 1, the model's default being off; a negative prompt has no effect without it. + const useCfg = settings.cfgScale > 1; + const modelLoader = addNode(graph, { + id: 'model_loader', + model, + qwen3_vl_encoder_model: qwen3VlEncoderModel ?? undefined, + type: 'qwen_image_2_1_model_loader', + vae_model: vaeModel ?? undefined, + }); + const posCond = addNode(graph, { id: 'pos_cond', type: 'qwen_image_2_1_text_encoder' }); + const negCond = useCfg ? addNode(graph, { id: 'neg_cond', type: 'qwen_image_2_1_text_encoder' }) : null; + const denoise = addNode(graph, { + cfg_scale: settings.cfgScale, + height: settings.height, + id: 'denoise_latents', + steps: settings.steps, + type: 'qwen_image_2_1_denoise', + width: settings.width, + }); + const output = addImageOutputNode(graph, 'qwen_image_2_1_l2i', outputIsIntermediate); + + addEdge(graph, modelLoader, 'transformer', denoise, 'transformer'); + addEdge(graph, modelLoader, 'qwen3_vl_encoder', posCond, 'qwen3_vl_encoder'); + addEdge(graph, modelLoader, 'vae', output, 'vae'); + addEdge(graph, positivePrompt, 'value', posCond, 'prompt'); + addEdge(graph, posCond, 'conditioning', denoise, 'positive_conditioning'); + if (negCond) { + addEdge(graph, modelLoader, 'qwen3_vl_encoder', negCond, 'qwen3_vl_encoder'); + addEdge(graph, negativePrompt, 'value', negCond, 'prompt'); + addEdge(graph, negCond, 'conditioning', denoise, 'negative_conditioning'); + } + addEdge(graph, seed, 'value', denoise, 'seed'); + addEdge(graph, denoise, 'latents', output, 'latents'); + addMetadata(graph, output, settings, model, 'qwen_image_2_1_txt2img', projectSettings, { + qwen3_vl_encoder: qwen3VlEncoderModel ?? undefined, + vae: vaeModel ?? undefined, + }); + + return graph; +}; + const buildIdeogram4Graph = ( settings: GenerateSettings, model: MainModelConfig, @@ -1294,7 +1348,7 @@ const buildIdeogram4Graph = ( // Standalone Ideogram needs its other branch, encoder, and VAE; bundles supply them. const isDiffusers = model.format === 'diffusers'; const unconditionalModel = settings.ideogram4UnconditionalModel; - const qwen3VlEncoderModel = getCompatibleComponent(settings.qwen3VLEncoderModel, isIdeogram4Qwen3VlEncoder); + const qwen3VlEncoderModel = getCompatibleComponent(settings.qwen3VLEncoderModel, isQwen3Vl8bEncoder); const vaeModel = getCompatibleVae(settings, model); if (!isDiffusers) { @@ -1510,6 +1564,7 @@ export const GRAPH_BUILDERS = { 'z-image': buildZImageGraph, 'ideogram-4': buildIdeogram4Graph, 'krea-2': buildKrea2Graph, + 'qwen-image-2-1': buildQwenImage21Graph, anima: buildAnimaGraph, wan: buildWanGraph, } satisfies Record; diff --git a/invokeai/frontend/webv2/src/features/generation/core/supportedBases.test.ts b/invokeai/frontend/webv2/src/features/generation/core/supportedBases.test.ts index 43f5a3be6d5..ba9d991f481 100644 --- a/invokeai/frontend/webv2/src/features/generation/core/supportedBases.test.ts +++ b/invokeai/frontend/webv2/src/features/generation/core/supportedBases.test.ts @@ -19,6 +19,7 @@ describe('SUPPORTED_GENERATE_BASES', () => { 'z-image', 'ideogram-4', 'krea-2', + 'qwen-image-2-1', 'wan', 'anima', ]); diff --git a/invokeai/frontend/webv2/src/features/generation/core/supportedBases.ts b/invokeai/frontend/webv2/src/features/generation/core/supportedBases.ts index 031063253f4..35424c7b183 100644 --- a/invokeai/frontend/webv2/src/features/generation/core/supportedBases.ts +++ b/invokeai/frontend/webv2/src/features/generation/core/supportedBases.ts @@ -15,6 +15,7 @@ export const SUPPORTED_GENERATE_BASES = [ 'z-image', 'ideogram-4', 'krea-2', + 'qwen-image-2-1', 'wan', 'anima', ] as const satisfies readonly KnownGenerationModelBase[]; diff --git a/invokeai/frontend/webv2/src/features/models/core/baseIdentity.test.ts b/invokeai/frontend/webv2/src/features/models/core/baseIdentity.test.ts index 6f24a6b2454..bf53cddcc87 100644 --- a/invokeai/frontend/webv2/src/features/models/core/baseIdentity.test.ts +++ b/invokeai/frontend/webv2/src/features/models/core/baseIdentity.test.ts @@ -79,6 +79,7 @@ describe('MODEL_BASES', () => { 'cogview4', 'ernie-image', 'qwen-image', + 'qwen-image-2-1', 'z-image', 'ideogram-4', 'krea-2', diff --git a/invokeai/frontend/webv2/src/features/models/core/baseIdentity.ts b/invokeai/frontend/webv2/src/features/models/core/baseIdentity.ts index 2fbd00e54e1..3bf13ea93a8 100644 --- a/invokeai/frontend/webv2/src/features/models/core/baseIdentity.ts +++ b/invokeai/frontend/webv2/src/features/models/core/baseIdentity.ts @@ -8,6 +8,7 @@ export const toTitleCase = (value: string): string => value.replaceAll(/[_-]+/g, ' ').replace(/\w\S*/g, (word) => word.charAt(0).toUpperCase() + word.slice(1)); export type ModelBaseColorPalette = + | 'aqua' | 'blue' | 'coral' | 'cyan' @@ -97,6 +98,12 @@ export const MODEL_BASES = { label: 'Qwen Image', colorPalette: 'cyan', }, + 'qwen-image-2-1': { + base: 'qwen-image-2-1', + label: 'Qwen-Image-2.1', + // A deeper cyan: of the Qwen-Image family, yet told apart from it, as their models and LoRAs do not mix. + colorPalette: 'aqua', + }, 'z-image': { base: 'z-image', label: 'Z-Image', diff --git a/invokeai/frontend/webv2/src/features/models/core/relationships.ts b/invokeai/frontend/webv2/src/features/models/core/relationships.ts index e185ff768c6..b4c6c84ca57 100644 --- a/invokeai/frontend/webv2/src/features/models/core/relationships.ts +++ b/invokeai/frontend/webv2/src/features/models/core/relationships.ts @@ -23,8 +23,8 @@ export const NULL_BASE_ALLOWANCES: Readonly { it('offers both Qwen3-VL sizes, because the field is required on the config', () => { // Required variants must not offer None, which would send invalid null during save. expect(getVariantOptionsFor('any', 'qwen3_vl_encoder')).toEqual(['qwen3_vl_4b', 'qwen3_vl_8b']); - expect(getModelVariantLabel('qwen3_vl_8b')).toBe('Qwen3-VL 8B (Ideogram 4)'); + expect(getModelVariantLabel('qwen3_vl_8b')).toBe('Qwen3-VL 8B (Ideogram 4, Qwen-Image-2.1)'); // MiniMax H3 shares the encoder type but lacks a variant field; size choices would fail saving. expect(getVariantOptionsFor('minimax-h3', 'qwen3_vl_encoder')).toEqual([]); }); diff --git a/invokeai/frontend/webv2/src/features/models/core/taxonomy.ts b/invokeai/frontend/webv2/src/features/models/core/taxonomy.ts index be2b6c45adf..313d5ce36ce 100644 --- a/invokeai/frontend/webv2/src/features/models/core/taxonomy.ts +++ b/invokeai/frontend/webv2/src/features/models/core/taxonomy.ts @@ -136,7 +136,9 @@ export const MODEL_VARIANT_LABELS: Record = { qwen3_8b: 'Qwen3 8B', qwen3_5_4b: 'Qwen3.5 4B (Anima-3.8B)', qwen3_vl_4b: 'Qwen3-VL 4B (Krea-2)', - qwen3_vl_8b: 'Qwen3-VL 8B (Ideogram 4)', + qwen3_vl_8b: 'Qwen3-VL 8B (Ideogram 4, Qwen-Image-2.1)', + qwen_image_21_base: 'Qwen-Image-2.1 Base', + qwen_image_21_turbo: 'Qwen-Image-2.1 Turbo', ref2va: 'MiniMax H3 Ref2VA', res2k_sr4x: 'PiD 2K (4x SR)', res2kto4k_sr4x: 'PiD 4K (4x SR Upscale)', @@ -161,6 +163,7 @@ const MAIN_VARIANTS_BY_BASE: Record = { 'ltx-2': ['ltx2_dev', 'ltx2_distilled'], 'minimax-h3': ['fl2va', 'ref2va'], 'qwen-image': ['generate', 'edit'], + 'qwen-image-2-1': ['qwen_image_21_base', 'qwen_image_21_turbo'], 'sd-1': ['normal', 'inpaint'], 'sd-2': ['normal', 'inpaint', 'depth'], sdxl: ['normal', 'inpaint'], diff --git a/invokeai/frontend/webv2/src/features/models/core/types.ts b/invokeai/frontend/webv2/src/features/models/core/types.ts index 6241411814e..de39d5ea2d9 100644 --- a/invokeai/frontend/webv2/src/features/models/core/types.ts +++ b/invokeai/frontend/webv2/src/features/models/core/types.ts @@ -16,6 +16,7 @@ export type ModelBase = | 'cogview4' | 'ernie-image' | 'qwen-image' + | 'qwen-image-2-1' | 'z-image' | 'ideogram-4' | 'krea-2' diff --git a/invokeai/frontend/webv2/src/features/models/ui/detail/ModelBadges.browser.test.tsx b/invokeai/frontend/webv2/src/features/models/ui/detail/ModelBadges.browser.test.tsx index ac10f2b28f5..da877cd1b8b 100644 --- a/invokeai/frontend/webv2/src/features/models/ui/detail/ModelBadges.browser.test.tsx +++ b/invokeai/frontend/webv2/src/features/models/ui/detail/ModelBadges.browser.test.tsx @@ -22,6 +22,7 @@ const UPDATED_BASES = new Set([ 'wan', 'minimax-h3', 'ltx-2', + 'qwen-image-2-1', ]); (globalThis as typeof globalThis & { IS_REACT_ACT_ENVIRONMENT: boolean }).IS_REACT_ACT_ENVIRONMENT = true; diff --git a/invokeai/frontend/webv2/src/features/workflow/core/modelRequirements.ts b/invokeai/frontend/webv2/src/features/workflow/core/modelRequirements.ts index db97a6fa583..484fbe62048 100644 --- a/invokeai/frontend/webv2/src/features/workflow/core/modelRequirements.ts +++ b/invokeai/frontend/webv2/src/features/workflow/core/modelRequirements.ts @@ -40,6 +40,7 @@ const BASE_LABELS: Record = { 'krea-2': 'Krea-2', 'minimax-h3': 'MiniMax H3', 'qwen-image': 'Qwen Image', + 'qwen-image-2-1': 'Qwen-Image-2.1', 'sd-1': 'SD 1.x', 'sd-2': 'SD 2.x', 'sd-3': 'SD 3.x', diff --git a/invokeai/frontend/webv2/src/platform/ui/theme/system.ts b/invokeai/frontend/webv2/src/platform/ui/theme/system.ts index 3f7d67fc6b1..d8988b9886d 100644 --- a/invokeai/frontend/webv2/src/platform/ui/theme/system.ts +++ b/invokeai/frontend/webv2/src/platform/ui/theme/system.ts @@ -115,6 +115,7 @@ const neutralRamp = Object.fromEntries(STEPS.map((step) => [step, colorToken((th // Darken categorical text seeds for light themes; derive fills from the same hue. const categoricalPalettes = Object.fromEntries( Object.entries({ + aqua: '#5cc8d8', coral: '#ff8e80', gold: '#f6d365', ice: '#b3e5fc', diff --git a/invokeai/invocation_api/__init__.py b/invokeai/invocation_api/__init__.py index 6a31569860a..b0a85e7a3e4 100644 --- a/invokeai/invocation_api/__init__.py +++ b/invokeai/invocation_api/__init__.py @@ -145,6 +145,7 @@ Krea2ConditioningInfo, LTX2ConditioningInfo, MiniMaxH3ConditioningInfo, + QwenImage21ConditioningInfo, QwenImageConditioningInfo, SD3ConditioningInfo, SDXLConditioningInfo, @@ -245,6 +246,7 @@ "Krea2ConditioningInfo", "LTX2ConditioningInfo", "MiniMaxH3ConditioningInfo", + "QwenImage21ConditioningInfo", "QwenImageConditioningInfo", "SD3ConditioningInfo", "SDXLConditioningInfo", diff --git a/tests/app/invocations/test_frontend_graph_node_types.py b/tests/app/invocations/test_frontend_graph_node_types.py index 0a6b3ea1bb9..77bc5c37520 100644 --- a/tests/app/invocations/test_frontend_graph_node_types.py +++ b/tests/app/invocations/test_frontend_graph_node_types.py @@ -103,7 +103,7 @@ def test_every_connection_the_panel_compiles_is_one_the_queue_will_accept(contra # The number of architectures each panel supports. A contract that silently stopped being # regenerated would make every assertion below vacuous, so the count is pinned: a new architecture # updates this number and the fixture in the same commit. -SUPPORTED_BASE_COUNTS = {"generate": 14, "video": 3, "upscale": 5} +SUPPORTED_BASE_COUNTS = {"generate": 15, "video": 3, "upscale": 5} # Floors separating "the fixture records literals" from "it records a fraction of them". Set just # under the current numbers (generate: 58 node types carrying 252 scalar values; video: 25 carrying diff --git a/tests/app/invocations/test_ideal_size.py b/tests/app/invocations/test_ideal_size.py index 0625fb706c8..7a504e2c6ef 100644 --- a/tests/app/invocations/test_ideal_size.py +++ b/tests/app/invocations/test_ideal_size.py @@ -62,6 +62,8 @@ def _invoke( # because their declared defaults are square. BaseModelType.MiniMaxH3: (1344, 736), BaseModelType.QwenImage: (1360, 768), + # A 32-pixel grid, as CogView4: 1365.3 -> 1365 -> 1344. + BaseModelType.QwenImage21: (1344, 768), BaseModelType.StableDiffusion1: (680, 384), BaseModelType.StableDiffusion2: (1024, 576), BaseModelType.StableDiffusion3: (1360, 768), diff --git a/tests/app/invocations/test_qwen_image_2_1_nodes.py b/tests/app/invocations/test_qwen_image_2_1_nodes.py new file mode 100644 index 00000000000..20e7fa0ad0d --- /dev/null +++ b/tests/app/invocations/test_qwen_image_2_1_nodes.py @@ -0,0 +1,351 @@ +"""The Qwen-Image-2.1 denoise and model-loader nodes, run against stand-ins for the model and the context. + +What the GPU parity run cannot see: the order the prefix cache is filled in when guidance changes per step, where +an image-to-image run starts on each variant's schedule, and which components the loader refuses. +""" + +from contextlib import contextmanager +from types import SimpleNamespace + +import numpy as np +import pytest +import torch + +from invokeai.app.invocations.fields import LatentsField, QwenImage21ConditioningField +from invokeai.app.invocations.model import ModelIdentifierField, TransformerField +from invokeai.app.invocations.qwen_image_2_1.qwen_image_2_1_denoise import ( + LATENT_CHANNELS, + QwenImage21DenoiseInvocation, + clip_sigmas, + pack_latents, + unpack_latents, +) +from invokeai.app.invocations.qwen_image_2_1.qwen_image_2_1_model_loader import QwenImage21ModelLoaderInvocation +from invokeai.backend.model_manager.taxonomy import ( + BaseModelType, + ModelFormat, + ModelType, + Qwen3VLVariantType, + QwenImage21VariantType, +) +from invokeai.backend.stable_diffusion.diffusion.conditioning_data import ( + ConditioningFieldData, + QwenImage21ConditioningInfo, +) + +DENOISE = "invokeai.app.invocations.qwen_image_2_1.qwen_image_2_1_denoise" + + +def test_latents_pack_one_token_per_pixel_in_raster_order() -> None: + latents = torch.randn(1, LATENT_CHANNELS, 2, 3) + packed = pack_latents(latents) + assert packed.shape == (1, 6, LATENT_CHANNELS) + assert torch.equal(packed[0, 1 * 3 + 2], latents[0, :, 1, 2]) + assert torch.equal(unpack_latents(packed, 2, 3), latents) + + +class _Transformer: + """Records each forward: which prompt it saw (by its fill value), the cache it got and the cache mode.""" + + config = SimpleNamespace(causal_condition=True, num_attention_heads=2, attention_head_dim=4) + transformer_blocks = [object(), object()] + + def __init__(self) -> None: + self.calls: list[tuple[str, int, str | None, float]] = [] + + def modules(self): + return iter(()) + + def __call__(self, *, hidden_states, encoder_hidden_states, timestep, kv_cache, kv_cache_mode, **_kwargs): + prompt = "pos" if float(encoder_hidden_states.mean()) > 0 else "neg" + self.calls.append((prompt, id(kv_cache), kv_cache_mode, round(float(timestep[0]), 3))) + # The transformer returns the joint sequence; the node keeps the image tokens at its end. + return (torch.zeros(1, encoder_hidden_states.shape[1] + hidden_states.shape[1], hidden_states.shape[2]),) + + +class _TransformerInfo: + def __init__(self, transformer: _Transformer) -> None: + self.model = transformer + + @contextmanager + def model_on_device(self, **_kwargs): + yield ({}, self.model) + + +def _context(transformer: _Transformer, variant: QwenImage21VariantType, init_latents: torch.Tensor | None = None): + conditionings = { + "pos": ConditioningFieldData(conditionings=[QwenImage21ConditioningInfo(prompt_embeds=torch.ones(1, 3, 8))]), + "neg": ConditioningFieldData(conditionings=[QwenImage21ConditioningInfo(prompt_embeds=-torch.ones(1, 2, 8))]), + } + return SimpleNamespace( + models=SimpleNamespace( + load=lambda _identifier: _TransformerInfo(transformer), + get_config=lambda _identifier: SimpleNamespace(variant=variant), + ), + conditioning=SimpleNamespace(load=lambda name: conditionings[name]), + tensors=SimpleNamespace(load=lambda _name: init_latents), + util=SimpleNamespace(sd_step_callback=lambda *_args: None), + ) + + +def _denoise(**fields) -> QwenImage21DenoiseInvocation: + model = ModelIdentifierField(key="m", hash="h", name="m", base=BaseModelType.QwenImage21, type=ModelType.Main) + defaults = { + "transformer": TransformerField(transformer=model, loras=[]), + "positive_conditioning": QwenImage21ConditioningField(conditioning_name="pos"), + "negative_conditioning": QwenImage21ConditioningField(conditioning_name="neg"), + "latents": None, + "denoise_mask": None, + "denoising_start": 0.0, + "denoising_end": 1.0, + "cfg_scale": 1.0, + "width": 64, + "height": 64, + "steps": 3, + "seed": 0, + } + return QwenImage21DenoiseInvocation.model_construct(**(defaults | fields)) + + +@pytest.fixture(autouse=True) +def _cpu(monkeypatch: pytest.MonkeyPatch) -> None: + monkeypatch.setattr(f"{DENOISE}.TorchDevice.choose_torch_device", lambda: torch.device("cpu")) + monkeypatch.setattr(f"{DENOISE}.TorchDevice.choose_bfloat16_safe_dtype", lambda _device: torch.float32) + + +def test_each_guidance_branch_prefills_its_own_cache_on_the_first_step() -> None: + transformer = _Transformer() + # Guidance off at step 0: the negative branch must still prefill there, or step 1 decodes from an empty cache. + _denoise(cfg_scale=[1.0, 4.0, 4.0])._run_diffusion(_context(transformer, QwenImage21VariantType.Base)) + + branches = [(prompt, mode) for prompt, _cache, mode, _t in transformer.calls] + assert branches == [ + ("pos", "extract"), + ("neg", "extract"), + ("pos", "cached"), + ("neg", "cached"), + ("pos", "cached"), + ("neg", "cached"), + ] + caches = {prompt: {cache for p, cache, _m, _t in transformer.calls if p == prompt} for prompt in ("pos", "neg")} + assert len(caches["pos"]) == len(caches["neg"]) == 1 and caches["pos"] != caches["neg"] + + +def test_without_guidance_the_negative_prompt_is_never_run() -> None: + transformer = _Transformer() + _denoise(cfg_scale=1.0)._run_diffusion(_context(transformer, QwenImage21VariantType.Base)) + assert {prompt for prompt, *_ in transformer.calls} == {"pos"} + + +@pytest.mark.parametrize( + ("cfg_scale", "negative_calls"), + # One value per configured step; only the last two are reached from 0.5. Guidance on just those two runs the + # negative prompt twice; guidance on just the skipped ones, never -- a slice off by one would run it once. + [([1.0] * 6 + [4.0, 4.0], 2), ([4.0] * 6 + [1.0, 1.0], 0)], + ids=["guided-tail", "guided-head"], +) +def test_image_to_image_on_turbo_starts_at_the_noise_level_of_its_strength( + cfg_scale: list[float], negative_calls: int +) -> None: + # Turbo's table is front-loaded (six of eight steps above 0.84). A strength of 0.5 must start at 0.5, not at + # the table's fifth entry (0.895), which would all but discard the input image. + transformer = _Transformer() + init = torch.zeros(1, LATENT_CHANNELS, 4, 4) + _denoise( + steps=8, denoising_start=0.5, latents=LatentsField(latents_name="init"), cfg_scale=cfg_scale + )._run_diffusion(_context(transformer, QwenImage21VariantType.Turbo, init_latents=init)) + + positive = [(mode, t) for prompt, _cache, mode, t in transformer.calls if prompt == "pos"] + assert positive == [("extract", 0.5), ("cached", 0.415)] + assert sum(prompt == "neg" for prompt, *_ in transformer.calls) == negative_calls + + +def test_image_to_image_on_base_starts_at_the_step_its_strength_names() -> None: + # Base picks by step index, as Qwen-Image and diffusers' image-to-image pipelines do: a strength of 0.5 skips + # the first half of the steps. Its shifted schedule is still well above 0.5 there. + from invokeai.backend.qwen_image_2_1.sampling import build_sigmas + + schedule = build_sigmas(QwenImage21VariantType.Base, 8, (64 // 16) * (64 // 16)).tolist() + transformer = _Transformer() + _denoise(steps=8, denoising_start=0.5, latents=LatentsField(latents_name="init"))._run_diffusion( + _context(transformer, QwenImage21VariantType.Base, init_latents=torch.zeros(1, LATENT_CHANNELS, 4, 4)) + ) + + starts = [t for prompt, _cache, _mode, t in transformer.calls if prompt == "pos"] + assert starts == pytest.approx(schedule[4:8], abs=1e-3) + assert starts[0] > 0.5 + + +@pytest.mark.parametrize( + ("start", "end", "expected"), + [ + (0.0, 1.0, (0, 8)), + (0.5, 1.0, (4, 4)), + # Rounded to the nearest step, as Qwen-Image's own denoise rounds: 5.6 -> 6, 4.8 -> 5. + (0.7, 1.0, (6, 2)), + (0.0, 0.6, (0, 5)), + (0.99, 1.0, (7, 1)), + (0.0, 0.01, (0, 1)), + (0.25, 0.75, (2, 4)), + ], +) +def test_a_strength_on_base_names_whole_steps_and_always_runs_one( + start: float, end: float, expected: tuple[int, int] +) -> None: + sigmas = [1.0 - i / 8 for i in range(9)] + clipped, first_step = clip_sigmas(sigmas, start, end, by_noise_level=False) + assert (first_step, len(clipped) - 1) == expected + assert clipped == sigmas[first_step : first_step + len(clipped)] + + +def test_a_float32_fallback_reserves_twice_the_bfloat16_activations() -> None: + estimate = QwenImage21DenoiseInvocation._estimate_working_memory + base = 1024**3 + bf16 = estimate(4096, 300, 300, True, 2) - base + assert estimate(4096, 300, 300, True, 4) - base == 2 * bf16 + + +@pytest.mark.parametrize("dtype", [torch.float32, torch.bfloat16]) +def test_the_estimate_is_priced_at_the_compute_dtypes_width( + dtype: torch.dtype, monkeypatch: pytest.MonkeyPatch +) -> None: + # A hard-coded width at the call site would halve the float32 estimate, or double the bf16 one CUDA runs. + monkeypatch.setattr(f"{DENOISE}.TorchDevice.choose_bfloat16_safe_dtype", lambda _device: dtype) + widths: list[int] = [] + estimate = QwenImage21DenoiseInvocation._estimate_working_memory + + def spy(*args): + widths.append(args[-1]) + return estimate(*args) + + monkeypatch.setattr(QwenImage21DenoiseInvocation, "_estimate_working_memory", staticmethod(spy)) + _denoise()._run_diffusion(_context(_Transformer(), QwenImage21VariantType.Base)) + assert widths == [dtype.itemsize] + + +class _DecodingVAE: + """A bf16 VAE that records what it decodes and answers with a fixed opaque bf16 decode.""" + + dtype = torch.bfloat16 + use_tiling = False + tile_sample_min_height = tile_sample_min_width = 256 + tile_sample_stride_height = tile_sample_stride_width = 192 + + def __init__(self, mean: list[float], std: list[float]) -> None: + self.config = SimpleNamespace(latents_mean=mean, latents_std=std) + self.decoded_from: torch.Tensor | None = None + generator = torch.Generator().manual_seed(1) + self.decode_output = (torch.rand(1, 4, 1, 64, 64, generator=generator) * 2.4 - 1.2).to(torch.bfloat16) + self.decode_output[:, 3] = 1.0 + + def parameters(self): + return iter([torch.zeros(1, dtype=torch.bfloat16)]) + + def disable_tiling(self) -> None: + self.use_tiling = False + + def decode(self, z: torch.Tensor, return_dict: bool = False): + self.decoded_from = z + return (self.decode_output,) + + +def test_a_decode_reads_and_writes_exactly_what_the_pipeline_does() -> None: + from diffusers.image_processor import VaeImageProcessor + + from invokeai.app.invocations.vae.qwen_image_2_1_latents_to_image import QwenImage21LatentsToImageInvocation + + generator = torch.Generator().manual_seed(0) + latents = torch.randn(1, LATENT_CHANNELS, 4, 4, generator=generator) + mean = torch.randn(LATENT_CHANNELS, generator=generator).tolist() + std = (torch.rand(LATENT_CHANNELS, generator=generator) * 3).tolist() + vae = _DecodingVAE(mean, std) + saved: list = [] + + @contextmanager + def on_device(**_kwargs): + yield None, vae + + def save(image): + saved.append(image) + return SimpleNamespace(image_name="out.png", width=image.width, height=image.height) + + context = SimpleNamespace( + tensors=SimpleNamespace(load=lambda _name: latents), + images=SimpleNamespace(save=save), + models=SimpleNamespace( + load=lambda _identifier: SimpleNamespace( + compute_device=torch.device("cpu"), model=vae, model_on_device=on_device + ) + ), + config=SimpleNamespace(get=lambda: SimpleNamespace(force_tiled_decode=False, auto_tiled_decode=False)), + util=SimpleNamespace(signal_progress=lambda _message: None), + ) + node = QwenImage21LatentsToImageInvocation.model_construct( + latents=LatentsField(latents_name="latents"), vae=SimpleNamespace(vae=None), tiled=False, tile_size=0 + ) + + node.invoke(context) + + # In: the pipeline's order -- latents to bf16, the float32 statistics to bf16, the multiply-add in bf16. In + # float32 first, a bf16 decode reads a different input for most elements. + bf16_mean = torch.tensor(mean).view(1, -1, 1, 1, 1).to(torch.bfloat16) + bf16_std = torch.tensor(std).view(1, -1, 1, 1, 1).to(torch.bfloat16) + expected = latents.to(torch.bfloat16).unsqueeze(2) * bf16_std + bf16_mean + float32_first = ( + latents.unsqueeze(2) * torch.tensor(std).view(1, -1, 1, 1, 1) + torch.tensor(mean).view(1, -1, 1, 1, 1) + ).to(torch.bfloat16) + assert not torch.equal(expected, float32_first) + assert torch.equal(vae.decoded_from, expected) + # Out: the pixels diffusers' own post-processing makes of the same bf16 decode. + pipeline = VaeImageProcessor(vae_scale_factor=16).postprocess(vae.decode_output[:, :, 0], output_type="pil")[0] + assert np.array_equal(np.asarray(saved[0]), np.asarray(pipeline.convert("RGB"))) + + +def _loader(**fields) -> QwenImage21ModelLoaderInvocation: + def ident(key: str, base: BaseModelType, type: ModelType) -> ModelIdentifierField: + return ModelIdentifierField(key=key, hash=key, name=key, base=base, type=type) + + defaults = { + "model": ident("main", BaseModelType.QwenImage21, ModelType.Main), + "vae_model": None, + "qwen3_vl_encoder_model": None, + } + return QwenImage21ModelLoaderInvocation.model_construct( + **(defaults | {k: ident(*v) if isinstance(v, tuple) else v for k, v in fields.items()}) + ) + + +def _loader_context(main_format: ModelFormat, encoder_variant: Qwen3VLVariantType = Qwen3VLVariantType.Qwen3VL_8B): + configs = { + "main": SimpleNamespace(name="main", base=BaseModelType.QwenImage21, type=ModelType.Main, format=main_format), + "vae": SimpleNamespace(name="vae", base=BaseModelType.QwenImage21, type=ModelType.VAE), + "wan_vae": SimpleNamespace(name="wan_vae", base=BaseModelType.Wan, type=ModelType.VAE), + "encoder": SimpleNamespace(name="encoder", type=ModelType.Qwen3VLEncoder, variant=encoder_variant), + } + return SimpleNamespace(models=SimpleNamespace(get_config=lambda identifier: configs[identifier.key])) + + +def test_a_gguf_transformer_without_components_is_refused() -> None: + with pytest.raises(ValueError, match="no VAE of its own"): + _loader().invoke(_loader_context(ModelFormat.GGUFQuantized)) + + +def test_a_gguf_transformer_takes_the_standalone_components() -> None: + output = _loader( + vae_model=("vae", BaseModelType.QwenImage21, ModelType.VAE), + qwen3_vl_encoder_model=("encoder", BaseModelType.Any, ModelType.Qwen3VLEncoder), + ).invoke(_loader_context(ModelFormat.GGUFQuantized)) + assert output.vae.vae.key == "vae" + assert output.qwen3_vl_encoder.text_encoder.key == "encoder" + + +def test_another_familys_vae_is_refused() -> None: + loader = _loader(vae_model=("wan_vae", BaseModelType.Wan, ModelType.VAE)) + with pytest.raises(ValueError, match="not a Qwen-Image-2.1 VAE"): + loader.invoke(_loader_context(ModelFormat.Diffusers)) + + +def test_the_4b_encoder_is_refused() -> None: + loader = _loader(qwen3_vl_encoder_model=("encoder", BaseModelType.Any, ModelType.Qwen3VLEncoder)) + with pytest.raises(ValueError, match="8B"): + loader.invoke(_loader_context(ModelFormat.Diffusers, encoder_variant=Qwen3VLVariantType.Qwen3VL_4B)) diff --git a/tests/backend/architectures/test_conditioning.py b/tests/backend/architectures/test_conditioning.py index afbc7120632..d013ea62f86 100644 --- a/tests/backend/architectures/test_conditioning.py +++ b/tests/backend/architectures/test_conditioning.py @@ -35,10 +35,10 @@ def test_the_shared_types_are_shared_by_identity() -> None: assert facet is not None and facet.info is info, base.value -def test_fourteen_types_serve_seventeen_architectures() -> None: - """Pins the sharing itself. A fourteenth type means a new architecture stopped sharing.""" - assert len(conditioning_infos()) == 14 - assert len(generative_bases()) == 17 +def test_fifteen_types_serve_eighteen_architectures() -> None: + """Pins the sharing itself. A sixteenth type means a new architecture stopped sharing.""" + assert len(conditioning_infos()) == 15 + assert len(generative_bases()) == 18 def test_the_list_is_deterministic() -> None: @@ -115,12 +115,12 @@ def test_dependencies_imports_that_list_from_the_architecture_package() -> None: def test_the_assembled_list_holds_every_conditioning_class_exactly_once() -> None: - """The content of what the call site passes: the envelope first, then all thirteen classes.""" + """The content of what the call site passes: the envelope first, then all fifteen classes.""" safe_globals = conditioning_safe_globals() assert safe_globals[0] is ConditioningFieldData assert set(safe_globals[1:]) == set(conditioning_infos()) - assert len(safe_globals) == 15 + assert len(safe_globals) == 16 assert len(set(safe_globals)) == len(safe_globals), "a class appears twice" diff --git a/tests/backend/architectures/test_default_settings.py b/tests/backend/architectures/test_default_settings.py index 29f65bab258..56af57cd0b0 100644 --- a/tests/backend/architectures/test_default_settings.py +++ b/tests/backend/architectures/test_default_settings.py @@ -18,6 +18,7 @@ FluxVariantType, Krea2VariantType, LTX2VariantType, + QwenImage21VariantType, WanVariantType, ZImageVariantType, ) @@ -86,6 +87,8 @@ def test_every_architecture_declares_defaults() -> None: # with no CFG. 48 steps is the preset default, V4_QUALITY_48. # krea-2: Diffusers' Krea-2 guidance 4.5 uses cond + 4.5 * (cond - uncond), equivalent to # InvokeAI's CFG convention at 5.5. Turbo is distilled; cfg_scale's floor is 1. +# qwen-image-2-1: the pipeline's num_inference_steps=40 and true_cfg_scale=1.0 (the model card samples +# without guidance); Turbo's card: 8 steps on its shipped sigma table, CFG 1. DEFAULT_SETTINGS_MATRIX: list[tuple[str, BaseModelType, AnyVariant | None, str | None, dict[str, Any]]] = [ ( "sd-1", @@ -228,6 +231,20 @@ def test_every_architecture_declares_defaults() -> None: None, {"scheduler": "euler", "steps": 8, "cfg_scale": 1.0, **_SQUARE_1024}, ), + ( + "qwen-image-2-1-base", + BaseModelType.QwenImage21, + None, + None, + {"scheduler": "euler", "steps": 40, "cfg_scale": 1.0, **_SQUARE_1024}, + ), + ( + "qwen-image-2-1-turbo", + BaseModelType.QwenImage21, + QwenImage21VariantType.Turbo, + None, + {"scheduler": "euler", "steps": 8, "cfg_scale": 1.0, **_SQUARE_1024}, + ), ( "wan-ti2v-5b", BaseModelType.Wan, diff --git a/tests/backend/architectures/test_features.py b/tests/backend/architectures/test_features.py index f52a72f8421..4d92ee605a7 100644 --- a/tests/backend/architectures/test_features.py +++ b/tests/backend/architectures/test_features.py @@ -21,6 +21,7 @@ BaseModelType.QwenImage: "qwen_image_denoise", BaseModelType.Anima: "anima_denoise", BaseModelType.Krea2: "krea2_denoise", + BaseModelType.QwenImage21: "qwen_image_2_1_denoise", BaseModelType.Wan: "wan_denoise", BaseModelType.MiniMaxH3: "minimax_h3_denoise", } @@ -126,7 +127,15 @@ def test_the_negative_prompt_policy_follows_the_guidance_model() -> None: by_usage.setdefault(facet.negative_prompt.usage, set()).add(base.value) assert by_usage["never"] == {"flux", "flux2", "ideogram-4", "minimax-h3"} - assert by_usage["cfg-gated"] == {"anima", "krea-2", "qwen-image", "z-image", "ernie-image", "ltx-2"} + assert by_usage["cfg-gated"] == { + "anima", + "krea-2", + "qwen-image", + "qwen-image-2-1", + "z-image", + "ernie-image", + "ltx-2", + } # Nothing declares a visible box it never uses, or an invisible one it does. for base in generative_bases(): facet = get(base, FeaturesFacet) diff --git a/tests/backend/architectures/test_guidance_range.py b/tests/backend/architectures/test_guidance_range.py index 86eb5a52ac8..4b54760aad2 100644 --- a/tests/backend/architectures/test_guidance_range.py +++ b/tests/backend/architectures/test_guidance_range.py @@ -34,6 +34,7 @@ BaseModelType.StableDiffusion3: ("sd3_denoise", "cfg_scale"), BaseModelType.CogView4: ("cogview4_denoise", "cfg_scale"), BaseModelType.Krea2: ("krea2_denoise", "cfg_scale"), + BaseModelType.QwenImage21: ("qwen_image_2_1_denoise", "cfg_scale"), BaseModelType.QwenImage: ("qwen_image_denoise", "cfg_scale"), BaseModelType.Flux: ("flux_denoise", "guidance"), BaseModelType.Flux2: ("flux2_denoise", "guidance"), diff --git a/tests/backend/architectures/test_latent_space.py b/tests/backend/architectures/test_latent_space.py index 315cb393337..33e0d8e8349 100644 --- a/tests/backend/architectures/test_latent_space.py +++ b/tests/backend/architectures/test_latent_space.py @@ -1,7 +1,7 @@ """The latent-space facet: the projection maths, and what each architecture declares. -Two tables carry this file. `DECLARED_LATENT_SPACES` says which space each of the sixteen -architectures denoises in; `PINNED_PREVIEW_PIXELS` says what each of the nine spaces actually +Two tables carry this file. `DECLARED_LATENT_SPACES` says which space each of the eighteen +architectures denoises in; `PINNED_PREVIEW_PIXELS` says what each of the eleven spaces actually computes. Together they are what stops a wrong space reaching generation: swapping `FLUX_16` for `SD3_16` in `defs/flux.py` moves one row of the first table, and the second table is what proves the two rows are not interchangeable. @@ -18,6 +18,7 @@ FLUX_16, LTX2_128, MINIMAX_H3_24, + QWEN_IMAGE21_64, SD3_16, SD15_4, SDXL_4, @@ -67,6 +68,7 @@ def _name(space: LatentSpace) -> str: BaseModelType.LTX2: (LTX2_128,), BaseModelType.MiniMaxH3: (MINIMAX_H3_24,), BaseModelType.QwenImage: (WAN21_16,), + BaseModelType.QwenImage21: (QWEN_IMAGE21_64,), BaseModelType.StableDiffusion1: (SD15_4,), BaseModelType.StableDiffusion2: (SD15_4,), BaseModelType.StableDiffusion3: (SD3_16,), @@ -119,6 +121,9 @@ def _name(space: LatentSpace) -> str: (WAN22_48, 1.0, (65, 91, 227), (131, 116, 109)), # colsums (-0.0698, -0.0317, 0.0266), bias (-0.2223, -0.2864, -0.2917) (LTX2_128, 0.25, (96, 89, 91), (99, 90, 90)), + # colsums (-0.0175, 0.2169, -0.1644), bias (-0.1543, -0.1408, -0.2869). B lands at 69.96, so the + # truncating cast is again what makes it 69. + (QWEN_IMAGE21_64, 1.0, (105, 137, 69), (107, 109, 90)), ] diff --git a/tests/backend/model_manager/configs/test_qwen_image_2_1_config.py b/tests/backend/model_manager/configs/test_qwen_image_2_1_config.py new file mode 100644 index 00000000000..b3a3ee5176a --- /dev/null +++ b/tests/backend/model_manager/configs/test_qwen_image_2_1_config.py @@ -0,0 +1,162 @@ +"""Identification of Qwen-Image-2.1 single-file transformers, and of LoRAs against Qwen-Image's. + +Qwen-Image-2.1 reuses Qwen-Image's module names almost everywhere, so both directions matter: a 2.1 file must +not be claimed as Qwen-Image, and the quantizations the loader cannot build must be refused at install +(`InvalidMatchError`), not registered as a model that fails at the first render. +""" + +import json +from pathlib import Path +from typing import Any +from unittest.mock import MagicMock, patch + +import pytest +import torch +from safetensors.torch import save_file + +from invokeai.backend.model_manager.configs.identification_utils import InvalidMatchError, NotAMatchError +from invokeai.backend.model_manager.configs.lora import LoRA_LyCORIS_QwenImage_Config +from invokeai.backend.model_manager.configs.main import Main_Checkpoint_QwenImage21_Config +from invokeai.backend.model_manager.taxonomy import BaseModelType, QwenImage21VariantType + +_FIELDS = { + "hash": "blake3:fakehash", + "path": "/fake/model.safetensors", + "file_size": 1000, + "name": "model", + "description": "test", + "source": "test", + "source_type": "path", + "key": "test-key", +} + + +def _transformer(**extra: Any) -> dict[str, Any]: + """The keys the probe reads, in ComfyUI's layout (prefixed, fused gate_up).""" + sd: dict[str, Any] = { + "model.diffusion_model.img_in.weight": torch.zeros(8, 4, dtype=torch.bfloat16), + "model.diffusion_model.txt_in.text_norm.weight": torch.zeros(8, dtype=torch.bfloat16), + "model.diffusion_model.transformer_blocks.0.img_mlp.gate_up.weight": torch.zeros(16, 8, dtype=torch.bfloat16), + } + sd.update(extra) + return sd + + +def _identify(sd: dict[str, Any], path: Path) -> Main_Checkpoint_QwenImage21_Config: + mod = MagicMock() + mod.path = path + mod.load_state_dict.return_value = sd + with ( + patch("invokeai.backend.model_manager.configs.main.raise_if_not_file"), + patch("invokeai.backend.model_manager.configs.main.raise_for_override_fields"), + ): + return Main_Checkpoint_QwenImage21_Config.from_model_on_disk(mod, dict(_FIELDS)) + + +@pytest.mark.parametrize( + ("name", "variant"), + [ + ("qwen_image_2.1_bf16.safetensors", QwenImage21VariantType.Base), + ("Qwen-Image-2.1-Turbo_fp8_scaled.safetensors", QwenImage21VariantType.Turbo), + ], +) +def test_a_single_file_transformer_takes_its_variant_from_the_name(name: str, variant: QwenImage21VariantType) -> None: + config = _identify(_transformer(), Path(name)) + assert config.base is BaseModelType.QwenImage21 + assert config.variant is variant + + +def test_qwen_image_is_not_claimed() -> None: + # Qwen-Image's txt_in is a plain Linear beside a top-level txt_norm, and its MLP is `img_mlp.net`. + v1 = { + "img_in.weight": torch.zeros(8, 4), + "txt_norm.weight": torch.zeros(8), + "txt_in.weight": torch.zeros(8, 8), + "transformer_blocks.0.img_mlp.net.0.proj.weight": torch.zeros(16, 8), + } + with pytest.raises(NotAMatchError): + _identify(v1, Path("qwen_image_2512.safetensors")) + + +def test_an_nvfp4_file_is_refused_at_install() -> None: + sd = _transformer(**{"model.diffusion_model.transformer_blocks.0.img_mlp.gate_up.weight_scale_2": torch.ones(())}) + with pytest.raises(InvalidMatchError, match="nvfp4"): + _identify(sd, Path("qwen_image_2.1_nvfp4.safetensors")) + + +def test_a_torchao_file_is_refused_at_install() -> None: + # unsloth's FP8 build: torchao Float8Tensors, saved as the payload and a per-row scale, no `.weight`. + layer = "transformer_blocks.0.attn.to_q" + sd = _transformer( + **{ + f"{layer}._weight_qdata": torch.zeros(8, 8, dtype=torch.float8_e4m3fn), + f"{layer}._weight_scale": torch.ones(8, 1), + } + ) + with pytest.raises(InvalidMatchError, match="torchao"): + _identify(sd, Path("Qwen-Image-2.1-FP8.safetensors")) + + +def _int8_gate_up(marker: dict | None) -> dict[str, Any]: + layer = "model.diffusion_model.transformer_blocks.0.img_mlp.gate_up" + sd: dict[str, Any] = { + f"{layer}.weight": torch.zeros(16, 8, dtype=torch.int8), + f"{layer}.weight_scale": torch.ones(16, 1), + } + if marker is not None: + sd[f"{layer}.comfy_quant"] = torch.frombuffer(bytearray(json.dumps(marker).encode()), dtype=torch.uint8).clone() + return sd + + +def test_int8_weights_without_a_convrot_marker_are_refused_at_install(tmp_path: Path) -> None: + # The markers are read from the file's header, so the file has to exist. + sd = _transformer(**_int8_gate_up(marker=None)) + path = tmp_path / "qwen_image_2.1_int8_dynamic.safetensors" + save_file(sd, path) + with pytest.raises(InvalidMatchError, match="int8"): + _identify(sd, path) + + +def test_comfy_int8_convrot_installs(tmp_path: Path) -> None: + sd = _transformer(**_int8_gate_up(marker={"format": "int8_tensorwise", "convrot": True, "convrot_groupsize": 256})) + path = tmp_path / "qwen_image_2.1_int8_convrot.safetensors" + save_file(sd, path) + assert _identify(sd, path).base is BaseModelType.QwenImage21 + + +def _attention_lora(width: int) -> dict[str, torch.Tensor]: + """PEFT's common `to_q/to_k/to_v` targets: module names Qwen-Image and Qwen-Image-2.1 share.""" + sd: dict[str, torch.Tensor] = {} + for block in range(2): + for projection in ("to_q", "to_k", "to_v"): + prefix = f"transformer.transformer_blocks.{block}.attn.{projection}" + sd[f"{prefix}.lora_A.weight"] = torch.zeros(4, width) + sd[f"{prefix}.lora_B.weight"] = torch.zeros(width, 4) + return sd + + +def _probe_qwen_image_lora(sd: dict[str, torch.Tensor], tmp_path: Path) -> bool: + path = tmp_path / "lora.safetensors" + path.touch() + mod = MagicMock() + mod.path = path + mod.load_state_dict.return_value = sd + fields = {**_FIELDS, "path": str(path), "source": str(path)} + try: + LoRA_LyCORIS_QwenImage_Config.from_model_on_disk(mod, fields) + except NotAMatchError: + return False + return True + + +def test_an_attention_only_lora_is_told_apart_by_its_width(tmp_path: Path) -> None: + assert _probe_qwen_image_lora(_attention_lora(3072), tmp_path) + assert not _probe_qwen_image_lora(_attention_lora(4096), tmp_path) + + +def test_a_lora_on_the_gated_mlp_is_not_qwen_image(tmp_path: Path) -> None: + sd = { + "lora_unet_transformer_blocks_0_img_mlp_gate_up.lora_down.weight": torch.zeros(4, 3072), + "lora_unet_transformer_blocks_0_img_mlp_gate_up.lora_up.weight": torch.zeros(3072, 4), + } + assert not _probe_qwen_image_lora(sd, tmp_path) diff --git a/tests/backend/model_manager/load/state_dicts/qwen_image_2_1_int8_convrot_keys.py b/tests/backend/model_manager/load/state_dicts/qwen_image_2_1_int8_convrot_keys.py new file mode 100644 index 00000000000..f6775379b9a --- /dev/null +++ b/tests/backend/model_manager/load/state_dicts/qwen_image_2_1_int8_convrot_keys.py @@ -0,0 +1,59 @@ +"""Representative key layout of Comfy-Org's `int8_tensorwise` (+convrot) Qwen-Image-2.1 transformer. + +Captured on 2026-10-10 with `scripts/capture_state_dict_fixture.py`, +which reads the header only, from +`Comfy-Org/Qwen-Image-2.1/diffusion_models/qwen_image_2.1_int8_convrot.safetensors`. + +Subsetting rule: `transformer_blocks` index 0, plus every key outside a stack. Values are `(shape, dtype)`. + +The names are diffusers' except one: the gated MLP's two input projections are fused into +`img_mlp.gate_up` ([24576, 4096], gate rows first), with a per-output-channel `weight_scale` and its own +`.comfy_quant` marker. diffusers' module has them as `gate_layer` and `proj`. The loader has to split the +codes, the scale and the marker together *before* the int8 helpers read the side channel; split after, +the marker names a module that does not exist and the layer loads unrotated. Rotation is along the input +dimension (`convrot_groupsize` 256), so splitting the output rows keeps it valid. + +No `__metadata__` block: the scheme lives only in the per-tensor markers, as in the other Comfy-Org builds. +""" + +state_dict_keys: dict[str, tuple[list[int], str]] = { + "img_in.weight": ([4096, 64], "BF16"), + "modulation.1.weight": ([16384, 4096], "BF16"), + "norm_out.linear.weight": ([4096, 4096], "BF16"), + "proj_out.weight": ([64, 4096], "BF16"), + "time_text_embed.timestep_embedder.linear_1.weight": ([4096, 256], "BF16"), + "time_text_embed.timestep_embedder.linear_2.weight": ([4096, 4096], "BF16"), + "transformer_blocks.0.attn.norm_k.weight": ([128], "BF16"), + "transformer_blocks.0.attn.norm_q.weight": ([128], "BF16"), + "transformer_blocks.0.attn.to_k.comfy_quant": ([72], "U8"), + "transformer_blocks.0.attn.to_k.weight": ([4096, 4096], "I8"), + "transformer_blocks.0.attn.to_k.weight_scale": ([4096, 1], "F32"), + "transformer_blocks.0.attn.to_out.0.comfy_quant": ([72], "U8"), + "transformer_blocks.0.attn.to_out.0.weight": ([4096, 4096], "I8"), + "transformer_blocks.0.attn.to_out.0.weight_scale": ([4096, 1], "F32"), + "transformer_blocks.0.attn.to_q.comfy_quant": ([72], "U8"), + "transformer_blocks.0.attn.to_q.weight": ([4096, 4096], "I8"), + "transformer_blocks.0.attn.to_q.weight_scale": ([4096, 1], "F32"), + "transformer_blocks.0.attn.to_v.comfy_quant": ([72], "U8"), + "transformer_blocks.0.attn.to_v.weight": ([4096, 4096], "I8"), + "transformer_blocks.0.attn.to_v.weight_scale": ([4096, 1], "F32"), + "transformer_blocks.0.img_mlp.gate_up.comfy_quant": ([72], "U8"), + "transformer_blocks.0.img_mlp.gate_up.weight": ([24576, 4096], "I8"), + "transformer_blocks.0.img_mlp.gate_up.weight_scale": ([24576, 1], "F32"), + "transformer_blocks.0.img_mlp.out.comfy_quant": ([72], "U8"), + "transformer_blocks.0.img_mlp.out.weight": ([4096, 12288], "I8"), + "transformer_blocks.0.img_mlp.out.weight_scale": ([4096, 1], "F32"), + "txt_in.in_layer.weight": ([4096, 4096], "BF16"), + "txt_in.out_layer.weight": ([4096, 4096], "BF16"), + "txt_in.text_norm.weight": ([4096], "BF16"), +} + +# The per-layer `.comfy_quant` markers, decoded from the blobs themselves. +markers: dict[str, dict[str, object]] = { + "transformer_blocks.0.attn.to_k": {"format": "int8_tensorwise", "convrot": True, "convrot_groupsize": 256}, + "transformer_blocks.0.attn.to_out.0": {"format": "int8_tensorwise", "convrot": True, "convrot_groupsize": 256}, + "transformer_blocks.0.attn.to_q": {"format": "int8_tensorwise", "convrot": True, "convrot_groupsize": 256}, + "transformer_blocks.0.attn.to_v": {"format": "int8_tensorwise", "convrot": True, "convrot_groupsize": 256}, + "transformer_blocks.0.img_mlp.gate_up": {"format": "int8_tensorwise", "convrot": True, "convrot_groupsize": 256}, + "transformer_blocks.0.img_mlp.out": {"format": "int8_tensorwise", "convrot": True, "convrot_groupsize": 256}, +} diff --git a/tests/backend/model_manager/load/state_dicts/qwen_image_2_1_vae_comfyui_keys.py b/tests/backend/model_manager/load/state_dicts/qwen_image_2_1_vae_comfyui_keys.py new file mode 100644 index 00000000000..d4ded2f8210 --- /dev/null +++ b/tests/backend/model_manager/load/state_dicts/qwen_image_2_1_vae_comfyui_keys.py @@ -0,0 +1,255 @@ +"""Key layout of Comfy-Org's Qwen-Image-2.1 VAE (AutoencoderKLQwenImage21 in ComfyUI's Wan-style layout). + +Captured on 2026-10-10 with `scripts/capture_state_dict_fixture.py`, +which reads the header only, from +`Comfy-Org/Qwen-Image-2.1/vae/qwen_image_2.1_vae_bf16.safetensors`. + +Subsetting rule: none -- every key in the file. Values are `(shape, dtype)`. + +The original Wan-style names (`encoder.downsamples`, `decoder.middle`, `head`, top-level `conv1`/`conv2`) +for a 64-channel RGBA autoencoder whose convolutions are 2-D, stored 5-D with a temporal extent of 1. +Every one of the 238 tensors has to land on a diffusers parameter: a rule that misses one leaves it on +the meta device until the first decode. The block names are also Anima's VAE's, which is why that +config has to refuse this file. +""" + +state_dict_keys: dict[str, tuple[list[int], str]] = { + "conv1.bias": ([128], "BF16"), + "conv1.weight": ([128, 128, 1, 1, 1], "BF16"), + "conv2.bias": ([64], "BF16"), + "conv2.weight": ([64, 64, 1, 1, 1], "BF16"), + "decoder.conv1.bias": ([1152], "BF16"), + "decoder.conv1.weight": ([1152, 64, 1, 3, 3], "BF16"), + "decoder.head.0.gamma": ([144, 1, 1, 1], "BF16"), + "decoder.head.2.bias": ([4], "BF16"), + "decoder.head.2.weight": ([4, 144, 1, 3, 3], "BF16"), + "decoder.middle.0.residual.0.gamma": ([1152, 1, 1, 1], "BF16"), + "decoder.middle.0.residual.2.bias": ([1152], "BF16"), + "decoder.middle.0.residual.2.weight": ([1152, 1152, 1, 3, 3], "BF16"), + "decoder.middle.0.residual.3.gamma": ([1152, 1, 1, 1], "BF16"), + "decoder.middle.0.residual.6.bias": ([1152], "BF16"), + "decoder.middle.0.residual.6.weight": ([1152, 1152, 1, 3, 3], "BF16"), + "decoder.middle.1.norm.gamma": ([1152, 1, 1], "BF16"), + "decoder.middle.1.proj.bias": ([1152], "BF16"), + "decoder.middle.1.proj.weight": ([1152, 1152, 1, 1], "BF16"), + "decoder.middle.1.to_qkv.bias": ([3456], "BF16"), + "decoder.middle.1.to_qkv.weight": ([3456, 1152, 1, 1], "BF16"), + "decoder.middle.2.residual.0.gamma": ([1152, 1, 1, 1], "BF16"), + "decoder.middle.2.residual.2.bias": ([1152], "BF16"), + "decoder.middle.2.residual.2.weight": ([1152, 1152, 1, 3, 3], "BF16"), + "decoder.middle.2.residual.3.gamma": ([1152, 1, 1, 1], "BF16"), + "decoder.middle.2.residual.6.bias": ([1152], "BF16"), + "decoder.middle.2.residual.6.weight": ([1152, 1152, 1, 3, 3], "BF16"), + "decoder.upsamples.0.upsamples.0.residual.0.gamma": ([1152, 1, 1, 1], "BF16"), + "decoder.upsamples.0.upsamples.0.residual.2.bias": ([1152], "BF16"), + "decoder.upsamples.0.upsamples.0.residual.2.weight": ([1152, 1152, 1, 3, 3], "BF16"), + "decoder.upsamples.0.upsamples.0.residual.3.gamma": ([1152, 1, 1, 1], "BF16"), + "decoder.upsamples.0.upsamples.0.residual.6.bias": ([1152], "BF16"), + "decoder.upsamples.0.upsamples.0.residual.6.weight": ([1152, 1152, 1, 3, 3], "BF16"), + "decoder.upsamples.0.upsamples.1.residual.0.gamma": ([1152, 1, 1, 1], "BF16"), + "decoder.upsamples.0.upsamples.1.residual.2.bias": ([1152], "BF16"), + "decoder.upsamples.0.upsamples.1.residual.2.weight": ([1152, 1152, 1, 3, 3], "BF16"), + "decoder.upsamples.0.upsamples.1.residual.3.gamma": ([1152, 1, 1, 1], "BF16"), + "decoder.upsamples.0.upsamples.1.residual.6.bias": ([1152], "BF16"), + "decoder.upsamples.0.upsamples.1.residual.6.weight": ([1152, 1152, 1, 3, 3], "BF16"), + "decoder.upsamples.0.upsamples.2.residual.0.gamma": ([1152, 1, 1, 1], "BF16"), + "decoder.upsamples.0.upsamples.2.residual.2.bias": ([1152], "BF16"), + "decoder.upsamples.0.upsamples.2.residual.2.weight": ([1152, 1152, 1, 3, 3], "BF16"), + "decoder.upsamples.0.upsamples.2.residual.3.gamma": ([1152, 1, 1, 1], "BF16"), + "decoder.upsamples.0.upsamples.2.residual.6.bias": ([1152], "BF16"), + "decoder.upsamples.0.upsamples.2.residual.6.weight": ([1152, 1152, 1, 3, 3], "BF16"), + "decoder.upsamples.0.upsamples.3.resample.1.bias": ([1152], "BF16"), + "decoder.upsamples.0.upsamples.3.resample.1.weight": ([1152, 1152, 3, 3], "BF16"), + "decoder.upsamples.0.upsamples.3.time_conv.bias": ([2304], "BF16"), + "decoder.upsamples.0.upsamples.3.time_conv.weight": ([2304, 1152, 1, 1, 1], "BF16"), + "decoder.upsamples.1.upsamples.0.residual.0.gamma": ([1152, 1, 1, 1], "BF16"), + "decoder.upsamples.1.upsamples.0.residual.2.bias": ([1152], "BF16"), + "decoder.upsamples.1.upsamples.0.residual.2.weight": ([1152, 1152, 1, 3, 3], "BF16"), + "decoder.upsamples.1.upsamples.0.residual.3.gamma": ([1152, 1, 1, 1], "BF16"), + "decoder.upsamples.1.upsamples.0.residual.6.bias": ([1152], "BF16"), + "decoder.upsamples.1.upsamples.0.residual.6.weight": ([1152, 1152, 1, 3, 3], "BF16"), + "decoder.upsamples.1.upsamples.1.residual.0.gamma": ([1152, 1, 1, 1], "BF16"), + "decoder.upsamples.1.upsamples.1.residual.2.bias": ([1152], "BF16"), + "decoder.upsamples.1.upsamples.1.residual.2.weight": ([1152, 1152, 1, 3, 3], "BF16"), + "decoder.upsamples.1.upsamples.1.residual.3.gamma": ([1152, 1, 1, 1], "BF16"), + "decoder.upsamples.1.upsamples.1.residual.6.bias": ([1152], "BF16"), + "decoder.upsamples.1.upsamples.1.residual.6.weight": ([1152, 1152, 1, 3, 3], "BF16"), + "decoder.upsamples.1.upsamples.2.residual.0.gamma": ([1152, 1, 1, 1], "BF16"), + "decoder.upsamples.1.upsamples.2.residual.2.bias": ([1152], "BF16"), + "decoder.upsamples.1.upsamples.2.residual.2.weight": ([1152, 1152, 1, 3, 3], "BF16"), + "decoder.upsamples.1.upsamples.2.residual.3.gamma": ([1152, 1, 1, 1], "BF16"), + "decoder.upsamples.1.upsamples.2.residual.6.bias": ([1152], "BF16"), + "decoder.upsamples.1.upsamples.2.residual.6.weight": ([1152, 1152, 1, 3, 3], "BF16"), + "decoder.upsamples.1.upsamples.3.resample.1.bias": ([1152], "BF16"), + "decoder.upsamples.1.upsamples.3.resample.1.weight": ([1152, 1152, 3, 3], "BF16"), + "decoder.upsamples.1.upsamples.3.time_conv.bias": ([2304], "BF16"), + "decoder.upsamples.1.upsamples.3.time_conv.weight": ([2304, 1152, 1, 1, 1], "BF16"), + "decoder.upsamples.2.upsamples.0.residual.0.gamma": ([1152, 1, 1, 1], "BF16"), + "decoder.upsamples.2.upsamples.0.residual.2.bias": ([576], "BF16"), + "decoder.upsamples.2.upsamples.0.residual.2.weight": ([576, 1152, 1, 3, 3], "BF16"), + "decoder.upsamples.2.upsamples.0.residual.3.gamma": ([576, 1, 1, 1], "BF16"), + "decoder.upsamples.2.upsamples.0.residual.6.bias": ([576], "BF16"), + "decoder.upsamples.2.upsamples.0.residual.6.weight": ([576, 576, 1, 3, 3], "BF16"), + "decoder.upsamples.2.upsamples.0.shortcut.bias": ([576], "BF16"), + "decoder.upsamples.2.upsamples.0.shortcut.weight": ([576, 1152, 1, 1, 1], "BF16"), + "decoder.upsamples.2.upsamples.1.residual.0.gamma": ([576, 1, 1, 1], "BF16"), + "decoder.upsamples.2.upsamples.1.residual.2.bias": ([576], "BF16"), + "decoder.upsamples.2.upsamples.1.residual.2.weight": ([576, 576, 1, 3, 3], "BF16"), + "decoder.upsamples.2.upsamples.1.residual.3.gamma": ([576, 1, 1, 1], "BF16"), + "decoder.upsamples.2.upsamples.1.residual.6.bias": ([576], "BF16"), + "decoder.upsamples.2.upsamples.1.residual.6.weight": ([576, 576, 1, 3, 3], "BF16"), + "decoder.upsamples.2.upsamples.2.residual.0.gamma": ([576, 1, 1, 1], "BF16"), + "decoder.upsamples.2.upsamples.2.residual.2.bias": ([576], "BF16"), + "decoder.upsamples.2.upsamples.2.residual.2.weight": ([576, 576, 1, 3, 3], "BF16"), + "decoder.upsamples.2.upsamples.2.residual.3.gamma": ([576, 1, 1, 1], "BF16"), + "decoder.upsamples.2.upsamples.2.residual.6.bias": ([576], "BF16"), + "decoder.upsamples.2.upsamples.2.residual.6.weight": ([576, 576, 1, 3, 3], "BF16"), + "decoder.upsamples.2.upsamples.3.resample.1.bias": ([576], "BF16"), + "decoder.upsamples.2.upsamples.3.resample.1.weight": ([576, 576, 3, 3], "BF16"), + "decoder.upsamples.2.upsamples.3.time_conv.bias": ([1152], "BF16"), + "decoder.upsamples.2.upsamples.3.time_conv.weight": ([1152, 576, 1, 1, 1], "BF16"), + "decoder.upsamples.3.upsamples.0.residual.0.gamma": ([576, 1, 1, 1], "BF16"), + "decoder.upsamples.3.upsamples.0.residual.2.bias": ([288], "BF16"), + "decoder.upsamples.3.upsamples.0.residual.2.weight": ([288, 576, 1, 3, 3], "BF16"), + "decoder.upsamples.3.upsamples.0.residual.3.gamma": ([288, 1, 1, 1], "BF16"), + "decoder.upsamples.3.upsamples.0.residual.6.bias": ([288], "BF16"), + "decoder.upsamples.3.upsamples.0.residual.6.weight": ([288, 288, 1, 3, 3], "BF16"), + "decoder.upsamples.3.upsamples.0.shortcut.bias": ([288], "BF16"), + "decoder.upsamples.3.upsamples.0.shortcut.weight": ([288, 576, 1, 1, 1], "BF16"), + "decoder.upsamples.3.upsamples.1.residual.0.gamma": ([288, 1, 1, 1], "BF16"), + "decoder.upsamples.3.upsamples.1.residual.2.bias": ([288], "BF16"), + "decoder.upsamples.3.upsamples.1.residual.2.weight": ([288, 288, 1, 3, 3], "BF16"), + "decoder.upsamples.3.upsamples.1.residual.3.gamma": ([288, 1, 1, 1], "BF16"), + "decoder.upsamples.3.upsamples.1.residual.6.bias": ([288], "BF16"), + "decoder.upsamples.3.upsamples.1.residual.6.weight": ([288, 288, 1, 3, 3], "BF16"), + "decoder.upsamples.3.upsamples.2.residual.0.gamma": ([288, 1, 1, 1], "BF16"), + "decoder.upsamples.3.upsamples.2.residual.2.bias": ([288], "BF16"), + "decoder.upsamples.3.upsamples.2.residual.2.weight": ([288, 288, 1, 3, 3], "BF16"), + "decoder.upsamples.3.upsamples.2.residual.3.gamma": ([288, 1, 1, 1], "BF16"), + "decoder.upsamples.3.upsamples.2.residual.6.bias": ([288], "BF16"), + "decoder.upsamples.3.upsamples.2.residual.6.weight": ([288, 288, 1, 3, 3], "BF16"), + "decoder.upsamples.3.upsamples.3.resample.1.bias": ([288], "BF16"), + "decoder.upsamples.3.upsamples.3.resample.1.weight": ([288, 288, 3, 3], "BF16"), + "decoder.upsamples.4.upsamples.0.residual.0.gamma": ([288, 1, 1, 1], "BF16"), + "decoder.upsamples.4.upsamples.0.residual.2.bias": ([144], "BF16"), + "decoder.upsamples.4.upsamples.0.residual.2.weight": ([144, 288, 1, 3, 3], "BF16"), + "decoder.upsamples.4.upsamples.0.residual.3.gamma": ([144, 1, 1, 1], "BF16"), + "decoder.upsamples.4.upsamples.0.residual.6.bias": ([144], "BF16"), + "decoder.upsamples.4.upsamples.0.residual.6.weight": ([144, 144, 1, 3, 3], "BF16"), + "decoder.upsamples.4.upsamples.0.shortcut.bias": ([144], "BF16"), + "decoder.upsamples.4.upsamples.0.shortcut.weight": ([144, 288, 1, 1, 1], "BF16"), + "decoder.upsamples.4.upsamples.1.residual.0.gamma": ([144, 1, 1, 1], "BF16"), + "decoder.upsamples.4.upsamples.1.residual.2.bias": ([144], "BF16"), + "decoder.upsamples.4.upsamples.1.residual.2.weight": ([144, 144, 1, 3, 3], "BF16"), + "decoder.upsamples.4.upsamples.1.residual.3.gamma": ([144, 1, 1, 1], "BF16"), + "decoder.upsamples.4.upsamples.1.residual.6.bias": ([144], "BF16"), + "decoder.upsamples.4.upsamples.1.residual.6.weight": ([144, 144, 1, 3, 3], "BF16"), + "decoder.upsamples.4.upsamples.2.residual.0.gamma": ([144, 1, 1, 1], "BF16"), + "decoder.upsamples.4.upsamples.2.residual.2.bias": ([144], "BF16"), + "decoder.upsamples.4.upsamples.2.residual.2.weight": ([144, 144, 1, 3, 3], "BF16"), + "decoder.upsamples.4.upsamples.2.residual.3.gamma": ([144, 1, 1, 1], "BF16"), + "decoder.upsamples.4.upsamples.2.residual.6.bias": ([144], "BF16"), + "decoder.upsamples.4.upsamples.2.residual.6.weight": ([144, 144, 1, 3, 3], "BF16"), + "encoder.conv1.bias": ([96], "BF16"), + "encoder.conv1.weight": ([96, 4, 1, 3, 3], "BF16"), + "encoder.downsamples.0.downsamples.0.residual.0.gamma": ([96, 1, 1, 1], "BF16"), + "encoder.downsamples.0.downsamples.0.residual.2.bias": ([96], "BF16"), + "encoder.downsamples.0.downsamples.0.residual.2.weight": ([96, 96, 1, 3, 3], "BF16"), + "encoder.downsamples.0.downsamples.0.residual.3.gamma": ([96, 1, 1, 1], "BF16"), + "encoder.downsamples.0.downsamples.0.residual.6.bias": ([96], "BF16"), + "encoder.downsamples.0.downsamples.0.residual.6.weight": ([96, 96, 1, 3, 3], "BF16"), + "encoder.downsamples.0.downsamples.1.residual.0.gamma": ([96, 1, 1, 1], "BF16"), + "encoder.downsamples.0.downsamples.1.residual.2.bias": ([96], "BF16"), + "encoder.downsamples.0.downsamples.1.residual.2.weight": ([96, 96, 1, 3, 3], "BF16"), + "encoder.downsamples.0.downsamples.1.residual.3.gamma": ([96, 1, 1, 1], "BF16"), + "encoder.downsamples.0.downsamples.1.residual.6.bias": ([96], "BF16"), + "encoder.downsamples.0.downsamples.1.residual.6.weight": ([96, 96, 1, 3, 3], "BF16"), + "encoder.downsamples.0.downsamples.2.resample.1.bias": ([96], "BF16"), + "encoder.downsamples.0.downsamples.2.resample.1.weight": ([96, 96, 3, 3], "BF16"), + "encoder.downsamples.1.downsamples.0.residual.0.gamma": ([96, 1, 1, 1], "BF16"), + "encoder.downsamples.1.downsamples.0.residual.2.bias": ([192], "BF16"), + "encoder.downsamples.1.downsamples.0.residual.2.weight": ([192, 96, 1, 3, 3], "BF16"), + "encoder.downsamples.1.downsamples.0.residual.3.gamma": ([192, 1, 1, 1], "BF16"), + "encoder.downsamples.1.downsamples.0.residual.6.bias": ([192], "BF16"), + "encoder.downsamples.1.downsamples.0.residual.6.weight": ([192, 192, 1, 3, 3], "BF16"), + "encoder.downsamples.1.downsamples.0.shortcut.bias": ([192], "BF16"), + "encoder.downsamples.1.downsamples.0.shortcut.weight": ([192, 96, 1, 1, 1], "BF16"), + "encoder.downsamples.1.downsamples.1.residual.0.gamma": ([192, 1, 1, 1], "BF16"), + "encoder.downsamples.1.downsamples.1.residual.2.bias": ([192], "BF16"), + "encoder.downsamples.1.downsamples.1.residual.2.weight": ([192, 192, 1, 3, 3], "BF16"), + "encoder.downsamples.1.downsamples.1.residual.3.gamma": ([192, 1, 1, 1], "BF16"), + "encoder.downsamples.1.downsamples.1.residual.6.bias": ([192], "BF16"), + "encoder.downsamples.1.downsamples.1.residual.6.weight": ([192, 192, 1, 3, 3], "BF16"), + "encoder.downsamples.1.downsamples.2.resample.1.bias": ([192], "BF16"), + "encoder.downsamples.1.downsamples.2.resample.1.weight": ([192, 192, 3, 3], "BF16"), + "encoder.downsamples.1.downsamples.2.time_conv.bias": ([192], "BF16"), + "encoder.downsamples.1.downsamples.2.time_conv.weight": ([192, 192, 1, 1, 1], "BF16"), + "encoder.downsamples.2.downsamples.0.residual.0.gamma": ([192, 1, 1, 1], "BF16"), + "encoder.downsamples.2.downsamples.0.residual.2.bias": ([384], "BF16"), + "encoder.downsamples.2.downsamples.0.residual.2.weight": ([384, 192, 1, 3, 3], "BF16"), + "encoder.downsamples.2.downsamples.0.residual.3.gamma": ([384, 1, 1, 1], "BF16"), + "encoder.downsamples.2.downsamples.0.residual.6.bias": ([384], "BF16"), + "encoder.downsamples.2.downsamples.0.residual.6.weight": ([384, 384, 1, 3, 3], "BF16"), + "encoder.downsamples.2.downsamples.0.shortcut.bias": ([384], "BF16"), + "encoder.downsamples.2.downsamples.0.shortcut.weight": ([384, 192, 1, 1, 1], "BF16"), + "encoder.downsamples.2.downsamples.1.residual.0.gamma": ([384, 1, 1, 1], "BF16"), + "encoder.downsamples.2.downsamples.1.residual.2.bias": ([384], "BF16"), + "encoder.downsamples.2.downsamples.1.residual.2.weight": ([384, 384, 1, 3, 3], "BF16"), + "encoder.downsamples.2.downsamples.1.residual.3.gamma": ([384, 1, 1, 1], "BF16"), + "encoder.downsamples.2.downsamples.1.residual.6.bias": ([384], "BF16"), + "encoder.downsamples.2.downsamples.1.residual.6.weight": ([384, 384, 1, 3, 3], "BF16"), + "encoder.downsamples.2.downsamples.2.resample.1.bias": ([384], "BF16"), + "encoder.downsamples.2.downsamples.2.resample.1.weight": ([384, 384, 3, 3], "BF16"), + "encoder.downsamples.2.downsamples.2.time_conv.bias": ([384], "BF16"), + "encoder.downsamples.2.downsamples.2.time_conv.weight": ([384, 384, 1, 1, 1], "BF16"), + "encoder.downsamples.3.downsamples.0.residual.0.gamma": ([384, 1, 1, 1], "BF16"), + "encoder.downsamples.3.downsamples.0.residual.2.bias": ([768], "BF16"), + "encoder.downsamples.3.downsamples.0.residual.2.weight": ([768, 384, 1, 3, 3], "BF16"), + "encoder.downsamples.3.downsamples.0.residual.3.gamma": ([768, 1, 1, 1], "BF16"), + "encoder.downsamples.3.downsamples.0.residual.6.bias": ([768], "BF16"), + "encoder.downsamples.3.downsamples.0.residual.6.weight": ([768, 768, 1, 3, 3], "BF16"), + "encoder.downsamples.3.downsamples.0.shortcut.bias": ([768], "BF16"), + "encoder.downsamples.3.downsamples.0.shortcut.weight": ([768, 384, 1, 1, 1], "BF16"), + "encoder.downsamples.3.downsamples.1.residual.0.gamma": ([768, 1, 1, 1], "BF16"), + "encoder.downsamples.3.downsamples.1.residual.2.bias": ([768], "BF16"), + "encoder.downsamples.3.downsamples.1.residual.2.weight": ([768, 768, 1, 3, 3], "BF16"), + "encoder.downsamples.3.downsamples.1.residual.3.gamma": ([768, 1, 1, 1], "BF16"), + "encoder.downsamples.3.downsamples.1.residual.6.bias": ([768], "BF16"), + "encoder.downsamples.3.downsamples.1.residual.6.weight": ([768, 768, 1, 3, 3], "BF16"), + "encoder.downsamples.3.downsamples.2.resample.1.bias": ([768], "BF16"), + "encoder.downsamples.3.downsamples.2.resample.1.weight": ([768, 768, 3, 3], "BF16"), + "encoder.downsamples.3.downsamples.2.time_conv.bias": ([768], "BF16"), + "encoder.downsamples.3.downsamples.2.time_conv.weight": ([768, 768, 1, 1, 1], "BF16"), + "encoder.downsamples.4.downsamples.0.residual.0.gamma": ([768, 1, 1, 1], "BF16"), + "encoder.downsamples.4.downsamples.0.residual.2.bias": ([768], "BF16"), + "encoder.downsamples.4.downsamples.0.residual.2.weight": ([768, 768, 1, 3, 3], "BF16"), + "encoder.downsamples.4.downsamples.0.residual.3.gamma": ([768, 1, 1, 1], "BF16"), + "encoder.downsamples.4.downsamples.0.residual.6.bias": ([768], "BF16"), + "encoder.downsamples.4.downsamples.0.residual.6.weight": ([768, 768, 1, 3, 3], "BF16"), + "encoder.downsamples.4.downsamples.1.residual.0.gamma": ([768, 1, 1, 1], "BF16"), + "encoder.downsamples.4.downsamples.1.residual.2.bias": ([768], "BF16"), + "encoder.downsamples.4.downsamples.1.residual.2.weight": ([768, 768, 1, 3, 3], "BF16"), + "encoder.downsamples.4.downsamples.1.residual.3.gamma": ([768, 1, 1, 1], "BF16"), + "encoder.downsamples.4.downsamples.1.residual.6.bias": ([768], "BF16"), + "encoder.downsamples.4.downsamples.1.residual.6.weight": ([768, 768, 1, 3, 3], "BF16"), + "encoder.head.0.gamma": ([768, 1, 1, 1], "BF16"), + "encoder.head.2.bias": ([128], "BF16"), + "encoder.head.2.weight": ([128, 768, 1, 3, 3], "BF16"), + "encoder.middle.0.residual.0.gamma": ([768, 1, 1, 1], "BF16"), + "encoder.middle.0.residual.2.bias": ([768], "BF16"), + "encoder.middle.0.residual.2.weight": ([768, 768, 1, 3, 3], "BF16"), + "encoder.middle.0.residual.3.gamma": ([768, 1, 1, 1], "BF16"), + "encoder.middle.0.residual.6.bias": ([768], "BF16"), + "encoder.middle.0.residual.6.weight": ([768, 768, 1, 3, 3], "BF16"), + "encoder.middle.1.norm.gamma": ([768, 1, 1], "BF16"), + "encoder.middle.1.proj.bias": ([768], "BF16"), + "encoder.middle.1.proj.weight": ([768, 768, 1, 1], "BF16"), + "encoder.middle.1.to_qkv.bias": ([2304], "BF16"), + "encoder.middle.1.to_qkv.weight": ([2304, 768, 1, 1], "BF16"), + "encoder.middle.2.residual.0.gamma": ([768, 1, 1, 1], "BF16"), + "encoder.middle.2.residual.2.bias": ([768], "BF16"), + "encoder.middle.2.residual.2.weight": ([768, 768, 1, 3, 3], "BF16"), + "encoder.middle.2.residual.3.gamma": ([768, 1, 1, 1], "BF16"), + "encoder.middle.2.residual.6.bias": ([768], "BF16"), + "encoder.middle.2.residual.6.weight": ([768, 768, 1, 3, 3], "BF16"), +} diff --git a/tests/backend/qwen_image_2_1/__init__.py b/tests/backend/qwen_image_2_1/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/backend/qwen_image_2_1/test_checkpoint_layout.py b/tests/backend/qwen_image_2_1/test_checkpoint_layout.py new file mode 100644 index 00000000000..591fa2a4214 --- /dev/null +++ b/tests/backend/qwen_image_2_1/test_checkpoint_layout.py @@ -0,0 +1,119 @@ +"""Qwen-Image-2.1's single-file layouts reach diffusers' modules: the fused MLP split and the ComfyUI VAE rename.""" + +import accelerate +import gguf +import numpy as np +import pytest +import torch +from diffusers import AutoencoderKLQwenImage21, QwenImage21Transformer2DModel + +from invokeai.backend.quantization.gguf.ggml_tensor import GGMLTensor +from invokeai.backend.qwen_image_2_1.checkpoint_layout import ( + convert_comfy_vae_to_diffusers, + count_transformer_blocks, + fit_to_module_shapes, + is_comfy_vae_layout, + split_fused_gate_up, + split_fused_layer_names, +) +from tests.backend.model_manager.load.state_dicts import ( + qwen_image_2_1_int8_convrot_keys, + qwen_image_2_1_vae_comfyui_keys, +) + + +def _meta_state_dict(keys: dict[str, tuple[list[int], str]]) -> dict[str, torch.Tensor]: + # Full extents on the meta device: the split reads row counts, so the shapes have to be the real ones. + return {name: torch.empty(shape, device="meta") for name, (shape, _) in keys.items()} + + +def test_comfyui_vae_lands_on_every_diffusers_parameter() -> None: + sd = _meta_state_dict(qwen_image_2_1_vae_comfyui_keys.state_dict_keys) + assert is_comfy_vae_layout(sd) + + converted = convert_comfy_vae_to_diffusers(sd) + with accelerate.init_empty_weights(): + model = AutoencoderKLQwenImage21() + fit_to_module_shapes(converted, model) + + expected = {name: tuple(t.shape) for name, t in model.state_dict().items()} + assert {name: tuple(t.shape) for name, t in converted.items()} == expected + + +def test_an_unknown_comfyui_vae_key_is_refused_rather_than_dropped() -> None: + sd = _meta_state_dict(qwen_image_2_1_vae_comfyui_keys.state_dict_keys) + sd["decoder.upsamples.0.extra.weight"] = torch.empty(1, device="meta") + with pytest.raises(ValueError, match="decoder.upsamples.0.extra.weight"): + convert_comfy_vae_to_diffusers(sd) + + +def test_the_int8_fused_mlp_splits_into_diffusers_linears_with_scale_and_marker() -> None: + sd = split_fused_gate_up(_meta_state_dict(qwen_image_2_1_int8_convrot_keys.state_dict_keys)) + block = "transformer_blocks.0.img_mlp" + + assert not [k for k in sd if ".gate_up." in k] + for half in ("gate_layer", "proj"): + assert tuple(sd[f"{block}.{half}.weight"].shape) == (12288, 4096) + assert tuple(sd[f"{block}.{half}.weight_scale"].shape) == (12288, 1) + assert tuple(sd[f"{block}.{half}.comfy_quant"].shape) == (72,) + + # Every weight now names a parameter of a diffusers transformer as deep as the fixture. + with accelerate.init_empty_weights(): + model = QwenImage21Transformer2DModel(num_layers=count_transformer_blocks(sd)) + weights = {k for k in sd if not k.endswith((".weight_scale", ".comfy_quant"))} + assert weights == set(model.state_dict()) + + +def test_the_split_keeps_rows_and_per_row_scales_and_shares_per_tensor_sidecars() -> None: + rows, cols = 6, 4 + weight = torch.arange(rows * cols, dtype=torch.float32).reshape(rows, cols) + sd = { + "transformer_blocks.0.img_mlp.gate_up.weight": weight, + "transformer_blocks.0.img_mlp.gate_up.weight_scale": torch.arange(rows, dtype=torch.float32).reshape(rows, 1), + "transformer_blocks.0.img_mlp.gate_up.input_scale": torch.tensor(0.5), + "transformer_blocks.0.img_mlp.gate_up.comfy_quant": torch.tensor([1, 2, 3], dtype=torch.uint8), + "transformer_blocks.0.img_mlp.out.weight": torch.ones(cols, rows // 2), + } + out = split_fused_gate_up(sd) + + assert torch.equal(out["transformer_blocks.0.img_mlp.gate_layer.weight"], weight[:3]) + assert torch.equal(out["transformer_blocks.0.img_mlp.proj.weight"], weight[3:]) + assert out["transformer_blocks.0.img_mlp.gate_layer.weight_scale"].flatten().tolist() == [0, 1, 2] + assert out["transformer_blocks.0.img_mlp.proj.weight_scale"].flatten().tolist() == [3, 4, 5] + for half in ("gate_layer", "proj"): + assert out[f"transformer_blocks.0.img_mlp.{half}.input_scale"].item() == 0.5 + assert out[f"transformer_blocks.0.img_mlp.{half}.comfy_quant"].tolist() == [1, 2, 3] + assert out["transformer_blocks.0.img_mlp.out.weight"] is sd["transformer_blocks.0.img_mlp.out.weight"] + + +def test_a_ggml_split_dequantizes_to_the_halves_of_the_whole() -> None: + rows, cols = 8, 64 + values = np.random.default_rng(0).standard_normal((rows, cols)).astype(np.float32) + qtype = gguf.GGMLQuantizationType.Q8_0 + packed = torch.from_numpy(gguf.quants.quantize(values, qtype)) + fused = GGMLTensor(packed, qtype, torch.Size((rows, cols)), torch.float32) + + out = split_fused_gate_up({"transformer_blocks.0.img_mlp.gate_up.weight": fused}) + gate = out["transformer_blocks.0.img_mlp.gate_layer.weight"] + up = out["transformer_blocks.0.img_mlp.proj.weight"] + + whole = fused.get_dequantized_tensor() + assert isinstance(gate, GGMLTensor) and gate.shape == (rows // 2, cols) + assert torch.equal(gate.get_dequantized_tensor(), whole[: rows // 2]) + assert torch.equal(up.get_dequantized_tensor(), whole[rows // 2 :]) + + +def test_header_hints_for_the_fused_layer_apply_to_both_halves() -> None: + hints = split_fused_layer_names({"transformer_blocks.3.img_mlp.gate_up": "hint", "img_in": "other"}) + assert hints == { + "transformer_blocks.3.img_mlp.gate_layer": "hint", + "transformer_blocks.3.img_mlp.proj": "hint", + "img_in": "other", + } + + +def test_a_gap_in_the_blocks_is_refused() -> None: + with pytest.raises(ValueError, match=r"missing \[1\]"): + count_transformer_blocks( + {"transformer_blocks.0.attn.to_q.weight": 0, "transformer_blocks.2.attn.to_q.weight": 0} + ) diff --git a/tests/backend/qwen_image_2_1/test_sampling.py b/tests/backend/qwen_image_2_1/test_sampling.py new file mode 100644 index 00000000000..0e3d7e59da4 --- /dev/null +++ b/tests/backend/qwen_image_2_1/test_sampling.py @@ -0,0 +1,53 @@ +"""Qwen-Image-2.1's schedules against what `QwenImage21Pipeline` samples. + +The expected sigmas were recorded from the pipeline's own path -- `retrieve_timesteps` with the scheduler configs +shipped in Qwen/Qwen-Image-2.1 and Qwen/Qwen-Image-2.1-Turbo -- not derived from the code under test. +""" + +import pytest +import torch + +from invokeai.backend.model_manager.taxonomy import QwenImage21VariantType +from invokeai.backend.qwen_image_2_1.sampling import TURBO_SIGMAS, build_sigmas + +BASE = QwenImage21VariantType.Base +TURBO = QwenImage21VariantType.Turbo + + +@pytest.mark.parametrize( + ("steps", "tokens", "head", "tail"), + [ + # 1024x1024 and 2048x2048: the shift grows with the image, which keeps more steps at high noise. + (40, 4096, [1.0, 0.986964, 0.973593], [0.067881, 0.02, 0.0]), + (40, 16384, [1.0, 0.992646, 0.985013], [0.10223, 0.02, 0.0]), + (8, 4096, [1.0, 0.916024, 0.820046], [0.244054, 0.02, 0.0]), + ], +) +def test_the_base_schedule_is_the_pipelines(steps: int, tokens: int, head: list[float], tail: list[float]) -> None: + sigmas = build_sigmas(BASE, steps, tokens) + assert sigmas.shape == (steps + 1,) + torch.testing.assert_close(sigmas[:3], torch.tensor(head), atol=1e-6, rtol=0) + torch.testing.assert_close(sigmas[-3:], torch.tensor(tail), atol=1e-6, rtol=0) + + +@pytest.mark.parametrize("tokens", [4096, 16384]) +def test_turbo_samples_its_table_unshifted_at_every_size(tokens: int) -> None: + sigmas = build_sigmas(TURBO, 8, tokens) + torch.testing.assert_close(sigmas, torch.tensor([*TURBO_SIGMAS, 0.0]), atol=1e-6, rtol=0) + + +def test_turbo_at_another_step_count_keeps_the_tables_range_and_order() -> None: + sigmas = build_sigmas(TURBO, 4, 4096).tolist() + assert len(sigmas) == 5 + assert sigmas[0] == pytest.approx(1.0) and sigmas[3] == pytest.approx(TURBO_SIGMAS[-1]) and sigmas[4] == 0.0 + assert sigmas == sorted(sigmas, reverse=True) + + +def test_an_unknown_variant_samples_like_the_base_model() -> None: + torch.testing.assert_close(build_sigmas(None, 40, 4096), build_sigmas(BASE, 40, 4096)) + + +@pytest.mark.parametrize("variant", [BASE, TURBO]) +def test_a_single_step_runs_the_whole_range(variant) -> None: + # The pipeline's stretch to `shift_terminal` divides by zero on one base step and returns NaN. + assert build_sigmas(variant, 1, 4096).tolist() == [1.0, 0.0] diff --git a/tests/backend/qwen_image_2_1/test_text_encoding.py b/tests/backend/qwen_image_2_1/test_text_encoding.py new file mode 100644 index 00000000000..5797589414c --- /dev/null +++ b/tests/backend/qwen_image_2_1/test_text_encoding.py @@ -0,0 +1,51 @@ +"""Qwen-Image-2.1's prompt encoding: the template the checkpoint was trained on, read before the final norm.""" + +import pytest +import torch + +from invokeai.backend.qwen3_vl.qwen3_vl_assets import load_bundled_qwen3_vl_tokenizer +from invokeai.backend.qwen_image_2_1.text_encoding import ( + SYSTEM_BLOCK, + encode_prompt, + format_prompt, + system_prefix_length, +) +from tests.backend.model_manager.load.qwen3vl_gguf_fixture import tiny_qwen3vl_config + + +@pytest.fixture(scope="module") +def tokenizer(): + return load_bundled_qwen3_vl_tokenizer() + + +@pytest.fixture(scope="module") +def text_encoder(tokenizer): + from transformers import Qwen3VLModel + + config = tiny_qwen3vl_config() + config.text_config.vocab_size = len(tokenizer) + torch.manual_seed(0) + return Qwen3VLModel(config).float().eval() + + +def test_the_system_turn_is_fourteen_tokens_and_leads_every_prompt(tokenizer) -> None: + # 14 is what the pipeline derives from the processor's chat template for the same system message. + assert system_prefix_length(tokenizer) == 14 + prompt_ids = tokenizer(format_prompt("a fox"), add_special_tokens=False).input_ids + assert prompt_ids[:14] == tokenizer(SYSTEM_BLOCK, add_special_tokens=False).input_ids + + +def test_the_embeddings_are_the_last_layer_before_the_final_norm(text_encoder, tokenizer) -> None: + captured: dict[str, torch.Tensor] = {} + language_model = text_encoder.language_model + handle = language_model.norm.register_forward_hook(lambda m, args, out: captured.update(pre=args[0], post=out)) + try: + embeds = encode_prompt(text_encoder, tokenizer, "a fox", torch.device("cpu")) + ids = tokenizer([format_prompt("a fox")], return_tensors="pt").input_ids + text_encoder(input_ids=ids) + finally: + handle.remove() + + drop = system_prefix_length(tokenizer) + torch.testing.assert_close(embeds[0], captured["pre"][0, drop:]) + assert not torch.allclose(embeds[0], captured["post"][0, drop:]) diff --git a/tests/backend/qwen_image_2_1/test_vae.py b/tests/backend/qwen_image_2_1/test_vae.py new file mode 100644 index 00000000000..69270995817 --- /dev/null +++ b/tests/backend/qwen_image_2_1/test_vae.py @@ -0,0 +1,144 @@ +"""Qwen-Image-2.1's RGBA VAE: how a decode becomes an image, what an encode reads, and the tile geometry it runs in.""" + +import numpy as np +import pytest +import torch +from diffusers import AutoencoderKLQwenImage21 +from PIL import Image + +from invokeai.backend.qwen_image_2_1 import vae as vae_module +from invokeai.backend.qwen_image_2_1.vae import ( + MIN_TILE_SIZE, + SPATIAL_SCALE, + choose_tile_size, + to_image, + to_vae_input, + working_memory_bytes, +) +from invokeai.backend.util.qwen_image_vae import patch_qwen_image_vae_tiling + + +def _decode(alpha: torch.Tensor) -> torch.Tensor: + """A (4, H, W) decode in [-1, 1]: mid-grey colour and the given alpha in 0..255.""" + rgb = torch.zeros(3, *alpha.shape) + return torch.cat([rgb, (alpha.float() / 127.5 - 1)[None]]) + + +def test_an_opaque_decode_is_saved_as_rgb() -> None: + image = to_image(_decode(torch.full((64, 64), 252))) + assert image.mode == "RGB" + + +def test_tiling_seams_in_alpha_do_not_make_an_opaque_image_transparent() -> None: + alpha = torch.full((100, 100), 252) + alpha[0, :5] = 181 # 0.05 % of pixels, as 256px tiles leave them + assert to_image(_decode(alpha)).mode == "RGB" + + +def test_a_transparent_background_is_kept() -> None: + alpha = torch.full((64, 64), 255) + alpha[:, :32] = 0 + image = to_image(_decode(alpha)) + assert image.mode == "RGBA" + assert image.getpixel((0, 0))[3] == 0 and image.getpixel((63, 0))[3] == 255 + + +@pytest.mark.parametrize("dtype", [torch.bfloat16, torch.float32]) +def test_values_map_exactly_as_the_pipelines_postprocess(dtype: torch.dtype) -> None: + from diffusers.image_processor import VaeImageProcessor + + generator = torch.Generator().manual_seed(0) + decoded = (torch.rand(4, 64, 64, generator=generator) * 2.4 - 1.2).to(dtype) + decoded[3] = 1.0 + expected = VaeImageProcessor(vae_scale_factor=16).postprocess(decoded[None], output_type="pil")[0] + assert np.array_equal(np.asarray(to_image(decoded)), np.asarray(expected.convert("RGB"))) + + +def test_an_encode_ignores_the_images_alpha() -> None: + image = Image.new("RGBA", (32, 32), (255, 0, 0, 0)) + pixels = to_vae_input(image) + assert pixels.shape == (1, 4, 32, 32) + assert torch.equal(pixels[0, 3], torch.ones(32, 32)) + assert pixels[0, 0].unique().tolist() == [1.0] and pixels[0, 1].unique().tolist() == [-1.0] + + +@pytest.fixture +def vae() -> AutoencoderKLQwenImage21: + # Tiling is geometry on the module; a minimal network is enough to hold it. + return AutoencoderKLQwenImage21( + base_dim=8, decoder_base_dim=8, z_dim=4, dim_mult=[1, 1], num_res_blocks=1, temperal_downsample=[False] + ) + + +def test_tiles_stride_on_the_16px_grid_and_the_modules_geometry_is_restored(vae: AutoencoderKLQwenImage21) -> None: + before = (vae.use_tiling, vae.tile_sample_min_height, vae.tile_sample_stride_height) + with patch_qwen_image_vae_tiling(vae, 1008, SPATIAL_SCALE): + assert vae.use_tiling + assert (vae.tile_sample_min_height, vae.tile_sample_min_width) == (1008, 1008) + # 3/4 of 1008 is 756, which the 8x Qwen-Image grid would keep; at 16x it must drop to 752. + assert (vae.tile_sample_stride_height, vae.tile_sample_stride_width) == (752, 752) + assert (vae.use_tiling, vae.tile_sample_min_height, vae.tile_sample_stride_height) == before + + +def test_the_geometry_is_restored_when_the_decode_fails(vae: AutoencoderKLQwenImage21) -> None: + before = (vae.use_tiling, vae.tile_sample_min_height) + with pytest.raises(RuntimeError), patch_qwen_image_vae_tiling(vae, 512, SPATIAL_SCALE): + raise RuntimeError("out of memory") + assert (vae.use_tiling, vae.tile_sample_min_height) == before + + +CPU = torch.device("cpu") + + +def test_a_float32_vae_is_priced_at_twice_the_bfloat16_memory() -> None: + fixed = working_memory_bytes(0, 0, None, 2) + assert working_memory_bytes(1024, 1024, None, 4) - fixed == 2 * (working_memory_bytes(1024, 1024, None, 2) - fixed) + + +def test_nothing_is_tiled_unless_asked_or_too_large(monkeypatch: pytest.MonkeyPatch) -> None: + # Stand in for the device: it holds 12 GiB of working memory. + monkeypatch.setattr(vae_module, "should_pretile_vae_decode", lambda device, needed: needed > 12 * 1024**3) + + def choose(size: int, **kwargs) -> int | None: + return choose_tile_size(size, size, 2, CPU, **({"tiled": False, "tile_size": 0, "auto_tile": True} | kwargs)) + + assert choose(1024) is None + # 2048x2048 untiled needs ~32 GiB: tiled, at the device's tile size, encode and decode alike. + assert choose(2048) == 1024 + assert choose(2048, auto_tile=False) is None + assert choose(1024, tiled=True) == 1024 + + +def test_a_tile_size_field_below_the_floor_is_raised_to_it() -> None: + assert choose_tile_size(2048, 2048, 2, CPU, tiled=True, tile_size=16, auto_tile=False) == MIN_TILE_SIZE + assert choose_tile_size(2048, 2048, 2, CPU, tiled=True, tile_size=768, auto_tile=False) == 768 + + +@pytest.mark.parametrize( + ("precision", "expected"), + [(torch.float16, torch.bfloat16), (torch.bfloat16, torch.bfloat16), (torch.float32, torch.float32)], +) +def test_the_pipelines_vae_loads_at_the_configured_precision_but_never_float16( + precision: torch.dtype, expected: torch.dtype, tmp_path, monkeypatch: pytest.MonkeyPatch +) -> None: + from types import SimpleNamespace + + from invokeai.backend.model_manager.load.model_loaders.qwen_image_2_1 import QwenImage21DiffusersModel + from invokeai.backend.model_manager.taxonomy import SubModelType + + loaded: dict[str, torch.dtype] = {} + + class _VAE: + @staticmethod + def from_pretrained(_path, *, torch_dtype, **_kwargs): + loaded["dtype"] = torch_dtype + return torch.nn.Identity() + + loader = object.__new__(QwenImage21DiffusersModel) + loader._torch_dtype = precision + loader._torch_device = torch.device("cpu") + monkeypatch.setattr(loader, "get_hf_load_class", lambda *_args: _VAE) + + loader._load_model(SimpleNamespace(path=str(tmp_path)), SubModelType.VAE) + + assert loaded["dtype"] is expected diff --git a/tests/model_identification/stripped_models/476e9007-3fcd-4483-8ee4-b079e12b2afe/__test_metadata__.json b/tests/model_identification/stripped_models/476e9007-3fcd-4483-8ee4-b079e12b2afe/__test_metadata__.json new file mode 100644 index 00000000000..af09b48fc43 --- /dev/null +++ b/tests/model_identification/stripped_models/476e9007-3fcd-4483-8ee4-b079e12b2afe/__test_metadata__.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e17c4451befebd26ebb728b646aad195f5b2b6d8f7a47c3de8b973abac920d34 +size 369 diff --git a/tests/model_identification/stripped_models/476e9007-3fcd-4483-8ee4-b079e12b2afe/qwen_image_2.1_vae_bf16.safetensors b/tests/model_identification/stripped_models/476e9007-3fcd-4483-8ee4-b079e12b2afe/qwen_image_2.1_vae_bf16.safetensors new file mode 100644 index 00000000000..e5e4ce19786 --- /dev/null +++ b/tests/model_identification/stripped_models/476e9007-3fcd-4483-8ee4-b079e12b2afe/qwen_image_2.1_vae_bf16.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:50c8f4cf7db4084848628ce3c6d6c3b049d70093ba465b237256289ef683b62d +size 41539 diff --git a/tests/model_identification/stripped_models/b435705f-4829-43aa-9142-ab7a5aff24b7/__test_metadata__.json b/tests/model_identification/stripped_models/b435705f-4829-43aa-9142-ab7a5aff24b7/__test_metadata__.json new file mode 100644 index 00000000000..0ec16a8b1d6 --- /dev/null +++ b/tests/model_identification/stripped_models/b435705f-4829-43aa-9142-ab7a5aff24b7/__test_metadata__.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:85cea9077ef44c700ed48706bf327a5fcb460b38f0492b633d539575c1801071 +size 362 diff --git a/tests/model_identification/stripped_models/b435705f-4829-43aa-9142-ab7a5aff24b7/qwen_image_2.1_vae.safetensors b/tests/model_identification/stripped_models/b435705f-4829-43aa-9142-ab7a5aff24b7/qwen_image_2.1_vae.safetensors new file mode 100644 index 00000000000..077558c33ca --- /dev/null +++ b/tests/model_identification/stripped_models/b435705f-4829-43aa-9142-ab7a5aff24b7/qwen_image_2.1_vae.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4198bca636e9718a304a1220e34a34b53cc75dc828780d3bff22124bd040c660 +size 39596 diff --git a/tests/model_identification/stripped_models/b532fac0-3062-4211-bc65-f50b478b632e/__test_metadata__.json b/tests/model_identification/stripped_models/b532fac0-3062-4211-bc65-f50b478b632e/__test_metadata__.json new file mode 100644 index 00000000000..cf53558e935 --- /dev/null +++ b/tests/model_identification/stripped_models/b532fac0-3062-4211-bc65-f50b478b632e/__test_metadata__.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0bc57ce2b75a8e264633b3a22f95f2e328e16b34e94e8315d1e0e04b148f4060 +size 160 diff --git a/tests/model_identification/stripped_models/b532fac0-3062-4211-bc65-f50b478b632e/config.json b/tests/model_identification/stripped_models/b532fac0-3062-4211-bc65-f50b478b632e/config.json new file mode 100644 index 00000000000..47e9db7d091 --- /dev/null +++ b/tests/model_identification/stripped_models/b532fac0-3062-4211-bc65-f50b478b632e/config.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a352be7a8baf91f05291f1c89555d3be8c5c8bb30d9bb0c5f651dc759b078456 +size 2240 diff --git a/tests/model_identification/stripped_models/b532fac0-3062-4211-bc65-f50b478b632e/diffusion_pytorch_model.safetensors b/tests/model_identification/stripped_models/b532fac0-3062-4211-bc65-f50b478b632e/diffusion_pytorch_model.safetensors new file mode 100644 index 00000000000..077558c33ca --- /dev/null +++ b/tests/model_identification/stripped_models/b532fac0-3062-4211-bc65-f50b478b632e/diffusion_pytorch_model.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4198bca636e9718a304a1220e34a34b53cc75dc828780d3bff22124bd040c660 +size 39596 diff --git a/tests/model_identification/stripped_models/c0c7e77d-d91b-402e-9823-49c0291367e4/__test_metadata__.json b/tests/model_identification/stripped_models/c0c7e77d-d91b-402e-9823-49c0291367e4/__test_metadata__.json new file mode 100644 index 00000000000..c242b8a7c8f --- /dev/null +++ b/tests/model_identification/stripped_models/c0c7e77d-d91b-402e-9823-49c0291367e4/__test_metadata__.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:92f1e7f4d22c4b7d379a034783417f4b0b58ff630b6bf7f57317f28a40e15389 +size 405 diff --git a/tests/model_identification/stripped_models/c0c7e77d-d91b-402e-9823-49c0291367e4/qwen-image-2.1-Q4_K_M.gguf b/tests/model_identification/stripped_models/c0c7e77d-d91b-402e-9823-49c0291367e4/qwen-image-2.1-Q4_K_M.gguf new file mode 100644 index 00000000000..992d876a457 --- /dev/null +++ b/tests/model_identification/stripped_models/c0c7e77d-d91b-402e-9823-49c0291367e4/qwen-image-2.1-Q4_K_M.gguf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eb10b23c615fc05ecb7733a21b36a3cad160210a3383672881e9354bea50fc25 +size 100337 diff --git a/tests/model_identification/stripped_models/cae8a4d3-c8c8-4367-bcaa-6ae00e99910f/__test_metadata__.json b/tests/model_identification/stripped_models/cae8a4d3-c8c8-4367-bcaa-6ae00e99910f/__test_metadata__.json new file mode 100644 index 00000000000..faf80a21e9c --- /dev/null +++ b/tests/model_identification/stripped_models/cae8a4d3-c8c8-4367-bcaa-6ae00e99910f/__test_metadata__.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d3e157d386306b064ac0c7e2a52717df65dce25b6490d337b49659e79ddf1815 +size 294 diff --git a/tests/model_identification/stripped_models/cae8a4d3-c8c8-4367-bcaa-6ae00e99910f/model_index.json b/tests/model_identification/stripped_models/cae8a4d3-c8c8-4367-bcaa-6ae00e99910f/model_index.json new file mode 100644 index 00000000000..e3a158ccc89 --- /dev/null +++ b/tests/model_identification/stripped_models/cae8a4d3-c8c8-4367-bcaa-6ae00e99910f/model_index.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:824fc94ff00a692f00ac6fe91e9fb516f6327adf3f7b78dfb556f5e5df046b5a +size 472 diff --git a/tests/model_identification/stripped_models/cae8a4d3-c8c8-4367-bcaa-6ae00e99910f/scheduler/scheduler_config.json b/tests/model_identification/stripped_models/cae8a4d3-c8c8-4367-bcaa-6ae00e99910f/scheduler/scheduler_config.json new file mode 100644 index 00000000000..d3d243ccf34 --- /dev/null +++ b/tests/model_identification/stripped_models/cae8a4d3-c8c8-4367-bcaa-6ae00e99910f/scheduler/scheduler_config.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4b7c9bc1ac2e4bc6fc5d18dff301e0ddd1f96664be2bf320d874945268f2f02b +size 503 diff --git a/tests/model_identification/stripped_models/cae8a4d3-c8c8-4367-bcaa-6ae00e99910f/text_encoder/config.json b/tests/model_identification/stripped_models/cae8a4d3-c8c8-4367-bcaa-6ae00e99910f/text_encoder/config.json new file mode 100644 index 00000000000..db2bcc3fb3a --- /dev/null +++ b/tests/model_identification/stripped_models/cae8a4d3-c8c8-4367-bcaa-6ae00e99910f/text_encoder/config.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ec52da5aef834cdf4efd9bb9710e56a570d323372b701b5ecfd14295770b635e +size 1581 diff --git a/tests/model_identification/stripped_models/cae8a4d3-c8c8-4367-bcaa-6ae00e99910f/text_encoder/generation_config.json b/tests/model_identification/stripped_models/cae8a4d3-c8c8-4367-bcaa-6ae00e99910f/text_encoder/generation_config.json new file mode 100644 index 00000000000..4e2a70feb26 --- /dev/null +++ b/tests/model_identification/stripped_models/cae8a4d3-c8c8-4367-bcaa-6ae00e99910f/text_encoder/generation_config.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4f3f05b8388871aff95b8a43bcedb477b05cf3008c4f0b41aed60da85aa2e8e2 +size 226 diff --git a/tests/model_identification/stripped_models/cae8a4d3-c8c8-4367-bcaa-6ae00e99910f/text_encoder/model-00001-of-00004.safetensors b/tests/model_identification/stripped_models/cae8a4d3-c8c8-4367-bcaa-6ae00e99910f/text_encoder/model-00001-of-00004.safetensors new file mode 100644 index 00000000000..314e0fec17c --- /dev/null +++ b/tests/model_identification/stripped_models/cae8a4d3-c8c8-4367-bcaa-6ae00e99910f/text_encoder/model-00001-of-00004.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:08fea84206271130aaf2989dc6e31e729642732c5a55647ff5e254f12ac5c664 +size 65257 diff --git a/tests/model_identification/stripped_models/cae8a4d3-c8c8-4367-bcaa-6ae00e99910f/text_encoder/model-00002-of-00004.safetensors b/tests/model_identification/stripped_models/cae8a4d3-c8c8-4367-bcaa-6ae00e99910f/text_encoder/model-00002-of-00004.safetensors new file mode 100644 index 00000000000..389d88d418b --- /dev/null +++ b/tests/model_identification/stripped_models/cae8a4d3-c8c8-4367-bcaa-6ae00e99910f/text_encoder/model-00002-of-00004.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8b4544394e2840a6aecadfaf1405bf37c4ab5d61e4d5eb3876fe93ac94f03d53 +size 24031 diff --git a/tests/model_identification/stripped_models/cae8a4d3-c8c8-4367-bcaa-6ae00e99910f/text_encoder/model-00003-of-00004.safetensors b/tests/model_identification/stripped_models/cae8a4d3-c8c8-4367-bcaa-6ae00e99910f/text_encoder/model-00003-of-00004.safetensors new file mode 100644 index 00000000000..b720624bfab --- /dev/null +++ b/tests/model_identification/stripped_models/cae8a4d3-c8c8-4367-bcaa-6ae00e99910f/text_encoder/model-00003-of-00004.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f24394c8514c884f89d1ebf9ae7f4bac4c639d0c8041932ac2495a59222266cb +size 24065 diff --git a/tests/model_identification/stripped_models/cae8a4d3-c8c8-4367-bcaa-6ae00e99910f/text_encoder/model-00004-of-00004.safetensors b/tests/model_identification/stripped_models/cae8a4d3-c8c8-4367-bcaa-6ae00e99910f/text_encoder/model-00004-of-00004.safetensors new file mode 100644 index 00000000000..bb1411674cf --- /dev/null +++ b/tests/model_identification/stripped_models/cae8a4d3-c8c8-4367-bcaa-6ae00e99910f/text_encoder/model-00004-of-00004.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dad9749b5d9cfc6bb72642cc185042c31a4b36cf8a1d530e3b6a4dc25867b757 +size 6765 diff --git a/tests/model_identification/stripped_models/cae8a4d3-c8c8-4367-bcaa-6ae00e99910f/text_encoder/model.safetensors.index.json b/tests/model_identification/stripped_models/cae8a4d3-c8c8-4367-bcaa-6ae00e99910f/text_encoder/model.safetensors.index.json new file mode 100644 index 00000000000..8b2d5c3f861 --- /dev/null +++ b/tests/model_identification/stripped_models/cae8a4d3-c8c8-4367-bcaa-6ae00e99910f/text_encoder/model.safetensors.index.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4e64588b9c79ffa8f7c4ea39e880adda52ec8a9e61b310685c3fd86ed8ed60e2 +size 68553 diff --git a/tests/model_identification/stripped_models/cae8a4d3-c8c8-4367-bcaa-6ae00e99910f/transformer/config.json b/tests/model_identification/stripped_models/cae8a4d3-c8c8-4367-bcaa-6ae00e99910f/transformer/config.json new file mode 100644 index 00000000000..2fcbb323a28 --- /dev/null +++ b/tests/model_identification/stripped_models/cae8a4d3-c8c8-4367-bcaa-6ae00e99910f/transformer/config.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d577d4524c3d3d2ee2e8280fcf065c843e74f0ac92a5636803946a27d8c8263f +size 389 diff --git a/tests/model_identification/stripped_models/cae8a4d3-c8c8-4367-bcaa-6ae00e99910f/transformer/diffusion_pytorch_model-00001-of-00002.safetensors b/tests/model_identification/stripped_models/cae8a4d3-c8c8-4367-bcaa-6ae00e99910f/transformer/diffusion_pytorch_model-00001-of-00002.safetensors new file mode 100644 index 00000000000..312768bf3a6 --- /dev/null +++ b/tests/model_identification/stripped_models/cae8a4d3-c8c8-4367-bcaa-6ae00e99910f/transformer/diffusion_pytorch_model-00001-of-00002.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ef897bc7cbdba869b458eabde061b65750a14ddeb81783b9a55f0d717e20b82c +size 33149 diff --git a/tests/model_identification/stripped_models/cae8a4d3-c8c8-4367-bcaa-6ae00e99910f/transformer/diffusion_pytorch_model-00002-of-00002.safetensors b/tests/model_identification/stripped_models/cae8a4d3-c8c8-4367-bcaa-6ae00e99910f/transformer/diffusion_pytorch_model-00002-of-00002.safetensors new file mode 100644 index 00000000000..871f70e7879 --- /dev/null +++ b/tests/model_identification/stripped_models/cae8a4d3-c8c8-4367-bcaa-6ae00e99910f/transformer/diffusion_pytorch_model-00002-of-00002.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3b8a00944708e61d79c2d5475aac0860d7bf3c3b865bb927d9b7982caf35f3db +size 13607 diff --git a/tests/model_identification/stripped_models/cae8a4d3-c8c8-4367-bcaa-6ae00e99910f/transformer/diffusion_pytorch_model.safetensors.index.json b/tests/model_identification/stripped_models/cae8a4d3-c8c8-4367-bcaa-6ae00e99910f/transformer/diffusion_pytorch_model.safetensors.index.json new file mode 100644 index 00000000000..0e1133597e9 --- /dev/null +++ b/tests/model_identification/stripped_models/cae8a4d3-c8c8-4367-bcaa-6ae00e99910f/transformer/diffusion_pytorch_model.safetensors.index.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a2a28b76595aee0886fa001c720f105acddf09c80918f90c0e2ce3025044df3a +size 30587 diff --git a/tests/model_identification/stripped_models/cae8a4d3-c8c8-4367-bcaa-6ae00e99910f/vae/config.json b/tests/model_identification/stripped_models/cae8a4d3-c8c8-4367-bcaa-6ae00e99910f/vae/config.json new file mode 100644 index 00000000000..47e9db7d091 --- /dev/null +++ b/tests/model_identification/stripped_models/cae8a4d3-c8c8-4367-bcaa-6ae00e99910f/vae/config.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a352be7a8baf91f05291f1c89555d3be8c5c8bb30d9bb0c5f651dc759b078456 +size 2240 diff --git a/tests/model_identification/stripped_models/cae8a4d3-c8c8-4367-bcaa-6ae00e99910f/vae/diffusion_pytorch_model.safetensors b/tests/model_identification/stripped_models/cae8a4d3-c8c8-4367-bcaa-6ae00e99910f/vae/diffusion_pytorch_model.safetensors new file mode 100644 index 00000000000..077558c33ca --- /dev/null +++ b/tests/model_identification/stripped_models/cae8a4d3-c8c8-4367-bcaa-6ae00e99910f/vae/diffusion_pytorch_model.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4198bca636e9718a304a1220e34a34b53cc75dc828780d3bff22124bd040c660 +size 39596 diff --git a/tests/model_identification/stripped_models/cdae20e6-b4d3-4532-99a0-7ad9980396e9/__test_metadata__.json b/tests/model_identification/stripped_models/cdae20e6-b4d3-4532-99a0-7ad9980396e9/__test_metadata__.json new file mode 100644 index 00000000000..11ea290aa3d --- /dev/null +++ b/tests/model_identification/stripped_models/cdae20e6-b4d3-4532-99a0-7ad9980396e9/__test_metadata__.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2c5a5e232a444bee446fe8cbf1481e655de1e1e125e5624be24eea594b5aff6e +size 416 diff --git a/tests/model_identification/stripped_models/cdae20e6-b4d3-4532-99a0-7ad9980396e9/qwen-image-2.1-turbo-Q4_K_M.gguf b/tests/model_identification/stripped_models/cdae20e6-b4d3-4532-99a0-7ad9980396e9/qwen-image-2.1-turbo-Q4_K_M.gguf new file mode 100644 index 00000000000..992d876a457 --- /dev/null +++ b/tests/model_identification/stripped_models/cdae20e6-b4d3-4532-99a0-7ad9980396e9/qwen-image-2.1-turbo-Q4_K_M.gguf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eb10b23c615fc05ecb7733a21b36a3cad160210a3383672881e9354bea50fc25 +size 100337 diff --git a/tests/model_identification/stripped_models/ec7a0dd6-8623-4a39-ae9d-5a8eac1ecf3d/__test_metadata__.json b/tests/model_identification/stripped_models/ec7a0dd6-8623-4a39-ae9d-5a8eac1ecf3d/__test_metadata__.json new file mode 100644 index 00000000000..fabe5330d52 --- /dev/null +++ b/tests/model_identification/stripped_models/ec7a0dd6-8623-4a39-ae9d-5a8eac1ecf3d/__test_metadata__.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1464c32f5bb402ab8e5e66b601592edbbbaf57a5355250f7b6ce032e8d1d2b33 +size 384 diff --git a/tests/model_identification/stripped_models/ec7a0dd6-8623-4a39-ae9d-5a8eac1ecf3d/model_index.json b/tests/model_identification/stripped_models/ec7a0dd6-8623-4a39-ae9d-5a8eac1ecf3d/model_index.json new file mode 100644 index 00000000000..2f65ae7691f --- /dev/null +++ b/tests/model_identification/stripped_models/ec7a0dd6-8623-4a39-ae9d-5a8eac1ecf3d/model_index.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:827e2c0e7b976113aef175ac56f076a2d8f40349c760b16fd2a10613b3f30e19 +size 612 diff --git a/tests/model_identification/stripped_models/ec7a0dd6-8623-4a39-ae9d-5a8eac1ecf3d/scheduler/scheduler_config.json b/tests/model_identification/stripped_models/ec7a0dd6-8623-4a39-ae9d-5a8eac1ecf3d/scheduler/scheduler_config.json new file mode 100644 index 00000000000..03e9855f9f3 --- /dev/null +++ b/tests/model_identification/stripped_models/ec7a0dd6-8623-4a39-ae9d-5a8eac1ecf3d/scheduler/scheduler_config.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:16c948c71f9152a34cce6e3a2f309e97ad2dca32beecbe5e2fd3a7925b7eb4bb +size 486 diff --git a/tests/model_identification/stripped_models/ec7a0dd6-8623-4a39-ae9d-5a8eac1ecf3d/text_encoder/config.json b/tests/model_identification/stripped_models/ec7a0dd6-8623-4a39-ae9d-5a8eac1ecf3d/text_encoder/config.json new file mode 100644 index 00000000000..db2bcc3fb3a --- /dev/null +++ b/tests/model_identification/stripped_models/ec7a0dd6-8623-4a39-ae9d-5a8eac1ecf3d/text_encoder/config.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ec52da5aef834cdf4efd9bb9710e56a570d323372b701b5ecfd14295770b635e +size 1581 diff --git a/tests/model_identification/stripped_models/ec7a0dd6-8623-4a39-ae9d-5a8eac1ecf3d/text_encoder/generation_config.json b/tests/model_identification/stripped_models/ec7a0dd6-8623-4a39-ae9d-5a8eac1ecf3d/text_encoder/generation_config.json new file mode 100644 index 00000000000..4e2a70feb26 --- /dev/null +++ b/tests/model_identification/stripped_models/ec7a0dd6-8623-4a39-ae9d-5a8eac1ecf3d/text_encoder/generation_config.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4f3f05b8388871aff95b8a43bcedb477b05cf3008c4f0b41aed60da85aa2e8e2 +size 226 diff --git a/tests/model_identification/stripped_models/ec7a0dd6-8623-4a39-ae9d-5a8eac1ecf3d/text_encoder/model-00001-of-00004.safetensors b/tests/model_identification/stripped_models/ec7a0dd6-8623-4a39-ae9d-5a8eac1ecf3d/text_encoder/model-00001-of-00004.safetensors new file mode 100644 index 00000000000..314e0fec17c --- /dev/null +++ b/tests/model_identification/stripped_models/ec7a0dd6-8623-4a39-ae9d-5a8eac1ecf3d/text_encoder/model-00001-of-00004.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:08fea84206271130aaf2989dc6e31e729642732c5a55647ff5e254f12ac5c664 +size 65257 diff --git a/tests/model_identification/stripped_models/ec7a0dd6-8623-4a39-ae9d-5a8eac1ecf3d/text_encoder/model-00002-of-00004.safetensors b/tests/model_identification/stripped_models/ec7a0dd6-8623-4a39-ae9d-5a8eac1ecf3d/text_encoder/model-00002-of-00004.safetensors new file mode 100644 index 00000000000..389d88d418b --- /dev/null +++ b/tests/model_identification/stripped_models/ec7a0dd6-8623-4a39-ae9d-5a8eac1ecf3d/text_encoder/model-00002-of-00004.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8b4544394e2840a6aecadfaf1405bf37c4ab5d61e4d5eb3876fe93ac94f03d53 +size 24031 diff --git a/tests/model_identification/stripped_models/ec7a0dd6-8623-4a39-ae9d-5a8eac1ecf3d/text_encoder/model-00003-of-00004.safetensors b/tests/model_identification/stripped_models/ec7a0dd6-8623-4a39-ae9d-5a8eac1ecf3d/text_encoder/model-00003-of-00004.safetensors new file mode 100644 index 00000000000..b720624bfab --- /dev/null +++ b/tests/model_identification/stripped_models/ec7a0dd6-8623-4a39-ae9d-5a8eac1ecf3d/text_encoder/model-00003-of-00004.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f24394c8514c884f89d1ebf9ae7f4bac4c639d0c8041932ac2495a59222266cb +size 24065 diff --git a/tests/model_identification/stripped_models/ec7a0dd6-8623-4a39-ae9d-5a8eac1ecf3d/text_encoder/model-00004-of-00004.safetensors b/tests/model_identification/stripped_models/ec7a0dd6-8623-4a39-ae9d-5a8eac1ecf3d/text_encoder/model-00004-of-00004.safetensors new file mode 100644 index 00000000000..bb1411674cf --- /dev/null +++ b/tests/model_identification/stripped_models/ec7a0dd6-8623-4a39-ae9d-5a8eac1ecf3d/text_encoder/model-00004-of-00004.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dad9749b5d9cfc6bb72642cc185042c31a4b36cf8a1d530e3b6a4dc25867b757 +size 6765 diff --git a/tests/model_identification/stripped_models/ec7a0dd6-8623-4a39-ae9d-5a8eac1ecf3d/text_encoder/model.safetensors.index.json b/tests/model_identification/stripped_models/ec7a0dd6-8623-4a39-ae9d-5a8eac1ecf3d/text_encoder/model.safetensors.index.json new file mode 100644 index 00000000000..8b2d5c3f861 --- /dev/null +++ b/tests/model_identification/stripped_models/ec7a0dd6-8623-4a39-ae9d-5a8eac1ecf3d/text_encoder/model.safetensors.index.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4e64588b9c79ffa8f7c4ea39e880adda52ec8a9e61b310685c3fd86ed8ed60e2 +size 68553 diff --git a/tests/model_identification/stripped_models/ec7a0dd6-8623-4a39-ae9d-5a8eac1ecf3d/transformer/config.json b/tests/model_identification/stripped_models/ec7a0dd6-8623-4a39-ae9d-5a8eac1ecf3d/transformer/config.json new file mode 100644 index 00000000000..2fcbb323a28 --- /dev/null +++ b/tests/model_identification/stripped_models/ec7a0dd6-8623-4a39-ae9d-5a8eac1ecf3d/transformer/config.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d577d4524c3d3d2ee2e8280fcf065c843e74f0ac92a5636803946a27d8c8263f +size 389 diff --git a/tests/model_identification/stripped_models/ec7a0dd6-8623-4a39-ae9d-5a8eac1ecf3d/transformer/diffusion_pytorch_model-00001-of-00002.safetensors b/tests/model_identification/stripped_models/ec7a0dd6-8623-4a39-ae9d-5a8eac1ecf3d/transformer/diffusion_pytorch_model-00001-of-00002.safetensors new file mode 100644 index 00000000000..312768bf3a6 --- /dev/null +++ b/tests/model_identification/stripped_models/ec7a0dd6-8623-4a39-ae9d-5a8eac1ecf3d/transformer/diffusion_pytorch_model-00001-of-00002.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ef897bc7cbdba869b458eabde061b65750a14ddeb81783b9a55f0d717e20b82c +size 33149 diff --git a/tests/model_identification/stripped_models/ec7a0dd6-8623-4a39-ae9d-5a8eac1ecf3d/transformer/diffusion_pytorch_model-00002-of-00002.safetensors b/tests/model_identification/stripped_models/ec7a0dd6-8623-4a39-ae9d-5a8eac1ecf3d/transformer/diffusion_pytorch_model-00002-of-00002.safetensors new file mode 100644 index 00000000000..871f70e7879 --- /dev/null +++ b/tests/model_identification/stripped_models/ec7a0dd6-8623-4a39-ae9d-5a8eac1ecf3d/transformer/diffusion_pytorch_model-00002-of-00002.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3b8a00944708e61d79c2d5475aac0860d7bf3c3b865bb927d9b7982caf35f3db +size 13607 diff --git a/tests/model_identification/stripped_models/ec7a0dd6-8623-4a39-ae9d-5a8eac1ecf3d/transformer/diffusion_pytorch_model.safetensors.index.json b/tests/model_identification/stripped_models/ec7a0dd6-8623-4a39-ae9d-5a8eac1ecf3d/transformer/diffusion_pytorch_model.safetensors.index.json new file mode 100644 index 00000000000..0e1133597e9 --- /dev/null +++ b/tests/model_identification/stripped_models/ec7a0dd6-8623-4a39-ae9d-5a8eac1ecf3d/transformer/diffusion_pytorch_model.safetensors.index.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a2a28b76595aee0886fa001c720f105acddf09c80918f90c0e2ce3025044df3a +size 30587 diff --git a/tests/model_identification/stripped_models/ec7a0dd6-8623-4a39-ae9d-5a8eac1ecf3d/vae/config.json b/tests/model_identification/stripped_models/ec7a0dd6-8623-4a39-ae9d-5a8eac1ecf3d/vae/config.json new file mode 100644 index 00000000000..47e9db7d091 --- /dev/null +++ b/tests/model_identification/stripped_models/ec7a0dd6-8623-4a39-ae9d-5a8eac1ecf3d/vae/config.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a352be7a8baf91f05291f1c89555d3be8c5c8bb30d9bb0c5f651dc759b078456 +size 2240 diff --git a/tests/model_identification/stripped_models/ec7a0dd6-8623-4a39-ae9d-5a8eac1ecf3d/vae/diffusion_pytorch_model.safetensors b/tests/model_identification/stripped_models/ec7a0dd6-8623-4a39-ae9d-5a8eac1ecf3d/vae/diffusion_pytorch_model.safetensors new file mode 100644 index 00000000000..077558c33ca --- /dev/null +++ b/tests/model_identification/stripped_models/ec7a0dd6-8623-4a39-ae9d-5a8eac1ecf3d/vae/diffusion_pytorch_model.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4198bca636e9718a304a1220e34a34b53cc75dc828780d3bff22124bd040c660 +size 39596