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.
Files changed (121) hide show
  1. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/PKG-INFO +11 -8
  2. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/README.md +7 -1
  3. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pyproject.toml +30 -28
  4. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/__init__.py +4 -0
  5. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/base/exception.py +5 -5
  6. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/base/optimizer.py +24 -3
  7. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/loss/dice.py +1 -1
  8. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/loss/jaccard.py +3 -3
  9. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/lr_scheduler/__init__.py +1 -1
  10. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/lr_scheduler/experimental/deberta_v3_lr_scheduler.py +1 -1
  11. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/__init__.py +18 -5
  12. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/a2grad.py +1 -1
  13. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/adabelief.py +1 -1
  14. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/adabound.py +1 -1
  15. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/adadelta.py +1 -1
  16. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/adafactor.py +1 -1
  17. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/adahessian.py +1 -1
  18. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/adai.py +2 -2
  19. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/adalite.py +1 -1
  20. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/adam_mini.py +1 -1
  21. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/adamax.py +1 -1
  22. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/adamg.py +1 -1
  23. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/adamod.py +1 -1
  24. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/adamp.py +2 -2
  25. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/adams.py +1 -1
  26. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/adamw.py +1 -1
  27. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/adan.py +2 -2
  28. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/adanorm.py +1 -1
  29. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/adapnm.py +1 -1
  30. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/adashift.py +1 -1
  31. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/adasmooth.py +1 -1
  32. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/ademamix.py +1 -1
  33. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/adopt.py +6 -5
  34. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/agc.py +6 -6
  35. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/aggmo.py +1 -1
  36. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/aida.py +1 -1
  37. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/alig.py +1 -1
  38. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/amos.py +1 -1
  39. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/apollo.py +1 -1
  40. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/avagrad.py +1 -1
  41. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/came.py +1 -1
  42. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/dadapt.py +1 -1
  43. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/demo.py +1 -1
  44. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/diffgrad.py +1 -1
  45. pytorch_optimizer-3.4.1/pytorch_optimizer/optimizer/exadam.py +123 -0
  46. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/experimental/ranger25.py +49 -5
  47. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/fadam.py +1 -1
  48. pytorch_optimizer-3.4.1/pytorch_optimizer/optimizer/focus.py +95 -0
  49. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/fp16.py +1 -1
  50. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/fromage.py +1 -1
  51. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/ftrl.py +2 -2
  52. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/galore.py +1 -1
  53. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/grams.py +1 -1
  54. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/gravity.py +1 -1
  55. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/grokfast.py +1 -1
  56. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/kate.py +1 -1
  57. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/lamb.py +1 -1
  58. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/laprop.py +1 -1
  59. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/lars.py +1 -1
  60. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/lion.py +2 -2
  61. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/lomo.py +2 -2
  62. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/lookahead.py +7 -13
  63. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/madgrad.py +1 -1
  64. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/mars.py +1 -1
  65. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/msvag.py +1 -1
  66. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/muon.py +3 -3
  67. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/nero.py +1 -1
  68. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/novograd.py +1 -1
  69. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/orthograd.py +18 -13
  70. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/padam.py +1 -1
  71. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/pid.py +1 -1
  72. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/pnm.py +1 -1
  73. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/prodigy.py +1 -1
  74. pytorch_optimizer-3.4.1/pytorch_optimizer/optimizer/psgd.py +375 -0
  75. pytorch_optimizer-3.4.1/pytorch_optimizer/optimizer/psgd_utils.py +94 -0
  76. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/qhadam.py +1 -1
  77. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/qhm.py +1 -1
  78. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/radam.py +1 -1
  79. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/ranger.py +3 -3
  80. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/ranger21.py +3 -3
  81. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/rotograd.py +1 -1
  82. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/sam.py +196 -4
  83. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/schedulefree.py +1 -3
  84. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/sgd.py +2 -2
  85. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/sgdp.py +1 -1
  86. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/shampoo.py +2 -2
  87. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/shampoo_utils.py +5 -5
  88. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/sm3.py +1 -1
  89. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/soap.py +14 -6
  90. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/sophia.py +1 -1
  91. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/spam.py +6 -6
  92. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/srmm.py +1 -1
  93. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/swats.py +1 -1
  94. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/tam.py +1 -1
  95. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/tiger.py +1 -1
  96. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/trac.py +15 -15
  97. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/utils.py +2 -2
  98. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/yogi.py +1 -1
  99. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/LICENSE +0 -0
  100. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/base/__init__.py +0 -0
  101. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/base/scheduler.py +0 -0
  102. /pytorch_optimizer-3.3.4/pytorch_optimizer/base/types.py → /pytorch_optimizer-3.4.1/pytorch_optimizer/base/type.py +0 -0
  103. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/loss/__init__.py +0 -0
  104. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/loss/bi_tempered.py +0 -0
  105. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/loss/cross_entropy.py +0 -0
  106. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/loss/f1.py +0 -0
  107. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/loss/focal.py +0 -0
  108. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/loss/ldam.py +0 -0
  109. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/loss/lovasz.py +0 -0
  110. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/loss/tversky.py +0 -0
  111. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/lr_scheduler/chebyshev.py +0 -0
  112. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/lr_scheduler/cosine_anealing.py +0 -0
  113. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/lr_scheduler/experimental/__init__.py +0 -0
  114. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/lr_scheduler/linear_warmup.py +0 -0
  115. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/lr_scheduler/proportion.py +0 -0
  116. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/lr_scheduler/rex.py +0 -0
  117. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/lr_scheduler/wsd.py +0 -0
  118. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/experimental/__init__.py +0 -0
  119. {pytorch_optimizer-3.3.4 → pytorch_optimizer-3.4.1}/pytorch_optimizer/optimizer/galore_utils.py +0 -0
  120. /pytorch_optimizer-3.3.4/pytorch_optimizer/optimizer/gc.py → /pytorch_optimizer-3.4.1/pytorch_optimizer/optimizer/gradient_centralization.py +0 -0
  121. {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.4
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.8"
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, **92 optimizers (+ `bitsandbytes`, `qgalore`, `torchao`)**, **16 lr schedulers**, and **13 loss functions** are supported!
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, **92 optimizers (+ `bitsandbytes`, `qgalore`, `torchao`)**, **16 lr schedulers**, and **13 loss functions** are supported!
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.4"
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", "FAdam", "Fromage", "FTRL", "GaLore", "Grams", "Gravity", "GrokFast", "GSAM",
18
- "Kate", "Lamb", "LaProp", "LARS", "Lion", "LOMO", "Lookahead", "MADGRAD", "MARS", "MSVAG", "Muno", "Nero",
19
- "NovoGrad", "OrthoGrad", "PAdam", "PCGrad", "PID", "PNM", "Prodigy", "QHAdam", "QHM", "RAdam", "Ranger",
20
- "Ranger21", "RotoGrad", "SAM", "ScheduleFreeSGD", "ScheduleFreeAdamW", "ScheduleFreeRAdam", "SGDP", "Shampoo",
21
- "ScalableShampoo", "SGDW", "SignSGD", "SM3", "SOAP", "SopihaH", "SPAM", "SRMM", "StableAdamW", "SWATS", "TAM",
22
- "Tiger", "TRAC", "WSAM", "Yogi", "BCE", "BCEFocal", "Focal", "FocalCosine", "SoftF1", "Dice", "LDAM", "Jaccard",
23
- "Bi-Tempered", "Tversky", "FocalTversky", "LovaszHinge", "bitsandbytes", "WSD", "QGaLore",
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 = { version = ">=1.10", python = ">=3.8", source = "torch" }
55
- bitsandbytes = { version = "^0.44", optional = true }
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-dependencies]
58
- isort = { version = "^5", python = ">=3.8" }
59
- black = { version = "^24", python = ">=3.8" }
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
- "A005", "B905", "D100", "D102", "D104", "D105", "D107", "D203", "D213", "D413", "PIE790", "PLR0912", "PLR0913",
101
- "PLR0915", "PLR2004", "RUF013", "Q003", "ARG002",
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'[-] {optimizer_name}{self.note}does not support sparse gradient.'
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 = '[-] parameter size is 0'
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'[-] {optimizer_name} requires closure.{note}'
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'[-] {self.note} must be positive. ({lr} > 0)'
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'[-] {self.note} must be positive. ({num_steps} > 0)'
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.types import BETAS, CLOSURE, DEFAULTS, HUTCHINSON_G, LOSS, PARAMETERS, STATE
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'[-] Hessian with distribution {distribution} is not implemented.')
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'\'{option}\'' for option in options]).strip()
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.types import CLASS_MODE
7
+ from pytorch_optimizer.base.type import CLASS_MODE
8
8
 
