ホームへ戻る

GitHub Repo

Transformersコミュニティ、FSDPの除外設定が無視される問題を報告—融合損失カーネルとの統合に影響する可能性

10月29日のTransformersコミュニティの報告によると、TrainingArgumentsがモジュールの除外設定を転送せず、指定したモジュールも分割される可能性がある。コミュニティは修正を提案しているが、確認時点で未マージであり、複数GPU環境での実際の影響は未検証だ。

Marcus Qwertyus · Public domain · Image source
zh-Hant

Transformersコミュニティは10月29日、issue #50141を提出し、TrainingArguments の fsdp_config で ignored_modules を渡しても、その設定がAccelerateに渡される引数に反映されないと報告した。報告ではTransformers 5.22.0.dev0を使用し、GPU不要の最小再現コードを添付している。lm_head を除外するよう指定した後も、fsdp_plugin_args の該当フィールドを読み取ると値は None のままだった。issueと再現コード

このフィールドは、モデルをどのように分割するかに関わる。FSDP2はモデルのパラメーター、勾配、オプティマイザーの状態を複数のGPUに分散し、計算前に必要なパラメーターを集約することで、通信コストと引き換えにメモリー容量を確保する。エンジニアが一部のモジュールを意図的に分割せずに保つ場合、設定が有効になるかどうかは、後続のコードがテンソルをどう扱うかに影響する。Transformers FSDP2ドキュメント

報告者の用途は、凍結した出力層 lm_head を分割せずに保ち、融合線形演算とクロスエントロピーを組み合わせたカーネルに通常のテンソルを渡せるようにすることだった。DTensorに遭遇するのを避けるためだ。報告者は原因として _process_fsdp_args を挙げている。この処理は固定されたフィールドだけを転送し、ignored_modules を含めず、未知のキーに対する警告も出さない。これは具体的な統合リスクだが、公開された再現例が確認しているのは設定の受け渡しまでで、分散学習全体の失敗や性能低下は示されていない。報告の説明

Accelerateの公式APIドキュメントでは、FSDPプラグインがこのパラメーターをサポートしていることを確認できる。文字列はモジュール名全体に対して正規表現で照合され、FSDP2は一致したモジュールを除外対象のパラメーターに変換する。そのため、調査ではフィールドが転送されているかだけでなく、実際のモジュール名が一致するかも確認する必要がある。Accelerate APIドキュメント

同日に提出されたPR #50144は、パラメーターの転送、フィールドのドキュメント、単体テストを追加する提案だ。確認時点でPRはオープンのままで、レビュー結果はなく、ページにはメンテナーの承認待ちとしてCIが表示されている。エンジニアはまず、プラグインが実際に受け取った設定を確認し、モデルの準備完了後にパラメーターの型を検証できる。今後は修正のマージとリリース、融合カーネルを用いた複数GPUでの回帰テストを追跡する必要がある。修正提案

出典

  1. fsdp_config["ignored_modules"] is silently ignored by TrainingArguments — Issue #50141
  2. Fix: forward ignored_modules from fsdp_config to accelerate plugin — PR #50144
  3. Fully Sharded Data Parallel utilities
  4. Transformers FSDP2 documentation