kozistr/pytorch_optimizer

optimizer & lr scheduler & loss function collections in PyTorch

pytorch‑optimizer – 一個即用型 PyTorch 優化器、調度器與損失函數的工具箱

什麼是它 – 一個 Python 套件,透過單一且一致的 API,將超過一百種研究等級的優化器(例如 AdamP, Ranger21, Lion, SAM)以及一些學習率調度器與損失函數封裝在一起。它旨在為任何使用 PyTorch 訓練深度學習模型的開發者提供便利,讓他們無需撰寫自定義的樣板代碼即可嘗試最新的優化技巧。

為什麼你可能會感興趣

  • 廣泛的覆蓋範圍 – 該函式庫收集了許多近期發表的變體,這些變體通常分散在各個獨立的儲存庫或論文中。
  • 統一的介面 – 所有組件都可以直接實例化,透過名稱查找(load_optimizer('adamp')),或使用輔助工具 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_gcuse_lookahead 以獲得額外的穩定性。
  3. 將優化器接入您平常的 PyTorch 訓練迴圈中 – 不需要其他變動。
  4. 如果您需要學習率調度,請使用 get_supported_lr_schedulers() 取得一個,並將其傳遞給 torch.optim.lr_scheduler 或使用函式庫內建的封裝器。

誰在維護它 – 由 kozistr 團隊積極維護,提供 CI 標誌、代碼覆蓋率報告以及在 PyPI 上的定期發布。


總結** – pytorch‑optimizer 是一個實用且面向生產環境的現代優化器與相關工具的集合,讓 PyTorch 使用者可以快速且安全地嘗試最新的訓練算法。

相關

  • 專案
  • 專案
  • 專案
  • Dispatch
  • 專案