Dataclass error while importing Fairseq in Python 3.11
usaraj opened this issue Β· comments
π Bug
FaValueError: mutable default <class 'fairseq.dataclass.configs.CommonConfig'> for field common is not allowed: use default_factory
To Reproduce
Steps to reproduce the behavior (always include the command you ran):
1, pip install fairseq==0.12.2
2. from fairseq import *
Trace:
Traceback (most recent call last):
File "", line 1, in
File "/home/a1bharat/fairseq/fairseq/init.py", line 20, in
from fairseq.distributed import utils as distributed_utils
File "/home/a1bharat/fairseq/fairseq/distributed/init.py", line 7, in
from .legacy_distributed_data_parallel import LegacyDistributedDataParallel
File "/home/a1bharat/fairseq/fairseq/distributed/legacy_distributed_data_parallel.py", line 23, in
from fairseq.distributed import utils
File "/home/a1bharat/fairseq/fairseq/distributed/utils.py", line 22, in
from fairseq.dataclass.configs import DistributedTrainingConfig, FairseqConfig
File "/home/a1bharat/fairseq/fairseq/dataclass/init.py", line 6, in
from .configs import FairseqDataclass
File "/home/a1bharat/fairseq/fairseq/dataclass/configs.py", line 906, in
@DataClass
^^^^^^^^^
File "/usr/lib/python3.11/dataclasses.py", line 1220, in dataclass
return wrap(cls)
^^^^^^^^^
File "/usr/lib/python3.11/dataclasses.py", line 1210, in wrap
return _process_class(cls, init, repr, eq, order, unsafe_hash,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/dataclasses.py", line 958, in _process_class
cls_fields.append(_get_field(cls, name, type, kw_only))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/dataclasses.py", line 815, in _get_field
raise ValueError(f'mutable default {type(f.default)} for field '
ValueError: mutable default <class 'fairseq.dataclass.configs.CommonConfig'> for field common is not allowed: use default_factory
Code sample
Environment
- fairseq Version ( main):
- PyTorch Version (e.g., 1.0): 1.13.1
- OS (e.g., Linux): Ubuntu
- How you installed fairseq (
pip
, source): pip install successful - Build command you used (if compiling from source): git clone followed by pip install ./
- Python version: 3.11
- CUDA/cuDNN version: 11.6
- GPU models and configuration: NVIDIA
- Any other relevant information:
Additional context
Is Pytorch supporting python 3.11?
Hi, is there any progress on this issue?
I created another conda environment with python 3.9, and didn't face with this error.
@EmreOzkose Yes, Pytorch2.0 supports Python 3.11
fairseq/fairseq/dataclass/configs.py
Line 1129 in 176cd93
I assume it wants something like this:
@dataclass
class FairseqConfig(FairseqDataclass):
- common: CommonConfig = CommonConfig()
+ common: CommonConfig = field(default_factory=CommonConfig)
same problem
Experiencing this with 3.11.2.
I am also facing the same issue. any way to resolve this?
@Muskan19577 I had to move back to python 3.9
getting the same ValeError iwth Python 3.11.4. Any suggestions?
The official fix is too slow, I made a fix version myself.
You can install it using the following command.
v0.12.3.
I conducted a simple test and found no abnormalities.
pip install git+https://github.com/One-sixth/fairseq.git
This issue still exists on the official release. I'm using Python 3.11.
This issue still exists on the official release. I'm using Python 3.11.
Same error with Python 3.11.5
Same error with Python 3.11
Same error with Python 3.11.6 π₯
The changes to dataclasses are an official change that was introduced in python 3.11, meaning all 3.11.x and higher won't work. This will need to get changed in fairseq's codebase, and isnt dependent on the exact python 3.11.x version
Python 3.11.4 (main, Jul 5 2023, 14:15:25) [GCC 11.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import fairseq
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/users/nus/zyh/anaconda3/lib/python3.11/site-packages/fairseq/__init__.py", line 20, in <module>
from fairseq.distributed import utils as distributed_utils
File "/home/users/nus/zyh/anaconda3/lib/python3.11/site-packages/fairseq/distributed/__init__.py", line 7, in <module>
from .fully_sharded_data_parallel import (
File "/home/users/nus/zyh/anaconda3/lib/python3.11/site-packages/fairseq/distributed/fully_sharded_data_parallel.py", line 10, in <module>
from fairseq.dataclass.configs import DistributedTrainingConfig
File "/home/users/nus/zyh/anaconda3/lib/python3.11/site-packages/fairseq/dataclass/__init__.py", line 6, in <module>
from .configs import FairseqDataclass
File "/home/users/nus/zyh/anaconda3/lib/python3.11/site-packages/fairseq/dataclass/configs.py", line 1104, in <module>
@dataclass
^^^^^^^^^
File "/home/users/nus/zyh/anaconda3/lib/python3.11/dataclasses.py", line 1230, in dataclass
return wrap(cls)
^^^^^^^^^
File "/home/users/nus/zyh/anaconda3/lib/python3.11/dataclasses.py", line 1220, in wrap
return _process_class(cls, init, repr, eq, order, unsafe_hash,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/users/nus/zyh/anaconda3/lib/python3.11/dataclasses.py", line 958, in _process_class
cls_fields.append(_get_field(cls, name, type, kw_only))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/users/nus/zyh/anaconda3/lib/python3.11/dataclasses.py", line 815, in _get_field
raise ValueError(f'mutable default {type(f.default)} for field '
ValueError: mutable default <class 'fairseq.dataclass.configs.CommonConfig'> for field common is not allowed: use default_factory
I'm confused. Why is this still not fixed? Will it break backwards compatibility?
I have encountered these problems, and here is my solution:
Windows11 environment
pip install git+https://github.com/liyaodev/fairseq.git
or, download fairseq-0.12.3.1-cp311-cp311-linux_x86_64.whl
pip install./fairseq-0.12.3.1-cp311-cp311-linux_x86_64.whl
WSL2(Ubuntu22.04) environment(my local use)
pip install git+https://github.com/liyaodev/fairseq.git
or, download fairseq-0.12.3.1-cp311-cp311-linux_x86_64.whl
pip install./fairseq-0.12.3.1-cp311-cp311-linux_x86_64.whl
there's a little tip, best use hydra-core==1.3.2 omegaconf==2.3.0
Alternately, you can use my fork of fairseq which supports Python 3.11
, Knowledge Distillation, Adapters a few more interesting fixes.
!!! this issue needs attention.
Can't use python 3.11.2,
ValueError: mutable default <class 'fairseq.dataclass.configs.CommonConfig'> for field common is not allowed: use default_factory
This same error is being output with Python 3.12.0.
Figured since it's April now, I'd throw in my two cents. Still not working.
fairseq/fairseq/dataclass/configs.py
Line 1129 in 176cd93
I assume it wants something like this:
@dataclass class FairseqConfig(FairseqDataclass): - common: CommonConfig = CommonConfig() + common: CommonConfig = field(default_factory=CommonConfig)
Thanks, it work for me. I change all the error place like your suggestion.
@liyaodev, could you please tell me what the exact name of the package you mentioned would be for Windows?
@liyaodev, could you please tell me what the exact name of the package you mentioned would be for Windows?
Windows 11 Professional
Not working in CentOS, Python 3.11
So uh, still not working in Python 3.12 π Compile from source fixes tho
problem still up and critical
I have encountered these problems, and here is my solution: Windows11 environment
pip install git+https://github.com/liyaodev/fairseq.gitor, download fairseq-0.12.3.1-cp311-cp311-linux_x86_64.whl
pip install./fairseq-0.12.3.1-cp311-cp311-linux_x86_64.whlWSL2(Ubuntu22.04) environment(my local use)
pip install git+https://github.com/liyaodev/fairseq.gitor, download fairseq-0.12.3.1-cp311-cp311-linux_x86_64.whl
pip install./fairseq-0.12.3.1-cp311-cp311-linux_x86_64.whlthere's a little tip, best use
hydra-core==1.3.2 omegaconf==2.3.0
does this still work?
This is what I get.
Traceback (most recent call last):
File "C:\Users\neph\rvc-tts-webui\app.py", line 12, in <module>
from fairseq import checkpoint_utils
File "C:\Users\neph\rvc-tts-webui\venv\Lib\site-packages\fairseq\__init__.py", line 20, in <module>
from fairseq.distributed import utils as distributed_utils
File "C:\Users\neph\rvc-tts-webui\venv\Lib\site-packages\fairseq\distributed\__init__.py", line 7, in <module>
from .fully_sharded_data_parallel import (
File "C:\Users\neph\rvc-tts-webui\venv\Lib\site-packages\fairseq\distributed\fully_sharded_data_parallel.py", line 10, in <module>
from fairseq.dataclass.configs import DistributedTrainingConfig
File "C:\Users\neph\rvc-tts-webui\venv\Lib\site-packages\fairseq\dataclass\__init__.py", line 6, in <module>
from .configs import FairseqDataclass
File "C:\Users\neph\rvc-tts-webui\venv\Lib\site-packages\fairseq\dataclass\configs.py", line 1104, in <module>
@dataclass
^^^^^^^^^
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.12_3.12.1008.0_x64__qbz5n2kfra8p0\Lib\dataclasses.py", line 1268, in dataclass
return wrap(cls)
^^^^^^^^^
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.12_3.12.1008.0_x64__qbz5n2kfra8p0\Lib\dataclasses.py", line 1258, in wrap
return _process_class(cls, init, repr, eq, order, unsafe_hash,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.12_3.12.1008.0_x64__qbz5n2kfra8p0\Lib\dataclasses.py", line 994, in _process_class
cls_fields.append(_get_field(cls, name, type, kw_only))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.12_3.12.1008.0_x64__qbz5n2kfra8p0\Lib\dataclasses.py", line 852, in _get_field
raise ValueError(f'mutable default {type(f.default)} for field '
ValueError: mutable default <class 'fairseq.dataclass.configs.CommonConfig'> for field common is not allowed: use default_factory
(venv) PS C:\Users\neph\rvc-tts-webui> pip install git+https://github.com/liyaodev/fairseq.git
Collecting git+https://github.com/liyaodev/fairseq.git
Cloning https://github.com/liyaodev/fairseq.git to c:\users\neph\appdata\local\temp\pip-req-build-ktcozen9
Running command git clone --filter=blob:none --quiet https://github.com/liyaodev/fairseq.git 'C:\Users\neph\AppData\Local\Temp\pip-req-build-ktcozen9'
Resolved https://github.com/liyaodev/fairseq.git to commit b963eac7a04c539ad59fb1e23277f2ff7ee29e74
Running command git submodule update --init --recursive -q
Installing build dependencies ... done
Getting requirements to build wheel ... error
error: subprocess-exited-with-error
Γ Getting requirements to build wheel did not run successfully.
β exit code: 1
β°β> [18 lines of output]
Traceback (most recent call last):
File "C:\Users\neph\rvc-tts-webui\venv\Lib\site-packages\pip\_vendor\pyproject_hooks\_in_process\_in_process.py", line 353, in <module>
main()
File "C:\Users\neph\rvc-tts-webui\venv\Lib\site-packages\pip\_vendor\pyproject_hooks\_in_process\_in_process.py", line 335, in main
json_out['return_val'] = hook(**hook_input['kwargs'])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\neph\rvc-tts-webui\venv\Lib\site-packages\pip\_vendor\pyproject_hooks\_in_process\_in_process.py", line 118, in get_requires_for_build_wheel
return hook(config_settings)
^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\neph\AppData\Local\Temp\pip-build-env-1tdzldxr\overlay\Lib\site-packages\setuptools\build_meta.py", line 325, in get_requires_for_build_wheel
return self._get_build_requires(config_settings, requirements=['wheel'])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\neph\AppData\Local\Temp\pip-build-env-1tdzldxr\overlay\Lib\site-packages\setuptools\build_meta.py", line 295, in _get_build_requires
self.run_setup()
File "C:\Users\neph\AppData\Local\Temp\pip-build-env-1tdzldxr\overlay\Lib\site-packages\setuptools\build_meta.py", line 311, in run_setup
exec(code, locals())
File "<string>", line 246, in <module>
OSError: [WinError 1314] Dem Client fehlt ein erforderliches Recht: '..\\examples' -> 'fairseq\\examples'
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
error: subprocess-exited-with-error
Γ Getting requirements to build wheel did not run successfully.
β exit code: 1
β°β> See above for output.
note: This error originates from a subprocess, and is likely not a problem with pip.
This is my first answer on any forum, besides, my English is bad. Sorry, guys.
Somehow it worked.
- Run cmd as administrator(!) - (Running cmd as an administrator fixes the error [WinError 1314])
- Write this to the console:
git clone https://github.com/pytorch/fairseq
cd fairseq
pip install --editable ./
- Next, you may encounter the error "1 required argument is missing, containing only the keyword: 'recursive_guard'". You will need to change the Python version to 3.12.3 or lower. In version 3.12.4, this error will be displayed
I have encountered these problems, and here is my solution: Windows11 environment
pip install git+https://github.com/liyaodev/fairseq.gitor, download fairseq-0.12.3.1-cp311-cp311-linux_x86_64.whl
pip install./fairseq-0.12.3.1-cp311-cp311-linux_x86_64.whlWSL2(Ubuntu22.04) environment(my local use)
pip install git+https://github.com/liyaodev/fairseq.gitor, download fairseq-0.12.3.1-cp311-cp311-linux_x86_64.whl
pip install./fairseq-0.12.3.1-cp311-cp311-linux_x86_64.whlthere's a little tip, best use
hydra-core==1.3.2 omegaconf==2.3.0
does this still work?
This does not work for me on Windows 11. I am getting OSError: [WinError 126] The specified module could not be found. Error loading "C:\Users\Jacki\AppData\Local\Temp\pip-build-env-x3uaf2ep\overlay\Lib\site-packages\torch\lib\shm