espnet的安装
1.首先是需要换源:
https://www.cnblogs.com/Uriel-w/p/16387090.html
2.创建conda环境:
创建环境:
conda create -n espnet python=3.7.3
退出环境:
conda deactivate
删除环境:
# conda remove -n 环境名称 --all
conda remove -n tensorflow --all
3.激活环境:
conda activate espnet
4.创建目录,下载espnet到目录下:
mkdir espnet_work cd espnet_work git clone https://github.com/espnet/espnet.git
5.查看系统最高可以安装的CUDA版本:
nvidia-smi
6.进入tools路径下,将Makefile文件中默认下载pytorch版本改为当前系统匹配的版本:
cd espnet/tools/
vim Makefile
7.进入安装torch文件下将下载torch的源换为默认源:
vim installers/install_torch.sh
8.tools路径下跑she脚本setup_anaconda.sh设置环境anaconda,其中包括编译器:bash:;编译文件:setup_anaconda.sh;输出路径: /home/anaconda3/ ;环境名:espnet;python版本:3.7
bash setup_anaconda.sh /home/anaconda3/ espnet 3.7
9.tools路径下使用make命令去编译Makefile文件,去下载适配的包,其中make -j 32 表示并行运行,提高速度(注意:这里可能需要反复多次运行,确保所有包都安装成功):
make -j 32
当然如果前面第6步对Makefile对版本的选择也不用去改文件,可以通过make命令时给变量赋值就好:
make -j 32 TH_VERSION=1.8.0
跑完make命令后,如果需要一些额外的包,比如longformer之类的,也可以直接跑shell脚本去安装:
10.跑两个demo测试⼀下
看输出的结果 有cer这些⽇志反馈则表明成功了
cd ../egs2/yesno/asr1 bash run.sh
cd egs2/an4/asr1 bash run.sh
11.可能会出现的报错:
当发现去跑aishell等语料库时,首先跑是数据的处理部分:
CUDA_VISIBLE_DEVICES=0 bash run.sh --stop_stage 5
在这个过程中报告kenlm未安装错误,此时需要到tools路径下,跑命令:
bash installers/install_kenlm.sh
下载成功后,重复数据处理部分,会出现如下错误:
ImportError: libffi.so.7: cannot open shared object file: No such file or directory
这是由于创建了新的虚拟环境,环境中的python版本被强制更新,导致找不到 libffi.so.7 文件,进入文件位置:
/home/anaconda3/envs/espnet/lib
这里给出一个可行方案:将所缺失文件设置成一个软连接,连接到该目录下同一性质文件,这里报错是缺失libffi.so.7文件,但是该目录下存在libffi.so.6文件,故将其软连接于libffi.so.6文件上,问题得到解决。
ln -s libffi.so.6 libffi.so.7
12.实现单机多GPU分布式并行训练:
将asr.sh文件的ngpu=1改为ngpu=n(n表示并行训练的GPU数量)
最后训练指令为:
CUDA_VISIBLE_DEVICES=0,1,2 nohup bash run.sh --stage 9