lucidrains/ema-pytorch

A simple way to keep track of an Exponential Moving Average (EMA) version of your Pytorch model

何を解決するか

PyTorchモデルの指数移動平均(EMA)バージョンを簡単に維持する方法を提供します。EMAは、訓練中にモデルの重みの重み付き平均を保持することで、モデルの安定性と性能を向上させるためによく使用されます。最新のイテレーションに依存するのではなく、過去の重みの平均を維持することで、より安定したモデルを実現します。

動作方法

このライブラリはPyTorchモジュールをラップし、減衰係数(beta)に基づいて更新される別々の重みセットを追跡します。いくつかの高度な技術を含んでいます:

  • 標準EMA:定期的にモデル重みのシャドウコピーを更新します。
  • 後処理EMA:複数のチェックポイント(異なるハイパーパラメータ)を使用して、訓練後に新しいEMAモデルを合成する方法を実装しています。
  • スイッチEMA:定期的にメインモデルをEMA重みで更新することで、平坦性と鋭さを改善します。
  • ターゲット表現ルーティングEMAModuleWrapper を使用することで、EMAサブモジュールからの出力を他のサブモジュールのフォワードパスに直接ルーティングできます。これは特に自己教師学習(SSL)アーキテクチャで有用です。

対象ユーザー

PyTorchを使用している機械学習エンジニアや研究者で、訓練の安定化や自己教師学習におけるティーチャーステューデントフレームワークの実装に重み平均化技術を活用したい方。

特徴

  • 任意のPyTorchニューラルネットワーク用のシンプルなラッパー。
  • EMAモデルの後処理合成をサポート。
  • 定期的なモデル更新に「スイッチEMA」を統合。
  • SSL設定におけるネストされたモジュールツリー用の高度なルーティング。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト