ホームへ戻る

GitHub Repo

Transformersコミュニティが推測サンプリングの境界条件エラーを報告、確率ゼロのトークンが検証を通過する可能性

10月23日のTransformersコミュニティ報告によると、検証用乱数がちょうどゼロの場合、推測サンプリングで目標確率がゼロの候補トークンが受け入れられる可能性がある。報告にはCPUでの対照実験と修正案が添えられているが、実際の生成での発生率、正式なモデルへの影響、修正が含まれるバージョンは未確認だ。

Marcus Qwertyus · Public domain · Image source
zh-Hant

Hugging Face Transformersで、推測サンプリングの正確性に関わる境界条件の問題が報告された。10月23日に作成されたissueによると、内部関数 _speculative_sampling は r_i <= probability_ratio で候補トークンを受け入れるか判定する。目標確率がゼロ、ドラフト確率が1で、検証用乱数もゼロの場合、本来は除外される候補が受け入れられてしまう。テストはCPU上で開発版のソースコードを使って行われており、すべての安定版が影響を受けると直ちに結論づけることはできない。issueと再現記録

推測デコーディングでは、小さなアシスタントモデルが複数のトークンを先に提案し、メインモデルが1回のフォワードパスでそれらを検証することで、高コストな逐次推論を減らす。公式ドキュメントは、標準的な推測デコーディングを、目標出力分布を維持する方法として説明している。そのため、受け入れ判定の境界条件も正確性の要件に関わる。一方、ドキュメントに別途記載されている、受け入れ率を高めるためにメインモデルとドラフトモデルの分布を意図的に混合する選択肢とは、技術的な意味が異なる。公式デコーディングドキュメント

報告者は内部関数を直接呼び出したほか、ランダム初期化した2つの小型Llamaモデルで、公開インターフェースの generate() もテストした。検証用乱数だけをゼロに固定すると、目標分布では除外されるトークンが受け入れられた。比較演算を厳密な小なりに変更すると、結果は対照出力と一致した。これらの実験では事前学習済みの重みをダウンロードしておらず、実際のワークロードへの影響も測定していない。実験設定

技術的に注目すべき点は、サンプリング時のフィルタリング後も、検証器が確率ゼロのトークンを厳密に排除できるかどうかだ。公式ドキュメントには、assistant_model と do_sample=True を使ったサンプリング方法が記載されている。この経路を使うエンジニアリングチームは、確率ゼロの候補と乱数の端点値を回帰テストに加え、受け入れと拒否の両方の分岐を個別に検証できる。公式の使用方法

確認時点でissueは未解決のままで、メンテナーによる確認や関連する修正はページ上で確認できなかった。報告には実際の乱数列からゼロ値を見つけた記録があるが、これは特定の状態を選んで再生した結果であり、自然な生成での発生率を示すものではない。今後は正式な修正、影響を受けるバージョン、事前学習済みモデルや異なるデバイスでのテスト結果を確認する必要がある。現在の状況と制約

出典

  1. Speculative sampling accepts zero-probability candidates when the acceptance draw is zero · Issue #49936
  2. Assisted decoding