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 設定中嵌套模組樹的進階路由。

相關

  • 專案
  • 專案
  • 專案
  • 專案
  • 專案