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 설정에서 중첩된 모듈 트리용 고급 라우팅.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트