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‑torch및torchao가 설치되어 있는 경우, 해당 패키지들과 연동하여 추가 코드 없이 저정밀도 또는 양자화 최적화를 지원합니다. - 프로덕션 준비 완료 – 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에는 각 옵티마이저를 원래의 코드 저장소 및 논문으로 연결하는 긴 테이블이 포함되어 있어, 연구 출처를 추적할 수 있습니다.
일반적인 사용 사례 워크플로우
- 자신의 훈련 방식에 맞는 옵티마이저를 선택합니다(예:
Ranger21). - 선택적으로
use_gc또는use_lookahead를 활성화하여 추가 안정성을 확보합니다. - 평소 사용하던 PyTorch 훈련 루프에 옵티마이저를 연결합니다. 다른 변경 사항은 필요하지 않습니다.
- 학습률 스케줄러가 필요한 경우,
get_supported_lr_schedulers()로 가져와서torch.optim.lr_scheduler에 전달하거나 라이브러리 내장 래퍼를 사용합니다.
유지 관리 – kozistr 팀에 의해 활발하게 유지 관리되고 있으며, CI 배지, 코드 커버리지 보고, PyPI에서의 정기적인 릴리스가 이루어집니다.
결론 – pytorch‑optimizer는 현대적인 옵티마이저 및 관련 유틸리티의 실용적이고 프로덕션 지향적인 컬렉션으로, PyTorch 사용자가 최신 훈련 알고리즘을 신속하고 안전하게 실험할 수 있게 해줍니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- Dispatch
- 프로젝트