wav2ec 训练心得

本文详述了使用Fairseq训练wav2ec模型的过程,包括数据准备、初始训练和模型微调中的问题及解决方案。核心问题在于预训练模型的误用、多GPU参数传递错误、对预训练模型理解不足等,通过调试和修改代码,最终成功运行了CTC Fine-tune任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

wav2ec 训练心得

本文记录了跑Fairseq的wav2ec的主要过程,希望对诸君有用。

基本结论

  1. 代码经过修改是可以跑起来的,这与2020年12月的尝试结果不同。
  2. “预训练"这个词具有歧义,Fairseq向导里给的预训练模型是经过finetune的模型而不是原始的audiopretraing的模型,直接使用将导致循环加载,无法使用,这是两次尝试失败的核心原因。
  3. 大厂的代码质量也是靠不住的。

以下是基本过程.

1. 预训练例子

1.1 数据准备

#原始命令
$ python examples/wav2vec/wav2vec_manifest.py /path/to/waves --dest /manifest/path --ext $ext --valid-percent $valid
#魔改之后可以使用模块的写法
python -m fairseq.examples.wav2vec.wav2vec_manifest /data/Corpus/BostenAI/BSTPlan0 --dest ~/Documents/Projects/Fairseq/Corpus/BSTPlan0 --ext wav --valid-percent 0.1

Tips 1:魔改支持模块

要使用这种模块模式的话,需要给wav2ec增加一个 _init_.py文件。由于官方向导是–editable 安装,需要卸载,去掉–editable 再装一次

#关于pip install --editable ./的作用是创建一个链接,这个技巧真好用,居然没有直接安装,而是进行连接
~/anaconda3/envs/lSrv09/lib/python3.9/site-packages/fairseq.egg-link
#内容是:
~/Documents/workspace/fairseq
.
#一个可以用的例子
python ~/Documents/workspace/fairseq/examples/wav2vec/wav2vec_manifest.py  \
/data/Corpus/BostenAI/BSTPlan0 \
--dest ~/Documents/Projects/Fairseq/Corpus/BSTPlan0 \
--ext wav --valid-percent 0.1

Tips 2 : 魔改支持多进程加载数据

很难想象,这个wav2vec_manifest居然是单进程的程序,这个忍不了,自己写了并行版本,但是发现硬盘是主要瓶颈,就不贴代码了,丑!
居然把HDD搞出坏道了!

1.2 初始训练

#安装之后有fairseq-hydra-train
fairseq-hydra-train \
    task.data=/data/Temp/SLR12/ \
    --config-dir ~/Documents/workspace/fairseq/examples/wav2vec/config/pretraining \
    --config-name d1 \
    --restore_file checkpoint_last.pt \
    --tensorboard_logdir outputs  --save_dir 

Tips 3: 断掉了也不用怕,可以继续训练

fairseq-hydra-train     task.data=/data/Temp/SLR12/  checkpoint.finetune_from_model=~/Documents/Projects/Fairseq/outputs/2021-03-03/18-48-53/checkpoints/checkpoint_last.pt  common.tensorboard_logdir=~/Documents/Projects/Fairseq/tensorboard  --config-dir ~/Documents/workspace/fairseq/examples/wav2vec/config/pretraining     --config-name d1

Notes 关键参数说明

  • 1.覆盖参数必须写在配置文件的前面;
  • 2.加载历史文件是checkpoint.finetune_from_model
  • 3.打开TensorBoard是 common.tensorboard_logdir

执行之后的结果:

2021-03-04 15:54:23 | INFO | fairseq.checkpoint_utils | loading pretrained model from ~/Documents/Projects/Fairseq/outputs/2021-03-03/18-48-53/checkpoints/checkpoint_last.pt: optimizer, lr scheduler, meters, dataloader will be reset
2021-03-04 15:55:03 | INFO | fairseq.trainer | loaded checkpoint ~/Documents/Projects/Fairseq/outputs/2021-03-03/18-48-53/checkpoints/checkpoint_last.pt (epoch 103 @ 0 updates)
2021-03-04 15:55:03 | INFO | fairseq.optim.adam | using FusedAdam
2021-03-04 15:55:04 | INFO | fairseq.trainer | loading train data for epoch 1
2021-03-04 15:55:04 | INFO | fairseq.data.audio.raw_audio_dataset | loaded 28219, skipped 24 samples
2021-03-04 15:55:04 | WARNING | fairseq.logging.progress_bar | tensorboard not found, please install with: pip install tensorboardX
2021-03-04 15:55:04 | INFO | fairseq.trainer | begin training epoch 1
2021-03-04 15:55:27 | INFO | fairseq.trainer | NOTE: overflow detected, setting loss scale to: 64.0
2021-03-04 15:55:40 | INFO | fairseq.trainer | NOTE: overflow detected, setting loss scale to: 32.0
2021-03-04 15:55:52 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值