pytorch-optimizer 3.3.4__tar.gz → 3.4.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/PKG-INFO +11 -8
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/README.md +7 -1
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pyproject.toml +30 -28
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/__init__.py +4 -0
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/base/exception.py +5 -5
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/base/optimizer.py +24 -3
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/loss/dice.py +1 -1
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/loss/jaccard.py +3 -3
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/lr_scheduler/__init__.py +1 -1
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/lr_scheduler/experimental/deberta_v3_lr_scheduler.py +1 -1
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/__init__.py +18 -5
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/a2grad.py +1 -1
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/adabelief.py +1 -1
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/adabound.py +1 -1
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/adadelta.py +1 -1
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/adafactor.py +1 -1
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/adahessian.py +1 -1
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/adai.py +2 -2
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/adalite.py +1 -1
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/adam_mini.py +1 -1
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/adamax.py +1 -1
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/adamg.py +1 -1
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/adamod.py +1 -1
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/adamp.py +2 -2
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/adams.py +1 -1
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/adamw.py +1 -1
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/adan.py +2 -2
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/adanorm.py +1 -1
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/adapnm.py +1 -1
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/adashift.py +1 -1
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/adasmooth.py +1 -1
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/ademamix.py +1 -1
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/adopt.py +6 -5
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/agc.py +6 -6
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/aggmo.py +1 -1
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/aida.py +1 -1
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/alig.py +1 -1
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/amos.py +1 -1
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/apollo.py +1 -1
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/avagrad.py +1 -1
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/came.py +1 -1
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/dadapt.py +1 -1
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/demo.py +1 -1
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/diffgrad.py +1 -1
- pytorch_optimizer-3.4.1/pytorch_optimizer/optimizer/exadam.py +123 -0
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/experimental/ranger25.py +49 -5
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/fadam.py +1 -1
- pytorch_optimizer-3.4.1/pytorch_optimizer/optimizer/focus.py +95 -0
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/fp16.py +1 -1
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/fromage.py +1 -1
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/ftrl.py +2 -2
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/galore.py +1 -1
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/grams.py +1 -1
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/gravity.py +1 -1
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/grokfast.py +1 -1
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/kate.py +1 -1
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/lamb.py +1 -1
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/laprop.py +1 -1
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/lars.py +1 -1
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/lion.py +2 -2
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/lomo.py +2 -2
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/lookahead.py +7 -13
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/madgrad.py +1 -1
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/mars.py +1 -1
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/msvag.py +1 -1
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/muon.py +3 -3
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/nero.py +1 -1
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/novograd.py +1 -1
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/orthograd.py +18 -13
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/padam.py +1 -1
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/pid.py +1 -1
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/pnm.py +1 -1
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/prodigy.py +1 -1
- pytorch_optimizer-3.4.1/pytorch_optimizer/optimizer/psgd.py +375 -0
- pytorch_optimizer-3.4.1/pytorch_optimizer/optimizer/psgd_utils.py +94 -0
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/qhadam.py +1 -1
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/qhm.py +1 -1
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/radam.py +1 -1
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/ranger.py +3 -3
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/ranger21.py +3 -3
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/rotograd.py +1 -1
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/sam.py +196 -4
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/schedulefree.py +1 -3
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/sgd.py +2 -2
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/sgdp.py +1 -1
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/shampoo.py +2 -2
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/shampoo_utils.py +5 -5
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/sm3.py +1 -1
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/soap.py +14 -6
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/sophia.py +1 -1
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/spam.py +6 -6
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/srmm.py +1 -1
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/swats.py +1 -1
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/tam.py +1 -1
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/tiger.py +1 -1
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/trac.py +15 -15
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/utils.py +2 -2
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/yogi.py +1 -1
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/LICENSE +0 -0
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/base/__init__.py +0 -0
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/base/scheduler.py +0 -0
- /pytorch_optimizer-3.3.4/pytorch_optimizer/base/types.py → /pytorch_optimizer-3.4.1/pytorch_optimizer/base/type.py +0 -0
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/loss/__init__.py +0 -0
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/loss/bi_tempered.py +0 -0
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/loss/cross_entropy.py +0 -0
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/loss/f1.py +0 -0
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/loss/focal.py +0 -0
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/loss/ldam.py +0 -0
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/loss/lovasz.py +0 -0
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/loss/tversky.py +0 -0
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/lr_scheduler/chebyshev.py +0 -0
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/lr_scheduler/cosine_anealing.py +0 -0
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/lr_scheduler/experimental/__init__.py +0 -0
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/lr_scheduler/linear_warmup.py +0 -0
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/lr_scheduler/proportion.py +0 -0
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/lr_scheduler/rex.py +0 -0
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/lr_scheduler/wsd.py +0 -0
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/experimental/__init__.py +0 -0
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/galore_utils.py +0 -0
- /pytorch_optimizer-3.3.4/pytorch_optimizer/optimizer/gc.py → /pytorch_optimizer-3.4.1/pytorch_optimizer/optimizer/gradient_centralization.py +0 -0
- {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/pcgrad.py +0 -0
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: pytorch_optimizer
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.4.1
|
|
4
4
|
Summary: optimizer & lr scheduler & objective function collections in PyTorch
|
|
5
5
|
License: Apache-2.0
|
|
6
|
-
Keywords: pytorch,deep-learning,optimizer,lr scheduler,A2Grad,ASGD,AccSGD,AdaBelief,AdaBound,AdaDelta,AdaFactor,AdaMax,AdamG,AdaMod,AdaNorm,AdaPNM,AdaSmooth,AdEMAMix,ADOPT,AdaHessian,Adai,Adalite,AdaLomo,AdamMini,AdamP,AdamS,Adan,AggMo,Aida,AliG,Amos,Apollo,APOLLO,AvaGrad,bSAM,CAME,DAdaptAdaGrad,DAdaptAdam,DAdaptAdan,DAdaptSGD,DAdaptLion,DeMo,DiffGrad,FAdam,Fromage,FTRL,GaLore,Grams,Gravity,GrokFast,GSAM,Kate,Lamb,LaProp,LARS,Lion,LOMO,Lookahead,MADGRAD,MARS,MSVAG,Muno,Nero,NovoGrad,OrthoGrad,PAdam,PCGrad,PID,PNM,Prodigy,QHAdam,QHM,RAdam,Ranger,Ranger21,RotoGrad,SAM,ScheduleFreeSGD,ScheduleFreeAdamW,ScheduleFreeRAdam,SGDP,Shampoo,ScalableShampoo,SGDW,SignSGD,SM3,SOAP,SopihaH,SPAM,SRMM,StableAdamW,SWATS,TAM,Tiger,TRAC,WSAM,Yogi,BCE,BCEFocal,Focal,FocalCosine,SoftF1,Dice,LDAM,Jaccard,Bi-Tempered,Tversky,FocalTversky,LovaszHinge,bitsandbytes,WSD,QGaLore
|
|
6
|
+
Keywords: pytorch,deep-learning,optimizer,lr scheduler,A2Grad,ASGD,AccSGD,AdaBelief,AdaBound,AdaDelta,AdaFactor,AdaMax,AdamG,AdaMod,AdaNorm,AdaPNM,AdaSmooth,AdEMAMix,ADOPT,AdaHessian,Adai,Adalite,AdaLomo,AdamMini,AdamP,AdamS,Adan,AggMo,Aida,AliG,Amos,Apollo,APOLLO,AvaGrad,bSAM,CAME,DAdaptAdaGrad,DAdaptAdam,DAdaptAdan,DAdaptSGD,DAdaptLion,DeMo,DiffGrad,EXAdam,FAdam,FOCUS,Fromage,FTRL,GaLore,Grams,Gravity,GrokFast,GSAM,Kate,Lamb,LaProp,LARS,Lion,LOMO,Lookahead,MADGRAD,MARS,MSVAG,Muno,Nero,NovoGrad,OrthoGrad,PAdam,PCGrad,PID,PNM,Prodigy,PSGD,QHAdam,QHM,RAdam,Ranger,Ranger21,RotoGrad,SAM,GCSAM,LookSAM,ScheduleFreeSGD,ScheduleFreeAdamW,ScheduleFreeRAdam,SGDP,Shampoo,ScalableShampoo,SGDW,SignSGD,SM3,SOAP,SopihaH,SPAM,SRMM,StableAdamW,SWATS,TAM,Tiger,TRAC,WSAM,Yogi,BCE,BCEFocal,Focal,FocalCosine,SoftF1,Dice,LDAM,Jaccard,Bi-Tempered,Tversky,FocalTversky,LovaszHinge,bitsandbytes,WSD,QGaLore
|
|
7
7
|
Author: kozistr
|
|
8
8
|
Author-email: kozistr@gmail.com
|
|
9
9
|
Maintainer: kozistr
|
|
@@ -22,18 +22,15 @@ Classifier: Programming Language :: Python :: 3.10
|
|
|
22
22
|
Classifier: Programming Language :: Python :: 3.11
|
|
23
23
|
Classifier: Programming Language :: Python :: 3.12
|
|
24
24
|
Classifier: Programming Language :: Python :: 3.13
|
|
25
|
-
Classifier: Programming Language :: Python :: 3.6
|
|
26
|
-
Classifier: Programming Language :: Python :: 3.7
|
|
27
25
|
Classifier: Topic :: Scientific/Engineering
|
|
28
26
|
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
29
27
|
Classifier: Topic :: Software Development
|
|
30
28
|
Classifier: Topic :: Software Development :: Libraries
|
|
31
29
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
32
|
-
Provides-Extra: bitsandbytes
|
|
33
|
-
Requires-Dist: bitsandbytes (>=0.44,<0.45) ; extra == "bitsandbytes"
|
|
34
30
|
Requires-Dist: numpy (<=1.24.4) ; python_version < "3.9"
|
|
35
31
|
Requires-Dist: numpy (>1.24.4) ; python_version >= "3.9"
|
|
36
|
-
Requires-Dist: torch (>=1.10) ; python_version >= "3.
|
|
32
|
+
Requires-Dist: torch (>=1.10) ; python_version >= "3.9"
|
|
33
|
+
Requires-Dist: torch (>=1.10,<2.5) ; python_version < "3.9"
|
|
37
34
|
Project-URL: Documentation, https://pytorch-optimizers.readthedocs.io/en/latest
|
|
38
35
|
Project-URL: Homepage, https://github.com/kozistr/pytorch_optimizer
|
|
39
36
|
Project-URL: Repository, https://github.com/kozistr/pytorch_optimizer
|
|
@@ -51,7 +48,7 @@ Description-Content-Type: text/markdown
|
|
|
51
48
|
|
|
52
49
|
## The reasons why you use `pytorch-optimizer`.
|
|
53
50
|
|
|
54
|
-
* Wide range of supported optimizers. Currently, **
|
|
51
|
+
* Wide range of supported optimizers. Currently, **98 optimizers (+ `bitsandbytes`, `qgalore`, `torchao`)**, **16 lr schedulers**, and **13 loss functions** are supported!
|
|
55
52
|
* Including many variants such as `ADOPT`, `Cautious`, `AdamD`, `StableAdamW`, and `Gradient Centrailiaztion`
|
|
56
53
|
* Easy to use, clean, and tested codes
|
|
57
54
|
* Active maintenance
|
|
@@ -120,6 +117,7 @@ optimizer = create_optimizer(
|
|
|
120
117
|
weight_decay=1e-3,
|
|
121
118
|
use_gc=True,
|
|
122
119
|
use_lookahead=True,
|
|
120
|
+
use_orthograd=False,
|
|
123
121
|
)
|
|
124
122
|
```
|
|
125
123
|
|
|
@@ -241,6 +239,11 @@ get_supported_optimizers(['adam*', 'ranger*'])
|
|
|
241
239
|
| Adam-ATAN2 | *Scaling Exponents Across Parameterizations and Optimizers* | | <https://arxiv.org/abs/2407.05872> | [cite](https://ui.adsabs.harvard.edu/abs/2024arXiv240705872E/exportcitation) |
|
|
242
240
|
| SPAM | *Spike-Aware Adam with Momentum Reset for Stable LLM Training* | [github](https://github.com/TianjinYellow/SPAM-Optimizer) | <https://arxiv.org/abs/2501.06842> | [cite](https://ui.adsabs.harvard.edu/abs/2025arXiv250106842H/exportcitation) |
|
|
243
241
|
| TAM | *Torque-Aware Momentum* | | <https://arxiv.org/abs/2412.18790> | [cite](https://ui.adsabs.harvard.edu/abs/2024arXiv241218790M/exportcitation) |
|
|
242
|
+
| FOCUS | *First Order Concentrated Updating Scheme* | [github](https://github.com/liuyz0/FOCUS) | <https://arxiv.org/abs/2501.12243> | [cite](https://ui.adsabs.harvard.edu/abs/2025arXiv250112243M/exportcitation) |
|
|
243
|
+
| PSGD | *Preconditioned Stochastic Gradient Descent* | [github](https://github.com/lixilinx/psgd_torch) | <https://arxiv.org/abs/1512.04202> | [cite](https://github.com/lixilinx/psgd_torch?tab=readme-ov-file#resources) |
|
|
244
|
+
| EXAdam | *The Power of Adaptive Cross-Moments* | [github](https://github.com/AhmedMostafa16/EXAdam) | <https://arxiv.org/abs/2412.20302> | [cite](https://github.com/AhmedMostafa16/EXAdam?tab=readme-ov-file#citation) |
|
|
245
|
+
| GCSAM | *Gradient Centralized Sharpness Aware Minimization* | [github](https://github.com/mhassann22/GCSAM) | <https://arxiv.org/abs/2501.11584> | [cite](https://github.com/mhassann22/GCSAM?tab=readme-ov-file#citation) |
|
|
246
|
+
| LookSAM | *Towards Efficient and Scalable Sharpness-Aware Minimization* | [github](https://github.com/rollovd/LookSAM) | <https://arxiv.org/abs/2203.02714> | [cite](https://ui.adsabs.harvard.edu/abs/2022arXiv220302714L/exportcitation) |
|
|
244
247
|
|
|
245
248
|
## Supported LR Scheduler
|
|
246
249
|
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
|
|
11
11
|
## The reasons why you use `pytorch-optimizer`.
|
|
12
12
|
|
|
13
|
-
* Wide range of supported optimizers. Currently, **
|
|
13
|
+
* Wide range of supported optimizers. Currently, **98 optimizers (+ `bitsandbytes`, `qgalore`, `torchao`)**, **16 lr schedulers**, and **13 loss functions** are supported!
|
|
14
14
|
* Including many variants such as `ADOPT`, `Cautious`, `AdamD`, `StableAdamW`, and `Gradient Centrailiaztion`
|
|
15
15
|
* Easy to use, clean, and tested codes
|
|
16
16
|
* Active maintenance
|
|
@@ -79,6 +79,7 @@ optimizer = create_optimizer(
|
|
|
79
79
|
weight_decay=1e-3,
|
|
80
80
|
use_gc=True,
|
|
81
81
|
use_lookahead=True,
|
|
82
|
+
use_orthograd=False,
|
|
82
83
|
)
|
|
83
84
|
```
|
|
84
85
|
|
|
@@ -200,6 +201,11 @@ get_supported_optimizers(['adam*', 'ranger*'])
|
|
|
200
201
|
| Adam-ATAN2 | *Scaling Exponents Across Parameterizations and Optimizers* | | <https://arxiv.org/abs/2407.05872> | [cite](https://ui.adsabs.harvard.edu/abs/2024arXiv240705872E/exportcitation) |
|
|
201
202
|
| SPAM | *Spike-Aware Adam with Momentum Reset for Stable LLM Training* | [github](https://github.com/TianjinYellow/SPAM-Optimizer) | <https://arxiv.org/abs/2501.06842> | [cite](https://ui.adsabs.harvard.edu/abs/2025arXiv250106842H/exportcitation) |
|
|
202
203
|
| TAM | *Torque-Aware Momentum* | | <https://arxiv.org/abs/2412.18790> | [cite](https://ui.adsabs.harvard.edu/abs/2024arXiv241218790M/exportcitation) |
|
|
204
|
+
| FOCUS | *First Order Concentrated Updating Scheme* | [github](https://github.com/liuyz0/FOCUS) | <https://arxiv.org/abs/2501.12243> | [cite](https://ui.adsabs.harvard.edu/abs/2025arXiv250112243M/exportcitation) |
|
|
205
|
+
| PSGD | *Preconditioned Stochastic Gradient Descent* | [github](https://github.com/lixilinx/psgd_torch) | <https://arxiv.org/abs/1512.04202> | [cite](https://github.com/lixilinx/psgd_torch?tab=readme-ov-file#resources) |
|
|
206
|
+
| EXAdam | *The Power of Adaptive Cross-Moments* | [github](https://github.com/AhmedMostafa16/EXAdam) | <https://arxiv.org/abs/2412.20302> | [cite](https://github.com/AhmedMostafa16/EXAdam?tab=readme-ov-file#citation) |
|
|
207
|
+
| GCSAM | *Gradient Centralized Sharpness Aware Minimization* | [github](https://github.com/mhassann22/GCSAM) | <https://arxiv.org/abs/2501.11584> | [cite](https://github.com/mhassann22/GCSAM?tab=readme-ov-file#citation) |
|
|
208
|
+
| LookSAM | *Towards Efficient and Scalable Sharpness-Aware Minimization* | [github](https://github.com/rollovd/LookSAM) | <https://arxiv.org/abs/2203.02714> | [cite](https://ui.adsabs.harvard.edu/abs/2022arXiv220302714L/exportcitation) |
|
|
203
209
|
|
|
204
210
|
## Supported LR Scheduler
|
|
205
211
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "pytorch_optimizer"
|
|
3
|
-
version = "3.
|
|
3
|
+
version = "3.4.1"
|
|
4
4
|
description = "optimizer & lr scheduler & objective function collections in PyTorch"
|
|
5
5
|
license = "Apache-2.0"
|
|
6
6
|
authors = ["kozistr <kozistr@gmail.com>"]
|
|
@@ -14,13 +14,14 @@ keywords = [
|
|
|
14
14
|
"AdaDelta", "AdaFactor", "AdaMax", "AdamG", "AdaMod", "AdaNorm", "AdaPNM", "AdaSmooth", "AdEMAMix", "ADOPT",
|
|
15
15
|
"AdaHessian", "Adai", "Adalite", "AdaLomo", "AdamMini", "AdamP", "AdamS", "Adan", "AggMo", "Aida", "AliG", "Amos",
|
|
16
16
|
"Apollo", "APOLLO", "AvaGrad", "bSAM", "CAME", "DAdaptAdaGrad", "DAdaptAdam", "DAdaptAdan", "DAdaptSGD",
|
|
17
|
-
"DAdaptLion", "DeMo", "DiffGrad", "
|
|
18
|
-
"Kate", "Lamb", "LaProp", "LARS", "Lion", "LOMO", "Lookahead", "MADGRAD", "MARS", "MSVAG",
|
|
19
|
-
"NovoGrad", "OrthoGrad", "PAdam", "PCGrad", "PID", "PNM", "Prodigy", "
|
|
20
|
-
"
|
|
21
|
-
"
|
|
22
|
-
"
|
|
23
|
-
"Bi-Tempered", "Tversky", "FocalTversky", "LovaszHinge", "bitsandbytes", "WSD",
|
|
17
|
+
"DAdaptLion", "DeMo", "DiffGrad", "EXAdam", "FAdam", "FOCUS", "Fromage", "FTRL", "GaLore", "Grams", "Gravity",
|
|
18
|
+
"GrokFast", "GSAM", "Kate", "Lamb", "LaProp", "LARS", "Lion", "LOMO", "Lookahead", "MADGRAD", "MARS", "MSVAG",
|
|
19
|
+
"Muno", "Nero", "NovoGrad", "OrthoGrad", "PAdam", "PCGrad", "PID", "PNM", "Prodigy", "PSGD", "QHAdam", "QHM",
|
|
20
|
+
"RAdam", "Ranger", "Ranger21", "RotoGrad", "SAM", "GCSAM", "LookSAM", "ScheduleFreeSGD", "ScheduleFreeAdamW",
|
|
21
|
+
"ScheduleFreeRAdam", "SGDP", "Shampoo", "ScalableShampoo", "SGDW", "SignSGD", "SM3", "SOAP", "SopihaH", "SPAM",
|
|
22
|
+
"SRMM", "StableAdamW", "SWATS", "TAM", "Tiger", "TRAC", "WSAM", "Yogi", "BCE", "BCEFocal", "Focal", "FocalCosine",
|
|
23
|
+
"SoftF1", "Dice", "LDAM", "Jaccard", "Bi-Tempered", "Tversky", "FocalTversky", "LovaszHinge", "bitsandbytes", "WSD",
|
|
24
|
+
"QGaLore",
|
|
24
25
|
]
|
|
25
26
|
classifiers = [
|
|
26
27
|
"License :: OSI Approved :: Apache Software License",
|
|
@@ -29,8 +30,6 @@ classifiers = [
|
|
|
29
30
|
"Intended Audience :: Developers",
|
|
30
31
|
"Intended Audience :: Science/Research",
|
|
31
32
|
"Programming Language :: Python :: 3",
|
|
32
|
-
"Programming Language :: Python :: 3.6",
|
|
33
|
-
"Programming Language :: Python :: 3.7",
|
|
34
33
|
"Programming Language :: Python :: 3.8",
|
|
35
34
|
"Programming Language :: Python :: 3.9",
|
|
36
35
|
"Programming Language :: Python :: 3.10",
|
|
@@ -51,30 +50,31 @@ numpy = [
|
|
|
51
50
|
{ version = ">1.24.4", python = ">=3.9" },
|
|
52
51
|
{ version = "<=1.24.4", python = "<3.9" },
|
|
53
52
|
]
|
|
54
|
-
torch =
|
|
55
|
-
|
|
53
|
+
torch = [
|
|
54
|
+
{ version = ">=1.10,<2.5", python = "<3.9", source = "torch" },
|
|
55
|
+
{ version = ">=1.10", python = ">=3.9", source = "torch" },
|
|
56
|
+
]
|
|
56
57
|
|
|
57
|
-
[tool.poetry.dev
|
|
58
|
-
isort =
|
|
59
|
-
|
|
58
|
+
[tool.poetry.group.dev.dependencies]
|
|
59
|
+
isort = [
|
|
60
|
+
{ version = "<6", python = "<3.9" },
|
|
61
|
+
{ version = "^6", python = ">=3.9" },
|
|
62
|
+
]
|
|
63
|
+
black = [
|
|
64
|
+
{ version = "<25", python = "<3.9" },
|
|
65
|
+
{ version = "^25", python = ">=3.9" },
|
|
66
|
+
]
|
|
60
67
|
ruff = "*"
|
|
61
68
|
pytest = "*"
|
|
62
69
|
pytest-cov = "*"
|
|
63
70
|
|
|
64
|
-
[tool.poetry.extras]
|
|
65
|
-
bitsandbytes = ["bitsandbytes"]
|
|
66
|
-
|
|
67
71
|
[[tool.poetry.source]]
|
|
68
72
|
name = "torch"
|
|
69
73
|
url = "https://download.pytorch.org/whl/cpu"
|
|
70
74
|
priority = "explicit"
|
|
71
75
|
|
|
72
76
|
[tool.ruff]
|
|
73
|
-
src = [
|
|
74
|
-
"pytorch_optimizer",
|
|
75
|
-
"tests",
|
|
76
|
-
"examples",
|
|
77
|
-
]
|
|
77
|
+
src = ["pytorch_optimizer", "tests", "examples"]
|
|
78
78
|
target-version = "py312"
|
|
79
79
|
line-length = 119
|
|
80
80
|
exclude = [
|
|
@@ -97,8 +97,10 @@ select = [
|
|
|
97
97
|
"TID", "ARG", "ERA", "RUF", "YTT", "PL", "Q"
|
|
98
98
|
]
|
|
99
99
|
ignore = [
|
|
100
|
-
"
|
|
101
|
-
"
|
|
100
|
+
"B905",
|
|
101
|
+
"D100", "D102", "D104", "D105", "D107", "D203", "D213", "D413",
|
|
102
|
+
"PLR0912", "PLR0913", "PLR0915", "PLR2004",
|
|
103
|
+
"Q003", "ARG002",
|
|
102
104
|
]
|
|
103
105
|
fixable = ["ALL"]
|
|
104
106
|
unfixable = ["F401"]
|
|
@@ -107,10 +109,10 @@ flake8-quotes.docstring-quotes = "double"
|
|
|
107
109
|
flake8-quotes.inline-quotes = "single"
|
|
108
110
|
|
|
109
111
|
[tool.ruff.lint.extend-per-file-ignores]
|
|
110
|
-
"hubconf.py" = ["D", "INP001"]
|
|
111
112
|
"examples/visualize_optimizers.py" = ["D103", "D400", "D415"]
|
|
112
|
-
"**/__init__.py" = ["F401"]
|
|
113
113
|
"{tests,examples}/*.py" = ["D", "S101"]
|
|
114
|
+
"**/__init__.py" = ["F401"]
|
|
115
|
+
"hubconf.py" = ["D", "INP001"]
|
|
114
116
|
|
|
115
117
|
[tool.ruff.lint.isort]
|
|
116
118
|
combine-as-imports = false
|
|
@@ -129,9 +131,9 @@ testpaths = "tests"
|
|
|
129
131
|
|
|
130
132
|
[tool.coverage.run]
|
|
131
133
|
omit = [
|
|
132
|
-
"./pytorch_optimizer/optimizer/rotograd.py",
|
|
133
134
|
"./pytorch_optimizer/optimizer/adam_mini.py",
|
|
134
135
|
"./pytorch_optimizer/optimizer/demo.py",
|
|
136
|
+
"./pytorch_optimizer/optimizer/rotograd.py",
|
|
135
137
|
]
|
|
136
138
|
|
|
137
139
|
[build-system]
|
|
@@ -46,6 +46,7 @@ from pytorch_optimizer.optimizer import (
|
|
|
46
46
|
ASGD,
|
|
47
47
|
BSAM,
|
|
48
48
|
CAME,
|
|
49
|
+
FOCUS,
|
|
49
50
|
FTRL,
|
|
50
51
|
GSAM,
|
|
51
52
|
LARS,
|
|
@@ -105,6 +106,7 @@ from pytorch_optimizer.optimizer import (
|
|
|
105
106
|
DeMo,
|
|
106
107
|
DiffGrad,
|
|
107
108
|
DynamicLossScaler,
|
|
109
|
+
EXAdam,
|
|
108
110
|
FAdam,
|
|
109
111
|
Fromage,
|
|
110
112
|
GaLore,
|
|
@@ -112,10 +114,12 @@ from pytorch_optimizer.optimizer import (
|
|
|
112
114
|
Gravity,
|
|
113
115
|
GrokFastAdamW,
|
|
114
116
|
Kate,
|
|
117
|
+
Kron,
|
|
115
118
|
Lamb,
|
|
116
119
|
LaProp,
|
|
117
120
|
Lion,
|
|
118
121
|
Lookahead,
|
|
122
|
+
LookSAM,
|
|
119
123
|
Muon,
|
|
120
124
|
Nero,
|
|
121
125
|
NovoGrad,
|
|
@@ -7,7 +7,7 @@ class NoSparseGradientError(Exception):
|
|
|
7
7
|
|
|
8
8
|
def __init__(self, optimizer_name: str, note: str = ''):
|
|
9
9
|
self.note: str = ' ' if not note else f' w/ {note} '
|
|
10
|
-
self.message: str = f'
|
|
10
|
+
self.message: str = f'{optimizer_name}{self.note}does not support sparse gradient.'
|
|
11
11
|
super().__init__(self.message)
|
|
12
12
|
|
|
13
13
|
|
|
@@ -15,7 +15,7 @@ class ZeroParameterSizeError(Exception):
|
|
|
15
15
|
"""Raised when the parameter size is 0."""
|
|
16
16
|
|
|
17
17
|
def __init__(self):
|
|
18
|
-
self.message: str = '
|
|
18
|
+
self.message: str = 'parameter size is 0'
|
|
19
19
|
super().__init__(self.message)
|
|
20
20
|
|
|
21
21
|
|
|
@@ -23,7 +23,7 @@ class NoClosureError(Exception):
|
|
|
23
23
|
"""Raised when there's no closure function."""
|
|
24
24
|
|
|
25
25
|
def __init__(self, optimizer_name: str, note: str = ''):
|
|
26
|
-
self.message: str = f'
|
|
26
|
+
self.message: str = f'{optimizer_name} requires closure.{note}'
|
|
27
27
|
super().__init__(self.message)
|
|
28
28
|
|
|
29
29
|
|
|
@@ -32,7 +32,7 @@ class NegativeLRError(Exception):
|
|
|
32
32
|
|
|
33
33
|
def __init__(self, lr: float, lr_type: str = ''):
|
|
34
34
|
self.note: str = lr_type if lr_type else 'learning rate'
|
|
35
|
-
self.message: str = f'
|
|
35
|
+
self.message: str = f'{self.note} must be positive. ({lr} > 0)'
|
|
36
36
|
super().__init__(self.message)
|
|
37
37
|
|
|
38
38
|
|
|
@@ -41,5 +41,5 @@ class NegativeStepError(Exception):
|
|
|
41
41
|
|
|
42
42
|
def __init__(self, num_steps: int, step_type: str = ''):
|
|
43
43
|
self.note: str = step_type if step_type else 'step'
|
|
44
|
-
self.message: str = f'
|
|
44
|
+
self.message: str = f'{self.note} must be positive. ({num_steps} > 0)'
|
|
45
45
|
super().__init__(self.message)
|
|
@@ -6,7 +6,16 @@ import torch
|
|
|
6
6
|
from torch.optim import Optimizer
|
|
7
7
|
|
|
8
8
|
from pytorch_optimizer.base.exception import NegativeLRError, NegativeStepError
|
|
9
|
-
from pytorch_optimizer.base.
|
|
9
|
+
from pytorch_optimizer.base.type import (
|
|
10
|
+
BETAS,
|
|
11
|
+
CLOSURE,
|
|
12
|
+
DEFAULTS,
|
|
13
|
+
HUTCHINSON_G,
|
|
14
|
+
LOSS,
|
|
15
|
+
OPTIMIZER_INSTANCE_OR_CLASS,
|
|
16
|
+
PARAMETERS,
|
|
17
|
+
STATE,
|
|
18
|
+
)
|
|
10
19
|
|
|
11
20
|
|
|
12
21
|
class BaseOptimizer(ABC, Optimizer):
|
|
@@ -15,6 +24,18 @@ class BaseOptimizer(ABC, Optimizer):
|
|
|
15
24
|
def __init__(self, params: PARAMETERS, defaults: DEFAULTS) -> None:
|
|
16
25
|
super().__init__(params, defaults)
|
|
17
26
|
|
|
27
|
+
@staticmethod
|
|
28
|
+
def load_optimizer(optimizer: OPTIMIZER_INSTANCE_OR_CLASS, **kwargs) -> Optimizer:
|
|
29
|
+
r"""Build torch.optim.Optimizer class."""
|
|
30
|
+
if isinstance(optimizer, Optimizer):
|
|
31
|
+
return optimizer
|
|
32
|
+
|
|
33
|
+
if 'params' in kwargs:
|
|
34
|
+
params = kwargs.pop('params')
|
|
35
|
+
return optimizer(params, **kwargs)
|
|
36
|
+
|
|
37
|
+
raise ValueError('need to pass `params` when you pass the `torch.optim.Optimizer` instance.')
|
|
38
|
+
|
|
18
39
|
@staticmethod
|
|
19
40
|
@torch.no_grad()
|
|
20
41
|
def set_hessian(param_groups: PARAMETERS, state: STATE, hessian: List[torch.Tensor]) -> None:
|
|
@@ -82,7 +103,7 @@ class BaseOptimizer(ABC, Optimizer):
|
|
|
82
103
|
:param distribution: HUTCHINSON_G. type of distribution.
|
|
83
104
|
"""
|
|
84
105
|
if distribution not in ('gaussian', 'rademacher'):
|
|
85
|
-
raise NotImplementedError(f'
|
|
106
|
+
raise NotImplementedError(f'hessian with distribution {distribution} is not implemented.')
|
|
86
107
|
|
|
87
108
|
params: List[torch.Tensor] = [
|
|
88
109
|
p
|
|
@@ -317,7 +338,7 @@ class BaseOptimizer(ABC, Optimizer):
|
|
|
317
338
|
@staticmethod
|
|
318
339
|
def validate_options(x: str, name: str, options: List[str]) -> None:
|
|
319
340
|
if x not in options:
|
|
320
|
-
opts: str = ' or '.join([f'
|
|
341
|
+
opts: str = ' or '.join([f"'{option}'" for option in options]).strip()
|
|
321
342
|
raise ValueError(f'[-] {name} {x} must be one of ({opts})')
|
|
322
343
|
|
|
323
344
|
@staticmethod
|
|
@@ -4,7 +4,7 @@ import torch
|
|
|
4
4
|
from torch.nn.functional import logsigmoid, one_hot
|
|
5
5
|
from torch.nn.modules.loss import _Loss
|
|
6
6
|
|
|
7
|
-
from pytorch_optimizer.base.
|
|
7
|
+
from pytorch_optimizer.base.type import CLASS_MODE
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
def soft_jaccard_score(
|
|
@@ -49,7 +49,7 @@ class JaccardLoss(_Loss):
|
|
|
49
49
|
def __init__(
|
|
50
50
|
self,
|
|
51
51
|
mode: CLASS_MODE,
|
|
52
|
-
classes: List[int] = None,
|
|
52
|
+
classes: Optional[List[int]] = None,
|
|
53
53
|
log_loss: bool = False,
|
|
54
54
|
from_logits: bool = True,
|
|
55
55
|
label_smooth: float = 0.0,
|
|
@@ -59,7 +59,7 @@ class JaccardLoss(_Loss):
|
|
|
59
59
|
|
|
60
60
|
if classes is not None:
|
|
61
61
|
if mode == 'binary':
|
|
62
|
-
raise ValueError('
|
|
62
|
+
raise ValueError('masking classes is not supported with mode=binary')
|
|
63
63
|
|
|
64
64
|
classes = torch.LongTensor(classes)
|
|
65
65
|
|
{pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/lr_scheduler/__init__.py
RENAMED
|
@@ -14,7 +14,7 @@ from torch.optim.lr_scheduler import (
|
|
|
14
14
|
StepLR,
|
|
15
15
|
)
|
|
16
16
|
|
|
17
|
-
from pytorch_optimizer.base.
|
|
17
|
+
from pytorch_optimizer.base.type import SCHEDULER
|
|
18
18
|
from pytorch_optimizer.lr_scheduler.chebyshev import get_chebyshev_perm_steps, get_chebyshev_schedule
|
|
19
19
|
from pytorch_optimizer.lr_scheduler.cosine_anealing import CosineAnnealingWarmupRestarts
|
|
20
20
|
from pytorch_optimizer.lr_scheduler.experimental.deberta_v3_lr_scheduler import deberta_v3_large_lr_scheduler
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import fnmatch
|
|
2
2
|
from importlib.util import find_spec
|
|
3
|
-
from typing import Dict, List, Optional, Sequence, Set,
|
|
3
|
+
from typing import Dict, List, Optional, Sequence, Set, Union
|
|
4
|
+
from warnings import warn
|
|
4
5
|
|
|
5
6
|
import torch
|
|
6
7
|
from torch import nn
|
|
7
|
-
from torch.optim import AdamW, Optimizer
|
|
8
|
+
from torch.optim import SGD, Adam, AdamW, Optimizer
|
|
8
9
|
|
|
9
|
-
from pytorch_optimizer.base.
|
|
10
|
+
from pytorch_optimizer.base.type import OPTIMIZER, PARAMETERS
|
|
10
11
|
from pytorch_optimizer.optimizer.a2grad import A2Grad
|
|
11
12
|
from pytorch_optimizer.optimizer.adabelief import AdaBelief
|
|
12
13
|
from pytorch_optimizer.optimizer.adabound import AdaBound
|
|
@@ -40,13 +41,15 @@ from pytorch_optimizer.optimizer.came import CAME
|
|
|
40
41
|
from pytorch_optimizer.optimizer.dadapt import DAdaptAdaGrad, DAdaptAdam, DAdaptAdan, DAdaptLion, DAdaptSGD
|
|
41
42
|
from pytorch_optimizer.optimizer.demo import DeMo
|
|
42
43
|
from pytorch_optimizer.optimizer.diffgrad import DiffGrad
|
|
44
|
+
from pytorch_optimizer.optimizer.exadam import EXAdam
|
|
43
45
|
from pytorch_optimizer.optimizer.experimental.ranger25 import Ranger25
|
|
44
46
|
from pytorch_optimizer.optimizer.fadam import FAdam
|
|
47
|
+
from pytorch_optimizer.optimizer.focus import FOCUS
|
|
45
48
|
from pytorch_optimizer.optimizer.fp16 import DynamicLossScaler, SafeFP16Optimizer
|
|
46
49
|
from pytorch_optimizer.optimizer.fromage import Fromage
|
|
47
50
|
from pytorch_optimizer.optimizer.ftrl import FTRL
|
|
48
51
|
from pytorch_optimizer.optimizer.galore import GaLore
|
|
49
|
-
from pytorch_optimizer.optimizer.
|
|
52
|
+
from pytorch_optimizer.optimizer.gradient_centralization import centralize_gradient
|
|
50
53
|
from pytorch_optimizer.optimizer.grams import Grams
|
|
51
54
|
from pytorch_optimizer.optimizer.gravity import Gravity
|
|
52
55
|
from pytorch_optimizer.optimizer.grokfast import GrokFastAdamW
|
|
@@ -69,13 +72,14 @@ from pytorch_optimizer.optimizer.pcgrad import PCGrad
|
|
|
69
72
|
from pytorch_optimizer.optimizer.pid import PID
|
|
70
73
|
from pytorch_optimizer.optimizer.pnm import PNM
|
|
71
74
|
from pytorch_optimizer.optimizer.prodigy import Prodigy
|
|
75
|
+
from pytorch_optimizer.optimizer.psgd import Kron
|
|
72
76
|
from pytorch_optimizer.optimizer.qhadam import QHAdam
|
|
73
77
|
from pytorch_optimizer.optimizer.qhm import QHM
|
|
74
78
|
from pytorch_optimizer.optimizer.radam import RAdam
|
|
75
79
|
from pytorch_optimizer.optimizer.ranger import Ranger
|
|
76
80
|
from pytorch_optimizer.optimizer.ranger21 import Ranger21
|
|
77
81
|
from pytorch_optimizer.optimizer.rotograd import RotoGrad
|
|
78
|
-
from pytorch_optimizer.optimizer.sam import BSAM, GSAM, SAM, WSAM
|
|
82
|
+
from pytorch_optimizer.optimizer.sam import BSAM, GSAM, SAM, WSAM, LookSAM
|
|
79
83
|
from pytorch_optimizer.optimizer.schedulefree import ScheduleFreeAdamW, ScheduleFreeRAdam, ScheduleFreeSGD
|
|
80
84
|
from pytorch_optimizer.optimizer.sgd import ASGD, SGDW, AccSGD, SGDSaI, SignSGD
|
|
81
85
|
from pytorch_optimizer.optimizer.sgdp import SGDP
|
|
@@ -203,6 +207,8 @@ def load_optimizer(optimizer: str) -> OPTIMIZER:
|
|
|
203
207
|
|
|
204
208
|
OPTIMIZER_LIST: List[OPTIMIZER] = [
|
|
205
209
|
AdamW,
|
|
210
|
+
Adam,
|
|
211
|
+
SGD,
|
|
206
212
|
AdaBelief,
|
|
207
213
|
AdaBound,
|
|
208
214
|
PID,
|
|
@@ -289,8 +295,11 @@ OPTIMIZER_LIST: List[OPTIMIZER] = [
|
|
|
289
295
|
LaProp,
|
|
290
296
|
MARS,
|
|
291
297
|
SGDSaI,
|
|
298
|
+
FOCUS,
|
|
292
299
|
Grams,
|
|
293
300
|
SPAM,
|
|
301
|
+
Kron,
|
|
302
|
+
EXAdam,
|
|
294
303
|
Ranger25,
|
|
295
304
|
]
|
|
296
305
|
OPTIMIZERS: Dict[str, OPTIMIZER] = {str(optimizer.__name__).lower(): optimizer for optimizer in OPTIMIZER_LIST}
|
|
@@ -335,6 +344,10 @@ def create_optimizer(
|
|
|
335
344
|
optimizer = OrthoGrad(optimizer, **kwargs)
|
|
336
345
|
|
|
337
346
|
if use_lookahead:
|
|
347
|
+
if optimizer_name in ('ranger', 'ranger21', 'ranger25'):
|
|
348
|
+
warn(f'{optimizer} already has a Lookahead variant.', UserWarning, 1)
|
|
349
|
+
return optimizer
|
|
350
|
+
|
|
338
351
|
optimizer = Lookahead(
|
|
339
352
|
optimizer,
|
|
340
353
|
k=kwargs.get('k', 5),
|
|
@@ -5,7 +5,7 @@ import torch
|
|
|
5
5
|
|
|
6
6
|
from pytorch_optimizer.base.exception import NoSparseGradientError
|
|
7
7
|
from pytorch_optimizer.base.optimizer import BaseOptimizer
|
|
8
|
-
from pytorch_optimizer.base.
|
|
8
|
+
from pytorch_optimizer.base.type import CLOSURE, DEFAULTS, LOSS, PARAMETERS
|
|
9
9
|
|
|
10
10
|
VARIANTS = Literal['uni', 'inc', 'exp']
|
|
11
11
|
|
{pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/adabelief.py
RENAMED
|
@@ -4,7 +4,7 @@ import torch
|
|
|
4
4
|
|
|
5
5
|
from pytorch_optimizer.base.exception import NoSparseGradientError
|
|
6
6
|
from pytorch_optimizer.base.optimizer import BaseOptimizer
|
|
7
|
-
from pytorch_optimizer.base.
|
|
7
|
+
from pytorch_optimizer.base.type import BETAS, CLOSURE, DEFAULTS, LOSS, PARAMETERS
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
class AdaBelief(BaseOptimizer):
|
|
@@ -5,7 +5,7 @@ import torch
|
|
|
5
5
|
|
|
6
6
|
from pytorch_optimizer.base.exception import NoSparseGradientError
|
|
7
7
|
from pytorch_optimizer.base.optimizer import BaseOptimizer
|
|
8
|
-
from pytorch_optimizer.base.
|
|
8
|
+
from pytorch_optimizer.base.type import BETAS, CLOSURE, DEFAULTS, LOSS, PARAMETERS
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
class AdaBound(BaseOptimizer):
|
|
@@ -2,7 +2,7 @@ import torch
|
|
|
2
2
|
|
|
3
3
|
from pytorch_optimizer.base.exception import NoSparseGradientError
|
|
4
4
|
from pytorch_optimizer.base.optimizer import BaseOptimizer
|
|
5
|
-
from pytorch_optimizer.base.
|
|
5
|
+
from pytorch_optimizer.base.type import CLOSURE, DEFAULTS, LOSS, PARAMETERS
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
class AdaDelta(BaseOptimizer):
|
{pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/adafactor.py
RENAMED
|
@@ -5,7 +5,7 @@ import torch
|
|
|
5
5
|
|
|
6
6
|
from pytorch_optimizer.base.exception import NoSparseGradientError
|
|
7
7
|
from pytorch_optimizer.base.optimizer import BaseOptimizer
|
|
8
|
-
from pytorch_optimizer.base.
|
|
8
|
+
from pytorch_optimizer.base.type import BETAS, CLOSURE, DEFAULTS, LOSS, PARAMETERS
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
class AdaFactor(BaseOptimizer):
|
{pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/adahessian.py
RENAMED
|
@@ -4,7 +4,7 @@ import torch
|
|
|
4
4
|
|
|
5
5
|
from pytorch_optimizer.base.exception import NoSparseGradientError
|
|
6
6
|
from pytorch_optimizer.base.optimizer import BaseOptimizer
|
|
7
|
-
from pytorch_optimizer.base.
|
|
7
|
+
from pytorch_optimizer.base.type import BETAS, CLOSURE, DEFAULTS, HUTCHINSON_G, LOSS, PARAMETERS
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
class AdaHessian(BaseOptimizer):
|
|
@@ -4,8 +4,8 @@ import torch
|
|
|
4
4
|
|
|
5
5
|
from pytorch_optimizer.base.exception import NoSparseGradientError, ZeroParameterSizeError
|
|
6
6
|
from pytorch_optimizer.base.optimizer import BaseOptimizer
|
|
7
|
-
from pytorch_optimizer.base.
|
|
8
|
-
from pytorch_optimizer.optimizer.
|
|
7
|
+
from pytorch_optimizer.base.type import BETAS, CLOSURE, DEFAULTS, LOSS, PARAMETERS
|
|
8
|
+
from pytorch_optimizer.optimizer.gradient_centralization import centralize_gradient
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
class Adai(BaseOptimizer):
|
|
@@ -3,7 +3,7 @@ from torch.nn.functional import softmax
|
|
|
3
3
|
|
|
4
4
|
from pytorch_optimizer.base.exception import NoSparseGradientError
|
|
5
5
|
from pytorch_optimizer.base.optimizer import BaseOptimizer
|
|
6
|
-
from pytorch_optimizer.base.
|
|
6
|
+
from pytorch_optimizer.base.type import BETAS, CLOSURE, DEFAULTS, LOSS, PARAMETERS
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
class Adalite(BaseOptimizer):
|
{pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/adam_mini.py
RENAMED
|
@@ -7,7 +7,7 @@ from torch import nn
|
|
|
7
7
|
|
|
8
8
|
from pytorch_optimizer.base.exception import NoSparseGradientError
|
|
9
9
|
from pytorch_optimizer.base.optimizer import BaseOptimizer
|
|
10
|
-
from pytorch_optimizer.base.
|
|
10
|
+
from pytorch_optimizer.base.type import BETAS, CLOSURE, DEFAULTS, LOSS
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
class AdamMini(BaseOptimizer): # pragma: no cover
|
|
@@ -2,7 +2,7 @@ import torch
|
|
|
2
2
|
|
|
3
3
|
from pytorch_optimizer.base.exception import NoSparseGradientError
|
|
4
4
|
from pytorch_optimizer.base.optimizer import BaseOptimizer
|
|
5
|
-
from pytorch_optimizer.base.
|
|
5
|
+
from pytorch_optimizer.base.type import BETAS, CLOSURE, DEFAULTS, LOSS, PARAMETERS
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
class AdaMax(BaseOptimizer):
|
|
@@ -4,7 +4,7 @@ import torch
|
|
|
4
4
|
|
|
5
5
|
from pytorch_optimizer.base.exception import NoSparseGradientError
|
|
6
6
|
from pytorch_optimizer.base.optimizer import BaseOptimizer
|
|
7
|
-
from pytorch_optimizer.base.
|
|
7
|
+
from pytorch_optimizer.base.type import BETAS, CLOSURE, DEFAULTS, LOSS, PARAMETERS
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
class AdamG(BaseOptimizer):
|
|
@@ -4,7 +4,7 @@ import torch
|
|
|
4
4
|
|
|
5
5
|
from pytorch_optimizer.base.exception import NoSparseGradientError
|
|
6
6
|
from pytorch_optimizer.base.optimizer import BaseOptimizer
|
|
7
|
-
from pytorch_optimizer.base.
|
|
7
|
+
from pytorch_optimizer.base.type import BETAS, CLOSURE, DEFAULTS, LOSS, PARAMETERS
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
class AdaMod(BaseOptimizer):
|
|
@@ -4,8 +4,8 @@ import torch
|
|
|
4
4
|
|
|
5
5
|
from pytorch_optimizer.base.exception import NoSparseGradientError
|
|
6
6
|
from pytorch_optimizer.base.optimizer import BaseOptimizer
|
|
7
|
-
from pytorch_optimizer.base.
|
|
8
|
-
from pytorch_optimizer.optimizer.
|
|
7
|
+
from pytorch_optimizer.base.type import BETAS, CLOSURE, DEFAULTS, LOSS, PARAMETERS
|
|
8
|
+
from pytorch_optimizer.optimizer.gradient_centralization import centralize_gradient
|
|
9
9
|
from pytorch_optimizer.optimizer.utils import projection
|
|
10
10
|
|
|
11
11
|
|
|
@@ -4,7 +4,7 @@ import torch
|
|
|
4
4
|
|
|
5
5
|
from pytorch_optimizer.base.exception import NoSparseGradientError, ZeroParameterSizeError
|
|
6
6
|
from pytorch_optimizer.base.optimizer import BaseOptimizer
|
|
7
|
-
from pytorch_optimizer.base.
|
|
7
|
+
from pytorch_optimizer.base.type import BETAS, CLOSURE, DEFAULTS, LOSS, PARAMETERS
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
class AdamS(BaseOptimizer):
|