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設定におけるネストされたモジュールツリー用の高度なルーティング。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト