github invoke-ai/InvokeAI v5.6.0rc3

latest release: v5.6.0rc4
pre-releaseone day ago

This release brings major improvements to Invoke's memory management, new Blur and Noise Canvas filters, and expanded batch capabilities in Workflows.

Changes since previous release candidate (v5.6.0rc2)

  • Reduce peak memory during FLUX model load.
  • Add keep_ram_copy_of_weights config option to reduce average RAM usage.
  • Revise the default logic for the model cache RAM limit to be more conservative.
  • Support float, integer and string batch data types.
  • Add batch data generators.
  • Support grouped (aka zipped) batches.
  • Fix image quality degradation when inpainting an image repeatedly.
  • Fix issue with transparent Canvas filter previews blend with unfiltered parent layer.
  • Add Noise and Blur filters to Canvas. Adding noise or blurring before generation can add a lot detail, especially when generating from a rough sketch. Thanks @dunkeroni!

Memory Management Improvements (aka Low-VRAM mode)

The goal of these changes is to allow users with low-VRAM GPUs to run even the beefiest models, like the 24GB unquantised FLUX dev model.

Despite the focus on low-VRAM GPUs and the colloquial name "Low-VRAM mode", most users benefit from these improvements to Invoke's memory management.

Low-VRAM mode works on systems with dedicated GPUs (Nvidia GPUs on Windows/Linux and AMD GPUs on Linux). It allows you to generate even if your GPU doesn't have enough VRAM to hold full models.

Low-VRAM mode involves 3 features, each of which can be configured or fine-tuned:

  • Partial model loading
  • Dynamic RAM and VRAM cache sizes
  • Working memory
  • Keeping a copy of models in RAM

Most users should only need to enable partial loading by adding this line to your invokeai.yaml file:

enable_partial_loading: true

🚨 Windows users should also disable the Nvidia sysmem fallback.

For more details and instructions for fine-tuning, see the Low-VRAM mode docs.

Thanks to @RyanJDick for designing and implementing these improvements!

Workflow Batches

We've expanded the capabilities for Batches in Workflows:

  • Float, integer and string batch data types
  • Batch collection generators
  • Grouped (aka zipped) batches

Float, integer and string batch data types

There's a new batch node for of the new data types. They work the same as the existing image batch node.

image

You can add a list of values directly in the node, but you'll probably find generators to be a nicer way to set up your batch.

Batch collection generators

These are essentially nodes that run in the frontend and generate a list of values to use in a batch node. Included in this release are these generators for floats and integers:

  • Arithmetic Sequence: Generate a sequence of count numbers, starting from start, that increase or decrease by step.
  • Linear Distribution: Generate a distribution of count numbers, starting with start and ending with end.
  • Uniform Random Distribution: Generation a random distribution of count numbers from min to max. The values are generated randomly when you click Invoke.
  • Parse String: Split the input on the specified character, parsing each value as a number. Non-numbers are ignored.

Screen.Recording.2025-01-17.at.12.26.52.pm.mov

You'll notice the different handle icon for batch generators. These nodes cannot connect to non-batch nodes, which run in the backend.

In the future, we can explore more batch generators. Some ideas:

  • Parse File (string, float, integer): Select a file and parse it, splitting on the specified character.
  • Board (image): Output all images on a board.

Grouped (aka zipped) batches

When you use multiple batches, we run the graph once for every possible combination of values. In math-y speak, we "take the Cartesian product" of all batch collections.

Consider this simple workflow that joins two strings:
image

We have two batch collections, each with two strings. This results in 2 * 2 = 4 runs, one for each possible combination of the strings. We get these outputs:

  • "a cute cat"
  • "a cute dog"
  • "a ferocious cat"
  • "a ferocious dog"

But what if we wanted to group or "zip" up the two string collections into a single collection, executing the graph once for each pair of strings? This is now possible - we can set both nodes to the same batch group:

image

This results in 2 runs, one for each "pair" of strings. We get these outputs:

  • "a cute cat"
  • "a ferocious dog"

It's a bit technical, but if you try it a few times you'll quickly gain an intuition for how things combine. You can use grouped and ungrouped batches arbitrarily - go wild! The Invoke button tooltip lets you know how many executions you'll end up with for the given batch nodes.

Keep in mind that grouped batch collections must have the same size, else we cannot zip them up into one collection. The Invoke button grey out and let you know there is a mismatch.

Details and technical explanation

On the backend, we first zip all grouped batch collections into a single collection. Ungrouped batch collections remain as-is.

Then, we take the product of all batch collections. If there is only a single collection (i.e. a single ungrouped batch nodes, or multiple batch nodes all with the same group), we still do the product operation, but the result is the same as if we had skipped it.

There are 5 slots for groups, plus a 6th ungrouped option:

  • None: Batch nodes will always be used as separate collections for the Cartesian product operation.
  • Groups 1 - 5: Batch nodes within a given group will first be zipped into a single collection, before the the Cartesian product operation.

All Changes

The launcher itself has been updated to fix a handful of issues, including requiring an install every time you start the launcher and systems with AMD GPUs using CPU. The latest launcher version is v1.2.1.

Fixes

  • Fix issue where excessively long board names could cause performance issues.
  • Fix error when using DPM++ schedulers with certain models. Thanks @Vargol!
  • Fix (maybe, hopefully) the app scrolling off screen when run via launcher.
  • Fix link to Scale setting's support docs.
  • Fix image quality degradation when inpainting an image repeatedly.
  • Fix issue with transparent Canvas filter previews blend with unfiltered parent layer.

Enhancements

  • Support float, integer and string batch data types.
  • Add batch data generators.
  • Support grouped (aka zipped) batches.
  • Reduce peak memory during FLUX model load.
  • Add Noise and Blur filters to Canvas. Adding noise or blurring before generation can add a lot detail, especially when generating from a rough sketch. Thanks @dunkeroni!
  • Reworked error handling when installing models from a URL.
  • Updated first run screen and OOM error toast with links to Low-VRAM mode docs.

Internal

  • Tidied some unused variables. Thanks @rikublock!
  • Added typegen check to CI pipeline. Thanks @rikublock!

Docs

  • Added stereogram nodes to Community Nodes docs. Thanks @simonfuhrmann!
  • Updated installation-related docs (quick start, manual install, dev install).
  • Add Low-VRAM mode docs.

Installing and Updating

The new Invoke Launcher is the recommended way to install, update and run Invoke. It takes care of a lot of details for you - like installing the right version of python - and runs Invoke as a desktop application.

Follow the Quick Start guide to get started with the launcher.

If you already have the launcher, you can use it to update your existing install.

We've just updated the launcher to v1.2.1 with a handful of fixes. To update the launcher itself, download the latest version from the quick start guide - the download links are kept up to date.

Legacy Scripts (not recommended!)

We recommend using the launcher, as described in the previous section!

To install or update with the outdated legacy scripts 😱, download the latest legacy scripts and follow the legacy scripts instructions.

What's Changed

New Contributors

Full Changelog: v5.5.0...v5.6.0rc3

Don't miss a new InvokeAI release

NewReleases is sending notifications on new releases.