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

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 options
export 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任务方式运行
集群环境 根据实际任务需要,对不同的任务类型指定不同的队列 任务将通过管理节点分发到满足运行条件的计算节点运行,从而充分发挥集群的优势。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章