9
9
 
10
10
  def soft_dice_score(
@@ -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.types import CLASS_MODE
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('[-] Masking classes is not supported with mode=binary')
62
+ raise ValueError('masking classes is not supported with mode=binary')
63
63
 
64
64
  classes = torch.LongTensor(classes)
65
65
 
@@ -14,7 +14,7 @@ from torch.optim.lr_scheduler import (
14
14
  StepLR,
15
15
  )
16
16
 
17
- from pytorch_optimizer.base.types import SCHEDULER
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,6 +1,6 @@
1
1
  from torch import nn
2
2
 
3
- from pytorch_optimizer.base.types import PARAMETERS
3
+ from pytorch_optimizer.base.type import PARAMETERS
4
4
 
5
5
 
6
6
  def 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, Type, Union
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.types import OPTIMIZER, PARAMETERS
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.gc import centralize_gradient
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.types import CLOSURE, DEFAULTS, LOSS, PARAMETERS
8
+ from pytorch_optimizer.base.type import CLOSURE, DEFAULTS, LOSS, PARAMETERS
9
9
 
10
10
  VARIANTS = Literal['uni', 'inc', 'exp']
11
11
 
@@ -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.types import BETAS, CLOSURE, DEFAULTS, LOSS, PARAMETERS
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.types import BETAS, CLOSURE, DEFAULTS, LOSS, PARAMETERS
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.types import CLOSURE, DEFAULTS, LOSS, PARAMETERS
5
+ from pytorch_optimizer.base.type import CLOSURE, DEFAULTS, LOSS, PARAMETERS
6
6
 
7
7
 
8
8
  class AdaDelta(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.types import BETAS, CLOSURE, DEFAULTS, LOSS, PARAMETERS
8
+ from pytorch_optimizer.base.type import BETAS, CLOSURE, DEFAULTS, LOSS, PARAMETERS
9
9
 
10
10
 
11
11
  class AdaFactor(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.types import BETAS, CLOSURE, DEFAULTS, HUTCHINSON_G, LOSS, PARAMETERS
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.types import BETAS, CLOSURE, DEFAULTS, LOSS, PARAMETERS
8
- from pytorch_optimizer.optimizer.gc import centralize_gradient
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.types import BETAS, CLOSURE, DEFAULTS, LOSS, PARAMETERS
6
+ from pytorch_optimizer.base.type import BETAS, CLOSURE, DEFAULTS, LOSS, PARAMETERS
7
7
 
8
8
 
9
9
  class Adalite(BaseOptimizer):
@@ -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.types import BETAS, CLOSURE, DEFAULTS, LOSS
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.types import BETAS, CLOSURE, DEFAULTS, LOSS, PARAMETERS
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.types import BETAS, CLOSURE, DEFAULTS, LOSS, PARAMETERS
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.types import BETAS, CLOSURE, DEFAULTS, LOSS, PARAMETERS
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.types import BETAS, CLOSURE, DEFAULTS, LOSS, PARAMETERS
8
- from pytorch_optimizer.optimizer.gc import centralize_gradient
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.types import BETAS, CLOSURE, DEFAULTS, LOSS, PARAMETERS
7
+ from pytorch_optimizer.base.type import BETAS, CLOSURE, DEFAULTS, LOSS, PARAMETERS
8
8
 
9
9
 
10
10
  class AdamS(BaseOptimizer):