Skip to content

contextual paraformer微调报错TypeError: object of type 'int' has no len() #2768

@wjyfelicity

Description

@wjyfelicity

我在用contextual-paraformer进行模型微调时,出现下面的报错,modelscope==1.29.1 funasr==1.3.0 ,用paraformer微调是没有问题的,但是用contextual-paraformer就会出现下面的错误,请问是怎么回事?
Error executing job with overrides: ['++model=iic/speech_paraformer-large-contextual_asr_nat-zh-cn-16k-common-vocab8404', '++train_data_set_list=/code/paraformer_common_asr/data/aishell/list/train.jsonl', '++valid_data_set_list=/code/paraformer_common_asr/data/aishell/list/val.jsonl', '++dataset=AudioDatasetHotword', '++dataset_conf.index_ds=IndexDSJsonl', '++dataset_conf.data_split_num=1', '++dataset_conf.batch_sampler=BatchSampler', '++dataset_conf.batch_size=6000', '++dataset_conf.sort_size=1024', '++dataset_conf.batch_type=token', '++dataset_conf.num_workers=4', '++train_conf.max_epoch=10', '++train_conf.log_interval=1', '++train_conf.resume=true', '++train_conf.validate_interval=2000', '++train_conf.save_checkpoint_interval=2000', '++train_conf.keep_nbest_models=20', '++train_conf.use_deepspeed=false', '++train_conf.deepspeed_config=/code/FunASR/examples/deepspeed_conf/ds_stage1.json', '++optim_conf.lr=0.0002', '++output_dir=/nasdata/speech/wangjianying/output/medical_contextual/']
Traceback (most recent call last):
File "/code/FunASR/funasr/bin/train_ds.py", line 244, in
main_hydra()
File "/root/miniconda3/envs/vila/lib/python3.10/site-packages/hydra/main.py", line 94, in decorated_main
_run_hydra(
File "/root/miniconda3/envs/vila/lib/python3.10/site-packages/hydra/_internal/utils.py", line 394, in _run_hydra
_run_app(
File "/root/miniconda3/envs/vila/lib/python3.10/site-packages/hydra/_internal/utils.py", line 457, in _run_app
run_and_report(
File "/root/miniconda3/envs/vila/lib/python3.10/site-packages/hydra/_internal/utils.py", line 223, in run_and_report
raise ex
File "/root/miniconda3/envs/vila/lib/python3.10/site-packages/hydra/_internal/utils.py", line 220, in run_and_report
return func()
File "/root/miniconda3/envs/vila/lib/python3.10/site-packages/hydra/_internal/utils.py", line 458, in
lambda: hydra.run(
File "/root/miniconda3/envs/vila/lib/python3.10/site-packages/hydra/_internal/hydra.py", line 132, in run
_ = ret.return_value
File "/root/miniconda3/envs/vila/lib/python3.10/site-packages/hydra/core/utils.py", line 260, in return_value
raise self._return_value
File "/root/miniconda3/envs/vila/lib/python3.10/site-packages/hydra/core/utils.py", line 186, in run_job
ret.return_value = task_function(task_cfg)
File "/code/FunASR/funasr/bin/train_ds.py", line 56, in main_hydra
main(**kwargs)
File "/code/FunASR/funasr/bin/train_ds.py", line 177, in main
trainer.train_epoch(
File "/code/FunASR/funasr/train_utils/trainer_ds.py", line 603, in train_epoch
self.forward_step(model, batch, loss_dict=loss_dict)
File "/code/FunASR/funasr/train_utils/trainer_ds.py", line 670, in forward_step
retval = model(**batch)
File "/root/miniconda3/envs/vila/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1501, in _call_impl
return forward_call(*args, **kwargs)
File "/root/miniconda3/envs/vila/lib/python3.10/site-packages/torch/nn/parallel/distributed.py", line 1156, in forward
output = self._run_ddp_forward(*inputs, **kwargs)
File "/root/miniconda3/envs/vila/lib/python3.10/site-packages/torch/nn/parallel/distributed.py", line 1110, in _run_ddp_forward
return module_to_run(*inputs[0], **kwargs[0]) # type: ignore[index]
File "/root/miniconda3/envs/vila/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1501, in _call_impl
return forward_call(*args, **kwargs)
File "/code/FunASR/funasr/models/contextual_paraformer/model.py", line 109, in forward
encoder_out, encoder_out_lens = self.encode(speech, speech_lengths)
File "/code/FunASR/funasr/models/paraformer/model.py", line 262, in encode
encoder_out, encoder_out_lens, _ = self.encoder(speech, speech_lengths)
File "/root/miniconda3/envs/vila/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1501, in _call_impl
return forward_call(*args, **kwargs)
File "/code/FunASR/funasr/models/sanm/encoder.py", line 377, in forward
masks = (~make_pad_mask(ilens)[:, None, :]).to(xs_pad.device)
File "/code/FunASR/funasr/models/transformer/utils/nets_utils.py", line 196, in make_pad_mask
bs = int(len(lengths))
TypeError: object of type 'int' has no len()

What's your environment?

  • OS (e.g., Linux):Linux
  • FunASR Version (e.g., 1.0.0):1.3.0
  • ModelScope Version (e.g., 1.11.0):1.29.1
  • PyTorch Version (e.g., 2.0.0):
  • How you installed funasr (pip, source):pip
  • Python version:
  • GPU (e.g., V100M32)
  • CUDA/cuDNN version (e.g., cuda11.7):
  • Docker version (e.g., funasr-runtime-sdk-cpu-0.4.1)
  • Any other relevant information:

Metadata

Metadata

Assignees

No one assigned

    Labels

    questionFurther information is requested

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions