Sergey Borisov
79e35bd0d3
Minor fixes
2024-07-17 03:48:37 +03:00
Ryan Dick
6b0ca88177
Merge branch 'main' into ryan/spandrel-upscale-tiling
2024-07-16 15:40:14 -04:00
Ryan Dick
81991e072b
Merge branch 'main' into ryan/spandrel-upscale
2024-07-16 15:14:08 -04:00
Sergey Borisov
cec345cb5c
Change attention processor apply logic
2024-07-16 20:03:29 +03:00
Sergey Borisov
608cbe3f5c
Separate inputs in denoise context
2024-07-16 19:30:29 +03:00
Sergey Borisov
9f088d1bf5
Multiple small fixes
2024-07-16 00:51:25 +03:00
psychedelicious
d7d59d704b
chore: update default workflows
...
- Update all existing defaults
- Add Tiled MultiDiffusion workflow
2024-07-15 14:05:04 +10:00
psychedelicious@windows
7c0dfd74a5
fix(api): deleting large images fails
...
This issue is caused by a race condition. When a large image is served to the client, it is done using a streaming `FileResponse`. This concurrently serves the image straight from disk. The file is kept open by FastAPI until the image is fully served.
When a user deletes an image before the file is done serving, the delete fails because the file is still held by FastAPI.
To reproduce the issue:
- Create a very large image (8k reliably creates the issue).
- Create a smaller image, so that the first image in the gallery is not the large image.
- Refresh the app. The small image should be selected.
- Select the large image and immediately delete it. You have to be fast, to delete it before it finishes loading.
- In the terminal, we expect to see an error saying `Failed to delete image file`, and the image does not disappear from the UI.
- After a short wait, once the image has fully loaded, try deleting it again. We expect this to work.
The workaround is to instead serve the image from memory.
Loading the image to memory is very fast, so there is only a tiny window in which we could create the race condition, but it technically could still occur, because FastAPI is asynchronous and handles requests concurrently.
Once we load the image into memory, deletions of that image will work. Then we return a normal `Response` object with the image bytes. This is essentially what `FileResponse` does - except it uses `anyio.open_file`, which is async.
The tradeoff is that the server thread is blocked while opening the file. I think this is a fair tradeoff.
A future enhancement could be to implement soft deletion of images (db is already set up for this), and then clean up deleted image files on startup/shutdown. We could move back to using the async `FileResponse` for best responsiveness in the server without any risk of race conditions.
2024-07-13 14:46:41 +10:00
psychedelicious@windows
2c1a91241e
fix(app): windows indefinite hang while finding port
...
For some reason, I started getting this indefinite hang when the app checks if port 9090 is available. After some fiddling around, I found that adding a timeout resolves the issue.
I confirmed that the util still works by starting the app on 9090, then starting a second instance. The second instance correctly saw 9090 in use and moved to 9091.
2024-07-13 14:46:41 +10:00
Sergey Borisov
499e4d4fde
Add preview extension to check logic
2024-07-13 00:45:04 +03:00
Sergey Borisov
3a9dda9177
Renames
2024-07-12 22:44:00 +03:00
Sergey Borisov
87e96e1be2
Rename modifiers to callbacks, convert order to int, a bit unify injection points
2024-07-12 22:01:05 +03:00
Sergey Borisov
9cc852cf7f
Base code from draft PR
2024-07-12 20:31:26 +03:00
psychedelicious
712cf00a82
fix(app): vae tile size field description
2024-07-12 06:30:27 -07:00
Ryan Dick
69af099532
Warn on invalid model configs in the DB rather than crashing.
2024-07-11 21:05:55 -04:00
Ryan Dick
0428ce73a9
Add early cancellation to SpandrelImageToImageInvocation.
2024-07-11 15:42:33 -04:00
Ryan Dick
d0d2955992
Reduce peak VRAM utilization of SpandrelImageToImageInvocation.
2024-07-10 14:25:19 -04:00
Ryan Dick
d868d5d584
Make SpandrelImageToImage tiling much faster.
2024-07-10 14:25:19 -04:00
Ryan Dick
ab775726b7
Add tiling support to the SpoandrelImageToImage node.
2024-07-10 14:25:19 -04:00
Ryan Dick
7b5d4935b4
Merge branch 'main' into ryan/spandrel-upscale
2024-07-09 13:47:11 -04:00
chainchompa
faf65c988a
Merge branch 'main' into boards-ui-update
2024-07-08 22:06:26 -04:00
chainchompa
0e092c0fb5
update is_private name
2024-07-08 22:03:12 -04:00
chainchompa
3a85ab15a1
update BoardRecord
2024-07-08 14:55:04 -04:00
chainchompa
9ca6980c7a
cleanup and bug fixes
2024-07-08 13:29:53 -04:00
Ryan Dick
ecbff2aa44
Whoops... forgot to commit this file.
2024-07-05 14:57:05 -04:00
Ryan Dick
d09999736c
Rename spandrel models to 'Image-to-Image Model' throughout the UI.
2024-07-05 14:04:08 -04:00
Ryan Dick
35f8781ea2
Fix static type errors with SCHEDULER_NAME_VALUES. And, avoid bi-directional cross-directory imports, which contribute to circular import issues.
2024-07-05 07:38:35 -07:00
Ryan Dick
1d449097cc
Apply ruff rule to disallow all relative imports.
2024-07-04 09:35:37 -04:00
Ryan Dick
9da5925287
Add ruff rule to disallow relative parent imports.
2024-07-04 09:35:37 -04:00
Lincoln Stein
0fe92cd406
[MM bugfix] Put model install errors on the event bus ( #6578 )
...
* fix access token lookup
* fix bug preventing model install error events from being reported
---------
Co-authored-by: Lincoln Stein <lstein@gmail.com>
2024-07-03 22:44:34 -04:00
Ryan Dick
6161aa73af
Move pil_to_tensor() and tensor_to_pil() utilities to the SpandrelImageToImage class.
2024-07-03 16:28:21 -04:00
Ryan Dick
504a42fe61
typo: fix UIType on Spandrel Upscaling node.
2024-07-03 16:28:21 -04:00
Ryan Dick
29c8ddfb88
WIP - A bunch of boilerplate to support Spandrel Image-to-Image models throughout the model manager and the frontend.
2024-07-03 16:28:21 -04:00
Ryan Dick
95079dc7d4
Use a ModelIdentifierField to identify the spandrel model in the UpscaleSpandrelInvocation.
2024-07-03 16:28:21 -04:00
Ryan Dick
c1afe35704
Add prototype invocation for running upscaling models with spandrel.
2024-07-03 16:28:21 -04:00
chainchompa
6437ef3f82
add view that displays private boards with shared boards
2024-07-03 14:25:36 -04:00
Lincoln Stein
a11dc62c2e
fix access token lookup
2024-07-03 13:31:08 +10:00
Ryan Dick
3752509066
Expose the VAE tile_size on the VAE encode and decode invocations.
2024-07-02 09:07:03 -04:00
Ryan Dick
79640ba14e
Add context manager for overriding VAE tiling params.
2024-07-02 09:07:03 -04:00
psychedelicious
390dc47db5
feat(app): transform search term to lowercase
2024-07-01 20:06:28 +10:00
maryhipp
134d831ebf
(api) simplify query
2024-07-01 20:06:28 +10:00
maryhipp
b65ed8e8f2
fix commented out migration
2024-07-01 20:06:28 +10:00
maryhipp
93951dcf82
(api) ruff
2024-07-01 20:06:28 +10:00
Mary Hipp
d579aefb3e
feat(api): add optional search_term query param to image list to search metadata
2024-07-01 20:06:28 +10:00
psychedelicious
f9961eceb7
fix(app): fix SQL query w/ enum for python 3.11
2024-06-29 11:07:39 +10:00
psychedelicious
9e664d7c58
feat(api): remove order_by in favor of starred_first for images records
2024-06-28 18:01:01 +10:00
psychedelicious
c96ccae70b
feat(app): remove order_by in favor of starred_first for images records
2024-06-28 18:01:01 +10:00
maryhipp
f268fe126e
feat(api): add order_by and order_dir to list images for sorting
2024-06-28 18:01:01 +10:00
psychedelicious
89fcab34d0
feat(app): BoardRecord.archived
is a required field
2024-06-28 10:36:05 +10:00
psychedelicious
132289de55
chore: ruff E721
...
Looks like in the latest version of ruff, E721 was added or changed and now catches something it didn't before.
2024-06-28 10:36:05 +10:00
psychedelicious
9f93e9d120
fix(app): when creating image, skip adding to board if board doesn't exist
...
Before this change, if you attempt to create an image that with a nonexistent board, we'd get an unhandled error when adding the image to a board. The record would be created, but file not, due to the structure of the code.
With this change, we now log a warning if we have a problem adding the image to the board, but the record and file are still created.
A future improvement would be to create a transaction for this part of the code, preventing some other situation that could result in only the record or only the file beings saved.
2024-06-28 10:36:05 +10:00
maryhipp
a63dbb2c2d
(api) change query param to include_archived
2024-06-28 10:36:05 +10:00
maryhipp
a7ea096b28
ruff format
2024-06-28 10:36:05 +10:00
maryhipp
5120a76ce5
cleanup
2024-06-28 10:36:05 +10:00
maryhipp
38a948ac9f
feat(api): add archived query param to board list endpoint to include them in the response
2024-06-28 10:36:05 +10:00
maryhipp
c33111468e
feat(api): ability to archive boards
2024-06-28 10:36:05 +10:00
Lincoln Stein
3e0fb45dd7
Load single-file checkpoints directly without conversion ( #6510 )
...
* use model_class.load_singlefile() instead of converting; works, but performance is poor
* adjust the convert api - not right just yet
* working, needs sql migrator update
* rename migration_11 before conflict merge with main
* Update invokeai/backend/model_manager/load/model_loaders/stable_diffusion.py
Co-authored-by: Ryan Dick <ryanjdick3@gmail.com>
* Update invokeai/backend/model_manager/load/model_loaders/stable_diffusion.py
Co-authored-by: Ryan Dick <ryanjdick3@gmail.com>
* implement lightweight version-by-version config migration
* simplified config schema migration code
* associate sdxl config with sdxl VAEs
* remove use of original_config_file in load_single_file()
---------
Co-authored-by: Lincoln Stein <lstein@gmail.com>
Co-authored-by: Ryan Dick <ryanjdick3@gmail.com>
2024-06-27 17:31:28 -04:00
Ryan Dick
bd74b84cc5
Revert "Remove the redundant init_timestep parameter that was being passed around. It is simply the first element of the timesteps array."
...
This reverts commit fa40061eca
.
2024-06-26 12:51:51 -04:00
Ryan Dick
b9946e50f9
Use image-space tile dimensions on the TiledMultiDiffusionDenoiseLatents invocation. This is more natural for many users.
2024-06-25 11:31:52 -07:00
Ryan Dick
06f49a30f6
Mark TiledMultiDiffusionDenoiseLatents as a Beta node.
2024-06-25 11:31:52 -07:00
Ryan Dick
e1af78c702
Make the tile_overlap input to MultiDiffusion *strictly* control the amount of overlap rather than being a lower bound.
2024-06-25 11:31:52 -07:00
Ryan Dick
7c032ea604
(minor) Fix some documentation typos.
2024-06-25 11:31:52 -07:00
Ryan Dick
c5ee415607
Add progress image callbacks to TiledMultiDiffusionDenoiseLatentsInvocation.
2024-06-25 11:31:52 -07:00
Ryan Dick
fa40061eca
Remove the redundant init_timestep parameter that was being passed around. It is simply the first element of the timesteps array.
2024-06-25 11:31:52 -07:00
Ryan Dick
7cafd78d6e
Revert "Expose vae_decode(...) as a staticmethod on LatentsToImageInvocation."
...
This reverts commit 753239b48d
.
2024-06-25 11:31:52 -07:00
Ryan Dick
8a43656cf9
(minor) Address a few small TODOs.
2024-06-25 11:31:52 -07:00
Ryan Dick
bd3b6ca11b
Remove TiledStableDiffusionRefineInvocation. It was a proof-of-concept that has been superseded by TiledMultiDiffusionDenoiseLatents.
2024-06-25 11:31:52 -07:00
Ryan Dick
ceae5fe1db
(minor) typo
2024-06-25 11:31:52 -07:00
Ryan Dick
c22526b9d0
Fix handling of stateful schedulers in MultiDiffusionPipeline.
2024-06-25 11:31:52 -07:00
Ryan Dick
c881882f73
Connect TiledMultiDiffusionDenoiseLatents to the MultiDiffusionPipeline backend.
2024-06-25 11:31:52 -07:00
Ryan Dick
80a67572f1
Fix invocation name of tiled_multi_diffusion_denoise_latents.
2024-06-25 11:31:52 -07:00
Ryan Dick
60ac937698
Improve clarity of comments regarded when 'noise' and 'latents' are expected to be set.
2024-06-25 11:31:52 -07:00
Ryan Dick
196f3b721d
Stricter typing for the is_gradient_mask: bool.
2024-06-25 11:31:52 -07:00
Ryan Dick
40ae174c41
Fix typing of timesteps and init_timestep.
2024-06-25 11:31:52 -07:00
Ryan Dick
ffc28176fe
Remove unused num_inference_steps.
2024-06-25 11:31:52 -07:00
Ryan Dick
230e205541
WIP TiledMultiDiffusionDenoiseLatents. Updated parameter list and first half of the logic.
2024-06-25 11:31:52 -07:00
Ryan Dick
7e94350351
Tidy DenoiseLatentsInvocation.prep_control_data(...) and fix some type errors.
2024-06-25 11:31:52 -07:00
Ryan Dick
c4e8549c73
Make DenoiseLatentsInvocation.prep_control_data(...) a staticmethod so that it can be called externally.
2024-06-25 11:31:52 -07:00
Ryan Dick
350a210835
Copy TiledStableDiffusionRefineInvocation as a starting point for TiledMultiDiffusionDenoiseLatents.py
2024-06-25 11:31:52 -07:00
Ryan Dick
ed781dbb0c
Change tiling strategy to make TiledStableDiffusionRefineInvocation work with more tile shapes and overlaps.
2024-06-25 11:31:52 -07:00
Ryan Dick
b41ea963e7
Expose a few more params from TiledStableDiffusionRefineInvocation.
2024-06-25 11:31:52 -07:00
Ryan Dick
da5d105049
Add support for LoRA models in TiledStableDiffusionRefineInvocation.
2024-06-25 11:31:52 -07:00
Ryan Dick
5301770525
Add naive ControlNet support to TiledStableDiffusionRefineInvocation
2024-06-25 11:31:52 -07:00
Ryan Dick
534640ccde
Rough prototype of TiledStableDiffusionRefineInvocation is working.
2024-06-25 11:31:52 -07:00
Ryan Dick
d5ab8cab5c
WIP - TiledStableDiffusionRefine
2024-06-25 11:31:52 -07:00
Ryan Dick
4767301ad3
Minor improvements to LatentsToImageInvocation type hints.
2024-06-25 11:31:52 -07:00
Ryan Dick
21d7ca45e6
Expose vae_decode(...) as a staticmethod on LatentsToImageInvocation.
2024-06-25 11:31:52 -07:00
Ryan Dick
020e8eb413
Fix return type of prepare_noise_and_latents(...).
2024-06-25 11:31:52 -07:00
Ryan Dick
3d49541c09
Make init_scheduler() a staticmethod on DenoiseLatentsInvocation so that it can be called externally.
2024-06-25 11:31:52 -07:00
Ryan Dick
1ef266845a
Only allow a single positive/negative prompt conditioning input for tiled refine.
2024-06-25 11:31:52 -07:00
Ryan Dick
a37589ca5f
WIP on TiledStableDiffusionRefine
2024-06-25 11:31:52 -07:00
Ryan Dick
171a505f5e
Convert several methods in DenoiseLatentsInvocation to staticmethods so that they can be called externally.
2024-06-25 11:31:52 -07:00
Ryan Dick
8004a0d5f5
Simplify the logic in prepare_noise_and_latents(...).
2024-06-25 11:31:52 -07:00
Ryan Dick
610a1fd611
Split out the prepare_noise_and_latents(...) logic in DenoiseLatentsInvocation so that it can be called from other invocations.
2024-06-25 11:31:52 -07:00
Ryan Dick
43108eec13
(minor) Add a TODO note to get_scheduler(...).
2024-06-25 11:31:52 -07:00
steffylo
a43d602f16
fix(queue): add clear_queue_on_startup config to clear problematic queues
2024-06-19 11:39:25 +10:00
Ryan Dick
79ceac2f82
(minor) Use SilenceWarnings as a decorator rather than a context manager to save an indentation level.
2024-06-18 15:06:22 -04:00
Ryan Dick
d13aafb514
Tidy denoise_latents.py imports to all use absolute import paths.
2024-06-18 15:06:22 -04:00
psychedelicious
cd70937b7f
feat(api): improved model install confirmation page styling & messaging
2024-06-17 10:51:08 +10:00
psychedelicious
fb694b3e17
feat(app): add model_install_download_started
event
...
Previously, we used `model_install_download_progress` for both download starting and progressing. When handling this event, we don't know which actual thing it represents.
Add `model_install_download_started` event to explicitly represent a model download started event.
2024-06-17 09:50:25 +10:00