GitHub Repo
Transformersコミュニティ、左側パディングでEOSが誤ってペナルティを受ける問題の修正を提案
11月1日に提出されたTransformersの修正提案は、生成処理がマスク済みのパディングトークンを反復ペナルティの対象に含め、終了トークンのスコアに影響する可能性を指摘しています。作成者はマスクを渡す方法とテスト結果を提示していますが、確認時点では未マージで、メンテナーによるレビューも確認できていません。

Transformersコミュニティは11月1日、テキスト生成における反復ペナルティの修正を目的としたPR #50215を提出しました。作成者によると、RepetitionPenaltyLogitsProcessor が、attention maskで除外されたパディングトークンまで履歴に含める可能性があります。左側パディングに使う pad_token_id が終了トークンの eos_token_id と同じ場合、EOSの生成スコアが不必要に低下するおそれがあります。確認時点で、この提案はオープンのままです。修正提案
この利用場面は珍しくありません。公式チュートリアルでは、長さの異なるプロンプトをバッチで生成モデルに入力する際、左側パディングを使うことを推奨しており、例ではパディングトークンにEOSを指定しています。また、ドキュメントでは repetition_penalty を1より大きくすると反復を抑制でき、EOSは生成を停止させるために使われると説明しています。そのため、パディング位置がEOSのスコアに影響する場合、停止タイミングや出力長を確認する価値があります。これは仕組みから導かれるリスクであり、大規模な品質測定で公表された結果ではありません。公式生成チュートリアル
提案では、ペナルティ処理に任意の attention_mask を渡せるようにし、マスクされた位置を除外したうえで、サンプリングとビームサーチの処理フローからマスクを渡します。テストでは、入力に実際に含まれるEOS、異なるパディング長、複数の返却シーケンスを扱い、パディングの問題を直す過程で有効な履歴トークンまで無視してしまわないようにしています。作成者は、関連するプロセッサテスト53件と生成の統合テスト3件が通過したと報告しています。変更とテストの説明
バッチ推論サービスを運用するチームにとって、この提案は検証の具体的な手がかりになります。モデル、プロンプト、デコード設定を固定し、同じプロンプトを単独で実行した場合と、より長いプロンプトとともにバッチで実行した場合とで、EOSスコアと停止ステップ数を比較します。そのうえで、反復ペナルティの有効・無効も比較します。今後は、メンテナーがマスクを渡す方法を受け入れるか、正式なCI結果がどうなるかを確認する必要があります。公開ページでは依然としてCIがメンテナーの承認待ちと表示されており、作成者が記載したテスト結果を、プロジェクトでの検証完了や正式リリースでの修正とみなすことはできません。提案の状態