Kaldi 学习笔记之swithbaord运行环境脚本解析

来源:互联网 发布:昌硕ciq软件下载 编辑:程序博客网 时间:2024/06/10 22:24

Kaldi 学习笔记之swithbaord运行环境脚本解析

前言:

kaldi最新版本引入了nnet2,对集群多GPU提供了支持。对于入门者而言,kaldi中复杂的脚本语句理解起来有点难度,博主亦是刚入门,在此提供部分脚本注释和个人理解,希望能和从事语音识别工作的同行一起探讨学习,毕竟本人知识水平有限,难免会出现纰漏,欢迎大家在讨论区指正。:)

摘要:

本文主要介绍kaldi任务运行环境的配置。

正文:

博主目前采用的是曙光Amax GPU集群,该集群由三台服务器组成,其中管理节点主要负责集群任务的分发、调度和管理,以及NFS文件系统的维护。另外两个计算节点(compute-0-1,compute-0-3)负责集群任务的执行。
集群根据kaldi中集群环境配置的步骤,安装了Sun公司的GridEngine,然后,配置两个队列,其中:

队列 资源 适用任务类型 例子 CPU_QUEUE 管理节点8个CPU,64GB RAM;
两个计算节点分别提供32个CPU,125GB RAM;不提供GPU支持 CPU密集型任务 HMM-GMM模型的训练。 GPU_QUEUE 两个计算节点分别提供16个CPU,125GB RAM,24块K10 GPU板卡。 GPU密集型任务 HMM-DNN模型的训练。

egs/swbd/s5b/cmd.sh 代码(修改):

# "queue.pl" uses qsub.  The options to it are# options to qsub.  If you have GridEngine installed,# change this to a queue you have access to.# Otherwise, use "run.pl", which will run jobs locally# (make sure your --num-jobs options are no more than# the number of cpus on your machine.#a) JHU cluster optionsexport train_cmd="queue.pl -q CPU_QUEUE -l arch=*64*"export decode_cmd="queue.pl -q GPU_QUEUE -l arch=*64* --mem 12G"export cuda_cmd="queue.pl  -q GPU_QUEUE -l gpu=1"export mkgraph_cmd="queue.pl -q CPU_QUEUE -l arch=*64* --mem 12G"#b) BUT cluster options#export train_cmd="queue.pl -q all.q@@blade -l ram_free=1200M,mem_free=1200M"#export decode_cmd="queue.pl -q all.q@@blade -l ram_free=1700M,mem_free=1700M"#export decodebig_cmd="queue.pl -q all.q@@blade -l ram_free=4G,mem_free=4G"#export cuda_cmd="queue.pl -q long.q@@pco203 -l gpu=1"#export cuda_cmd="queue.pl -q long.q@pcspeech-gpu"#export mkgraph_cmd="queue.pl -q all.q@@servers -l ram_free=4G,mem_free=4G"#c) run it locally...#export train_cmd=run.pl#export decode_cmd=run.pl#export cuda_cmd=run.pl#export mkgraph_cmd=run.pl

脚本可以配置kaldi的集群运行环境,根据上述运行环境介绍,我对原始kaldi脚本做了一些修正。其中:

命令 任务 train_cmd 该命令负责提交CPU密集型的训练任务,例如:HMM-GMM模型训练等。 decode_cmd 该命令负责提交模型的解码工作,例如:force-alignment,decode 等。 cuda_cmd 该命令负责GPU密集型的训练任务,例如:HMM-DNN 模型训练等。 mkgraph_cmd 该命令负责提交CPU密集型的语音模型解码图的生成工作(H*C*L*G),主要是WFST三大算法:composition,deteminization和minimazation。

此外,脚本提供了对单机环境以及集群环境的需求:

运行环境 配置方法 结果 单机环境 全部运行命令配置为run.pl 仅在当前计算机上以CPU任务方式运行 集群环境 根据实际任务需要,对不同的任务类型指定不同的队列 任务将通过管理节点分发到满足运行条件的计算节点运行,从而充分发挥集群的优势。
0 0
原创粉丝点击