在伺服器上執行kaldi說話人識別模型訓練程式遇到的小問題
伺服器上已開啟安裝了kaldi工具的docker容器,開啟方法見上一篇部落格。
說話人識別的例程用的是aishell提供的資料集,這裡我的資料集已經下載到伺服器了,所以後面我會再執行腳本里去掉下載資料集的命令。
1、容器開啟的方法:
在上一篇部落格的基礎上用以下命令開啟
docker run --runtime=nvidia --name [指定一個用於與其它容器區分的name] -it -v /home/ctyun:/home/ctyun [image名稱kaldi]
2、去掉下載資料集命令
在……kaldi/egs/aishell/v1路徑下
編輯run.sh指令碼,註釋下載資料集部分,並把data路徑改成伺服器上已有資料集的路徑。
然後執行程式執行./run.sh
3、報錯
解決辦法:
編輯cmd.sh,
將命令:export train_cmd="queue.pl --mem 4G"
改為->export train_cmd="run.pl --mem 4G"
4、執行失敗後需要重新執行報錯說什麼id不匹配的問題
刪掉上一次執行生成的檔案:
……kaldi/egs/aishell/v1路徑下的data exp mfcc檔案
5、查詢檔案或資料夾的命令
在當前資料夾下查詢:
find . -name “檔案或資料夾名稱”
根目錄下查詢:
find / -name “檔案或資料夾名稱”
6、執行程式時加上nohup以儲存執行log
執行命令:
nohup ./run.sh &
(& 指定後臺執行)
實時重新整理檢視執行時儲存的log:
tailf nohup.out
7、訓練一段時間後報錯:
run.pl: job failed, log is in exp/extractor_1024/log/acc.0.1.log
run.pl: job failed, log is in exp/extractor_1024/log/acc.0.4.log
…………
原因:記憶體不夠
解決辦法:修改run.sh裡指定同時開啟的程序數
train ivector部分
將sid/train_ivector_extractor.sh --cmd "$train_cmd --mem 10G" \ 改為->sid/train_ivector_extractor.sh --nj 5 --num-threads 10 --cmd "$train_cmd" \
8、新終端下可以用top命令實時查詢記憶體佔用