為低資源 ASR 微調 MMS Adapter 模型

TL;DR

MMS adapter 微調在僅需 10-20 分鐘的訓練後,即可為低資源語言提供大幅降低的字錯率 (WER),且其記憶體消耗遠低於全模型微調。


為什麼 MMS adapters 對於低資源 ASR 至關重要

在數據有限的語言上,針對 Massive Multilingual Speech (MMS) 模型進行 adapter 訓練的效果優於全模型微調。這種方法更具記憶體效率,能在幾分鐘內收斂,並在僅訓練每個語言約 2.5 M adapter 權重的同時,保留基礎模型(約 99% 的參數)。


背景:從 wav2vec 2.0 到 MMS

  • wav2vec 2.0 (2020 年 9 月) 引入了自我監督語音預訓練。
  • XLS-R 將 wav2vec 2.0 擴展到了 128 種語言。
  • MMS (Meta AI, 2023) 將此規模擴展到 >1,100 種語言,其 300 M 和 1 B 參數的檢查點是在 1,400 種語言的 >500k 小時音訊上訓練而成的。

MMS 發布了三個帶有特定語言 adapter 的 ASR 檢查點:

  • mms-1b-fl102 (102 種語言)
  • mms-1b-l1107 (1,107 種語言)
  • mms-1b-all (所有 1,162 種語言)

每個 adapter 包含約 2.5 M 可訓練權重(每個 attention block 的小型線性投影加上一個特定語言的詞彙層)。


Adapter 訓練 vs. 全模型微調

項目 Adapter 微調 全模型微調
更新的參數 每種語言 ~2.5 M (≈0.2% 的 1 B 模型) 所有模型權重 (≈1 B)
記憶體使用量 顯著較低;許多語言可在單個 GPU 上運行 高;通常需要多 GPU 或梯度檢查點 (gradient checkpointing)
訓練時間 4 小時 Common Voice 數據約需 10-20 分鐘 (≈4 epochs) 達到同等性能需數小時至數天
低資源數據表現 更好的 WER,更強健 較差的 WER,容易過擬合
可擴展性 僅需訓練新的 adapter 即可增加新語言 必須重新訓練或微調整個模型

對於中高資源語言,全模型微調可能仍具優勢,但在數據稀缺的場景下,adapter 佔據主導地位。


端到端 adapter 微調工作流程 (以土耳其語為例)

  1. Setup – 安裝 datasetstransformerstorchaudiojiweraccelerate 並登入 Hugging Face Hub。
  2. Load data – 使用 Common Voice 土耳其語切分集 (train+validation ≈ 4 h) 和 test 切分集進行評估。
  3. Pre-process transcripts – 移除標點符號、標準化大小寫、替換變音符號,並建立字元級詞彙表 (包含單字分隔符 |[UNK][PAD] 在內的 37 個 token)。
  4. Create tokenizer & feature extractor – 從自定義詞彙表構建 Wav2Vec2CTCTokenizer 和具有 sampling_rate=16000Wav2Vec2FeatureExtractor
  5. Prepare dataset – 將音訊轉換為 16 kHz,使用 processor 提取 input_values,並將標籤編碼為 token ID。
  6. Configure model – 使用 ignore_mismatched_sizes=True 載入 facebook/mms-1b-all,重新初始化 adapter 層 (model.init_adapter_layers()),凍結基礎模型 (model.freeze_base_model()) 並啟用梯度檢查點。
  7. Define data collator – 使用自定義的 DataCollatorCTCWithPadding,分別對輸入和標籤進行填充,並使用 -100 遮蓋標籤填充部分。
  8. Training arguments – 範例設定:per_device_train_batch_size=32learning_rate=1e-3num_train_epochs=4fp16=Truepush_to_hub=True
  9. Run Trainer – 在單個 GPU 上訓練不到 30 分鐘即可完成。訓練日誌樣本顯示,400 步後 WER 從 ~0.28 降至 ~0.22。
  10. Save & share adapters – Adapter 權重儲存為 safe-tensor 檔案 (adapter.<lang>.safetensors) 並上傳至 Hub。
  11. Inference – 使用 target_lang="tur" 載入檢查點,設置 tokenizer 語言並執行前向傳播。範例轉錄結果與參考文本僅有微小的空格差異。

多語言 adapter 管理

  • Adapter 與基礎模型並存儲 (例如 adapter.fra.safetensors)。
  • 若要增加新語言,只需訓練一個新的 adapter 並將其推送到同一個 repository;基礎模型保持不變。
  • 載入不同語言非常簡單:
    model.load_adapter("swe")
    processor.tokenizer.set_target_lang("swe")
    
  • 同一個 repository 可以託管數十個 adapter,每個 adapter 都由其 ISO-639-3 代碼識別。

實證結果

模型 訓練步數 驗證 WER
mms-1b-all adapter (土耳其語) 100 0.280
200 0.232
300 0.229
400 0.223

這些結果超越了早前「Fine-tuning XLS-R on Multi-Lingual ASR」部落格文章中報告的 XLS-R 300 M 基準,證實了 MMS adapters 能更有效地將知識遷移到低資源語言。


對語言保存的意義

全球約 40% 的 3,000 種現存語言處於瀕危狀態 (Ethnologue)。MMS 已經支援如 AriKaivi 等語言的轉錄。透過只需幾小時音訊即可實現快速、低成本的語言適應,MMS adapters 可以幫助社群建立書面語料庫,並為受威脅的語言維持數位存在感。


資源


本教學使用的 notebook 可於此處取得:https://colab.research.google.com/github/patrickvonplaten/notebooks/blob/master/Fine_Tune_MMS_on_Common_Voice.ipynb。

Sources