Docker
在Docker中执行
要在Docker容器内工作,请执行docker目录中的run.sh脚本。该脚本将下载所需的镜像并构建一个容器,用于执行由以下GPU、ASR示例和外部目录信息指定的主程序,具体如下:
$ cd docker
$ ./run.sh --docker-gpu 0 --docker-egs chime4/asr1 --docker-folders /export/corpora4/CHiME4/CHiME3 --dlayers 1 --ngpu 1可选地,您可以使用参数--docker-cuda来设置CUDA版本(默认版本设置为CUDA=9.1)。如果将此参数留空,docker容器将基于您计算机上安装的CUDA版本构建。默认情况下,所有基于GPU的镜像都使用NCCL v2和CUDNN v7构建。docker配置所需的参数都带有"--docker"前缀(例如--docker-gpu、--docker-egs、--docker-folders)。run.sh接受所有常规的ESPnet参数,这些参数必须位于docker参数之前。所有docker容器都使用与您登录账户相同的用户身份执行。如果要以root权限运行docker,请在命令行中添加标志--is-root。此外,您可以使用--docker-env传递任何环境变量(例如--docker-env "foo=path")
ESPnet 2 配方集
要使用ESPnet 2的配方,您需要在命令行中添加--is-egs2标志:
$ cd docker
$ ./run.sh --docker-gpu 0 --is-egs2 --docker-egs an4/asr1 --ngpu1记得在要传递给配方run.sh文件的参数前添加标志。
使用基于GPU的容器
你可以使用--docker-cmd运行egs文件夹中实现的任何bash脚本:
$ cd docker
$ ./run.sh --docker-gpu 0 --docker-egs chime4/asr1 --docker-cmd foo.sh --arg_1 <arg_1> --arg_2 <arg_2>所需脚本的参数应跟在docker参数之后。run.sh是默认执行的脚本。
应使用以下选项指定多个GPU:
$ cd docker
$ ./run.sh --docker-gpu 0,1,2 --docker-egs chime5/asr1 --docker-folders /export/corpora4/CHiME5 --ngpu 3请注意,所有实验文件和结果都创建在常规示例目录下(egs/)。
多个文件夹和环境变量应使用逗号分隔且不加空格:
$ cd docker
$ ./run.sh --docker-gpu 0 --docker-egs chime4/asr1 --docker-folders /export/corpus/CHiME4,/export/corpus/LDC/LDC93S6B,/export/corpus/LDC/LDC94S13B --docker-env "CHIME4_CORPUS=/export/corpus/CHiME4/CHiME3,WSJ0_CORPUS=/export/corpus/LDC/LDC93S6B,WSJ1_CORPUS=/export/corpus/LDC/LDC94S13B" --ngpu 1请注意,对于某些实验配方(如CHiME、WSJ和LDC语料库),您需要先下载语料库才能运行实验。您需要设置这些语料库的下载目录,并在配方中进行替换(例如:CHIME4_CORPUS=/)
使用基于CPU的容器
你可以使用以下命令在CPU上训练模型:
$ cd docker
$ ./run.sh --docker-gpu -1 --docker-egs an4/asr1 --ngpu 0如果当前使用的是非root的user用户,该脚本将构建一个docker容器。如需使用root权限的容器,请在命令行中添加--is-root标志。
本地构建
在本地机器上构建docker容器时,espnet源代码是从github的espnet主分支下载的。但在某些情况下,基于本地仓库源代码构建的"本地"版本更为可取:
在对espnet代码、构建环境等进行自定义修改后,需在docker容器中进行测试。预构建的docker容器不会导入这些修改。
可复现性:可以回退到某个提交点的espnet版本,并使用旧版库测试神经网络。
为此目的,脚本build.sh支持进行本地构建。在docker构建过程中,本地espnet源代码会基于git HEAD(前一次提交)通过git归档导入,并以文件形式复制过去。
例如,一个基于Docker Hub基础镜像(espnet/espnet:runtime,基于Ubuntu 16)的本地构建,该镜像已包含kaldi安装,使用Cuda 10.0:
./build.sh local 10.0此外,也可以基于prebuilt/runtime/Dockerfile中指定的Ubuntu版本(当前设置为Ubuntu 18.04)构建docker镜像,在这个示例中使用的是cpu版本:
./build.sh fully_local cpu本地容器构建后,通过在使用run.sh时添加--is-local标志来启动,例如对于Cuda 10.0镜像:
$ ./run.sh --is-local --docker_cuda 10.0 --docker_gpu 0 ...已弃用
基于ubuntu-16.04构建的容器将被弃用且不再获得支持。不过这些容器仍会保留在Docker Hub中。如需使用ubuntu 16.04的容器,请清空--docker_os标志。
标签
- 运行时:ESPnet的基础镜像。它包含库和Kaldi安装。
- CPU: 仅能在CPU上执行的镜像。
- GPU: 支持GPU运行的示例镜像。
Ubuntu 18.04
Pytorch 1.3.1, 无warp-ctc:
Pytorch 1.0.1, warp-ctc:
