daswer123 / xtts-finetune-webui

Slightly improved official version for finetune xtts
235 stars 83 forks source link

ERROR: Exception in ASGI application #57

Open Iagmon opened 2 months ago

Iagmon commented 2 months ago

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(firstfield.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.generateschema(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 commented 2 months ago

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 commented 1 month ago

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 commented 1 month ago

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:

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:

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.