--- title: 'Project documentation template' disqus: hackmd --- Espnet 使用教學 === [](https://github.com/espnet/espnet) ## 快速導覽 [TOC] ## 建制環境 做任何的深度學習訓練之前 都必須要安裝[CUDA ToolKit](https://developer.nvidia.com/cuda-toolkit-archive) 以及 [PyTorch](https://pytorch.org/get-started/previous-versions/) CUDA與Pytorch之間有很嚴格的版本相容 必須要先決定好要分別安裝哪兩個版本 我個人的習慣安裝 `cu11.3+torch1.12.1` 或是 `cu11.7+torch1.13.1` CUDA 安裝 --- 先在[CUDA ToolKit](https://developer.nvidia.com/cuda-toolkit-archive)下載你想安裝的版本 按照指引選擇 ```gherkin= 作業系統 -> 系統架構 -> 發行版本 -> 選擇runfile(local) 以我自己為例 Linux -> x86_64 -> Ubuntu -> 22.04 -> runfile(local) ``` 最後 會在下方跑出兩行指令 看起來會像這樣 ```gherkin= wget https://developer.download.nvidia.com/compute/cuda/11.7.0/local_installers/cuda_11.7.0_515.43.04_linux.run sudo sh cuda_11.7.0_515.43.04_linux.run ``` 第一行為下載指令 會將一個執行檔下載到你目前的路徑上 第二行就是執行這個執行檔 > **執行時會等很久是正常的 請不要隨意中斷他** 接下來 系統會提醒你 已經有驅動了 仍要安裝嗎? 我們並不需要更改驅動的版本 只需要當版的工具包 因此 > **請用方向鍵選擇Continue 並按下Enter** > **並在下一個階段輸入accept 表示你同意他們的協議** 到這邊 就可以選擇安裝內容了 > 請把driver取消勾選 並且一定要選擇ToolKit > 其他的內容可以自行選擇要不要安裝 選擇完成以後 就可以按下install 完成以後 再以 ```bash= vim ~/.bashrc ``` 開啟使用者環境檔案 請在檔案的最尾端加入 ```bash= export PATH=/usr/local/${你的cuda資料夾}/bin:$PATH export LD_LIBRARY_PATH=/usr/local/${你的cuda資料夾}/lib64:$LD_LIBRARY_PATH 以我自己為例就是 export PATH=/usr/local/cuda-11.7/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda-11.7/lib64:$LD_LIBRARY_PATH ``` :::success 編輯完成以後 再輸入 `source ~/.bashrc` 就大功告成了 :blush: ::: PyTorch 安裝 --- PyTorch的安裝就相對簡單多了 只要在[PyTorch官方網站](https://pytorch.org/get-started/previous-versions/) 找到與你安裝的cuda版本相對應 直接複製指令在終端就好了 ||或是你想使用的tool 也可能會要求你的torch版本 必須與他要求的一致|| ```gherkin= 舉例來說: pip install torch==1.13.1+cu117 torchvision==0.14.1+cu117 torchaudio==0.13.1 --extra-index-url https://download.pytorch.org/whl/cu117 ``` Espnet 安裝 --- :::warning 請先確定你已經安裝了 `make` `cmake` 使用`sudo apt install make cmake` 來確保安裝 ::: 進入espnet資料夾以後 進入tools 執行 ```bash= ./setup_cuda_env.sh /usr/local/${你的cuda資料夾} #setup_anaconda.sh setup_venv.sh setup_python.sh 擇一使用就可以了 這邊以setup_python為例 ./setup_python.sh /usr/bin/${你的python資料夾} ``` 完成以後 接著執行 ```bash= make ``` 系統就會開始幫你設定各種環境 >這個階段也會耗時非常久 至多一小時 完成後 系統會提醒你 可以安裝其他額外的套件 為了訓練language model 請安裝 > ./installers/install_kenlm.sh >> 完成以後 再重新make一次 資料準備 --- 我們會需要四個檔案 分別為 > utt2spk > spk2utt > wav.scp > text :warning: 如果想要更改訓練資料 這些資料就必須重新準備 不同檔案有著不同的功能 `utterance(utt)為音檔` `speaker(spk)為語者` > utt2spk -> 音檔對應的語者 如: audio1.wav hanasay > spk2utt -> 語者所屬的音檔 如: hanasay audio1.wav > wav.scp -> 音檔所在的絕對路徑 如: audio1.wav /home/hanasay/espnet/egs2/taigi2/asr1/data/audio > text -> 音檔中唸了什麼 如: audio1.wav 今 天 天 氣 真 好 這四個檔案分別要準備 `test` `train` `valid` 三個集合 並且放在訓練目錄中的data資料夾底下 `(完整路徑為 /espnet/egs2/taigi2/asr1/data/${test, train, valid})` :::success 接下來就可以開始訓練了 ::: ## 訓練模型 我們的訓練腳本位於 `espnet/egs2/taigi2/asr1` 有兩種訓練方式 差別在於是否使用streaming訓練 >若是 請使用 `run_streaming.sh` >否則就使用 `run.sh` 在bash腳本`run.sh | run_streaming.sh`中 同時也會提到config檔的位置 請根據調整路徑 來引用不同的config 從而達到改變模型參數的效果 所有的訓練設定都可以透過調整config(.yaml檔) 來改變模型的特性 :::info 在train config中 最常調整的為 bins 通常遇到記憶體不足以負荷訓練時 可以優先降低這項設定 > minibatch >> batch_bins 以下這幾項為模型的主要參數 > optimization >> lr (learning rate) >> epoch >> warmup_steps ::: :::danger :warning::warning: 如果沒有必要 請不要改動`asr.sh` 以及`cmd.sh` 除非你很清楚你在做什麼 ::: 其他詳細的設定 請參考 [espnet技術文件](https://espnet.github.io/espnet/_modules/espnet/bin/asr_train.html#get_parser) 訓練結果與使用 --- #### 模型位置 訓練完成的模型都會存在訓練目錄中的exp資料夾中 例如: `exp/asr_train_asr_streaming_conformer_raw_hakka_bpe3500_sp/` 在這個資料夾底下 名為`valid.acc.best.pth` 的soft link 即指向經過valid後表現最好的模型 #### 結果觀測 而沒有經過訓練的test集合 在訓練流程stage 12時即會解碼 解碼的結果會儲存在模型資料夾中 decode開頭的資料夾 (流程會以`valid.acc.ave.pth` average來test) 接著往下找資料夾路徑 test 如果要將未知的音檔 讓模型辨識模型 請執行 `./tuning.sh --exp=exp/${你的模型資料夾} --audio 音檔路徑資料夾` 這裡可以將 --audio 路徑底下 所有的音檔輸入給模型辨識 這個腳本會再呼叫一個名為 decode.py的腳本 這個才是實際的腳本 ||你問為甚麼? 因為這跟環境變數有關 我必須還要再source path.sh 才可以正常執行這個腳本|| 如果要把模型包裝起來 拿去別的主機使用 請執行 `./pack.sh --exp=exp/${model} --token=data/hakka_bpe_token --stat=exp/${stat} --zip_name=你想要的壓縮檔名字` ||因為過了有點久 我暫時也沒空去看腳本 如果沒辦法用 應該真的是我寫錯了 但別急著鞭我 只要把報錯的地方改成正確的變數就好了:cry:|| 總結 === 一篇小小的文章可能沒辦法涵蓋太多一路上我排解很多問題的方法 如果照著這個做完還是沒辦法正常使用工具的話 可以用以下的方式找到我 <font color='#d09da6'> `Discord: hanasay` `gmail: hanasay16@gmail.com` </font> 晚點我會再補上kaldi的使用教學 ###### tags: `tutorial` `cuda` `pytorch` `espnet`
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up