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任務方式運行
集羣環境 根據實際任務需要,對不同的任務類型指定不同的隊列 任務將通過管理節點分發到滿足運行條件的計算節點運行,從而充分發揮集羣的優勢。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章