返回首頁

GitHub Repo

Transformers 社群回報 T5 注意力切換失效,設定顯示 SDPA 卻仍執行 eager

10 月 6 日的開發版重現指出,T5 在載入後切換注意力後端,可能只更新頂層設定,編碼器與解碼器仍使用 eager。案例附有實際呼叫計數,但尚無維護者確認或已合併修補。

Andrew Wippler from Lancaster, USA · CC BY 2.0 · Image source
zh-Hant

Hugging Face Transformers 社群於 10 月 6 日回報,T5 的執行期注意力切換可能出現設定與實際運算不一致:先以 eager 載入,再呼叫 set_attn_implementation("sdpa"),頂層設定雖顯示切換成功,內部編碼器與解碼器卻仍沿用原後端,且沒有警告。案例使用 5.19.0.dev0 開發版、PyTorch 2.11.0 與 macOS ARM CPU,正式版本影響尚待確認。社群回報

回報者以 google-t5/t5-small 執行單次前向運算,攔截注意力登錄表中的 SDPA 函式並計數。載入後切換的路徑記錄到零次呼叫;直接以 SDPA 載入的對照組則記錄到十八次。這提供了比讀取設定更直接的執行證據,但尚未量測速度、記憶體或生成品質差異。重現程式

作者將疑點指向子模型設定的傳遞條件:程式以設定類別是否不同決定更新對象,而 T5 的兩個堆疊持有深拷貝、但同屬 T5Config 的設定,因而可能被跳過。這仍是回報者的根因分析,其他模型是否受影響也未逐一驗證。機制分析

官方文件將執行期切換列為支援功能,並說明注意力後端透過不同運算方式改善記憶體流量。對工程團隊而言,這類落差可能讓後端比較實驗標錯條件,也可能讓原本要測試 SDPA 的回歸案例未進入目標路徑;這是依據案例推導的測試風險,不能據此宣稱 GPU 加速普遍失效。注意力後端文件

目前可參考案例中的直接載入方式,並以呼叫追蹤核實後端。後續應關注維護者是否確認設定傳遞問題、修補是否涵蓋同類別的獨立設定物件,以及哪些正式版本需要調整測試。截至查核,議題仍開啟,頁面未列出修補分支或 PR。議題狀態

來源

  1. T5 執行期注意力切換未傳遞至編碼器與解碼器:Issue #49372
  2. Transformers 官方文件:Attention backends