kozistr/pytorch_optimizer

optimizer & lr scheduler & loss function collections in PyTorch

pytorch‑optimizer – 즉시 사용 가능한 PyTorch 옵티마이저, 스케줄러 및 손실 함수 툴킷

개요 – Python 패키지로, 100개 이상의 연구급 옵티마이저(예: AdamP, Ranger21, Lion, SAM)와 몇 가지 학습률 스케줄러 및 손실 함수를 단일하고 일관된 API 뒤에 묶어 제공합니다. PyTorch로 딥러닝 모델을 훈련하는 사용자 중, 커스텀 보일러플레이트 코드를 작성하지 않고도 새로운 최적화 기법을 시도해보고 싶은 사람들을 위해 설계되었습니다.

주요 특징

  • 폭넓은 커버리지 – 이 라이브러리는 개별 저장소나 논문들에 흩어져 있는 많은 최신 변형들을 수집합니다.
  • 균일한 인터페이스 – 모든 구성 요소는 직접 인스턴스화하거나, 이름으로 조회(load_optimizer('adamp'))하거나, create_optimizer() 헬퍼를 사용하여 구축할 수 있습니다. create_optimizer()는 Gradient Centralization, Lookahead 또는 속도를 위한 foreach와 같은 선택적 트릭을 함께 연결할 수 있습니다.
  • 선택적 생태계 통합bitsandbytes, q‑galore‑torchtorchao가 설치되어 있는 경우, 해당 패키지들과 연동하여 추가 코드 없이 저정밀도 또는 양자화 최적화를 지원합니다.
  • 프로덕션 준비 완료 – CI 테스트, 타입 어노테이션, PyPI 게시(Apache‑2.0 라이선스)가 완료되었습니다.

설치 방법

pip install pytorch-optimizer   # requires Python ≥3.8 and PyTorch ≥1.10

선택적 통합 기능이 필요한 경우, 별도로 설치하십시오(예: pip install bitsandbytes).

빠른 시작

from pytorch_optimizer import AdamP, create_optimizer, load_optimizer

model = MyNet()
# 1️⃣ 클래스 직접 사용
opt = AdamP(model.parameters(), lr=1e-3)

# 2️⃣ 문자열 이름으로 로드
opt = load_optimizer('adamp')(model.parameters(), lr=1e-3)

# 3️⃣ 헬퍼를 사용하여 일반적인 트릭을 추가
opt = create_optimizer(
    model,
    optimizer_name='adamp',
    lr=1e-3,
    weight_decay=1e-3,
    use_gc=True,          # Gradient Centralization
    use_lookahead=True,   # Lookahead wrapper
)

You can also fetch the class via torch.hub:

opt_cls = torch.hub.load('kozistr/pytorch_optimizer', 'adamp')
opt = opt_cls(model.parameters(), lr=1e-3)

사용 가능한 기능 확인

from pytorch_optimizer import (
    get_supported_optimizers,
    get_supported_lr_schedulers,
    get_supported_loss_functions,
)

print(get_supported_optimizers())               # list of all 100+ optimizers
print(get_supported_optimizers('adam*'))        # filter by pattern
print(get_supported_lr_schedulers('cosine*'))   # scheduler names
print(get_supported_loss_functions('*focal*')) # loss names

The README에는 각 옵티마이저를 원래의 코드 저장소 및 논문으로 연결하는 긴 테이블이 포함되어 있어, 연구 출처를 추적할 수 있습니다.

일반적인 사용 사례 워크플로우

  1. 자신의 훈련 방식에 맞는 옵티마이저를 선택합니다(예: Ranger21).
  2. 선택적으로 use_gc 또는 use_lookahead를 활성화하여 추가 안정성을 확보합니다.
  3. 평소 사용하던 PyTorch 훈련 루프에 옵티마이저를 연결합니다. 다른 변경 사항은 필요하지 않습니다.
  4. 학습률 스케줄러가 필요한 경우, get_supported_lr_schedulers()로 가져와서 torch.optim.lr_scheduler에 전달하거나 라이브러리 내장 래퍼를 사용합니다.

유지 관리kozistr 팀에 의해 활발하게 유지 관리되고 있으며, CI 배지, 코드 커버리지 보고, PyPI에서의 정기적인 릴리스가 이루어집니다.


결론pytorch‑optimizer는 현대적인 옵티마이저 및 관련 유틸리티의 실용적이고 프로덕션 지향적인 컬렉션으로, PyTorch 사용자가 최신 훈련 알고리즘을 신속하고 안전하게 실험할 수 있게 해줍니다.

관련

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