Open JohnTigue opened 1 year ago
Supposedly InvokeAI has one of the nicest outpainting machinery:
Invoke does not have a separate webUI input for negative prompts. To add negative prompts, enter them in the regular prompt input field but put the words in square brackets, [like this].
We got Invoke running on Jody's Windows machine, as documented in the Hypnowerk Primer gDoc.
From the horse's mouth: Getting Started with InvokeAI
That's a bingo.
Running InvokeAI in the cloud with Docker#
We offer an optimized Ubuntu-based image that has been well-tested in cloud deployments. Note: it also works well locally on Linux x86_64 systems with an Nvidia GPU. It may also work on Windows under WSL2 and on Intel Mac (not tested).
An advantage of this method is that it does not need any local setup or additional dependencies.
Sounds like Invoke can be compiled of M1 Apple Silicon Macbooks, one of which I am typing on: "Similarly, specify full-precision mode on Apple M1 hardware.".
But don't use it with Docker on an M1:
Developers on Apple silicon (M1/M2): You can't access your GPU cores from Docker containers and performance is reduced compared with running it directly on macOS but for development purposes it's fine. Once you're done with development tasks on your laptop you can build for the target platform and architecture and deploy to another environment with NVIDIA GPUs on-premises or in the cloud.
https://invoke-ai.github.io/InvokeAI/
It runs on Windows, Mac and Linux machines, and runs on GPU cards with as little as 4 GB or RAM.
Again, don't use Docker on Mac if you want to access the GPUs.
InvokeAI Stable Diffusion Toolkit Docs, Docker:
Developers on Apple silicon (M1/M2): You can't access your GPU cores from Docker containers and performance is reduced compared with running it directly on macOS
For Embiggen upscaling, see https://github.com/ManyHands/hypnowerk/issues/34#issuecomment-1383238177.
Invoke2.2 can already do textual inversion training of custom embeddings, but it is not part of the webUI yet – rather its CLI invoked to the main script.
For the grins, I've been trying to install Invoke on my MacBook Pro. Failing repeatedly
` Confguring InvokeAI Loading Python libraries...
Traceback (most recent call last):
File "/Users/jft/at/stable/invokeai/.venv/lib/python3.9/site-packages/transformers/utils/import_utils.py", line 1093, in _get_module
return importlib.import_module("." + module_name, self.name)
File "/opt/homebrew/Cellar/python@3.9/3.9.13_1/Frameworks/Python.framework/Versions/3.9/lib/python3.9/importlib/init.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/Users/jft/at/stable/invokeai/./.venv/bin/configure_invokeai.py", line 24, in
Disk# At least 18 GB of free disk space for the machine learning model, Python, and all its dependencies.
From the Invoke docs, sounds like SD is trained on AWS (*):
Hardware Type: A100 PCIe 40GB
Hours used: 150000
Cloud Provider: AWS
Compute Region: US-east
How to run Stable Diffusion on an M1 Mac (2022-12-12):
Apple has also released a native implementation of StableDiffusion, and StringMeteor wrote up a nice guide on how to run that.
Seems Invoke does not (yet) parse the safetensor file format. A1111 yes, Invoke no.
The 2.3.1 update looks like it is going to be very nice: https://github.com/invoke-ai/InvokeAI/releases
The dev community around Automatic1111 seems deeply flawed. This has been going on for months. It is hard to imagine a promising way forward. As such, depending on A1111 as the core engine behind an API is not a wise plan.
There does seem to be some projects which have instead turned to using InvokeAI as the engine behind an API. InvokeAI 2.0 is when its web service functionality was added to Invoke. Invoke v2.3.4 was release two days ago. For examples, see https://www.reddit.com/r/StableDiffusion/comments/xrsmjh/api/.
Another feature of InvokeAI that looks promising for using it as the engine for our web service is that it has a mature [CLI interface(https://invoke-ai.github.io/InvokeAI/features/CLI/). This would be a great and easy way to have an Elastic Load Balancer driven health check for determining when a specific container has gone off into the weeds.
Finally, there simply seems to be a mature community around InvokeAI. Like, for example, a permissive license. That license is MIT, rather than Automatic1111's Affero GPL. It's really down to a team (InvokeAI) versus a single dictator (A1111). That dictator (username AUTOMATIC1111) has put a lot of effort in but the situation is outgrowing what a single person can handle.
I wonder why StabilityAI has not funded one of these web-ui projects. This seems like a major issue in the SD ecosystem. (I wonder if that might be an opportunity for hypnowerk funding. Boy, I gotta stop going with silly, obscure, too-cleve-by-half, hard to pronounce project names. Same lesson I learned the hard way with my Burma projects over the last year. Bonehead.)
Nonetheless, given the license and the dysfunctional community, ripping A1111 out seems wise.
Just to be clear, A1111 still have a lot of value to add but it should be viewed as the prototyping workbench but not the core engine of something that can built upon for a team service. It is seeming in its element when used by a single dev/creative on their own private, physically colocated GPU. Cue the sad trombones.
Another promising indicator in InvokeAI's favor: they are currently paying up in effort to migrate to a nodes architecture. ComfyUI also has a nodes metaphor based architecture but ComfyUI is GPL3 licensed while Invoke is MIT. So, they are strategically pivoting to compete with the new entrant but have a more commercially friendly license. Most encouraging.
Looks like they started grinding through the architecture overhaul in Feburary and four days ago said they think they'll have it wrapped up in April.
Screw it. I think I got enough evidence that I should simply take the hit and move to an InvokeAI based back end. (Still not sure how to keep Automatic1111 available internally for use without building on it, short of having a dedicated separate server for it. But since it keeps creashing, might just have to take that hit $$.)
Two days ago they release 2.3.5.post2.
(Again, what is with these people? If you've adopted semver, then follow semver.)
I did the upgrade. The UI says 2.3.5
, not 2.3.5.post2
. But it loads straight from git, but on a certain stamp. Maybe I just need to update the commit ID, in a fork?
Maybe the UI cannot handle a forth version component, that is the post2
is not in the UI but it is in the code?
Invoke has been around since 2022-11 but seemingly has improved a bunch of late to where it currently has the most sophisticated UI.
See also:
We have a Discord thread on Invoke: #invoke-ai.
InvokeAI team docs:
Videos by the team
Videos by Olivio Sarikas