Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ERROR: Exception in ASGI application #57

Open
Iagmon opened this issue Sep 15, 2024 · 3 comments
Open

ERROR: Exception in ASGI application #57

Iagmon opened this issue Sep 15, 2024 · 3 comments

Comments

@Iagmon
Copy link

Iagmon commented Sep 15, 2024

I just installed XTTS-Finetune-Webui, but I can't use it because when I click the "Create Dataset" I get the error below.

Reinstalling it didn't help, and looking for previous similar issues didn't help either (the only issue I found that was just like mine was closed by the same user who opened it, saying he managed to get things running after restarting the PC, but that didn't work for me).

I also got the exact same issue when I installed the XTTS-Webui, but then I downloaded the XTTS-Webui's portable version and it worked normally.

I did run the following commands, as mentioned in a similar issue, but to no avail.

pip install --upgrade pydantic==2.8.0
pip install --upgrade fastapi==0.112.4

Here's the error log:

ERROR: Exception in ASGI application
Traceback (most recent call last):
File "F:\XTTS\xtts-finetune-webui\venv\lib\site-packages\pydantic\type_adapter.py", line 270, in _init_core_attrs
self._core_schema = _getattr_no_parents(self._type, 'pydantic_core_schema')
File "F:\XTTS\xtts-finetune-webui\venv\lib\site-packages\pydantic\type_adapter.py", line 112, in _getattr_no_parents
raise AttributeError(attribute)
AttributeError: pydantic_core_schema

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "F:\XTTS\xtts-finetune-webui\venv\lib\site-packages\uvicorn\protocols\http\h11_impl.py", line 406, in run_asgi
result = await app( # type: ignore[func-returns-value]
File "F:\XTTS\xtts-finetune-webui\venv\lib\site-packages\uvicorn\middleware\proxy_headers.py", line 70, in call
return await self.app(scope, receive, send)
File "F:\XTTS\xtts-finetune-webui\venv\lib\site-packages\fastapi\applications.py", line 1054, in call
await super().call(scope, receive, send)
File "F:\XTTS\xtts-finetune-webui\venv\lib\site-packages\starlette\applications.py", line 113, in call
await self.middleware_stack(scope, receive, send)
File "F:\XTTS\xtts-finetune-webui\venv\lib\site-packages\starlette\middleware\errors.py", line 187, in call
raise exc
File "F:\XTTS\xtts-finetune-webui\venv\lib\site-packages\starlette\middleware\errors.py", line 165, in call
await self.app(scope, receive, send)
File "F:\XTTS\xtts-finetune-webui\venv\lib\site-packages\starlette\middleware\cors.py", line 93, in call
await self.simple_response(scope, receive, send, request_headers=headers)
File "F:\XTTS\xtts-finetune-webui\venv\lib\site-packages\starlette\middleware\cors.py", line 144, in simple_response
await self.app(scope, receive, send)
File "F:\XTTS\xtts-finetune-webui\venv\lib\site-packages\starlette\middleware\exceptions.py", line 62, in call
await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
File "F:\XTTS\xtts-finetune-webui\venv\lib\site-packages\starlette_exception_handler.py", line 62, in wrapped_app
raise exc
File "F:\XTTS\xtts-finetune-webui\venv\lib\site-packages\starlette_exception_handler.py", line 51, in wrapped_app
await app(scope, receive, sender)
File "F:\XTTS\xtts-finetune-webui\venv\lib\site-packages\starlette\routing.py", line 715, in call
await self.middleware_stack(scope, receive, send)
File "F:\XTTS\xtts-finetune-webui\venv\lib\site-packages\starlette\routing.py", line 735, in app
await route.handle(scope, receive, send)
File "F:\XTTS\xtts-finetune-webui\venv\lib\site-packages\starlette\routing.py", line 288, in handle
await self.app(scope, receive, send)
File "F:\XTTS\xtts-finetune-webui\venv\lib\site-packages\starlette\routing.py", line 76, in app
await wrap_app_handling_exceptions(app, request)(scope, receive, send)
File "F:\XTTS\xtts-finetune-webui\venv\lib\site-packages\starlette_exception_handler.py", line 62, in wrapped_app
raise exc
File "F:\XTTS\xtts-finetune-webui\venv\lib\site-packages\starlette_exception_handler.py", line 51, in wrapped_app
await app(scope, receive, sender)
File "F:\XTTS\xtts-finetune-webui\venv\lib\site-packages\starlette\routing.py", line 73, in app
response = await f(request)
File "F:\XTTS\xtts-finetune-webui\venv\lib\site-packages\fastapi\routing.py", line 291, in app
solved_result = await solve_dependencies(
File "F:\XTTS\xtts-finetune-webui\venv\lib\site-packages\fastapi\dependencies\utils.py", line 639, in solve_dependencies
) = await request_body_to_args( # body_params checked above
File "F:\XTTS\xtts-finetune-webui\venv\lib\site-packages\fastapi\dependencies\utils.py", line 813, in request_body_to_args
fields_to_extract = get_cached_model_fields(first_field.type
)
File "F:\XTTS\xtts-finetune-webui\venv\lib\site-packages\fastapi_compat.py", line 657, in get_cached_model_fields
return get_model_fields(model)
File "F:\XTTS\xtts-finetune-webui\venv\lib\site-packages\fastapi_compat.py", line 284, in get_model_fields
return [
File "F:\XTTS\xtts-finetune-webui\venv\lib\site-packages\fastapi_compat.py", line 285, in
ModelField(field_info=field_info, name=name)
File "", line 6, in init
File "F:\XTTS\xtts-finetune-webui\venv\lib\site-packages\fastapi_compat.py", line 110, in post_init
self._type_adapter: TypeAdapter[Any] = TypeAdapter(
File "F:\XTTS\xtts-finetune-webui\venv\lib\site-packages\pydantic\type_adapter.py", line 257, in init
self._init_core_attrs(rebuild_mocks=False)
File "F:\XTTS\xtts-finetune-webui\venv\lib\site-packages\pydantic\type_adapter.py", line 135, in wrapped
return func(self, *args, **kwargs)
File "F:\XTTS\xtts-finetune-webui\venv\lib\site-packages\pydantic\type_adapter.py", line 277, in _init_core_attrs
self._core_schema = _get_schema(self._type, config_wrapper, parent_depth=self._parent_depth)
File "F:\XTTS\xtts-finetune-webui\venv\lib\site-packages\pydantic\type_adapter.py", line 95, in get_schema
schema = gen.generate_schema(type
)
File "F:\XTTS\xtts-finetune-webui\venv\lib\site-packages\pydantic_internal_generate_schema.py", line 655, in generate_schema
schema = self._generate_schema_inner(obj)
File "F:\XTTS\xtts-finetune-webui\venv\lib\site-packages\pydantic_internal_generate_schema.py", line 908, in _generate_schema_inner
return self._annotated_schema(obj)
File "F:\XTTS\xtts-finetune-webui\venv\lib\site-packages\pydantic_internal_generate_schema.py", line 2028, in _annotated_schema
schema = self._apply_annotations(source_type, annotations)
File "F:\XTTS\xtts-finetune-webui\venv\lib\site-packages\pydantic_internal_generate_schema.py", line 2107, in _apply_annotations
schema = get_inner_schema(source_type)
File "F:\XTTS\xtts-finetune-webui\venv\lib\site-packages\pydantic_internal_schema_generation_shared.py", line 83, in call
schema = self._handler(source_type)
File "F:\XTTS\xtts-finetune-webui\venv\lib\site-packages\pydantic_internal_generate_schema.py", line 2189, in new_handler
schema = metadata_get_schema(source, get_inner_schema)
File "F:\XTTS\xtts-finetune-webui\venv\lib\site-packages\pydantic_internal_generate_schema.py", line 2185, in
lambda source, handler: handler(source)
File "F:\XTTS\xtts-finetune-webui\venv\lib\site-packages\pydantic_internal_schema_generation_shared.py", line 83, in call
schema = self._handler(source_type)
File "F:\XTTS\xtts-finetune-webui\venv\lib\site-packages\pydantic_internal_generate_schema.py", line 2088, in inner_handler
schema = self._generate_schema_inner(obj)
File "F:\XTTS\xtts-finetune-webui\venv\lib\site-packages\pydantic_internal_generate_schema.py", line 929, in _generate_schema_inner
return self.match_type(obj)
File "F:\XTTS\xtts-finetune-webui\venv\lib\site-packages\pydantic_internal_generate_schema.py", line 1029, in match_type
return self._match_generic_type(obj, origin)
File "F:\XTTS\xtts-finetune-webui\venv\lib\site-packages\pydantic_internal_generate_schema.py", line 1058, in _match_generic_type
return self._union_schema(obj)
File "F:\XTTS\xtts-finetune-webui\venv\lib\site-packages\pydantic_internal_generate_schema.py", line 1378, in _union_schema
choices.append(self.generate_schema(arg))
File "F:\XTTS\xtts-finetune-webui\venv\lib\site-packages\pydantic_internal_generate_schema.py", line 655, in generate_schema
schema = self._generate_schema_inner(obj)
File "F:\XTTS\xtts-finetune-webui\venv\lib\site-packages\pydantic_internal_generate_schema.py", line 929, in _generate_schema_inner
return self.match_type(obj)
File "F:\XTTS\xtts-finetune-webui\venv\lib\site-packages\pydantic_internal_generate_schema.py", line 1038, in match_type
return self._unknown_type_schema(obj)
File "F:\XTTS\xtts-finetune-webui\venv\lib\site-packages\pydantic_internal_generate_schema.py", line 558, in _unknown_type_schema
raise PydanticSchemaGenerationError(
pydantic.errors.PydanticSchemaGenerationError: Unable to generate pydantic-core schema for <class 'starlette.requests.Request'>. Set arbitrary_types_allowed=True in the model_config to ignore this error or implement __get_pydantic_core_schema__ on your type to fully support it.

If you got this error by calling handler() within __get_pydantic_core_schema__ then you likely need to call handler.generate_schema(<some type>) since we do not call __get_pydantic_core_schema__ on <some type> otherwise to avoid infinite recursion.

For further information visit https://errors.pydantic.dev/2.9/u/schema-for-unknown-type

@SushiLibanais
Copy link

I had a similar issue with both XTTS webui and XTTS webui finetuner. I managed to solve it for both of them, by going into xtts-webui\venv\Lib\site-packages\pydantic_internal and opening the _config.py file. In this file, I found arbitrary_types_allowed=False and changed it to arbitrary_types_allowed=True.
Hope this helps.

@totherow
Copy link

I had the same issues and this resolved it with one small correction. The path to the file is:
xtts-webui\venv\Lib\site-packages\pydantic\_internal

@coffeecodeconverter
Copy link

coffeecodeconverter commented Oct 3, 2024

**EDITED TO IMPROVE RESPONSE AND DETAIL **

I lost an entire day going in circles trying to install the finetuning, and believe I've worked out why, hopefully this helps others.
i first tried these forks, but both FAILED

https://github.com/aitrepreneur/xtts-finetune-webui
https://github.com/daswer123/xtts-webui?tab=readme-ov-file

the former was getting ASGI errors during install.
the latter installed, loaded the Web UI, but errored when creating datasets - After amending "arbitrary_types_allowed" to "True" in the "_internal/config.py" I could load datasets, but then got errors trying to train the model.
i trial and errored multiple versions of conflicting packages, even used ChatGPT to help, tried all sorts (lost a day!) but as soon as one thing was fixed it broke or conflicted with something else.

the main difference i found on these forks were the "requirements.txt" - as soon as i realised this, i began trying all other forks that specified different requirement.txt.

and pretty quickly stumbled on this - WORKING fork:

https://github.com/KataevEvgeniy/xtts-finetune-webui

the "requirements.txt" - contained these:

faster_whisper==1.0.2
gradio==4.13.0
spacy==3.7.4
coqui-tts[languages] == 0.24.1

cutlet
fugashi[unidic-lite]

(FYI - the pydantic versions this ends up with are "pydantic-2.9.2." and "pydantic_core-2.23.4" - but neither need to be included in the requirements.txt, at least they didnt for me)

now, here's a CRUCIAL part no one seems to make clear.
when you download the source files, you don't have the "VENV" sub-folder yet, and that will later contain the config.py where you need to amend "arbitrary_types_allowed" to "True"

so, the steps should be:

  1. download the source files, and unzip to an install directory of your choice

  2. (optional step, but might affect some users) grant the "users" group, or "everyone" read, write, and modify (or full control if you want) to the install directory you chose.

  3. Run the install.bat in the root directory - this will install the "VENV" (among other things) wait for it to complete, IGNORE any errors (if any) just for the moment.

  4. once finished, navigate to "xtts-webui\venv\Lib\site-packages\pydantic_internal\config.py" and amend "arbitrary_types_allowed" to "True" - save and close "config.py" (for clarity, this fixes errors when creating datasets before training a model)

  5. go back and re-run the install.bat a 2nd time (I've had it where it previously errors due to a missing package, but on subsequent runs manages to find it and overcome the error) no harm will be done, at worst case it just reinstalls everything over the top again, or fills in any gaps.

  6. hopefully you get no errors this time around, and it will either automatically load the server for you, or you'll have to manually run the "start.bat" yourself.

so at this point, you should be able to:

  • load the Web UI with "start.bat"
  • upload a voice clip (I've had previous attempts error at this point - MUST be at least 2mins in length! otherwise will error)
  • create a dataset from the voice clip (I've had it error here before too, but this is the "arbitrary_types_allowed" to "True" bit)

you MIGHT still run into errors when trying to train the model....
firstly, this could be due to "OutOfMemory" similar to this error:

RuntimeError: CUDA out of memory. Tried to allocate 20.00 MiB (GPU 0; 4.00 GiB total capacity; 2.61 GiB already allocated; 0 bytes free; 2.86 GiB reserved in total by PyTorch)

i was getting this on an 8GB laptop 4060 RTX card, with 16GB of system RAM.
the problem is the default settings for the driver, restricting the GPU to only using its VRAM, and 8GB wasn't enough.
NVidia drivers need to be on version 531 or higher to make use of a setting called "CUDA - System Fallback Policy" that lets its use system RAM in addition to VRAM if it runs out.
if you're driver supports this feature (my NVidia driver version was 555) just to go "NVidia control panel > 3d Settings > Manage 3d Settings > Global settings (tab) > CUDA - system fallback policy" and set it to "Prefer System Fallback"
this will hopefully solve the OutOfMemory issue during training.

the 2nd problem you might come across, especially if you had at least 1 x failed attempt to train before, is a "Permission denied" error when the XTTS wants to delete the "run" folder from the previous training.
even with full permissions, it fails to delete the folder and aborts the rest of the task.
if thats the case, you must delete the run folder yourself to overcome it.
the run folder will be stored here:

"xtts-webui\finetune_models\run"

delete that, then retry training your model.
fingers crossed, it will start working.

for your first run, you might want to keep:

  • batch size = 2 (lowest possible)
  • Grad Accumulation Steps = 2 (lowest possible)
  • Epochs = 1 (JUST for first run, ONLY to see if it will complete!, if so, then bump this back to a minimum of 6, the more the better your model will become, but each Epoch writes and re-writes about 5GB to your disk, so if you left this at 6 you're doing loads of unnecessary writes, waiting longer to check it, and have no idea about its quality - leaving epochs = 1 on first run only just ensures you're not getting errors)

once you've managed to finish your training, do the "optimize model" step to quantize it to a much more manageable size.
you can then use that model wherever you like.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants