mirror of
https://github.com/invoke-ai/InvokeAI
synced 2026-03-02 13:09:06 +01:00
* WIP: feat(flux2): add FLUX 2 Kontext model support - Add new invocation nodes for FLUX 2: - flux2_denoise: Denoising invocation for FLUX 2 - flux2_klein_model_loader: Model loader for Klein architecture - flux2_klein_text_encoder: Text encoder for Qwen3-based encoding - flux2_vae_decode: VAE decoder for FLUX 2 - Add backend support: - New flux2 module with denoise and sampling utilities - Extended model manager configs for FLUX 2 models - Updated model loaders for Klein architecture - Update frontend: - Extended graph builder for FLUX 2 support - Added FLUX 2 model types and configurations - Updated readiness checks and UI components * fix(flux2): correct VAE decode with proper BN denormalization FLUX.2 VAE uses Batch Normalization in the patchified latent space (128 channels). The decode must: 1. Patchify latents from (B, 32, H, W) to (B, 128, H/2, W/2) 2. Apply BN denormalization using running_mean/running_var 3. Unpatchify back to (B, 32, H, W) for VAE decode Also fixed image normalization from [-1, 1] to [0, 255]. This fixes washed-out colors in generated FLUX.2 Klein images. * feat(flux2): add FLUX.2 Klein model support with ComfyUI checkpoint compatibility - Add FLUX.2 transformer loader with BFL-to-diffusers weight conversion - Fix AdaLayerNorm scale-shift swap for final_layer.adaLN_modulation weights - Add VAE batch normalization handling for FLUX.2 latent normalization - Add Qwen3 text encoder loader with ComfyUI FP8 quantization support - Add frontend components for FLUX.2 Klein model selection - Update configs and schema for FLUX.2 model types * Chore Ruff * Fix Flux1 vae probing * Fix Windows Paths schema.ts * Add 4B und 9B klein to Starter Models. * feat(flux2): add non-commercial license indicator for FLUX.2 Klein 9B - Add isFlux2Klein9BMainModelConfig and isNonCommercialMainModelConfig functions - Update MainModelPicker and InitialStateMainModelPicker to show license icon - Update license tooltip text to include FLUX.2 Klein 9B * feat(flux2): add Klein/Qwen3 variant support and encoder filtering Backend: - Add klein_4b/klein_9b variants for FLUX.2 Klein models - Add qwen3_4b/qwen3_8b variants for Qwen3 encoder models - Validate encoder variant matches Klein model (4B↔4B, 9B↔8B) - Auto-detect Qwen3 variant from hidden_size during probing Frontend: - Show variant field for all model types in ModelView - Filter Qwen3 encoder dropdown to only show compatible variants - Update variant type definitions (zFlux2VariantType, zQwen3VariantType) - Remove unused exports (isFluxDevMainModelConfig, isFlux2Klein9BMainModelConfig) * Chore Ruff * feat(flux2): add Klein 9B Base (undistilled) variant support Distinguish between FLUX.2 Klein 9B (distilled) and Klein 9B Base (undistilled) models by checking guidance_embeds in diffusers config or guidance_in keys in safetensors. Klein 9B Base requires more steps but offers higher quality. * feat(flux2): improve diffusers compatibility and distilled model support Backend changes: - Update text encoder layers from [9,18,27] to (10,20,30) matching diffusers - Use apply_chat_template with system message instead of manual formatting - Change position IDs from ones to zeros to match diffusers implementation - Add get_schedule_flux2() with empirical mu computation for proper schedule shifting - Add txt_embed_scale parameter for Qwen3 embedding magnitude control - Add shift_schedule toggle for base (28+ steps) vs distilled (4 steps) models - Zero out guidance_embedder weights for Klein models without guidance_embeds UI changes: - Clear Klein VAE and Qwen3 encoder when switching away from flux2 base - Clear Qwen3 encoder when switching between different Klein model variants - Add toast notification informing user to select compatible encoder * feat(flux2): fix distilled model scheduling with proper dynamic shifting - Configure scheduler with FLUX.2 Klein parameters from scheduler_config.json (use_dynamic_shifting=True, shift=3.0, time_shift_type="exponential") - Pass mu parameter to scheduler.set_timesteps() for resolution-aware shifting - Remove manual shift_schedule parameter (scheduler handles this automatically) - Simplify get_schedule_flux2() to return linear sigmas only - Remove txt_embed_scale parameter (no longer needed) This matches the diffusers Flux2KleinPipeline behavior where the FlowMatchEulerDiscreteScheduler applies dynamic timestep shifting based on image resolution via the mu parameter. Fixes 4-step distilled Klein 9B model quality issues. * fix(ui): fix FLUX.1 graph building with posCondCollect node lookup The posCondCollect node was created with getPrefixedId() which generates a random suffix (e.g., 'pos_cond_collect:abc123'), but g.getNode() was called with the plain string 'pos_cond_collect', causing a node lookup failure. Fix by declaring posCondCollect as a module-scoped variable and referencing it directly instead of using g.getNode(). * Remove Flux2 Klein Base from Starter Models * Remove Logging * Add Default Values for Flux2 Klein and add variant as additional info to from_base * Add migrations for the z-image qwen3 encoder without a variant value * Add img2img, inpainting and outpainting support for FLUX.2 Klein - Add flux2_vae_encode invocation for encoding images to FLUX.2 latents - Integrate inpaint_extension into FLUX.2 denoise loop for proper mask handling - Apply BN normalization to init_latents and noise for consistency in inpainting - Use manual Euler stepping for img2img/inpaint to preserve exact timestep schedule - Add flux2_img2img, flux2_inpaint, flux2_outpaint generation modes - Expand starter models with FP8 variants, standalone transformers, and separate VAE/encoders - Fix outpainting to always use full denoising (0-1) since strength doesn't apply - Improve error messages in model loader with clear guidance for standalone models * Add GGUF quantized model support and Diffusers VAE loader for FLUX.2 Klein - Add Main_GGUF_Flux2_Config for GGUF-quantized FLUX.2 transformer models - Add VAE_Diffusers_Flux2_Config for FLUX.2 VAE in diffusers format - Add Flux2GGUFCheckpointModel loader with BFL-to-diffusers conversion - Add Flux2VAEDiffusersLoader for AutoencoderKLFlux2 - Add FLUX.2 Klein 4B/9B hardware requirements to documentation - Update starter model descriptions to clarify dependencies install together - Update frontend schema for new model configs * Fix FLUX.2 model detection and add FP8 weight dequantization support - Improve FLUX.2 variant detection for GGUF/checkpoint models (BFL format keys) - Fix guidance_embeds logic: distilled=False, undistilled=True - Add FP8 weight dequantization for ComfyUI-style quantized models - Prevent FLUX.2 models from being misidentified as FLUX.1 - Preserve user-editable fields (name, description, etc.) on model reidentify - Improve Qwen3Encoder detection by variant in starter models - Add defensive checks for tensor operations * Chore ruff format * Chore Typegen * Fix FLUX.2 Klein 9B model loading by detecting hidden_size from weights Previously num_attention_heads was hardcoded to 24, which is correct for Klein 4B but causes size mismatches when loading Klein 9B checkpoints. Now dynamically calculates num_attention_heads from the hidden_size dimension of context_embedder weights: - Klein 4B: hidden_size=3072 → num_attention_heads=24 - Klein 9B: hidden_size=4096 → num_attention_heads=32 Fixes both Checkpoint and GGUF loaders for FLUX.2 models. * Only clear Qwen3 encoder when FLUX.2 Klein variant changes Previously the encoder was cleared whenever switching between any Klein models, even if they had the same variant. Now compares the variant of the old and new model and only clears the encoder when switching between different variants (e.g., klein_4b to klein_9b). This allows users to switch between different Klein 9B models without having to re-select the Qwen3 encoder each time. * Add metadata recall support for FLUX.2 Klein parameters The scheduler, VAE model, and Qwen3 encoder model were not being recalled correctly for FLUX.2 Klein images. This adds dedicated metadata handlers for the Klein-specific parameters. * Fix FLUX.2 Klein denoising scaling and Z-Image VAE compatibility - Apply exponential denoising scaling (exponent 0.2) to FLUX.2 Klein, matching FLUX.1 behavior for more intuitive inpainting strength - Add isFlux1VAEModelConfig type guard to filter FLUX 1.0 VAEs only - Restrict Z-Image VAE selection to FLUX 1.0 VAEs, excluding FLUX.2 Klein 32-channel VAEs which are incompatible * chore pnpm fix * Add FLUX.2 Klein to starter bundles and documentation - Add FLUX.2 Klein hardware requirements to quick start guide - Create flux2_klein_bundle with GGUF Q4 model, VAE, and Qwen3 encoder - Add "What's New" entry announcing FLUX.2 Klein support * Add FLUX.2 Klein built-in reference image editing support FLUX.2 Klein has native multi-reference image editing without requiring a separate model (unlike FLUX.1 which needs a Kontext model). Backend changes: - Add Flux2RefImageExtension for encoding reference images with FLUX.2 VAE - Apply BN normalization to reference image latents for correct scaling - Use T-coordinate offset scale=10 like diffusers (T=10, 20, 30...) - Concatenate reference latents with generated image during denoising - Extract only generated portion in step callback for correct preview Frontend changes: - Add flux2_reference_image config type without model field - Hide model selector for FLUX.2 reference images (built-in support) - Add type guards to handle configs without model property - Update validators to skip model validation for FLUX.2 - Add 'flux2' to SUPPORTS_REF_IMAGES_BASE_MODELS * Chore windows path fix * Add reference image resizing for FLUX.2 Klein Resize large reference images to match BFL FLUX.2 sampling.py limits: - Single reference: max 2024² pixels (~4.1M) - Multiple references: max 1024² pixels (~1M) Uses same scaling approach as BFL's cap_pixels() function.
155 lines
6.5 KiB
Markdown
155 lines
6.5 KiB
Markdown
# Invoke Community Edition Quick Start
|
||
|
||
Welcome to Invoke! Follow these steps to install, update, and get started creating.
|
||
|
||
## Step 1: System Requirements
|
||
|
||
Invoke runs on Windows 10+, macOS 14+ and Linux (Ubuntu 20.04+ is well-tested).
|
||
|
||
Hardware requirements vary significantly depending on model and image output size. The requirements below are rough guidelines.
|
||
|
||
- All Apple Silicon (M1, M2, etc) Macs work, but 16GB+ memory is recommended.
|
||
- AMD GPUs are supported on Linux only. The VRAM requirements are the same as Nvidia GPUs.
|
||
|
||
!!! info "Hardware Requirements (Windows/Linux)"
|
||
|
||
=== "SD1.5 - 512×512"
|
||
|
||
- GPU: Nvidia 10xx series or later, 4GB+ VRAM.
|
||
- Memory: At least 8GB RAM.
|
||
- Disk: 10GB for base installation plus 30GB for models.
|
||
|
||
=== "SDXL - 1024×1024"
|
||
|
||
- GPU: Nvidia 20xx series or later, 8GB+ VRAM.
|
||
- Memory: At least 16GB RAM.
|
||
- Disk: 10GB for base installation plus 100GB for models.
|
||
|
||
=== "FLUX.1 - 1024×1024"
|
||
|
||
- GPU: Nvidia 20xx series or later, 10GB+ VRAM.
|
||
- Memory: At least 32GB RAM.
|
||
- Disk: 10GB for base installation plus 200GB for models.
|
||
|
||
=== "FLUX.2 Klein - 1024×1024"
|
||
|
||
- GPU: Nvidia 20xx series or later, 6GB+ VRAM for GGUF Q4 quantized models, 12GB+ for full precision.
|
||
- Memory: At least 16GB RAM.
|
||
- Disk: 10GB for base installation plus 20GB for models.
|
||
|
||
=== "Z-Image Turbo - 1024x1024"
|
||
- GPU: Nvidia 20xx series or later, 8GB+ VRAM for the Q4_K quantized model. 16GB+ needed for the Q8 or BF16 models.
|
||
- Memory: At least 16GB RAM.
|
||
- Disk: 10GB for base installation plus 35GB for models.
|
||
|
||
|
||
More detail on system requirements can be found [here](./requirements.md).
|
||
|
||
## Step 2: Download and Set Up the Launcher
|
||
|
||
The Launcher manages your Invoke install. Follow these instructions to download and set up the Launcher.
|
||
|
||
!!! info "Instructions for each OS"
|
||
|
||
=== "Windows"
|
||
|
||
- [Download for Windows](https://github.com/invoke-ai/launcher/releases/latest/download/Invoke.Community.Edition.Setup.latest.exe)
|
||
- Run the `EXE` to install the Launcher and start it.
|
||
- A desktop shortcut will be created; use this to run the Launcher in the future.
|
||
- You can delete the `EXE` file you downloaded.
|
||
|
||
=== "macOS"
|
||
|
||
- [Download for macOS](https://github.com/invoke-ai/launcher/releases/latest/download/Invoke.Community.Edition-latest-arm64.dmg)
|
||
- Open the `DMG` and drag the app into `Applications`.
|
||
- Run the Launcher using its entry in `Applications`.
|
||
- You can delete the `DMG` file you downloaded.
|
||
|
||
=== "Linux"
|
||
|
||
- [Download for Linux](https://github.com/invoke-ai/launcher/releases/latest/download/Invoke.Community.Edition-latest.AppImage)
|
||
- You may need to edit the `AppImage` file properties and make it executable.
|
||
- Optionally move the file to a location that does not require admin privileges and add a desktop shortcut for it.
|
||
- Run the Launcher by double-clicking the `AppImage` or the shortcut you made.
|
||
|
||
## Step 3: Install Invoke
|
||
|
||
Run the Launcher you just set up if you haven't already. Click **Install** and follow the instructions to install (or update) Invoke.
|
||
|
||
If you have an existing Invoke installation, you can select it and let the launcher manage the install. You'll be able to update or launch the installation.
|
||
|
||
!!! tip "Updating"
|
||
|
||
The Launcher will check for updates for itself _and_ Invoke.
|
||
|
||
- When the Launcher detects an update is available for itself, you'll get a small popup window. Click through this and the Launcher will update itself.
|
||
- When the Launcher detects an update for Invoke, you'll see a small green alert in the Launcher. Click that and follow the instructions to update Invoke.
|
||
|
||
## Step 4: Launch
|
||
|
||
Once installed, click **Finish**, then **Launch** to start Invoke.
|
||
|
||
The very first run after an installation or update will take a few extra moments to get ready.
|
||
|
||
!!! tip "Server Mode"
|
||
|
||
The launcher runs Invoke as a desktop application. You can enable **Server Mode** in the launcher's settings to disable this and instead access the UI through your web browser.
|
||
|
||
## Step 5: Install Models
|
||
|
||
With Invoke started up, you'll need to install some models.
|
||
|
||
The quickest way to get started is to install a **Starter Model** bundle. If you already have a model collection, Invoke can use it.
|
||
|
||
!!! info "Install Models"
|
||
|
||
=== "Install a Starter Model bundle"
|
||
|
||
1. Go to the **Models** tab.
|
||
2. Click **Starter Models** on the right.
|
||
3. Click one of the bundles to install its models. Refer to the [system requirements](#step-1-confirm-system-requirements) if you're unsure which model architecture will work for your system.
|
||
|
||
=== "Use my model collection"
|
||
|
||
4. Go to the **Models** tab.
|
||
5. Click **Scan Folder** on the right.
|
||
6. Paste the path to your models collection and click **Scan Folder**.
|
||
7. With **In-place install** enabled, Invoke will leave the model files where they are. If you disable this, **Invoke will move the models into its own folders**.
|
||
|
||
You’re now ready to start creating!
|
||
|
||
## Step 6: Learn the Basics
|
||
|
||
We recommend watching our [Getting Started Playlist](https://www.youtube.com/playlist?list=PLvWK1Kc8iXGrQy8r9TYg6QdUuJ5MMx-ZO). It covers essential features and workflows, including:
|
||
|
||
- Generating your first image.
|
||
- Using control layers and reference guides.
|
||
- Refining images with advanced workflows.
|
||
|
||
## Troubleshooting
|
||
|
||
If installation fails, retrying the install in Repair Mode may fix it. There's a checkbox to enable this on the Review step of the install flow.
|
||
|
||
If that doesn't fix it, [clearing the `uv` cache](https://docs.astral.sh/uv/reference/cli/#uv-cache-clean) might do the trick:
|
||
|
||
- Open and start the dev console (button at the bottom-left of the launcher).
|
||
- Run `uv cache clean`.
|
||
- Retry the installation. Enable Repair Mode for good measure.
|
||
|
||
If you are still unable to install, try installing to a different location and see if that works.
|
||
|
||
If you still have problems, ask for help on the Invoke [discord](https://discord.gg/ZmtBAhwWhy).
|
||
|
||
## Other Installation Methods
|
||
|
||
- You can install the Invoke application as a python package. See our [manual install](./manual.md) docs.
|
||
- You can run Invoke with docker. See our [docker install](./docker.md) docs.
|
||
|
||
## Need Help?
|
||
|
||
- Visit our [Support Portal](https://support.invoke.ai).
|
||
- Watch the [Getting Started Playlist](https://www.youtube.com/playlist?list=PLvWK1Kc8iXGrQy8r9TYg6QdUuJ5MMx-ZO).
|
||
- Join the conversation on [Discord][discord link].
|
||
|
||
[discord link]: https://discord.gg/ZmtBAhwWhy
|