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 には、各オプティマイザを元のコードリポジトリや論文にリンクする長いテーブルが含まれており、研究のソースを遡ることが可能です。

一般的な使用ワークフロー

  1. 適合するトレーニングレジームに合わせてオプティマイザを選択します。
  2. オプションとして use_gc または use_lookahead を有効にして、追加の安定性を得ることができます。
  3. 通常の PyTorch トレーニングループにオプティマイザを組み込みます。他の変更は必要ありません。
  4. 学習率スケジューラが必要な場合は、get_supported_lr_schedulers() で取得し、torch.optim.lr_scheduler に渡すか、ライブラリ内置のラッパーを使用します。

メンテナンスkozistr チームによって積極的にメンテナンスされています。CI バッジ、コードカバレッジ報告、PyPI への定期的なリリースが行われています。


結論pytorch‑optimizer は、モダンなオプティマイザ、スケジューラ、損失関数に関する実用的なプロダクション指向のコレクションです。PyTorch ユーザーが最新のトレーニングアルゴリズムを迅速かつ安全に試すことができます。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • Dispatch
  • プロジェクト