將 fairseq WMT19 翻譯系統移植至 🤗 Transformers
TL;DR
Hugging Face 釋出了將 fairseq WMT19 翻譯系統移植至 Transformers 庫的版本,提供可直接使用的英語‑俄語和英語‑德語翻譯模型,可透過 AutoTokenizer 和 AutoModelForSeq2SeqLM 載入。
準備與檔案結構
移植工作從設置工作目錄並安裝所需的倉儲開始:fairseq、mosesdecoder、fastBPE,以及帶有 dev extras 的 transformers 庫。作者在 ~/porting 建立了一個資料夾,克隆每個倉儲,並以可編輯模式安裝它們。fairseq WMT19 模型提供四個檢查點(model1.pt–model4.pt)、來源與目標字典(dict.en.txt、dict.ru.txt)以及一個 BPE 碼檔案(bpecodes)。這些檔案被檢查以了解模型的檢查點、詞彙表和標記化產物。
分詞器移植
分詞器的編碼器是透過適應現有的 tokenization_xlm.py 檔案來移植的。作者將 tokenization_xlm.py 複製為 tokenization_fsmt.py,將類別從 XLM 重命名為 FSMT,並移除未使用的程式碼。由於 WMT19 模型使用獨立的來源與目標詞彙表,分詞器的 get_vocab 和 vocab_size 屬性被覆寫以返回來源詞彙表。BPE 的處理方式從 fastBPE 風格(@@ 代表非最終子詞)改為 Transformers 風格( 代表最終子詞),並透過 fairseq.data.dictionary.Dictionary.load 進行詞彙重新映射,以獲得正確的 ID 對應。之後,透過將輸出 ID 轉換為字串、去除 BPE 標記並應用 Moses 去標記化來完成解碼器。
模型轉換與架構
轉換腳本 convert_fsmt_original_pytorch_checkpoint_to_pytorch.py 是以 BART 轉換腳本為起點,逐步加入所需部分而建立的。模型權重透過 fairseq hub API 從 fairseq 檢查點中提取,該 API 也負責將舊的合併 in_proj 權重轉換為分離的 k/q/v 投影。配置參數從 fairseq 參數映射至 Transformers FSMTConfig,包括 activation_dropout、attention_dropout、d_model、dropout、max_position_embeddings、num_hidden_layers、src_vocab_size、tgt_vocab_size,以及 bos、pad、eos 的 token ID。模型架構源自 modeling_bart.py,透過調整層數以匹配 fairseq 的 TransformerEncoder 與 TransformerDecoder(例如,移除未使用的層、添加缺失的層,並確保正確使用來源與目標詞彙表大小)。正弦位置嵌入被重新實作為一般的 nn.Embedding 子類,以滿足 TorchScript 需求,同時防止確定性權重被保存。
測試與評估
為分詞器和模型組件添加了單元測試,基於現有的 BART 測試套件,但已適應雙詞彙表設置。為了快速 CI 測試,生成了一個具有隨機權重的微型模型。手動驗證腳本將 fairseq 與 Transformers 實作的輸出逐個 token、逐句進行比較,並使用除錯器來對齊中間結果。光束搜尋行經過調整:移植後的模型使用 early_stopping=False,經發現此設定在束寬為 5 時能比 fairseq 預設的 early_stopping=True 獲得更高的 BLEU 分數。在 WMT19 測試集上使用 sacrebleu 進行評估,針對 ru‑en 方向,束寬為 5、長度懲罰為 1.1 時得到 BLEU 分數 39.0498。作者指出,原始 fairseq 論文報告的分數更高,因為它使用了四個檢查點的集合以及重新排名步驟,而這些在移植中未被重現。
上傳、整合與自動化
轉換完成後,模型檔案被上傳至作者帳號下的 Hugging Face S3,之後移至 facebook 和 allenai 組織。模型可透過標準 API 載入,例如 FSMTTokenizer.from_pretrained("facebook/wmt19-en-ru)). AutoConfig、AutoTokenizer 和 AutoModelWithLMHead 已更新以識別 fsmt 模型類型,從而啟用管道式使用。為每個變體編寫了模型卡,詳細說明語言對、授權、資料集和評估指標。文件是透過改寫現有的 BART 文件以適應 FSMT 而添加的,並透過 make docs 驗證了建置過程。
意義與結語
將 WMT19 系統移植至 Transformers 使下載大小從約 13 GB(包含優化器狀態)減少至每個模型約 1.1 GB,使翻譯器在下游使用上更易於存取。雖然移植不支援原始的四個檢查點集合,但單一檢查點模型仍能達到強勢的翻譯品質。此工作展示了現有的 Transformers 元件(基於 BART 的建模、基於 XLM 的標記化、轉換工具)如何被重複使用並適應,以將高品質的 fairseq 模型納入庫中,作者在此過程中感謝 Sam Shleifer 的指導,並肯定 Lysandre Debut 與 Sylvain Gugger 在 PR 審查過程中的貢獻。