ホームへ戻る

GitHub Repo

Transformers 5.21.1、RoPE設定の退行を修正し、一部のvLLMモデルの読み込みを復旧

Hugging Faceは10月29日、前バージョンで一部のカスタムモデル設定が読み込めなくなった互換性問題を修正したTransformers 5.21.1をリリースした。原因はRoPEパラメータの正規化が早すぎたことにある。修正版はPyPIで公開済みだが、デプロイ先ではモデルごとの検証が引き続き必要だ。

Jeremy Thompson · CC BY 2.0 · Image source
zh-Hant

Hugging Faceは10月29日、5.21.0で発生したモデル読み込みの退行を修正するTransformers 5.21.1をリリースした。メンテナーはリリースノートで、前バージョンがvLLMのリモートコード読み込みを壊していたと明記している。新バージョンはPyPIでも公開されており、ユーザーはメイン開発ブランチのリリースを待つ必要がない。リリースノート、PyPIパッケージ

原因は、rope_scaling属性に値が代入されると、RoPEパラメータの正規化がただちに実行されていたことにある。一部のカスタム設定クラスは、親クラスの初期化を完了する前にこのフィールドを設定するため、その時点では他のパラメータがまだ準備できていない場合がある。正規化によって辞書にキーと値が早期に追加されると、フィールドを厳密に検査するバリデーターが設定を拒否することがある。また、rope_thetaがまだ設定されていない段階で空の値を書き込んだり、まだ存在しない最大位置長を読み取ったりする可能性もあった。修正では、この処理を初期化の完了後に行うよう変更し、初期化後にパラメータを再設定した場合の正規化動作は維持している。修正に関する議論

この種のエラーはライブラリ間の境界を越えて影響する。vLLMの公式ドキュメントによると、サービスの起動時にまずconfig.jsonを読み込み、一部のモデルではTransformersのAutoConfig.from_pretrainedを使って設定オブジェクトを作成する。リモートのカスタムクラスを使う場合は、モデルリポジトリ内の設定コードも関係する。そのため、推論コアやモデルの重みを変更していなくても、設定レイヤーの初期化順序が変わることでサービスの起動が妨げられる場合がある。vLLM統合ドキュメント

検証の範囲は区別して捉える必要がある。修正担当者は、関連テストで462件が成功し、389件がスキップされたと報告した。また、指定されたEAGLE3設定で正しいrope_thetaが復元され、Step5設定も再び作成できることを確認した。これらの結果は今回の互換性修正を裏付けるものだが、すべてのモデルでエンドツーエンドの推論検証が完了したことを意味するわけではなく、スループット改善を示す証拠もない。テスト記録

5.21.0にアップグレードした後、設定検証やRoPE初期化のエラーに遭遇したチームにとって、5.21.1は評価対象となる修正版だ。実運用では、既存の依存関係の制約内で対象モデルのコールドスタートと短時間の推論を再実行し、比較できるようモデルのリビジョンを記録しておくとよい。今後は、下流の統合テストと、カスタム設定クラスが初期化のタイミングに依存している箇所を追跡する必要がある。

出典

  1. Transformers:Patch release v5.21.1
  2. Fix rope_scaling setter for configs that assign it during init
  3. Transformers 5.21.1 套件與發布紀錄
  4. Integration with Hugging Face