Eugene
63d10027a4
nodes: invocation queue item - make more pydantic
2023-04-16 09:39:33 -04:00
Eugene
ef0773b8a3
nodes: set default for InvocationQueueItem.invoke_all
2023-04-16 09:39:33 -04:00
Eugene
3daaddf15b
nodes: remove duplicate LatentsToLatentsInvocation
2023-04-16 09:39:33 -04:00
Eugene
570c3fe690
nodes: ensure Graph and GraphExecutionState ids are cast to str on instantiation
2023-04-16 09:39:33 -04:00
Eugene
cbd1a7263a
nodes: fix typing of GraphExecutionState.id
2023-04-16 09:39:33 -04:00
Eugene
7fc5fbd4ce
nodes: convert InvocationQueueItem to Pydantic class
2023-04-16 09:39:33 -04:00
Eugene Brodsky
6f6de402ad
make InvocationQueueItem serializable
2023-04-16 09:39:33 -04:00
SammCheese
50eb02f68b
chore(ui): build
2023-04-15 20:45:17 +10:00
SammCheese
d73f3adc43
moving shouldHidePreview from gallery to ui slice.
2023-04-15 20:45:17 +10:00
SammCheese
116107f464
chore(ui): build
2023-04-15 20:45:17 +10:00
SammCheese
da44bb1707
rename setter
2023-04-15 20:45:17 +10:00
SammCheese
f43aed677e
chore(ui): build
2023-04-15 20:45:17 +10:00
SammCheese
0d051aaae2
rename hidden variable to something more descriptive
2023-04-15 20:45:17 +10:00
SammCheese
e4e48ff995
i forgor to push the locale
2023-04-15 20:45:17 +10:00
SammCheese
442a6bffa4
feat: add "Hide Preview" Button
2023-04-15 20:45:17 +10:00
Kyle Schouviller
23d65e7162
[nodes] Add subgraph library, subgraph usage in CLI, and fix subgraph execution ( #3180 )
...
* Add latent to latent (img2img equivalent)
Fix a CLI bug with multiple links per node
* Using "latents" instead of "latent"
* [nodes] In-progress implementation of graph library
* Add linking to CLI for graph nodes (still broken)
* Fix subgraph execution, fix subgraph linking in CLI
* Fix LatentsToLatents
2023-04-14 06:41:06 +00:00
blessedcoolant
024fd54d0b
Fixed a Typo. ( #3190 )
2023-04-14 14:33:31 +12:00
Nicholas Körfer
c44c19e911
Fixed a Typo.
2023-04-13 17:42:34 +02:00
psychedelicious
d923d1d66b
fix(nodes): fix naming of CvInvocationConfig
2023-04-11 12:13:53 +10:00
psychedelicious
1f2c1e14db
fix(nodes): move InvocationConfig to baseinvocation.py
2023-04-11 12:13:53 +10:00
psychedelicious
07e3a0ec15
feat(nodes): add invocation schema customisation, add model selection
...
- add invocation schema customisation
done via fastapi's `Config` class and `schema_extra`. when using `Config`, inherit from `InvocationConfig` to get type hints.
where it makes sense - like for all math invocations - define a `MathInvocationConfig` class and have all invocations inherit from it.
this customisation can provide any arbitrary additional data to the UI. currently it provides tags and field type hints.
this is necessary for `model` type fields, which are actually string fields. without something like this, we can't reliably differentiate `model` fields from normal `string` fields.
can also be used for future field types.
all invocations now have tags, and all `model` fields have ui type hints.
- fix model handling for invocations
added a helper to fall back to the default model if an invalid model name is chosen. model names in graphs now work.
- fix latents progress callback
noticed this wasn't correct while working on everything else.
2023-04-11 12:13:53 +10:00
psychedelicious
427db7c7e2
feat(nodes): fix typo in PasteImageInvocation
2023-04-10 21:33:08 +10:00
psychedelicious
dad3a7f263
fix(nodes): sampler_name
--> scheduler
...
the name of this was changed at some point. nodes still used the old name, so scheduler selection did nothing. simple fix.
2023-04-10 19:54:09 +10:00
psychedelicious
5bd0bb637f
fix(nodes): add missing type to ImageField
2023-04-10 19:33:15 +10:00
Lincoln Stein
f05095770c
Increase chunk size when computing diffusers SHAs ( #3159 )
...
When running this app first time in WSL2 environment, which is
notoriously slow when it comes to IO, computing the SHAs of the models
takes an eternity.
Computing shas for sd2.1
```
| Calculating sha256 hash of model files
| sha256 = 1e4ce085102fe6590d41ec1ab6623a18c07127e2eca3e94a34736b36b57b9c5e (49 files hashed in 510.87s)
```
I increased the chunk size to 16MB reduce the number of round trips for
loading the data. New results:
```
| Calculating sha256 hash of model files
| sha256 = 1e4ce085102fe6590d41ec1ab6623a18c07127e2eca3e94a34736b36b57b9c5e (49 files hashed in 59.89s)
```
Higher values don't seem to make an impact.
2023-04-09 22:29:43 -04:00
AbdBarho
de189f2db6
Increase chunk size when computing SHAs
2023-04-09 21:53:59 +02:00
psychedelicious
4463124bdd
feat(nodes): mark ImageField properties required, add docs
2023-04-09 22:53:17 +10:00
psychedelicious
34402cc46a
feat(nodes): add list_images endpoint
...
- add `list_images` endpoint at `GET api/v1/images`
- extend `ImageStorageBase` with `list()` method, implemented it for `DiskImageStorage`
- add `ImageReponse` class to for image responses, which includes urls, metadata
- add `ImageMetadata` class (basically a stub at the moment)
- uploaded images now named `"{uuid}_{timestamp}.png"`
- add `models` modules. besides separating concerns more clearly, this helps to mitigate circular dependencies
- improve thumbnail handling
2023-04-09 13:48:44 +10:00
Kent Keirsey
54d9833db0
Else.
2023-04-08 12:08:51 -04:00
Kent Keirsey
5fe8cb56fc
Correct response note
2023-04-08 12:08:51 -04:00
Kent Keirsey
7919d81fb1
Update to address feedback
2023-04-08 12:08:51 -04:00
Kent Keirsey
9d80b28a4f
Begin Convert Work
2023-04-08 12:08:51 -04:00
Kent Keirsey
1fcd91bcc5
Add/Update and Delete Models
2023-04-08 12:08:51 -04:00
blessedcoolant
e456e2e63a
fix typo ( #3147 )
...
fix typo.
reference:
21f79e5919/invokeai/configs/INITIAL_MODELS.yaml (L21-L25)
2023-04-08 20:25:31 +12:00
c67e708d
ee41b99049
Update 050_INSTALLING_MODELS.md
...
fix typo
2023-04-08 17:02:47 +09:00
psychedelicious
111d674e71
fix(nodes): use correct torch device in NoiseInvocation
2023-04-08 12:32:03 +10:00
Lincoln Stein
8f048cfbd9
Add python-multipart, which is needed by nodes ( #3141 )
...
I'm not quite sure why this isn't being installed by fastapi's
dependencies, but running without it installed yields:
```
root@gnubert:/srv/ssdtank/docker/invokeai/git/InvokeAI# docker run --gpus all -p 9989:9090 -v /srv/ssdtank/docker/invokeai/data:/data -v /srv/ssdtank/docker/invokeai/git/InvokeAI/static/dream_web/:/static/dream_web --rm -ti -u root --entrypoint /bin/bash ghcr.io/cmsj/invokeai-nodes@sha256:426ebc414936cb67e02f5f64d963196500a77b2f485df8122a2d462797293938
root@7a77b56a5771:/usr/src# /invoke-new.py --web
Form data requires "python-multipart" to be installed.
You can install "python-multipart" with:
pip install python-multipart
╭─────────────────────────────── Traceback (most recent call last) ────────────────────────────────╮
│ /invoke-new.py:22 in <module> │
│ │
│ 19 │
│ 20 │
│ 21 if __name__ == '__main__': │
│ ❱ 22 │ main() │
│ 23 │
│ │
│ /invoke-new.py:13 in main │
│ │
│ 10 │ os.chdir(os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))) │
│ 11 │ │
│ 12 │ if '--web' in sys.argv: │
│ ❱ 13 │ │ from invokeai.app.api_app import invoke_api │
│ 14 │ │ invoke_api() │
│ 15 │ else: │
│ 16 │ │ # TODO: Parse some top-level args here. │
│ │
│ /usr/src/InvokeAI/lib/python3.10/site-packages/invokeai/app/api_app.py:17 in <module> │
│ │
│ 14 │
│ 15 from ..backend import Args │
│ 16 from .api.dependencies import ApiDependencies │
│ ❱ 17 from .api.routers import images, sessions, models │
│ 18 from .api.sockets import SocketIO │
│ 19 from .invocations import * │
│ 20 from .invocations.baseinvocation import BaseInvocation │
│ │
│ /usr/src/InvokeAI/lib/python3.10/site-packages/invokeai/app/api/routers/images.py:45 in <module> │
│ │
│ 42 │ │ 404: {"description": "Session not found"}, │
│ 43 │ }, │
│ 44 ) │
│ ❱ 45 async def upload_image(file: UploadFile, request: Request): │
│ 46 │ if not file.content_type.startswith("image"): │
│ 47 │ │ return Response(status_code=415) │
│ 48 │
│ │
│ /usr/src/InvokeAI/lib/python3.10/site-packages/fastapi/routing.py:630 in decorator │
│ │
│ 627 │ │ ), │
│ 628 │ ) -> Callable[[DecoratedCallable], DecoratedCallable]: │
│ 629 │ │ def decorator(func: DecoratedCallable) -> DecoratedCallable: │
│ ❱ 630 │ │ │ self.add_api_route( │
│ 631 │ │ │ │ path, │
│ 632 │ │ │ │ func, │
│ 633 │ │ │ │ response_model=response_model, │
│ │
│ /usr/src/InvokeAI/lib/python3.10/site-packages/fastapi/routing.py:569 in add_api_route │
│ │
│ 566 │ │ current_generate_unique_id = get_value_or_default( │
│ 567 │ │ │ generate_unique_id_function, self.generate_unique_id_function │
│ 568 │ │ ) │
│ ❱ 569 │ │ route = route_class( │
│ 570 │ │ │ self.prefix + path, │
│ 571 │ │ │ endpoint=endpoint, │
│ 572 │ │ │ response_model=response_model, │
│ │
│ /usr/src/InvokeAI/lib/python3.10/site-packages/fastapi/routing.py:444 in __init__ │
│ │
│ 441 │ │ │ │ 0, │
│ 442 │ │ │ │ get_parameterless_sub_dependant(depends=depends, path=self.path_format), │
│ 443 │ │ │ ) │
│ ❱ 444 │ │ self.body_field = get_body_field(dependant=self.dependant, name=self.unique_id) │
│ 445 │ │ self.app = request_response(self.get_route_handler()) │
│ 446 │ │
│ 447 │ def get_route_handler(self) -> Callable[[Request], Coroutine[Any, Any, Response]]: │
│ │
│ /usr/src/InvokeAI/lib/python3.10/site-packages/fastapi/dependencies/utils.py:756 in │
│ get_body_field │
│ │
│ 753 │ │ alias="body", │
│ 754 │ │ field_info=BodyFieldInfo(**BodyFieldInfo_kwargs), │
│ 755 │ ) │
│ ❱ 756 │ check_file_field(final_field) │
│ 757 │ return final_field │
│ 758 │
│ │
│ /usr/src/InvokeAI/lib/python3.10/site-packages/fastapi/dependencies/utils.py:111 in │
│ check_file_field │
│ │
│ 108 │ │ │ │ raise RuntimeError(multipart_incorrect_install_error) from None │
│ 109 │ │ except ImportError: │
│ 110 │ │ │ logger.error(multipart_not_installed_error) │
│ ❱ 111 │ │ │ raise RuntimeError(multipart_not_installed_error) from None │
│ 112 │
│ 113 │
│ 114 def get_param_sub_dependant( │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
RuntimeError: Form data requires "python-multipart" to be installed.
You can install "python-multipart" with:
pip install python-multipart
```
2023-04-07 19:17:37 -04:00
Chris Jones
7103ac6a32
Add python-multipart, which is needed by nodes
2023-04-07 19:43:42 +01:00
blessedcoolant
f6b131e706
remove vestiges of non-functional autoimport code for legacy checkpoints ( #3076 )
...
- the functionality to automatically import and run legacy checkpoint
files in a designated folder has been removed from the backend but there
are vestiges of the code remaining in the frontend that are causing
crashes.
- This fixes the problem.
- Closes #3075
2023-04-08 02:21:23 +12:00
Lincoln Stein
d1b2b99226
Merge branch 'main' into bugfix/remove-autoimport-dead-code
2023-04-07 09:59:58 -04:00
psychedelicious
e356f2511b
chore: configure stale bot
2023-04-07 20:45:08 +10:00
Lincoln Stein
e5f8b22a43
add a new method to model_manager that retrieves individual pipeline components ( #3120 )
...
This PR introduces a new set of ModelManager methods that enables you to
retrieve the individual parts of a stable diffusion pipeline model,
including the vae, text_encoder, unet, tokenizer, etc.
To use:
```
from invokeai.backend import ModelManager
manager = ModelManager('/path/to/models.yaml')
# get the VAE
vae = manager.get_model_vae('stable-diffusion-1.5')
# get the unet
unet = manager.get_model_unet('stable-diffusion-1.5')
# get the tokenizer
tokenizer = manager.get_model_tokenizer('stable-diffusion-1.5')
# etc etc
feature_extractor = manager.get_model_feature_extractor('stable-diffusion-1.5')
scheduler = manager.get_model_scheduler('stable-diffusion-1.5')
text_encoder = manager.get_model_text_encoder('stable-diffusion-1.5')
# if no model provided, then defaults to the one currently in GPU, if any
vae = manager.get_model_vae()
```
2023-04-07 01:39:57 -04:00
blessedcoolant
45b84fb4bb
Merge branch 'main' into bugfix/remove-autoimport-dead-code
2023-04-07 17:07:25 +12:00
Lincoln Stein
f022c89249
Merge branch 'main' into feat/return-submodels
2023-04-06 22:03:31 -04:00
Lincoln Stein
ab05144716
Change where !replay looks for its infile ( #3129 )
...
!fetch puts its output file into the output directory; it may be
beneficial to have !replay look in the output directory as well.
2023-04-06 22:02:06 -04:00
Lincoln Stein
aeb4914e67
Merge branch 'main' into replay-file_path
2023-04-06 21:45:23 -04:00
blessedcoolant
76bcd4d44f
Fix typo ( #3133 )
...
'hotdot' to 'hotdog'; the world's least important PR :)
2023-04-07 12:38:05 +12:00
Steven Frank
50f5e1bc83
Fix typo
...
'hotdot' to 'hotdog'; the world's least important PR :)
2023-04-06 16:47:57 -07:00
Lincoln Stein
4c339dd4b0
refactor get_submodels() into individual methods
2023-04-06 17:08:23 -04:00
Thomas
7268131f57
change where !replay looks for its infile
...
!fetch puts its output file into the output directory; it may be beneficial to have !replay look in the output directory as well.
2023-04-06 08:14:11 -04:00