daswer123 / xtts-finetune-webui

Slightly improved official version for finetune xtts
230 stars 80 forks source link

ASGI Exception Application #53

Closed az1fr3 closed 2 months ago

az1fr3 commented 2 months ago

ERROR: Exception in ASGI application Traceback (most recent call last): File "D:\IA\OVoice\xtts-finetune-webui\venv\Lib\site-packages\pydantic\type_adapter.py", line 279, in _init_core_attrs self._core_schema = _getattr_no_parents(self._type, 'pydantic_core_schema') ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\IA\OVoice\xtts-finetune-webui\venv\Lib\site-packages\pydantic\type_adapter.py", line 121, 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 "D:\IA\OVoice\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 "D:\IA\OVoice\xtts-finetune-webui\venv\Lib\site-packages\uvicorn\middleware\proxy_headers.py", line 70, in call return await self.app(scope, receive, send) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\IA\OVoice\xtts-finetune-webui\venv\Lib\site-packages\fastapi\applications.py", line 1054, in call await super().call(scope, receive, send) File "D:\IA\OVoice\xtts-finetune-webui\venv\Lib\site-packages\starlette\applications.py", line 113, in call await self.middleware_stack(scope, receive, send) File "D:\IA\OVoice\xtts-finetune-webui\venv\Lib\site-packages\starlette\middleware\errors.py", line 187, in call raise exc File "D:\IA\OVoice\xtts-finetune-webui\venv\Lib\site-packages\starlette\middleware\errors.py", line 165, in call await self.app(scope, receive, _send) File "D:\IA\OVoice\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 "D:\IA\OVoice\xtts-finetune-webui\venv\Lib\site-packages\starlette\middleware\cors.py", line 144, in simple_response await self.app(scope, receive, send) File "D:\IA\OVoice\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 "D:\IA\OVoice\xtts-finetune-webui\venv\Lib\site-packages\starlette_exception_handler.py", line 62, in wrapped_app raise exc File "D:\IA\OVoice\xtts-finetune-webui\venv\Lib\site-packages\starlette_exception_handler.py", line 51, in wrapped_app await app(scope, receive, sender) File "D:\IA\OVoice\xtts-finetune-webui\venv\Lib\site-packages\starlette\routing.py", line 715, in call await self.middleware_stack(scope, receive, send) File "D:\IA\OVoice\xtts-finetune-webui\venv\Lib\site-packages\starlette\routing.py", line 735, in app await route.handle(scope, receive, send) File "D:\IA\OVoice\xtts-finetune-webui\venv\Lib\site-packages\starlette\routing.py", line 288, in handle await self.app(scope, receive, send) File "D:\IA\OVoice\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 "D:\IA\OVoice\xtts-finetune-webui\venv\Lib\site-packages\starlette_exception_handler.py", line 62, in wrapped_app raise exc File "D:\IA\OVoice\xtts-finetune-webui\venv\Lib\site-packages\starlette_exception_handler.py", line 51, in wrapped_app await app(scope, receive, sender) File "D:\IA\OVoice\xtts-finetune-webui\venv\Lib\site-packages\starlette\routing.py", line 73, in app response = await f(request) ^^^^^^^^^^^^^^^^ File "D:\IA\OVoice\xtts-finetune-webui\venv\Lib\site-packages\fastapi\routing.py", line 291, in app solved_result = await solve_dependencies( ^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\IA\OVoice\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 "D:\IA\OVoice\xtts-finetune-webui\venv\Lib\site-packages\fastapi\dependencies\utils.py", line 810, in request_body_to_args fields_to_extract = get_model_fields(firstfield.type) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\IA\OVoice\xtts-finetune-webui\venv\Lib\site-packages\fastapi_compat.py", line 283, in get_model_fields return [ ^ File "D:\IA\OVoice\xtts-finetune-webui\venv\Lib\site-packages\fastapi_compat.py", line 284, in ModelField(field_info=field_info, name=name) File "", line 6, in init File "D:\IA\OVoice\xtts-finetune-webui\venv\Lib\site-packages\fastapi_compat.py", line 109, in post_init__ self._type_adapter: TypeAdapter[Any] = TypeAdapter( ^^^^^^^^^^^^ File "D:\IA\OVoice\xtts-finetune-webui\venv\Lib\site-packages\pydantic\type_adapter.py", line 266, in init self._init_core_attrs(rebuild_mocks=False) File "D:\IA\OVoice\xtts-finetune-webui\venv\Lib\site-packages\pydantic\type_adapter.py", line 144, in wrapped return func(self, *args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\IA\OVoice\xtts-finetune-webui\venv\Lib\site-packages\pydantic\type_adapter.py", line 286, in _init_core_attrs self._core_schema = _get_schema(self._type, config_wrapper, parent_depth=self._parent_depth) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\IA\OVoice\xtts-finetune-webui\venv\Lib\site-packages\pydantic\type_adapter.py", line 104, in _get_schema schema = gen.generateschema(type) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\IA\OVoice\xtts-finetune-webui\venv\Lib\site-packages\pydantic_internal_generate_schema.py", line 655, in generate_schema schema = self._generate_schema_inner(obj) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\IA\OVoice\xtts-finetune-webui\venv\Lib\site-packages\pydantic_internal_generate_schema.py", line 908, in _generate_schema_inner return self._annotated_schema(obj) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\IA\OVoice\xtts-finetune-webui\venv\Lib\site-packages\pydantic_internal_generate_schema.py", line 2025, in _annotated_schema schema = self._apply_annotations(source_type, annotations) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\IA\OVoice\xtts-finetune-webui\venv\Lib\site-packages\pydantic_internal_generate_schema.py", line 2104, in _apply_annotations schema = get_inner_schema(source_type) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\IA\OVoice\xtts-finetune-webui\venv\Lib\site-packages\pydantic_internal_schema_generation_shared.py", line 83, in call schema = self._handler(source_type) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\IA\OVoice\xtts-finetune-webui\venv\Lib\site-packages\pydantic_internal_generate_schema.py", line 2186, in new_handler schema = metadata_get_schema(source, get_inner_schema) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\IA\OVoice\xtts-finetune-webui\venv\Lib\site-packages\pydantic_internal_generate_schema.py", line 2182, in lambda source, handler: handler(source) ^^^^^^^^^^^^^^^ File "D:\IA\OVoice\xtts-finetune-webui\venv\Lib\site-packages\pydantic_internal_schema_generation_shared.py", line 83, in call schema = self._handler(source_type) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\IA\OVoice\xtts-finetune-webui\venv\Lib\site-packages\pydantic_internal_generate_schema.py", line 2085, in inner_handler schema = self._generate_schema_inner(obj) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\IA\OVoice\xtts-finetune-webui\venv\Lib\site-packages\pydantic_internal_generate_schema.py", line 929, in _generate_schema_inner return self.match_type(obj) ^^^^^^^^^^^^^^^^^^^^ File "D:\IA\OVoice\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 "D:\IA\OVoice\xtts-finetune-webui\venv\Lib\site-packages\pydantic_internal_generate_schema.py", line 1058, in _match_generic_type return self._union_schema(obj) ^^^^^^^^^^^^^^^^^^^^^^^ File "D:\IA\OVoice\xtts-finetune-webui\venv\Lib\site-packages\pydantic_internal_generate_schema.py", line 1378, in _union_schema choices.append(self.generate_schema(arg)) ^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\IA\OVoice\xtts-finetune-webui\venv\Lib\site-packages\pydantic_internal_generate_schema.py", line 655, in generate_schema schema = self._generate_schema_inner(obj) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\IA\OVoice\xtts-finetune-webui\venv\Lib\site-packages\pydantic_internal_generate_schema.py", line 929, in _generate_schema_inner return self.match_type(obj) ^^^^^^^^^^^^^^^^^^^^ File "D:\IA\OVoice\xtts-finetune-webui\venv\Lib\site-packages\pydantic_internal_generate_schema.py", line 1038, in match_type return self._unknown_type_schema(obj) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\IA\OVoice\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

dotnetprofessional commented 2 months ago

+1 on this

rgsearcy commented 2 months ago

based on: https://github.com/gradio-app/gradio/issues/9278 I did the following commands:

This seems to have fixed the issue for me, for now.

az1fr3 commented 2 months ago

@rgsearcy Thks! Works like a charm now!

IVIaV commented 1 month ago

Works for me, thx :D

basketball-player commented 1 month ago

based on: gradio-app/gradio#9278 I did the following commands:

  • pip install --upgrade pydantic==2.8.0
  • pip install --upgrade fastapi==0.112.4
  • if you receive this error: Library cublas64_12.dll is not found or cannot be loaded you may need to go a pip upgrade for gradio to make sure you now have the proper dll for pydantic/fastapi.

This seems to have fixed the issue for me, for now.

Works, thank u <3

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.