psychedelicious
88ae19a768
feat(batches): defer ges creation until execution
...
This improves the overall responsiveness of the system substantially, but does make each iteration *slightly* slower, distributing the up-front cost across the batch.
Two main changes:
1. Create BatchSessions immediately, but do not create a whole graph execution state until the batch is executed.
BatchSessions are created with a `session_id` that does not exist in sessions database.
The default state is changed to `"uninitialized"` to better represent this.
Results: Time to create 5000 batches reduced from over 30s to 2.5s
2. Use `executemany()` to retrieve lists of created sessions.
Results: time to create 5000 batches reduced from 2.5s to under 0.5s
Other changes:
- set BatchSession state to `"in_progress"` just before `invoke()` is called
- rename a few methods to accomodate the new behaviour
- remove unused `BatchProcessStorage.get_created_sessions()` method
2023-08-21 22:22:19 +10:00
psychedelicious
50816432dc
Merge branch 'main' into feat/batch-graphs
2023-08-21 19:51:41 +10:00
psychedelicious
b98c9b516a
feat: add batch docstrings
2023-08-21 19:51:16 +10:00
psychedelicious
a15a5bc3b8
fix(api): correct get_batch
response model
2023-08-21 19:51:02 +10:00
psychedelicious
0909812c84
chore: black
2023-08-21 19:17:15 +10:00
psychedelicious
66c0aea9e7
fix(nodes): removed duplicate node
2023-08-21 19:17:15 +10:00
Damian Stewart
2bcded78e1
add BlendInvocation
2023-08-21 19:17:15 +10:00
Sergey Borisov
beb3e5aeb7
Report correctly to compel if we want get pooled in future(affects blend computation)
2023-08-21 19:05:40 +10:00
Brandon
018ff56314
Merge branch 'main' into feat/batch-graphs
2023-08-18 23:32:08 -04:00
Brandon Rising
137fbacb92
Fix flake8
2023-08-18 15:47:27 -04:00
Brandon Rising
4b6d9a73ed
Merge branch 'main' into feat/batch-graphs
2023-08-18 15:40:34 -04:00
Brandon Rising
3e26214b83
Add a few more endpoints for managing batches
2023-08-18 15:38:16 -04:00
Kevin Turner
2fef478497
fix(convert_ckpt): Removed is_safetensors_available
as safetensors is now a required dependency.
2023-08-18 11:05:59 -07:00
Kevin Turner
6df6abf6f6
Merge branch 'main' into dep/diffusers020
2023-08-18 11:02:52 -07:00
Brandon Rising
0282f46c71
Add runs field for running the same batch multiple times
2023-08-18 13:41:07 -04:00
Brandon Rising
99e03fe92e
Run unmodified graph if no batch data is provided
2023-08-18 13:33:09 -04:00
Martin Kristiansen
ce465acf04
Fixed OnnxRuntimeModel import
2023-08-18 15:52:04 +10:00
Martin Kristiansen
33ee418d8c
Fixing class level import
2023-08-18 15:52:04 +10:00
Martin Kristiansen
537ae2f901
Resolving merge conflicts for flake8
2023-08-18 15:52:04 +10:00
psychedelicious
f6db9da06c
chore(ui): rename file to not cause madge to fail
2023-08-18 13:20:29 +10:00
psychedelicious
a17dbd7df6
feat(ui): improve error toast messages
2023-08-18 13:20:29 +10:00
Kevin Turner
98a4cc20a9
Merge branch 'main' into dep/diffusers020
2023-08-17 20:04:11 -07:00
Lincoln Stein
4ebe839d54
Merge branch 'main' into bugfix/enable-links-in-autoimport
2023-08-17 18:55:45 -04:00
Lincoln Stein
bc16b50302
add followlinks to all os.walk() calls
2023-08-17 18:54:18 -04:00
Kevin Turner
4267132926
dep(diffusers): upgrade diffusers to 0.20
...
Removed `is_safetensors_available` as safetensors is now a required dependency of diffusers.
2023-08-17 13:42:29 -07:00
Lincoln Stein
1102c12084
Merge branch 'main' into fix/sdxl_controlnet
2023-08-17 15:40:51 -04:00
Lincoln Stein
b5cee7d20c
blackify chore
2023-08-17 15:40:15 -04:00
Brandon Rising
cb65526880
More session not found handling
2023-08-17 14:23:12 -04:00
Lincoln Stein
842eb4bb0a
Merge branch 'main' into bugfix/enable-links-in-autoimport
2023-08-17 07:20:26 -04:00
blessedcoolant
8923201fdf
Merge branch 'main' into seam-painting
2023-08-17 21:21:44 +12:00
mickr777
226409107b
Fix for Image Deletion issue
2023-08-17 17:18:11 +10:00
psychedelicious
59bc9ed399
fix(backend): handle BatchSessionNotFoundException
in BatchManager._process()
...
The internal `BatchProcessStorage.get_session()` method throws when it finds nothing, but we were not catching any exceptions.
This caused a exception when the batch manager handles a `graph_execution_state_complete` event that did not originate from a batch.
Fixed by handling the exception.
2023-08-17 13:58:11 +10:00
psychedelicious
e62d5478fd
fix(backend): fix sqlite cannot commit - no transaction is active
...
The `commit()` was called even if we hadn't executed anything
2023-08-17 13:55:38 +10:00
psychedelicious
cc3c2756bd
feat(backend): rename batch changes variable
...
`updateSession` -> `changes`
2023-08-17 13:32:32 +10:00
psychedelicious
67cf594bb3
feat(backend): add missing types to batch_manager_storage.py
2023-08-17 13:29:19 +10:00
psychedelicious
c5b963f1a6
fix(backend): typo
...
`relavent` -> `relevant`
2023-08-17 12:47:58 +10:00
psychedelicious
4d2dd6bb10
feat(backend): rename BatchManager.process
to _process
...
Just to make it clear that this is not a method on the ABC.
2023-08-17 12:47:05 +10:00
psychedelicious
7e4beab4ff
feat(backend): surface BatchSessionNodeFoundException
...
Catch this exception in the router and return an appropriate `HTTPException`.
2023-08-17 12:45:32 +10:00
psychedelicious
e16b5f7cdc
feat(backend): deserialize batch session directly
...
If the values from the `session_dict` are invalid, the model instantiation will fail, or if we end up with an invalid `batch_id`, the app will not run. So I think just parsing the dict directly is equivalent.
Also the LSP analyser is pleased now - no red squigglies.
2023-08-17 12:37:03 +10:00
psychedelicious
1f355d5810
feat(backend): update batch_manager_storage.py
docstrings
2023-08-17 12:31:51 +10:00
psychedelicious
df7370f9d9
chore(backend): remove unused code
2023-08-17 12:16:34 +10:00
psychedelicious
5bec64d65b
fix(backend): fix typings in batch_manager.py
...
- `batch_indicies` is `tuple[int]` not `list[int]`
- explicit `None` return values
2023-08-17 12:07:20 +10:00
psychedelicious
8cf9bd47b2
chore(backend): remove unnecessary batch validation function
...
The `Batch` model is fully validated by pydantic on instantiation; we do not need any validation logic for it.
2023-08-17 11:59:47 +10:00
psychedelicious
c91621b46c
fix(backend): BatchProcess.batch_id
is required
...
Providing a `default_factory` is enough for pydantic to know to create the attribute on instantiation if it's not already provided. We can then make make the typing just `str`.
2023-08-17 11:58:29 +10:00
psychedelicious
f246b236dd
fix(api): fix start_batch
route responses
2023-08-17 11:51:14 +10:00
Lincoln Stein
daf75a1361
blackify
2023-08-16 21:47:29 -04:00
Lincoln Stein
c39f8b478b
fix misplaced ram_used and ram_changed attributes
2023-08-16 21:39:18 -04:00
Lincoln Stein
2ca8611723
add +/- sign in front of RAM delta
2023-08-16 15:53:01 -04:00
Brandon Rising
f7277a8b21
Run python black
2023-08-16 15:44:52 -04:00
Brandon Rising
796ff34c8a
Testing out Spencer's batch data structure
2023-08-16 15:21:11 -04:00