返回首頁

GitHub Repo

Transformers 回報 Gemma 2 注意力軟上限遭略過,切換後端可能改變模型運算

10 月 21 日的 Transformers 回報指出,Gemma 2 使用預設 SDPA 或部分 Flash Attention 核心時,可能無聲略過注意力分數的軟上限。回報附有數值比較與重現程式,但尚未確認正式修復版本,也不能據此推定所有任務的品質變化。

Sarang · Public domain · Image source
zh-Hant

Hugging Face Transformers 於 10 月 21 日出現一項與推論可重現性有關的回報:Gemma 2 設定中的注意力軟上限,可能隨注意力後端切換而遭略過,執行時卻沒有警告。回報環境為 Transformers 5.20.2、PyTorch 2.13.0 與單張 H100,並提供可重現程式。問題回報

Gemma 2 的這項運算會在注意力分數進入後續計算前,以 50 × tanh(x / 50) 壓縮較大的數值。官方設定文件將 attn_logit_softcapping 的預設值列為 50,另有獨立的最終輸出 logits 軟上限;此次回報針對前者,兩者應分開檢查。Gemma 2 文件

依回報者分析,eager 與 flex_attention 會套用這項轉換,但 Gemma 2 預設使用的 sdpa 會忽略收到的參數。Flash Attention 路徑則取決於核心是否接受 softcap;回報點名 ROCm 的 kernels-community/aiter-flash-attn 不接受此參數,因此不能將問題概括為所有 Flash Attention 核心都受影響。後端分析

回報使用 Gemma 2 2B、WikiText 驗證資料與 FP32 比較:單段 2,048 token 的損失值差異很小,但 eager 與 SDPA 的輸出 logits 最大絕對差約為 2.443;關閉軟上限後,eager 與 SDPA 的差異在顯示精度下為零。這支持後端略過運算的判斷,尚不足以推論下游任務普遍退步。重現結果

對工程團隊而言,這意味著更換加速後端時,除了吞吐量與記憶體,也應核對模型運算是否完整保留。評測紀錄宜保存後端、核心及版本,並以固定輸入比對數值。接下來應追蹤上游是否加入能力檢查、精準警告與回歸測試;目前問題仍開啟,正式修復版本尚待確認。

來源

  1. Gemma 2's attention soft-capping is silently dropped with sdpa (the default) and flash kernels without softcap · Issue #49810
  2. Transformers Gemma2 documentation