* update docker build (cloud) action with additional metadata, new labels
* (docker) also add aarch64 cloud build and remove arch suffix
* (docker) architecture suffix is needed for now
* (docker) don't build aarch64 for now
* add docker build optimized for size; do not copy models to image
useful for cloud deployments. attempts to utilize docker layer
caching as effectively as possible. also some quick tools to help with
building
* add workflow to build cloud img in ci
* push cloud image in addition to building
* (ci) also tag docker images with git SHA
* (docker) rework Makefile for easy cache population and local use
* support the new conda-less install; further optimize docker build
* (ci) clean up the build-cloud-img action
* improve the Makefile for local use
* move execution of invoke script from entrypoint to cmd, allows overriding the cmd if needed (e.g. in Runpod
* remove unnecessary copyright statements
* (docs) add a section on running InvokeAI in the cloud using Docker
* (docker) add patchmatch to the cloud image; improve build caching; simplify Makefile
* (docker) fix pip requirements path to use binary_installer directory
prompt token sequences begin with a "beginning-of-sequence" marker <bos> and end with a repeated "end-of-sequence" marker <eos> - to make a default prompt length of <bos> + 75 prompt tokens + <eos>. the .swap() code was failing to take the column for <bos> at index 0 into account. the changes here do that, and also add extra handling for a single <eos> (which may be redundant but which is included for completeness).
based on my understanding and some assumptions about how this all works, the reason .swap() nevertheless seemed to do the right thing, to some extent, is because over multiple steps the conditioning process in Stable Diffusion operates as a feedback loop. a change to token n-1 has flow-on effects to how the [1x4x64x64] latent tensor is modified by all the tokens after it, - and as the next step is processed, all the tokens before it as well. intuitively, a token's conditioning effects "echo" throughout the whole length of the prompt. so even though the token at n-1 was being edited when what the user actually wanted was to edit the token at n, it nevertheless still had some non-negligible effect, in roughly the right direction, often enough that it seemed like it was working properly.
- Pass command-line arguments through to invoke.py via the .bat and .sh scripts.
- Remove obsolete warning message from binary install.bat
- Make sure that current working directory matches where .bat file is installed
also "Macintosh" → "macOS" to improve "We Support macOS Properly And Not Halfassed Like Other OSS Projects" signalling
Co-authored-by: Lincoln Stein <lincoln.stein@gmail.com>
Several users have been trying to run InvokeAI on GTX 1650 and 1660
cards. They really can't because these cards don't work with
half-precision and only have 4-6GB of memory. Added a warning to
the docs (in two places) about this problem.
- Add Xcode installation instructions to source installer walkthrough
- Fix link to source installer page from installer overview
- If OSX install crashes, script will tell Mac users to go to the docs
to learn how to install Xcode
NB: if we remove the version from the zip file names, we can link
directly to assets in the latest GH release from documentation without
the need to keep the links updated