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
ValidationError
errors. - 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 MyInvocation
my_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 | None
is 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 #7984
- ui: translations update from weblate by @weblate in #7938
- Jazzhaiku/stats by @jazzhaiku in #8006
- feat(ui): model relationship management by @xiaden in #7963
- Add to overload for GGMLTensor, so calling to on the model moves the quantized data. by @Vargol in #7949
- fix(app): address pydantic deprecation warning for accessing
BaseModel.model_fields
by @psychedelicious in #8012 - chore: bump torch to 2.7.0 by @psychedelicious in #8013
- Expanded IP Adapter modes. by @hipsterusername in #8011
- ui: translations update from weblate by @weblate in #8015
- chore: prep for v5.12.0rc1 by @psychedelicious in #8014
- fix(ui): only use client-side uploads if more than one image by @maryhipp in #8016
- fix(nodes): better defaults parsing and error handling by @psychedelicious in #8018
- Re-enable classification API as fallback by @jazzhaiku in #8007
- chore: prep for v5.12.0rc2 by @psychedelicious in #8021
- update chatGPT-4o restriction to only apply to high quality by @maryhipp in #8027
- fix(nodes): transformers bug with SAM by @psychedelicious in #8030
- gh: update CODEOWNERS by @psychedelicious in #8033
- fix: improve gguf performance with torch.compile by @keturn in #8031
- feat(ui): Adds Imagen4 scaffold support by @maryhipp in #8032
- ui: translations update from weblate by @weblate in #8020
- chore: prep for v5.12.0 by @psychedelicious in #8034
New Contributors
Full Changelog: v5.11.0...v5.12.0