返回首頁

GitHub Repo

Transformers 提出生成模型匯出重整,讓預填與解碼共用計算圖

11 月 2 日提出的 Transformers 提案,讓生成模型的預填與逐步解碼共用計算圖,避免另行匯出重複權重。提案仍在開發分支,生成執行階段尚待接入,實際效能與相容性仍須驗證。

Marcus Qwertyus · Public domain · Image source
zh-Hant

Hugging Face Transformers 專案成員 IlyasMoutawwakil 於 11 月 2 日提出生成模型匯出重整方案,將預填提示詞與後續逐步解碼交給同一張解碼計算圖。這項設計希望減少執行端需要載入的圖與銜接程式,並避免為兩個階段分別匯出相同權重;截至查核時,提案仍未合併。提案內容

具體差異在於輸入形狀。動態匯出的圖可先一次接收整段提示詞,再每次處理一個新 token;靜態匯出的查詢軸則固定為單一 token,提示詞也須逐個送入。因此,共用計算圖並不代表所有部署方式都能一次完成預填。若模型必須使用獨立預填圖,方案會明確報錯,而非再輸出一份權重。設計與限制

這類調整與部署產物直接相關。Optimum Intel 官方文件說明,OpenVINO 匯出會產生描述拓樸的 XML 與存放權重的 BIN;預設的有狀態模型也會將 KV 快取藏在模型內部。由此可見,圖的切分及快取邊界,會影響執行端如何載入、呼叫與管理模型,不能只看檔案是否成功轉換。官方匯出文件

提案另外預設只輸出最後位置的 logits,避免長提示詞產生所有位置的詞彙分數;需要輔助解碼時仍可要求完整輸出。量化校準則同時涵蓋預填與解碼,因為兩者的活化值範圍不同。對部署工程師而言,值得驗證的是減少重複產物後,輸出一致性與量化品質能否維持。技術細節

目前仍有整合門檻:這份 PR 疊在多模態執行分支之上,且提案明言,在生成執行階段接入前,runtime() 會拒絕生成匯出產物。後續應觀察相依改動是否合併、不同模型的預填與解碼能否對齊原始執行結果,以及實際載入成本與延遲;現階段尚不能將設計目標當成已實現的加速成果。整合狀態

來源

  1. Exporters: decompose generative models into one decode graph — PR #50252
  2. Optimum Intel:Export your model