pytorch-optimizer 3.4.0__tar.gz → 3.4.2__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.4.0 → pytorch_optimizer-3.4.2}/PKG-INFO +9 -6
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/README.md +5 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pyproject.toml +11 -9
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/__init__.py +2 -0
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/base/exception.py +5 -5
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/base/optimizer.py +2 -2
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/loss/dice.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/loss/jaccard.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/lr_scheduler/__init__.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/lr_scheduler/experimental/deberta_v3_lr_scheduler.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/__init__.py +14 -5
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/a2grad.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/adabelief.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/adabound.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/adadelta.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/adafactor.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/adahessian.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/adai.py +2 -2
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/adalite.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/adam_mini.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/adamax.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/adamg.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/adamod.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/adamp.py +2 -2
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/adams.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/adamw.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/adan.py +2 -2
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/adanorm.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/adapnm.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/adashift.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/adasmooth.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/ademamix.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/adopt.py +6 -5
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/agc.py +6 -6
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/aggmo.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/aida.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/alig.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/amos.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/apollo.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/avagrad.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/came.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/dadapt.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/demo.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/diffgrad.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/exadam.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/experimental/ranger25.py +30 -8
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/fadam.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/focus.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/fp16.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/fromage.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/ftrl.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/galore.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/grams.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/gravity.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/grokfast.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/kate.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/lamb.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/laprop.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/lars.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/lion.py +2 -2
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/lomo.py +2 -2
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/lookahead.py +6 -6
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/madgrad.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/mars.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/msvag.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/muon.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/nero.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/novograd.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/orthograd.py +5 -5
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/padam.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/pid.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/pnm.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/prodigy.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/psgd.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/qhadam.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/qhm.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/radam.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/ranger.py +3 -3
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/ranger21.py +3 -3
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/sam.py +196 -4
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/schedulefree.py +33 -61
- pytorch_optimizer-3.4.2/pytorch_optimizer/optimizer/scion.py +113 -0
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/sgd.py +2 -2
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/sgdp.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/shampoo.py +2 -2
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/shampoo_utils.py +2 -2
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/sm3.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/soap.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/sophia.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/spam.py +6 -6
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/srmm.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/swats.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/tam.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/tiger.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/trac.py +4 -4
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/utils.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/yogi.py +1 -1
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/LICENSE +0 -0
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/base/__init__.py +0 -0
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/base/scheduler.py +0 -0
- /pytorch_optimizer-3.4.0/pytorch_optimizer/base/types.py → /pytorch_optimizer-3.4.2/pytorch_optimizer/base/type.py +0 -0
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/loss/__init__.py +0 -0
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/loss/bi_tempered.py +0 -0
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/loss/cross_entropy.py +0 -0
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/loss/f1.py +0 -0
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/loss/focal.py +0 -0
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/loss/ldam.py +0 -0
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/loss/lovasz.py +0 -0
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/loss/tversky.py +0 -0
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/lr_scheduler/chebyshev.py +0 -0
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/lr_scheduler/cosine_anealing.py +0 -0
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/lr_scheduler/experimental/__init__.py +0 -0
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/lr_scheduler/linear_warmup.py +0 -0
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/lr_scheduler/proportion.py +0 -0
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/lr_scheduler/rex.py +0 -0
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/lr_scheduler/wsd.py +0 -0
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/experimental/__init__.py +0 -0
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/galore_utils.py +0 -0
- /pytorch_optimizer-3.4.0/pytorch_optimizer/optimizer/gc.py → /pytorch_optimizer-3.4.2/pytorch_optimizer/optimizer/gradient_centralization.py +0 -0
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/pcgrad.py +0 -0
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/psgd_utils.py +0 -0
- {pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/rotograd.py +0 -0
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: pytorch_optimizer
|
|
3
|
-
Version: 3.4.
|
|
3
|
+
Version: 3.4.2
|
|
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,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,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,SCION,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,8 +22,6 @@ 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
|
|
@@ -31,7 +29,8 @@ Classifier: Topic :: Software Development :: Libraries
|
|
|
31
29
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
32
30
|
Requires-Dist: numpy (<=1.24.4) ; python_version < "3.9"
|
|
33
31
|
Requires-Dist: numpy (>1.24.4) ; python_version >= "3.9"
|
|
34
|
-
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"
|
|
35
34
|
Project-URL: Documentation, https://pytorch-optimizers.readthedocs.io/en/latest
|
|
36
35
|
Project-URL: Homepage, https://github.com/kozistr/pytorch_optimizer
|
|
37
36
|
Project-URL: Repository, https://github.com/kozistr/pytorch_optimizer
|
|
@@ -49,7 +48,7 @@ Description-Content-Type: text/markdown
|
|
|
49
48
|
|
|
50
49
|
## The reasons why you use `pytorch-optimizer`.
|
|
51
50
|
|
|
52
|
-
* Wide range of supported optimizers. Currently, **
|
|
51
|
+
* Wide range of supported optimizers. Currently, **99 optimizers (+ `bitsandbytes`, `qgalore`, `torchao`)**, **16 lr schedulers**, and **13 loss functions** are supported!
|
|
53
52
|
* Including many variants such as `ADOPT`, `Cautious`, `AdamD`, `StableAdamW`, and `Gradient Centrailiaztion`
|
|
54
53
|
* Easy to use, clean, and tested codes
|
|
55
54
|
* Active maintenance
|
|
@@ -118,6 +117,7 @@ optimizer = create_optimizer(
|
|
|
118
117
|
weight_decay=1e-3,
|
|
119
118
|
use_gc=True,
|
|
120
119
|
use_lookahead=True,
|
|
120
|
+
use_orthograd=False,
|
|
121
121
|
)
|
|
122
122
|
```
|
|
123
123
|
|
|
@@ -242,6 +242,9 @@ get_supported_optimizers(['adam*', 'ranger*'])
|
|
|
242
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
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
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) |
|
|
247
|
+
| SCION | *Training Deep Learning Models with Norm-Constrained LMOs* | | <https://arxiv.org/abs/2502.07529> | [cite](https://ui.adsabs.harvard.edu/abs/2025arXiv250207529P/exportcitation) |
|
|
245
248
|
|
|
246
249
|
## Supported LR Scheduler
|
|
247
250
|
|
|
@@ -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, **99 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
|
|
|
@@ -203,6 +204,9 @@ get_supported_optimizers(['adam*', 'ranger*'])
|
|
|
203
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) |
|
|
204
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) |
|
|
205
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) |
|
|
209
|
+
| SCION | *Training Deep Learning Models with Norm-Constrained LMOs* | | <https://arxiv.org/abs/2502.07529> | [cite](https://ui.adsabs.harvard.edu/abs/2025arXiv250207529P/exportcitation) |
|
|
206
210
|
|
|
207
211
|
## Supported LR Scheduler
|
|
208
212
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "pytorch_optimizer"
|
|
3
|
-
version = "3.4.
|
|
3
|
+
version = "3.4.2"
|
|
4
4
|
description = "optimizer & lr scheduler & objective function collections in PyTorch"
|
|
5
5
|
license = "Apache-2.0"
|
|
6
6
|
authors = ["kozistr <kozistr@gmail.com>"]
|
|
@@ -17,10 +17,11 @@ keywords = [
|
|
|
17
17
|
"DAdaptLion", "DeMo", "DiffGrad", "EXAdam", "FAdam", "FOCUS", "Fromage", "FTRL", "GaLore", "Grams", "Gravity",
|
|
18
18
|
"GrokFast", "GSAM", "Kate", "Lamb", "LaProp", "LARS", "Lion", "LOMO", "Lookahead", "MADGRAD", "MARS", "MSVAG",
|
|
19
19
|
"Muno", "Nero", "NovoGrad", "OrthoGrad", "PAdam", "PCGrad", "PID", "PNM", "Prodigy", "PSGD", "QHAdam", "QHM",
|
|
20
|
-
"RAdam", "Ranger", "Ranger21", "RotoGrad", "SAM", "
|
|
21
|
-
"SGDP", "Shampoo", "ScalableShampoo", "SGDW", "SignSGD", "SM3", "SOAP", "SopihaH",
|
|
22
|
-
"
|
|
23
|
-
"
|
|
20
|
+
"RAdam", "Ranger", "Ranger21", "RotoGrad", "SAM", "GCSAM", "LookSAM", "ScheduleFreeSGD", "ScheduleFreeAdamW",
|
|
21
|
+
"ScheduleFreeRAdam", "SCION", "SGDP", "Shampoo", "ScalableShampoo", "SGDW", "SignSGD", "SM3", "SOAP", "SopihaH",
|
|
22
|
+
"SPAM", "SRMM", "StableAdamW", "SWATS", "TAM", "Tiger", "TRAC", "WSAM", "Yogi", "BCE", "BCEFocal", "Focal",
|
|
23
|
+
"FocalCosine", "SoftF1", "Dice", "LDAM", "Jaccard", "Bi-Tempered", "Tversky", "FocalTversky", "LovaszHinge",
|
|
24
|
+
"bitsandbytes", "WSD", "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,7 +50,10 @@ numpy = [
|
|
|
51
50
|
{ version = ">1.24.4", python = ">=3.9" },
|
|
52
51
|
{ version = "<=1.24.4", python = "<3.9" },
|
|
53
52
|
]
|
|
54
|
-
torch =
|
|
53
|
+
torch = [
|
|
54
|
+
{ version = ">=1.10,<2.5", python = "<3.9", source = "torch" },
|
|
55
|
+
{ version = ">=1.10", python = ">=3.9", source = "torch" },
|
|
56
|
+
]
|
|
55
57
|
|
|
56
58
|
[tool.poetry.group.dev.dependencies]
|
|
57
59
|
isort = [
|
|
@@ -95,7 +97,7 @@ select = [
|
|
|
95
97
|
"TID", "ARG", "ERA", "RUF", "YTT", "PL", "Q"
|
|
96
98
|
]
|
|
97
99
|
ignore = [
|
|
98
|
-
"
|
|
100
|
+
"B905",
|
|
99
101
|
"D100", "D102", "D104", "D105", "D107", "D203", "D213", "D413",
|
|
100
102
|
"PLR0912", "PLR0913", "PLR0915", "PLR2004",
|
|
101
103
|
"Q003", "ARG002",
|
|
@@ -58,6 +58,7 @@ from pytorch_optimizer.optimizer import (
|
|
|
58
58
|
PNM,
|
|
59
59
|
QHM,
|
|
60
60
|
SAM,
|
|
61
|
+
SCION,
|
|
61
62
|
SGDP,
|
|
62
63
|
SGDW,
|
|
63
64
|
SM3,
|
|
@@ -119,6 +120,7 @@ from pytorch_optimizer.optimizer import (
|
|
|
119
120
|
LaProp,
|
|
120
121
|
Lion,
|
|
121
122
|
Lookahead,
|
|
123
|
+
LookSAM,
|
|
122
124
|
Muon,
|
|
123
125
|
Nero,
|
|
124
126
|
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,7 @@ 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
10
|
BETAS,
|
|
11
11
|
CLOSURE,
|
|
12
12
|
DEFAULTS,
|
|
@@ -103,7 +103,7 @@ class BaseOptimizer(ABC, Optimizer):
|
|
|
103
103
|
:param distribution: HUTCHINSON_G. type of distribution.
|
|
104
104
|
"""
|
|
105
105
|
if distribution not in ('gaussian', 'rademacher'):
|
|
106
|
-
raise NotImplementedError(f'
|
|
106
|
+
raise NotImplementedError(f'hessian with distribution {distribution} is not implemented.')
|
|
107
107
|
|
|
108
108
|
params: List[torch.Tensor] = [
|
|
109
109
|
p
|
{pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/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
|
|
@@ -48,7 +49,7 @@ from pytorch_optimizer.optimizer.fp16 import DynamicLossScaler, SafeFP16Optimize
|
|
|
48
49
|
from pytorch_optimizer.optimizer.fromage import Fromage
|
|
49
50
|
from pytorch_optimizer.optimizer.ftrl import FTRL
|
|
50
51
|
from pytorch_optimizer.optimizer.galore import GaLore
|
|
51
|
-
from pytorch_optimizer.optimizer.
|
|
52
|
+
from pytorch_optimizer.optimizer.gradient_centralization import centralize_gradient
|
|
52
53
|
from pytorch_optimizer.optimizer.grams import Grams
|
|
53
54
|
from pytorch_optimizer.optimizer.gravity import Gravity
|
|
54
55
|
from pytorch_optimizer.optimizer.grokfast import GrokFastAdamW
|
|
@@ -78,8 +79,9 @@ from pytorch_optimizer.optimizer.radam import RAdam
|
|
|
78
79
|
from pytorch_optimizer.optimizer.ranger import Ranger
|
|
79
80
|
from pytorch_optimizer.optimizer.ranger21 import Ranger21
|
|
80
81
|
from pytorch_optimizer.optimizer.rotograd import RotoGrad
|
|
81
|
-
from pytorch_optimizer.optimizer.sam import BSAM, GSAM, SAM, WSAM
|
|
82
|
+
from pytorch_optimizer.optimizer.sam import BSAM, GSAM, SAM, WSAM, LookSAM
|
|
82
83
|
from pytorch_optimizer.optimizer.schedulefree import ScheduleFreeAdamW, ScheduleFreeRAdam, ScheduleFreeSGD
|
|
84
|
+
from pytorch_optimizer.optimizer.scion import SCION
|
|
83
85
|
from pytorch_optimizer.optimizer.sgd import ASGD, SGDW, AccSGD, SGDSaI, SignSGD
|
|
84
86
|
from pytorch_optimizer.optimizer.sgdp import SGDP
|
|
85
87
|
from pytorch_optimizer.optimizer.shampoo import ScalableShampoo, Shampoo
|
|
@@ -206,6 +208,8 @@ def load_optimizer(optimizer: str) -> OPTIMIZER:
|
|
|
206
208
|
|
|
207
209
|
OPTIMIZER_LIST: List[OPTIMIZER] = [
|
|
208
210
|
AdamW,
|
|
211
|
+
Adam,
|
|
212
|
+
SGD,
|
|
209
213
|
AdaBelief,
|
|
210
214
|
AdaBound,
|
|
211
215
|
PID,
|
|
@@ -297,6 +301,7 @@ OPTIMIZER_LIST: List[OPTIMIZER] = [
|
|
|
297
301
|
SPAM,
|
|
298
302
|
Kron,
|
|
299
303
|
EXAdam,
|
|
304
|
+
SCION,
|
|
300
305
|
Ranger25,
|
|
301
306
|
]
|
|
302
307
|
OPTIMIZERS: Dict[str, OPTIMIZER] = {str(optimizer.__name__).lower(): optimizer for optimizer in OPTIMIZER_LIST}
|
|
@@ -341,6 +346,10 @@ def create_optimizer(
|
|
|
341
346
|
optimizer = OrthoGrad(optimizer, **kwargs)
|
|
342
347
|
|
|
343
348
|
if use_lookahead:
|
|
349
|
+
if optimizer_name in ('ranger', 'ranger21', 'ranger25'):
|
|
350
|
+
warn(f'{optimizer} already has a Lookahead variant.', UserWarning, 1)
|
|
351
|
+
return optimizer
|
|
352
|
+
|
|
344
353
|
optimizer = Lookahead(
|
|
345
354
|
optimizer,
|
|
346
355
|
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.4.0 → pytorch_optimizer-3.4.2}/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.4.0 → pytorch_optimizer-3.4.2}/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.4.0 → pytorch_optimizer-3.4.2}/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.4.0 → pytorch_optimizer-3.4.2}/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):
|
|
@@ -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 StableAdamW(BaseOptimizer):
|
|
@@ -5,8 +5,8 @@ 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.
|
|
9
|
-
from pytorch_optimizer.optimizer.
|
|
8
|
+
from pytorch_optimizer.base.type import BETAS, CLOSURE, DEFAULTS, LOSS, PARAMETERS
|
|
9
|
+
from pytorch_optimizer.optimizer.gradient_centralization import centralize_gradient
|
|
10
10
|
from pytorch_optimizer.optimizer.utils import get_global_gradient_norm
|
|
11
11
|
|
|
12
12
|
|
|
@@ -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 AdaNorm(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 AdaPNM(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 AdaShift(BaseOptimizer):
|
{pytorch_optimizer-3.4.0 → pytorch_optimizer-3.4.2}/pytorch_optimizer/optimizer/adasmooth.py
RENAMED
|
@@ -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 AdaSmooth(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 AdEMAMix(BaseOptimizer):
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import math
|
|
2
|
-
from typing import Callable
|
|
2
|
+
from typing import Callable
|
|
3
3
|
|
|
4
4
|
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 ADOPT(BaseOptimizer):
|
|
@@ -14,6 +14,7 @@ class ADOPT(BaseOptimizer):
|
|
|
14
14
|
:param params: PARAMETERS. iterable of parameters to optimize or dicts defining parameter groups.
|
|
15
15
|
:param lr: float. learning rate.
|
|
16
16
|
:param betas: BETAS. coefficients used for computing running averages of gradient and the squared hessian trace.
|
|
17
|
+
:param clip_lambda: Callable[[float], float]. function to clip gradient. default is `step ** 0.25`
|
|
17
18
|
:param weight_decay: float. weight decay (L2 penalty).
|
|
18
19
|
:param weight_decouple: bool. the optimizer uses decoupled weight decay as in AdamW.
|
|
19
20
|
:param fixed_decay: bool. fix weight decay.
|
|
@@ -27,7 +28,7 @@ class ADOPT(BaseOptimizer):
|
|
|
27
28
|
params: PARAMETERS,
|
|
28
29
|
lr: float = 1e-3,
|
|
29
30
|
betas: BETAS = (0.9, 0.9999),
|
|
30
|
-
clip_lambda:
|
|
31
|
+
clip_lambda: Callable[[float], float] = lambda step: math.pow(step, 0.25),
|
|
31
32
|
weight_decay: float = 0.0,
|
|
32
33
|
weight_decouple: bool = False,
|
|
33
34
|
fixed_decay: bool = False,
|
|
@@ -114,8 +115,6 @@ class ADOPT(BaseOptimizer):
|
|
|
114
115
|
exp_avg_sq.addcmul_(grad, grad.conj())
|
|
115
116
|
continue
|
|
116
117
|
|
|
117
|
-
exp_avg_sq.mul_(beta2).addcmul_(grad, grad.conj(), value=1.0 - beta2)
|
|
118
|
-
|
|
119
118
|
de_nom = exp_avg_sq.sqrt().clamp_(min=group['eps'])
|
|
120
119
|
|
|
121
120
|
normed_grad = grad.div(de_nom)
|
|
@@ -136,4 +135,6 @@ class ADOPT(BaseOptimizer):
|
|
|
136
135
|
|
|
137
136
|
p.add_(update, alpha=-lr)
|
|
138
137
|
|
|
138
|
+
exp_avg_sq.mul_(beta2).addcmul_(grad, grad.conj(), value=1.0 - beta2)
|
|
139
|
+
|
|
139
140
|
return loss
|
|
@@ -3,7 +3,9 @@ import torch
|
|
|
3
3
|
from pytorch_optimizer.optimizer.utils import unit_norm
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
def agc(
|
|
6
|
+
def agc(
|
|
7
|
+
p: torch.Tensor, grad: torch.Tensor, agc_eps: float = 1e-3, agc_clip_val: float = 1e-2, eps: float = 1e-6
|
|
8
|
+
) -> torch.Tensor:
|
|
7
9
|
r"""Clip gradient values in excess of the unit wise norm.
|
|
8
10
|
|
|
9
11
|
:param p: torch.Tensor. parameter.
|
|
@@ -12,11 +14,9 @@ def agc(p: torch.Tensor, grad: torch.Tensor, agc_eps: float, agc_clip_val: float
|
|
|
12
14
|
:param agc_clip_val: float. norm clip.
|
|
13
15
|
:param eps: float. simple stop from div by zero and no relation to standard optimizer eps.
|
|
14
16
|
"""
|
|
15
|
-
|
|
16
|
-
g_norm = unit_norm(grad)
|
|
17
|
+
max_norm = unit_norm(p).clamp_min_(agc_eps).mul_(agc_clip_val)
|
|
18
|
+
g_norm = unit_norm(grad).clamp_min_(eps)
|
|
17
19
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
clipped_grad = grad * (max_norm / g_norm.clamp_min_(eps))
|
|
20
|
+
clipped_grad = grad * (max_norm / g_norm)
|
|
21
21
|
|
|
22
22
|
return torch.where(g_norm > max_norm, clipped_grad, grad)
|
|
@@ -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 AggMo(BaseOptimizer):
|