ホームへ戻る

GitHub Repo

Transformersコミュニティ、基盤の事前学習済み重みの再初期化を防ぐ質問応答モデルのロード修正を提案

10月26日、Transformersコミュニティは、一部の質問応答モデルが言語モデルのチェックポイントを読み込む際、パラメーター名のプレフィックスが一致しないために基盤の重みを再初期化する可能性があると報告しました。修正提案には小規模なLlamaテストとGPUでの比較結果が添えられていますが、まだマージされておらず、正式な影響範囲は確認されていません。

Marcus Qwertyus · Public domain · Image source
zh-Hant

Transformersコミュニティは10月26日、因果言語モデルのチェックポイントを質問応答モデルに変換する際、基盤のパラメーターが引き継がれない可能性がある問題に対処する重みロードの修正を提案しました。報告では開発版5.21.0.dev0を使い、LlamaForQuestionAnsweringまたはAuto ModelインターフェースからLlama-2-7bを読み込むと、基盤の重みの多くが未使用となり、想定されるパラメーターが欠落しているというロード時の報告が出たとしています。元の報告

報告によると、チェックポイントでは基盤のパラメーターがmodel.*として保存されている一方、質問応答モデルはtransformer.*を想定しており、ローダーが対応付けられません。公式ドキュメントでは、未使用の重みは破棄され、チェックポイントから初期化されなかったパラメーターには後続の学習が必要だと説明されています。ファインチューニングの工程では、新しい質問応答出力層に対する通常の初期化と、基盤の事前学習済みパラメーターが読み込まれない異常とを区別する必要があります。後者を見過ごすと、実験で本来想定していた事前学習済みの初期状態が失われるおそれがあります。モデルロードのドキュメント

修正提案では、12種類の質問応答モデルクラスに専用の名前変換を追加し、model.をtransformer.に対応付けます。また、既存の質問応答チェックポイントとの互換性を保つため、逆方向の変換も設計されています。作者によると、小規模なLlamaテストでは修正後に欠落したのは質問応答出力層のみで、基盤の20個のテンソルはすべて一致しました。RTX A5000での半精度チェックでも、基盤の隠れ状態の差はゼロだったとのことです。これらの結果は提出者によるもので、独立した検証はまだ行われていません。修正提案

確認時点で提案はオープンのままで、CIはメンテナーの承認待ちです。作者は変更の準備にAIを使用したことも明らかにしています。現時点の証拠だけでは、すべての安定版や列挙されたモデルが影響を受けると確認されたわけではありません。エンジニアリングチームはロード時の報告を保存し、ドキュメントにあるoutput_loading_infoを使って不足・余分なパラメーターを調べたうえで、基盤のテンソルが引き継がれているか比較できます。今後はメンテナーのレビュー、各モデルの回帰テスト、正式な修正版のリリースを追う必要があります。提案の状況、ロード情報の確認方法

出典

  1. ForQuestionAnswering heads fail to load base model weights — Issue #49973
  2. Fix QuestionAnswering heads loading base weights from causal LM checkpoints — PR #49990
  3. Transformers Models:PreTrainedModel 與 from_pretrained 文件