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 には、各オプティマイザを元のコードリポジトリや論文にリンクする長いテーブルが含まれており、研究のソースを遡ることが可能です。
一般的な使用ワークフロー
- 適合するトレーニングレジームに合わせてオプティマイザを選択します。
- オプションとして
use_gcまたはuse_lookaheadを有効にして、追加の安定性を得ることができます。 - 通常の PyTorch トレーニングループにオプティマイザを組み込みます。他の変更は必要ありません。
- 学習率スケジューラが必要な場合は、
get_supported_lr_schedulers()で取得し、torch.optim.lr_schedulerに渡すか、ライブラリ内置のラッパーを使用します。
メンテナンス – kozistr チームによって積極的にメンテナンスされています。CI バッジ、コードカバレッジ報告、PyPI への定期的なリリースが行われています。
結論 – pytorch‑optimizer は、モダンなオプティマイザ、スケジューラ、損失関数に関する実用的なプロダクション指向のコレクションです。PyTorch ユーザーが最新のトレーニングアルゴリズムを迅速かつ安全に試すことができます。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- Dispatch
- プロジェクト