🐛 Bug
f8b795f moved metrics.py from \fairseq to \fairseq\logging. This means that the imports in 35 files are broken because they still use from fairseq import metrics. However, it does not necessarily fail if you are running the import from within the fairseq directory.
To Reproduce
Steps to reproduce the behavior:
- From outsite the fairseq directory, run cmd
python -c 'from fairseq import metrics'
- See error:
Traceback (most recent call last):
File "<string>", line 1, in <module>
ImportError: cannot import name 'metrics' from 'fairseq' (unknown location)
I first noticed this issue when trying to run step on the example from https://github.com/microsoft/unilm/tree/master/deltalm which uses fairseq:
- Run the following from the deltalm directory:
bash examples/binary_iwslt14.sh \
/tmp/iwslt14/iwslt14.tokenized.de-en \
/tmp/iwslt14/iwslt14.spm \
/path/to/checkpoint/spm.model
- See error:
\Traceback (most recent call last):
File "/Users/franz/src/unilm/deltalm/preprocess.py", line 1, in <module>
import deltalm
File "/Users/franz/src/unilm/deltalm/deltalm/__init__.py", line 1, in <module>
import deltalm.models
File "/Users/franz/src/unilm/deltalm/deltalm/models/__init__.py", line 5, in <module>
from fairseq.models import MODEL_REGISTRY, ARCH_MODEL_INV_REGISTRY
File "/Users/franz/src/unilm/deltalm/fairseq/fairseq/models/__init__.py", line 236, in <module>
import_models(models_dir, "fairseq.models")
File "/Users/franz/src/unilm/deltalm/fairseq/fairseq/models/__init__.py", line 218, in import_models
importlib.import_module(namespace + "." + model_name)
File "/Users/franz/opt/anaconda3/lib/python3.9/importlib/__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "/Users/franz/src/unilm/deltalm/fairseq/fairseq/models/speech_to_text/__init__.py", line 9, in <module>
from .xm_transformer import * # noqa
File "/Users/franz/src/unilm/deltalm/fairseq/fairseq/models/speech_to_text/xm_transformer.py", line 15, in <module>
from fairseq.models.wav2vec import Wav2VecEncoder
File "/Users/franz/src/unilm/deltalm/fairseq/fairseq/models/wav2vec/__init__.py", line 6, in <module>
from .wav2vec import * # noqa
File "/Users/franz/src/unilm/deltalm/fairseq/fairseq/models/wav2vec/wav2vec.py", line 25, in <module>
from fairseq.tasks import FairseqTask
File "/Users/franz/src/unilm/deltalm/fairseq/fairseq/tasks/__init__.py", line 15, in <module>
from .fairseq_task import FairseqTask, LegacyFairseqTask # noqa
File "/Users/franz/src/unilm/deltalm/fairseq/fairseq/tasks/fairseq_task.py", line 13, in <module>
from fairseq.logging import metrics, search, tokenizer, utils
ImportError: cannot import name 'search' from 'fairseq.logging' (/Users/franz/src/unilm/deltalm/fairseq/fairseq/logging/__init__.py)
(base) franz@student-net-ox-dock-1-a-415 deltalm % bash examples/binary_iwslt14.sh \
/tmp/iwslt14/iwslt14.tokenized.de-en \
/tmp/iwslt14/iwslt14.spm \
/path/to/checkpoint/spm.model
Code sample
from fairseq import metrics
Expected behavior
Import should just work.
Environment
- fairseq Version (e.g., 1.0 or main): 1.0 or main
- OS (e.g., Linux): macOS Monterey 12.6
- How you installed fairseq (
pip, source): pip install --editable fairseq/
- Python version: 3.9
- Any other relevant information: weirdly, when installing
tensorboardX and running from within fairseq directory, the first set of repro steps does not reproduce the issue (the second one still does).
Additional context
Files with faulty imports:
./tests/test_metrics.py:9:from fairseq import metrics
./fairseq/model_parallel/criterions/vocab_parallel_cross_entropy.py:8:from fairseq import metrics, utils
./fairseq/criterions/fairseq_criterion.py:9:from fairseq import metrics, utils
./fairseq/criterions/cross_entropy.py:10:from fairseq import metrics, utils
./fairseq/criterions/fastspeech2_loss.py:14:from fairseq import metrics, utils
./fairseq/criterions/label_smoothed_cross_entropy_with_rdrop.py:11:from fairseq import metrics, utils
./fairseq/criterions/ctc.py:16:from fairseq import metrics, utils
./fairseq/criterions/adaptive_loss.py:10:from fairseq import metrics, utils
./fairseq/criterions/model_criterion.py:12:from fairseq import metrics, utils
./fairseq/criterions/wav2vec_criterion.py:12:from fairseq import metrics, utils
./fairseq/criterions/label_smoothed_cross_entropy_with_ctc.py:12:from fairseq import metrics, utils
./fairseq/criterions/legacy_masked_lm.py:10:from fairseq import metrics, utils
./fairseq/criterions/nat_loss.py:10:from fairseq import metrics, utils
./fairseq/criterions/label_smoothed_cross_entropy_latency_augmented.py:8:from fairseq import metrics, utils
./fairseq/criterions/label_smoothed_cross_entropy.py:12:from fairseq import metrics, utils
./fairseq/criterions/tacotron2_loss.py:17:from fairseq import metrics, utils
./fairseq/criterions/hubert_criterion.py:13:from fairseq import metrics, utils
./fairseq/criterions/speech_ulm_criterion.py:10:from fairseq import metrics
./fairseq/criterions/sentence_prediction.py:12:from fairseq import metrics
./fairseq/criterions/label_smoothed_cross_entropy_with_alignment.py:8:from fairseq import metrics, utils
./fairseq/criterions/speech_to_speech_criterion.py:12:from fairseq import metrics, utils
./fairseq/criterions/masked_lm.py:11:from fairseq import metrics, modules, utils
./fairseq/criterions/sentence_ranking.py:10:from fairseq import metrics, utils
./fairseq/tasks/fairseq_task.py
./fairseq/tasks/multilingual_translation.py
./fairseq/tasks/online_backtranslation.py
./fairseq/tasks/translation.py
./examples/translation_moe/translation_moe_src/translation_moe.py:10:from fairseq import metrics, utils
./examples/adaptive_span/adaptive_span_loss.py:10:from fairseq import metrics, utils
./examples/MMPT/mmpt/losses/fairseqmmloss.py:11:from fairseq import metrics
./examples/rxf/rxf_src/label_smoothed_cross_entropy_r3f.py:10:from fairseq import metrics, utils
./examples/speech_text_joint_to_text/criterions/text_guide_cross_entropy_acc.py:11:from fairseq import metrics, utils
./examples/speech_text_joint_to_text/criterions/multi_modality_compound.py:8:from fairseq import metrics, utils
./examples/discriminative_reranking_nmt/tasks/discriminative_reranking_task.py:15:from fairseq import metrics
./examples/discriminative_reranking_nmt/criterions/discriminative_reranking_criterion.py:12:from fairseq import metrics, utils
🐛 Bug
f8b795f moved
metrics.pyfrom\fairseqto\fairseq\logging. This means that the imports in 35 files are broken because they still usefrom fairseq import metrics. However, it does not necessarily fail if you are running the import from within the fairseq directory.To Reproduce
Steps to reproduce the behavior:
python -c 'from fairseq import metrics'I first noticed this issue when trying to run step on the example from https://github.com/microsoft/unilm/tree/master/deltalm which uses fairseq:
Code sample
Expected behavior
Import should just work.
Environment
pip, source):pip install --editable fairseq/tensorboardXand running from within fairseq directory, the first set of repro steps does not reproduce the issue (the second one still does).Additional context
Files with faulty imports: