交接 - Meta Learning for E2E ASR (cross-accent) === ###### tags: `Research` ## Step 0: * `git clone https://github.com/sunprinceS/MetaASR-CrossAccent.git` * comet 相關: * if no comet 帳號: 辦 comet 帳號 * 更改 src/marcos.py 的 COMET_WORKSPACE, COMET_PROJECT_NAME 成自己的 * 在家目錄底下加一個 .comet.config,裡面寫 ``` [comet] api_key=<YOUR_COMET_API_KEY> // api key 可從 Web 介面得到 ``` ![](https://i.imgur.com/t6rwGV1.png) * install custom package (雖然 README 有寫一年前的版本,但目前 pip install 下來的最新版也是可以的,只不過 tqdm logger 會跑掉) ``` // pip install comet-ml editdistance torch_optimizer // from 茅耀文's utility package tqdm-logger torchexp ``` * data 相關: * 目前 common voice 英文的資料放在 `/groups/public/common-voice-en` 下 * 把 data/create_link.sh 的 cmd 改成 `cmd="ln -s /groups/public/common-voice-en/mydata-separate/$data_type/$dir $dir/$data_type"` (這是戰艦上的路徑) ## Step 1: Pretrain * 可以用 multitask, fomaml, reptile 等 pretrain interface 來做 pretrain * fomaml, reptile 等另需指定 meta_k (在算 loss 時要先 adapt 幾步,或者說 inner loop 時要 train 幾步) * tgt_accent 就 meta 系列的 pretrain 不重要,只是可以 probe 看現在訓練得怎麼樣,不代表 adapt 的好壞 * multitask pretrain: `multi pretrain: hrun -c 4 -m 12 -G python pretrain.py --config config/transformer/pretrain/multi-hkust.yaml --pretrain_accents au en ir nz us --num_pretrain 5 --tgt_accent wa --runs 0 --sample_strategy normal --max_step 200000 --model_name transformer --algo multi --pretrain_suffix dryrun --overwrite` * fometa 系列 pretrain: `hrun -c 4 -m 12 -G python pretrain.py --config config/transformer/pretrain/fometa-hkust.yaml --pretrain_accents au en ir nz us --num_pretrain 5 --tgt_accent wa --runs 0 --sample_strategy normal --max_step 100000 --model_name transformer --algo fomaml --pretrain_suffix dryrun --overwrite --meta_k 2` Dashboard (可以用 query filter 出 pretrain 相關的 Experiment) ![](https://i.imgur.com/aAmDBPg.png) ## Step 2: Adapt (train + decode + score) :::info 有了 pretrained model 以後,一個實驗需要以下步驟 training (train.py) -> testing/decoding (train.py --test) -> score.sh ::: score 的算法同 espnet recipe 我們可以在 train.py 的 args * 直接指定 pretrained model 的 path * 餵 pretrained setting infer 出 pretrained model path 不同的 target langauge、不同 pretraining step 選出的 pretrained model、不同的 pretrain setting (model、algo...)、adapt 時是否 freeze 部分 model 都會對應到不同的實驗 :point_right: Given same pretraining setting,一鍵執行不同 pretraining step 的實驗 (結果會存在 testing-logs 裡頭) 相關檔案為 adapt_full_exp.sh、train.py、score.sh,可再自行修改 * multitask adapt: `./run_adapt.sh transformer hkust-sgd spot non-overwrite greedy multi-transformer-hkust dryrun af hk sg` * fometa 系列 adpat: `./run_adapt.sh transformer hkust-sgd spot non-overwrite greedy fometa-transformer-hkust dryrun af hk sg` Dashboard (可以用 query filter 出 跟某個 adapt setting 相關的 Experiment) ![](https://i.imgur.com/CbKhC9U.png) 因為實驗數相當多,用 comet 可以幫助我們快速比較各個 adapt setting 的優劣 ![](https://i.imgur.com/eI8Iccp.png) ### Known Issue: 在某些 node 上會跳 import comet_ml before torch, 解法是直接在 train.py, pretrain.py 在 import torch 之前 import comet_ml