ホームへ戻る

GitHub Repo

TransformersコミュニティがRoPE初期化の不備を報告、一部の長文コンテキスト設定でNone値があると失敗

10月21日のTransformersコミュニティからの報告によると、一部のモデル設定でhead_dimがNoneの場合、Dynamic、YaRN、LongRoPEの経路でモデルを作成できない可能性がある。報告には小規模な再現コードと修正案が添えられているが、メンテナーによる確認や、検証可能な正式修正版はまだない。

My own montage for other pictures in Wikipedia. Original images from RichN, Kevin Ward and Mathewignash, · CC BY 3.0 · Image source
zh-Hant

Transformersでは10月21日、長文コンテキスト設定との互換性に関する報告が寄せられた。モデル設定でhead_dim=Noneとなっている場合、一部のRoPE計算および検証処理が注意機構のヘッド次元を正しく推定できず、型エラーで停止するという。報告環境は開発版のメインブランチ5.21.0.dev0とCPU版PyTorchであり、これを根拠にすべての安定版が影響を受けるとは断定できない。問題報告

報告者は、単層かつ小規模なMixtralで再現ケースを作り、5種類の回転位置埋め込み設定を比較した。標準経路と線形スケーリング経路ではフォワード計算を完了できた一方、DynamicとYaRNではモデル作成時に失敗し、LongRoPEではさらに早い設定検証段階でエラーが発生した。このケースでは大規模な重みをダウンロードする必要がなく、開発者は設定処理の問題と、VRAM、重みの読み込みなどのデプロイ要因を切り分けやすい。再現コードと出力

問題の核心は、Pythonにおける属性のデフォルト値の扱いにある。関連コードはgetattrでヘッド次元を取得し、フォールバックとして隠れ層の次元を注意ヘッド数で割った値を指定している。しかし、属性が存在していて値がNoneの場合、フォールバックは適用されない。その後、None値に回転スケーリング係数を掛けようとしてエラーが発生する。報告によると、ほかのRoPE経路ではすでにNone値を処理する実装があり、推定方法を統一する修正案が提示されている。根本原因の説明

この不備は長文コンテキストのデプロイに直接関わる。公式ドキュメントではDynamic、YaRN、LongRoPEがサポート対象のスケーリング方式として挙げられ、rope_parametersで方式を選び、それぞれのパラメーターを指定する。エンジニアリング上のポイントは、同じモデルがデフォルト設定で起動できても、位置埋め込み設定を変更した後に動作するとは限らないということだ。設定検証、モデル初期化、実際のフォワード計算をそれぞれテストする必要がある。公式RoPEドキュメント

確認時点では、これは再現資料を添えたコミュニティからの報告にとどまっている。報告者はMinistral、MiniMax、HunYuanなど、同じ形式の設定が関係する可能性のあるモデルも挙げているが、公開されたケースで示されているのは主にMixtralであり、影響を受けるモデルの確定リストと見なすことはできない。今後はメンテナーによる確認、修正のマージ、各バージョンへの反映状況を追う必要がある。初期化の問題が修正された後も、長文コンテキストでの品質は別途評価が必要だ。報告のステータス

出典

  1. Dynamic, YaRN and LongRoPE fail when config.head_dim is None
  2. Rotary embeddings utilities