ホームへ戻る

GitHub Repo

Transformersコミュニティ、パッキング学習の境界処理の欠落を調査 線形Attentionのフォールバック経路で前の文書が混入する可能性

10月12〜13日のTransformers技術討議では、高速化カーネルがない場合、線形Attentionと畳み込みのフォールバック実装が文書境界を無視し、パッキングしたサンプルの計算結果を変える可能性が指摘された。コミュニティからは系列を分離する案とエラーを返す案が出ているが、いずれもまだマージされていない。

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

Transformersの文書パッキング学習に関する問題をめぐり、10月12〜13日に実装上のトレードオフが議論された。最初の報告は10月9日に提出された。そこでは、一部の線形Attention、因果畳み込み、Mambaスキャン演算が、任意の高速化ライブラリがない場合にPyTorchの参照実装へフォールバックする一方、seq_idxやcu_seqlensなどの系列境界パラメーターを破棄してしまうと指摘されている。協力者は、純粋なPyTorch経路をサポートするのは複雑で非効率だと考えている。一方、報告者は、現状では結果が予告なく変わってしまうと強調した。議論の記録

パッキング学習では、パディングによる計算コストを減らすために複数のサンプルを1つの系列に連結するが、各文書は独立性を保つ必要がある。公式ドキュメントによると、Qwen3.5などのGated DeltaNetモデルや畳み込みモデルでは、position_idsをリセットするだけではサンプルを分離できない。データコレーターが境界を渡し、対応するカーネルを使用する必要がある。カーネルがない場合の参照経路では、異なるサンプルの内容が混ざる可能性がある。公式説明

報告者は、H100、開発ブランチ、Qwen3.5-0.8Bを使い、同じ文書を単独で実行した場合と別の文書の後に実行した場合の次トークンの対数確率を比較した。必要なライブラリがすべてそろった環境では最大差は約0.0007だったが、因果畳み込みライブラリがない状態を模擬すると5.7380に上昇した。これは特定のフォワード計算で再現された数値であり、学習品質の低下に直接換算できるものではない。再現コードと結果

修正案 #49477 では、系列番号に基づいて畳み込みウィンドウ内の文書をまたぐ位置をマスクし、delta ruleとMamba2スキャンを系列ごとに実行する。作者のテストでは、Qwen3.5-0.8Bの最大対数確率差は6.8から約0.000011に低下した。ただし、系列ごとの処理にはホスト同期のコストが増える。修正案

別の草案 #49474 は、フォールバック実装で境界を保持できない場合にエラーを返し、必要なライブラリのインストールを促す案だ。現時点でどちらの案もマージされていない。エンジニアリングチームは、実際に使用しているカーネルとデータコレーターの設定を確認し、「パッキングした結果とサンプルごとの結果を照合する」チェックを追加できる。今後は、メンテナーがどちらの方針を採用するか、また修正がどのモデルと正式リリースを対象にするかに注目したい。エラーを返す案

出典

  1. Transformers #49472:回退實作忽略打包序列邊界
  2. Transformers 官方文件:Padding-free training
  3. Transformers #49477:在參考實作中隔離打包序列
  4. Transformers #49474:丟棄序列邊界時報錯