Releases
Version v5.12.0
This release includes support for Nvidia 50xx GPUs, a way to relate models (e.g. LoRAs with a specific main model), new IP Adapter methods and other smaller changes..
Changes
- Bumped PyTorch dependency to v2.7.0, which means Invoke now supports Nvidia 50xx GPUs.
- New model relationship feature. In the model manager tab, you may “link” two models. At this time, the primary intended use case is to link LoRAs to main models. When you have the main model selected, the linked LoRAs will be at the top of the LoRA list. Thanks @xiaden!
- New IP Adapter methods
Style (Strong)andStyle (Precise). The previous style method is renamed toStyle (Simple). Thanks @cubiq! - Fixed GGUF quantization on MPS. Thanks @Vargol!
- Updated translations. Thanks @Harvester62 @rikublock @Linos1391 @RyoK0220!
- Internal: Invocation model changes, which aim to reduce occurrences of
ValidationErrorerrors. - Internal: Addressed pydantic deprecation warning.
- Internal: Re-enabled new model classification API with safeguards.
🚨 Stricter Rules for Nodes, including Custom Nodes
This section is for node authors, whose nodes may be affected by the stricter rules.
Default values for node fields are now validated as the app starts up.
For example, this node defines my_image as an ImageField, but it provides a default value of None, which is not a valid ImageField:
@invocation("my_invocation")class MyInvocation(BaseInvocation): my_image: ImageField = InputField(default=None)
def invoke(self, context: InvocationContext) -> ImageOutput: ...This node will error on app startup:
# 😱 Error on startup!InvalidFieldError: Default value for field "my_image" on invocation "my_invocation" is invalid, 1 validation error for MyInvocationmy_image Input should be a valid dictionary or instance of ImageField [type=model_type, input_value=None, input_type=NoneType]There are two ways to fix this, depending on the node author’s intention.
1. If the field is truly optional, update the type annotation.
Using the example invocation from above, make the type annotation for my_image a union with None:
@invocation("my_invocation")class MyInvocation(BaseInvocation): my_image: ImageField | None = InputField(default=None)
def invoke(self, context: InvocationContext) -> ImageOutput: ...
ImageField | Noneis equivalent toOptional[ImageField]. Either works.
2. If the field is not optional, remove the default or provide a valid default value.
Using the example invocation from above, simply remove default=None:
@invocation("my_invocation")class MyInvocation(BaseInvocation): my_image: ImageField = InputField()
def invoke(self, context: InvocationContext) -> ImageOutput: ...This node has an integer field that must be greater than 10, but the provided default value of 5. This will error:
@invocation("my_other_invocation")class MyOtherInvocation(BaseInvocation): my_number: int = InputField(default=5, gt=10)
def invoke(self, context: InvocationContext) -> IntegerOutput: ...Either remove the default, or provide a default value greater than 10.
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 don’t want to use the launcher, or need a headless install, you can follow the manual install guide.
What’s Changed
- fix(nodes): pydantic field type massaging improvements by @psychedelicious in https://github.com/invoke-ai/InvokeAI/pull/7984
- ui: translations update from weblate by @weblate in https://github.com/invoke-ai/InvokeAI/pull/7938
- Jazzhaiku/stats by @jazzhaiku in https://github.com/invoke-ai/InvokeAI/pull/8006
- feat(ui): model relationship management by @xiaden in https://github.com/invoke-ai/InvokeAI/pull/7963
- Add to overload for GGMLTensor, so calling to on the model moves the quantized data. by @Vargol in https://github.com/invoke-ai/InvokeAI/pull/7949
- fix(app): address pydantic deprecation warning for accessing
BaseModel.model_fieldsby @psychedelicious in https://github.com/invoke-ai/InvokeAI/pull/8012 - chore: bump torch to 2.7.0 by @psychedelicious in https://github.com/invoke-ai/InvokeAI/pull/8013
- Expanded IP Adapter modes. by @hipsterusername in https://github.com/invoke-ai/InvokeAI/pull/8011
- ui: translations update from weblate by @weblate in https://github.com/invoke-ai/InvokeAI/pull/8015
- chore: prep for v5.12.0rc1 by @psychedelicious in https://github.com/invoke-ai/InvokeAI/pull/8014
- fix(ui): only use client-side uploads if more than one image by @maryhipp in https://github.com/invoke-ai/InvokeAI/pull/8016
- fix(nodes): better defaults parsing and error handling by @psychedelicious in https://github.com/invoke-ai/InvokeAI/pull/8018
- Re-enable classification API as fallback by @jazzhaiku in https://github.com/invoke-ai/InvokeAI/pull/8007
- chore: prep for v5.12.0rc2 by @psychedelicious in https://github.com/invoke-ai/InvokeAI/pull/8021
- update chatGPT-4o restriction to only apply to high quality by @maryhipp in https://github.com/invoke-ai/InvokeAI/pull/8027
- fix(nodes): transformers bug with SAM by @psychedelicious in https://github.com/invoke-ai/InvokeAI/pull/8030
- gh: update CODEOWNERS by @psychedelicious in https://github.com/invoke-ai/InvokeAI/pull/8033
- fix: improve gguf performance with torch.compile by @keturn in https://github.com/invoke-ai/InvokeAI/pull/8031
- feat(ui): Adds Imagen4 scaffold support by @maryhipp in https://github.com/invoke-ai/InvokeAI/pull/8032
- ui: translations update from weblate by @weblate in https://github.com/invoke-ai/InvokeAI/pull/8020
- chore: prep for v5.12.0 by @psychedelicious in https://github.com/invoke-ai/InvokeAI/pull/8034
New Contributors
- @xiaden made their first contribution in https://github.com/invoke-ai/InvokeAI/pull/7963
Full Changelog: https://github.com/invoke-ai/InvokeAI/compare/v5.11.0…v5.12.0