fairseq-generate RuntimeError: Mask Type should be defined

AFL·2023년 7월 3일
0

fairseq-generate 를 사용할 때 아래와 같이 RuntimeError: Mask Type should be defined 에러가 떴다.

실행:

# test 
fairseq-generate fairseq_processed/ \
    --path fairseq_train/checkpoint_best.pt \
    --source-lang noise \
    --target-lang clean \
    --task translation \
    --batch-size 10

에러:

Traceback (most recent call last):
  File "/home/sujinkwon/anaconda3/envs/MThw1/bin/fairseq-generate", line 8, in <module>
    sys.exit(cli_main())
  File "/home/sujinkwon/anaconda3/envs/MThw1/lib/python3.10/site-packages/fairseq_cli/generate.py", line 413, in cli_main
    main(args)
  File "/home/sujinkwon/anaconda3/envs/MThw1/lib/python3.10/site-packages/fairseq_cli/generate.py", line 50, in main
    return _main(cfg, sys.stdout)
  File "/home/sujinkwon/anaconda3/envs/MThw1/lib/python3.10/site-packages/fairseq_cli/generate.py", line 201, in _main
    hypos = task.inference_step(
  File "/home/sujinkwon/anaconda3/envs/MThw1/lib/python3.10/site-packages/fairseq/tasks/fairseq_task.py", line 540, in inference_step
    return generator.generate(
  File "/home/sujinkwon/anaconda3/envs/MThw1/lib/python3.10/site-packages/torch/utils/_contextlib.py", line 115, in decorate_context
    return func(*args, **kwargs)
  File "/home/sujinkwon/anaconda3/envs/MThw1/lib/python3.10/site-packages/fairseq/sequence_generator.py", line 204, in generate
    return self._generate(sample, **kwargs)
  File "/home/sujinkwon/anaconda3/envs/MThw1/lib/python3.10/site-packages/fairseq/sequence_generator.py", line 274, in _generate
    encoder_outs = self.model.forward_encoder(net_input)
  File "/home/sujinkwon/anaconda3/envs/MThw1/lib/python3.10/site-packages/fairseq/sequence_generator.py", line 801, in forward_encoder
    return [model.encoder.forward_torchscript(net_input) for model in self.models]
  File "/home/sujinkwon/anaconda3/envs/MThw1/lib/python3.10/site-packages/fairseq/sequence_generator.py", line 801, in <listcomp>
    return [model.encoder.forward_torchscript(net_input) for model in self.models]
  File "/home/sujinkwon/anaconda3/envs/MThw1/lib/python3.10/site-packages/fairseq/models/fairseq_encoder.py", line 55, in forward_torchscript
    return self.forward_non_torchscript(net_input)
  File "/home/sujinkwon/anaconda3/envs/MThw1/lib/python3.10/site-packages/fairseq/models/fairseq_encoder.py", line 62, in forward_non_torchscript
    return self.forward(**encoder_input)
  File "/home/sujinkwon/anaconda3/envs/MThw1/lib/python3.10/site-packages/fairseq/models/transformer/transformer_encoder.py", line 165, in forward
    return self.forward_scriptable(
  File "/home/sujinkwon/anaconda3/envs/MThw1/lib/python3.10/site-packages/fairseq/models/transformer/transformer_encoder.py", line 294, in forward_scriptable
    lr = layer(x, encoder_padding_mask=encoder_padding_mask_out)
  File "/home/sujinkwon/anaconda3/envs/MThw1/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1501, in _call_impl
    return forward_call(*args, **kwargs)
  File "/home/sujinkwon/anaconda3/envs/MThw1/lib/python3.10/site-packages/fairseq/modules/transformer_layer.py", line 319, in forward
    output = torch._transformer_encoder_layer_fwd(
RuntimeError: Mask Type should be defined

이 에러는 버전 문제로 생긴 에러이다.
pytorch 버전을 1.12.1+cu116 으로 낮추고, fairseq 버전도 0.12.2 로 해주니 에러가 안나고 돌아갔다.

pip install torch==1.12.1+cu116 torchvision==0.13.1+cu116 torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cu116

pip install fairseq==0.12.2

[Reference]

https://github.com/facebookresearch/fairseq/issues/4899

profile
공부해서 남주자

0개의 댓글