ホームへ戻る

GitHub Repo

Transformersコミュニティ、生成長を制御する修正を提案 パラメータの組み合わせで生成が早期終了する可能性

コミュニティによる再現で、最小生成長と指数長ペナルティを併用するとNaNが発生し、早期終了やサンプリング失敗につながる可能性が示された。10月2日に修正案が公開されたが、正式リリースでの対応状況はまだ確認が必要だ。

Marcus Qwertyus · Public domain · Image source
zh-Hant

Transformersコミュニティは、生成長制御の相互作用に関する不具合の修正を提案した。10月1日に公開された報告によると、exponential_decay_length_penalty が最小生成長に達する前に適用されると、終了シーケンストークン(EOS)のスコアがNaNになる可能性がある。10月2日公開のPR一覧には「マスク済みEOSスコアを保持する」提案が掲載されており、現在もオープンの項目として残っている。不具合報告、公開PR一覧

この2つの制御には、それぞれ異なる目的がある。公式ドキュメントによると、min_new_tokens は指定された長さに達するまでEOSのスコアを負の無限大に設定し、モデルが生成を続けるようにする。一方、指数長ペナルティは開始位置以降、EOSのスコアを徐々に引き上げ、出力が自然に終わるよう促す。前者は最小長を制限し、後者は出力を短くする方向に働くため、デプロイ担当者が両方を同時に設定することもある。公式の生成ユーティリティドキュメント

報告者の分析では、問題はマスク済みEOSにも後続の加点処理が適用されることにある。負の無限大に正の無限大を加えるとNaNになる。その結果、本来「一時的に終了を禁止する」はずのスコアが、意図した意味を失う。コミュニティは小規模なGPT-2とT5の構成で再現し、貪欲法とビームサーチでは最小長に達する前に終了し、サンプリングでは無効な値を含む確率テンソルによってエラーが発生することを確認した。再現手順と分析

報告に記載されたローカル修正は、有限のEOSスコアにのみ加点し、既存のマスクを維持するものだ。具体的な修正方針ではあるが、関連するテスト結果は提案者による報告であり、すべてのモデルやデプロイ経路で検証済みとは言えない。また、この提案をリリース済みの修正と見なすこともできない。修正の説明

エンジニアリングチームにとって、この事例は生成パラメータを組み合わせて検証する必要性を示している。上述の仕組みから考えると、ペナルティの開始位置と最小長の前後関係、実際に生成された追加トークン数、各種デコード方式でのエラーを確認すべきだ。今後は提案がマージされるか、どのバージョンに修正が含まれるかを追跡し、自社のモデルとパラメータでテストを再実行して、最小長の制約が実際に守られることを確かめる必要がある。

出典

  1. ExponentialDecayLengthPenalty creates NaN EOS scores when combined with minimum-length constraints
  2. Transformers 公開 PR 列表:Preserve masked EOS scores in exponential decay length penalty #49260
  3. Transformers — Utilities for generation