pytorch-optimizer 3.3.1__tar.gz → 3.3.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.3.1 → pytorch_optimizer-3.3.2}/PKG-INFO +3 -2
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/README.md +2 -1
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pyproject.toml +1 -1
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/__init__.py +1 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/__init__.py +2 -1
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/adashift.py +2 -1
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/ademamix.py +3 -2
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/mars.py +14 -11
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/sgd.py +123 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/LICENSE +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/base/__init__.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/base/exception.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/base/optimizer.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/base/scheduler.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/base/types.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/loss/__init__.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/loss/bi_tempered.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/loss/cross_entropy.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/loss/dice.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/loss/f1.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/loss/focal.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/loss/jaccard.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/loss/ldam.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/loss/lovasz.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/loss/tversky.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/lr_scheduler/__init__.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/lr_scheduler/chebyshev.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/lr_scheduler/cosine_anealing.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/lr_scheduler/experimental/__init__.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/lr_scheduler/experimental/deberta_v3_lr_scheduler.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/lr_scheduler/linear_warmup.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/lr_scheduler/proportion.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/lr_scheduler/rex.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/lr_scheduler/wsd.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/a2grad.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/adabelief.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/adabound.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/adadelta.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/adafactor.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/adahessian.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/adai.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/adalite.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/adam_mini.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/adamax.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/adamg.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/adamod.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/adamp.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/adams.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/adamw.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/adan.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/adanorm.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/adapnm.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/adasmooth.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/adopt.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/agc.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/aggmo.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/aida.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/alig.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/amos.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/apollo.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/avagrad.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/came.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/dadapt.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/demo.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/diffgrad.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/fadam.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/fp16.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/fromage.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/ftrl.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/galore.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/galore_utils.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/gc.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/gravity.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/grokfast.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/kate.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/lamb.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/laprop.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/lars.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/lion.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/lomo.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/lookahead.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/madgrad.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/msvag.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/muon.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/nero.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/novograd.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/padam.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/pcgrad.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/pid.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/pnm.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/prodigy.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/qhadam.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/qhm.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/radam.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/ranger.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/ranger21.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/rotograd.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/sam.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/schedulefree.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/sgdp.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/shampoo.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/shampoo_utils.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/sm3.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/soap.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/sophia.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/srmm.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/swats.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/tiger.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/trac.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/utils.py +0 -0
- {pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/yogi.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: pytorch_optimizer
|
|
3
|
-
Version: 3.3.
|
|
3
|
+
Version: 3.3.2
|
|
4
4
|
Summary: optimizer & lr scheduler & objective function collections in PyTorch
|
|
5
5
|
Home-page: https://github.com/kozistr/pytorch_optimizer
|
|
6
6
|
License: Apache-2.0
|
|
@@ -51,7 +51,7 @@ Description-Content-Type: text/markdown
|
|
|
51
51
|
|
|
52
52
|
## The reasons why you use `pytorch-optimizer`.
|
|
53
53
|
|
|
54
|
-
* Wide range of supported optimizers. Currently, **
|
|
54
|
+
* Wide range of supported optimizers. Currently, **86 optimizers (+ `bitsandbytes`, `qgalore`, `torchao`)**, **16 lr schedulers**, and **13 loss functions** are supported!
|
|
55
55
|
* Including many variants such as `Cautious`, `AdamD`, `Gradient Centrailiaztion`
|
|
56
56
|
* Easy to use, clean, and tested codes
|
|
57
57
|
* Active maintenance
|
|
@@ -235,6 +235,7 @@ get_supported_optimizers(['adam*', 'ranger*'])
|
|
|
235
235
|
| LaProp | *Separating Momentum and Adaptivity in Adam* | [github](https://github.com/Z-T-WANG/LaProp-Optimizer) | <https://arxiv.org/abs/2002.04839> | [cite](https://github.com/Z-T-WANG/LaProp-Optimizer?tab=readme-ov-file#citation) |
|
|
236
236
|
| APOLLO | *SGD-like Memory, AdamW-level Performance* | [github](https://github.com/zhuhanqing/APOLLO) | <https://arxiv.org/abs/2412.05270> | [cite](https://github.com/zhuhanqing/APOLLO?tab=readme-ov-file#-citation) |
|
|
237
237
|
| MARS | *Unleashing the Power of Variance Reduction for Training Large Models* | [github](https://github.com/AGI-Arena/MARS) | <https://arxiv.org/abs/2411.10438> | [cite](https://github.com/AGI-Arena/MARS/tree/main?tab=readme-ov-file#citation) |
|
|
238
|
+
| SGDSaI | *No More Adam: Learning Rate Scaling at Initialization is All You Need* | [github](https://github.com/AnonymousAlethiometer/SGD_SaI) | <https://arxiv.org/abs/2411.10438> | [cite](https://github.com/AnonymousAlethiometer/SGD_SaI?tab=readme-ov-file#citation) |
|
|
238
239
|
|
|
239
240
|
## Supported LR Scheduler
|
|
240
241
|
|
|
@@ -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, **86 optimizers (+ `bitsandbytes`, `qgalore`, `torchao`)**, **16 lr schedulers**, and **13 loss functions** are supported!
|
|
14
14
|
* Including many variants such as `Cautious`, `AdamD`, `Gradient Centrailiaztion`
|
|
15
15
|
* Easy to use, clean, and tested codes
|
|
16
16
|
* Active maintenance
|
|
@@ -194,6 +194,7 @@ get_supported_optimizers(['adam*', 'ranger*'])
|
|
|
194
194
|
| LaProp | *Separating Momentum and Adaptivity in Adam* | [github](https://github.com/Z-T-WANG/LaProp-Optimizer) | <https://arxiv.org/abs/2002.04839> | [cite](https://github.com/Z-T-WANG/LaProp-Optimizer?tab=readme-ov-file#citation) |
|
|
195
195
|
| APOLLO | *SGD-like Memory, AdamW-level Performance* | [github](https://github.com/zhuhanqing/APOLLO) | <https://arxiv.org/abs/2412.05270> | [cite](https://github.com/zhuhanqing/APOLLO?tab=readme-ov-file#-citation) |
|
|
196
196
|
| MARS | *Unleashing the Power of Variance Reduction for Training Large Models* | [github](https://github.com/AGI-Arena/MARS) | <https://arxiv.org/abs/2411.10438> | [cite](https://github.com/AGI-Arena/MARS/tree/main?tab=readme-ov-file#citation) |
|
|
197
|
+
| SGDSaI | *No More Adam: Learning Rate Scaling at Initialization is All You Need* | [github](https://github.com/AnonymousAlethiometer/SGD_SaI) | <https://arxiv.org/abs/2411.10438> | [cite](https://github.com/AnonymousAlethiometer/SGD_SaI?tab=readme-ov-file#citation) |
|
|
197
198
|
|
|
198
199
|
## Supported LR Scheduler
|
|
199
200
|
|
|
@@ -74,7 +74,7 @@ from pytorch_optimizer.optimizer.ranger21 import Ranger21
|
|
|
74
74
|
from pytorch_optimizer.optimizer.rotograd import RotoGrad
|
|
75
75
|
from pytorch_optimizer.optimizer.sam import BSAM, GSAM, SAM, WSAM
|
|
76
76
|
from pytorch_optimizer.optimizer.schedulefree import ScheduleFreeAdamW, ScheduleFreeRAdam, ScheduleFreeSGD
|
|
77
|
-
from pytorch_optimizer.optimizer.sgd import ASGD, SGDW, AccSGD, SignSGD
|
|
77
|
+
from pytorch_optimizer.optimizer.sgd import ASGD, SGDW, AccSGD, SGDSaI, SignSGD
|
|
78
78
|
from pytorch_optimizer.optimizer.sgdp import SGDP
|
|
79
79
|
from pytorch_optimizer.optimizer.shampoo import ScalableShampoo, Shampoo
|
|
80
80
|
from pytorch_optimizer.optimizer.sm3 import SM3
|
|
@@ -281,6 +281,7 @@ OPTIMIZER_LIST: List[OPTIMIZER] = [
|
|
|
281
281
|
ScheduleFreeRAdam,
|
|
282
282
|
LaProp,
|
|
283
283
|
MARS,
|
|
284
|
+
SGDSaI,
|
|
284
285
|
]
|
|
285
286
|
OPTIMIZERS: Dict[str, OPTIMIZER] = {str(optimizer.__name__).lower(): optimizer for optimizer in OPTIMIZER_LIST}
|
|
286
287
|
|
|
@@ -110,10 +110,11 @@ class AdaShift(BaseOptimizer):
|
|
|
110
110
|
exp_avg_sq.mul_(beta2).add_(reduced_grad_sq, alpha=1.0 - beta2)
|
|
111
111
|
|
|
112
112
|
update = exp_avg.clone()
|
|
113
|
-
update.div_(exp_avg_sq.div(bias_correction).sqrt_().add_(group['eps']))
|
|
114
113
|
if self.cautious:
|
|
115
114
|
self.apply_cautious(update, grad)
|
|
116
115
|
|
|
116
|
+
update.div_(exp_avg_sq.div(bias_correction).sqrt_().add_(group['eps']))
|
|
117
|
+
|
|
117
118
|
p.add_(update, alpha=-group['lr'])
|
|
118
119
|
|
|
119
120
|
return loss
|
|
@@ -146,10 +146,11 @@ class AdEMAMix(BaseOptimizer):
|
|
|
146
146
|
|
|
147
147
|
de_nom = exp_avg_sq.sqrt().div_(bias_correction2_sq).add_(group['eps'])
|
|
148
148
|
|
|
149
|
+
update = exp_avg.clone()
|
|
149
150
|
if self.cautious:
|
|
150
|
-
self.apply_cautious(
|
|
151
|
+
self.apply_cautious(update, grad)
|
|
151
152
|
|
|
152
|
-
update =
|
|
153
|
+
update.add_(exp_avg_slow, alpha=alpha_t).div_(de_nom)
|
|
153
154
|
|
|
154
155
|
p.add_(update, alpha=-step_size)
|
|
155
156
|
|
|
@@ -121,8 +121,9 @@ class MARS(BaseOptimizer):
|
|
|
121
121
|
|
|
122
122
|
exp_avg.mul_(beta1).add_(c_t, alpha=1.0 - beta1)
|
|
123
123
|
|
|
124
|
+
update = exp_avg.clone()
|
|
124
125
|
if cautious:
|
|
125
|
-
self.apply_cautious(
|
|
126
|
+
self.apply_cautious(update, grad)
|
|
126
127
|
|
|
127
128
|
if mars_type == 'adamw' or (mars_type == 'shampoo' and not is_grad_2d):
|
|
128
129
|
exp_avg_sq.mul_(beta2).addcmul_(c_t, c_t, value=1.0 - beta2)
|
|
@@ -130,17 +131,17 @@ class MARS(BaseOptimizer):
|
|
|
130
131
|
bias_correction1: float = self.debias(beta1, step)
|
|
131
132
|
bias_correction2_sq: float = math.sqrt(self.debias(beta2, step))
|
|
132
133
|
|
|
133
|
-
|
|
134
|
-
|
|
134
|
+
de_nom = self.apply_ams_bound(ams_bound, exp_avg_sq, max_exp_avg_sq, eps)
|
|
135
|
+
de_nom.div_(bias_correction2_sq).mul_(bias_correction1)
|
|
135
136
|
|
|
136
|
-
return
|
|
137
|
+
return update.div_(de_nom)
|
|
137
138
|
|
|
138
139
|
if mars_type == 'lion':
|
|
139
|
-
return
|
|
140
|
+
return update.sign_()
|
|
140
141
|
|
|
141
|
-
factor: float = max(1.0, grad.size(0) / grad.size(1))
|
|
142
|
+
factor: float = math.sqrt(max(1.0, grad.size(0) / grad.size(1)))
|
|
142
143
|
|
|
143
|
-
return zero_power_via_newton_schulz_5(
|
|
144
|
+
return zero_power_via_newton_schulz_5(update.mul_(1.0 / (1.0 - beta1)), eps=eps).mul_(factor)
|
|
144
145
|
|
|
145
146
|
def optimize_1d(
|
|
146
147
|
self,
|
|
@@ -162,13 +163,15 @@ class MARS(BaseOptimizer):
|
|
|
162
163
|
exp_avg.mul_(beta1).add_(grad, alpha=1.0 - beta1)
|
|
163
164
|
exp_avg_sq.mul_(beta2).addcmul_(grad, grad, value=1.0 - beta2)
|
|
164
165
|
|
|
165
|
-
update =
|
|
166
|
-
update.div_(bias_correction2_sq).mul_(bias_correction1)
|
|
166
|
+
update = exp_avg.clone()
|
|
167
167
|
|
|
168
168
|
if cautious:
|
|
169
|
-
self.apply_cautious(
|
|
169
|
+
self.apply_cautious(update, grad)
|
|
170
170
|
|
|
171
|
-
|
|
171
|
+
de_nom = self.apply_ams_bound(ams_bound, exp_avg_sq, max_exp_avg_sq, eps)
|
|
172
|
+
de_nom.div_(bias_correction2_sq).mul_(bias_correction1)
|
|
173
|
+
|
|
174
|
+
return update.div_(de_nom)
|
|
172
175
|
|
|
173
176
|
@torch.no_grad()
|
|
174
177
|
def step(self, closure: CLOSURE = None) -> LOSS:
|
|
@@ -356,6 +356,9 @@ class SignSGD(BaseOptimizer):
|
|
|
356
356
|
}
|
|
357
357
|
super().__init__(params, defaults)
|
|
358
358
|
|
|
359
|
+
def __str__(self) -> str:
|
|
360
|
+
return 'SignSGD'
|
|
361
|
+
|
|
359
362
|
@torch.no_grad()
|
|
360
363
|
def reset(self):
|
|
361
364
|
for group in self.param_groups:
|
|
@@ -396,3 +399,123 @@ class SignSGD(BaseOptimizer):
|
|
|
396
399
|
p.add_(torch.sign(buf), alpha=-group['lr'])
|
|
397
400
|
|
|
398
401
|
return loss
|
|
402
|
+
|
|
403
|
+
|
|
404
|
+
class SGDSaI(BaseOptimizer):
|
|
405
|
+
r"""No More Adam: Learning Rate Scaling at Initialization is All You Need.
|
|
406
|
+
|
|
407
|
+
:param params: PARAMETERS. iterable of parameters to optimize or dicts defining parameter groups.
|
|
408
|
+
:param lr: float. learning rate.
|
|
409
|
+
:param momentum: float. coefficients used for computing running averages of gradient.
|
|
410
|
+
:param weight_decay: float. weight decay (L2 penalty).
|
|
411
|
+
:param weight_decouple: bool. the optimizer uses decoupled weight decay as in AdamW.
|
|
412
|
+
:param eps: float. term added to the denominator to improve numerical stability.
|
|
413
|
+
"""
|
|
414
|
+
|
|
415
|
+
def __init__(
|
|
416
|
+
self,
|
|
417
|
+
params: PARAMETERS,
|
|
418
|
+
lr: float = 1e-2,
|
|
419
|
+
momentum: float = 0.9,
|
|
420
|
+
weight_decay: float = 1e-2,
|
|
421
|
+
weight_decouple: bool = True,
|
|
422
|
+
eps: float = 1e-8,
|
|
423
|
+
**kwargs,
|
|
424
|
+
):
|
|
425
|
+
self.validate_learning_rate(lr)
|
|
426
|
+
self.validate_range(momentum, 'beta', 0.0, 1.0)
|
|
427
|
+
self.validate_non_negative(weight_decay, 'weight_decay')
|
|
428
|
+
self.validate_non_negative(eps, 'eps')
|
|
429
|
+
|
|
430
|
+
self.has_warmup: bool = False
|
|
431
|
+
|
|
432
|
+
defaults: DEFAULTS = {
|
|
433
|
+
'lr': lr,
|
|
434
|
+
'momentum': momentum,
|
|
435
|
+
'weight_decay': weight_decay,
|
|
436
|
+
'weight_decouple': weight_decouple,
|
|
437
|
+
'eps': eps,
|
|
438
|
+
}
|
|
439
|
+
super().__init__(params, defaults)
|
|
440
|
+
|
|
441
|
+
def __str__(self) -> str:
|
|
442
|
+
return 'SGDSaI'
|
|
443
|
+
|
|
444
|
+
@torch.no_grad()
|
|
445
|
+
def reset(self):
|
|
446
|
+
for group in self.param_groups:
|
|
447
|
+
group['step'] = 0
|
|
448
|
+
for p in group['params']:
|
|
449
|
+
state = self.state[p]
|
|
450
|
+
|
|
451
|
+
if group['momentum'] > 0.0:
|
|
452
|
+
state['momentum_buffer'] = torch.zeros_like(p)
|
|
453
|
+
|
|
454
|
+
@torch.no_grad()
|
|
455
|
+
def warmup_step(self, closure: CLOSURE = None) -> LOSS:
|
|
456
|
+
loss: LOSS = None
|
|
457
|
+
if closure is not None:
|
|
458
|
+
with torch.enable_grad():
|
|
459
|
+
loss = closure()
|
|
460
|
+
|
|
461
|
+
for group in self.param_groups:
|
|
462
|
+
for p in group['params']:
|
|
463
|
+
if p.grad is None:
|
|
464
|
+
continue
|
|
465
|
+
|
|
466
|
+
grad = p.grad
|
|
467
|
+
if grad.is_sparse:
|
|
468
|
+
raise NoSparseGradientError(str(self))
|
|
469
|
+
|
|
470
|
+
sigma = grad.std().nan_to_num_()
|
|
471
|
+
grad_norm = grad.norm()
|
|
472
|
+
|
|
473
|
+
g_snr = grad_norm.div_(sigma.add_(group['eps'])) if sigma != 0.0 else grad_norm
|
|
474
|
+
|
|
475
|
+
self.state[p]['gsnr'] = g_snr
|
|
476
|
+
|
|
477
|
+
self.has_warmup = True
|
|
478
|
+
|
|
479
|
+
return loss
|
|
480
|
+
|
|
481
|
+
@torch.no_grad()
|
|
482
|
+
def step(self, closure: CLOSURE = None) -> LOSS:
|
|
483
|
+
if not self.has_warmup:
|
|
484
|
+
self.warmup_step(closure)
|
|
485
|
+
|
|
486
|
+
loss: LOSS = None
|
|
487
|
+
if closure is not None:
|
|
488
|
+
with torch.enable_grad():
|
|
489
|
+
loss = closure()
|
|
490
|
+
|
|
491
|
+
for group in self.param_groups:
|
|
492
|
+
momentum: float = group['momentum']
|
|
493
|
+
for p in group['params']:
|
|
494
|
+
if p.grad is None:
|
|
495
|
+
continue
|
|
496
|
+
|
|
497
|
+
grad = p.grad
|
|
498
|
+
|
|
499
|
+
state = self.state[p]
|
|
500
|
+
|
|
501
|
+
if momentum > 0.0:
|
|
502
|
+
if 'momentum_buffer' not in state:
|
|
503
|
+
state['momentum_buffer'] = grad.clone()
|
|
504
|
+
|
|
505
|
+
buf = state['momentum_buffer']
|
|
506
|
+
buf.mul_(momentum).add_(grad, alpha=1.0 - momentum)
|
|
507
|
+
else:
|
|
508
|
+
buf = grad
|
|
509
|
+
|
|
510
|
+
self.apply_weight_decay(
|
|
511
|
+
p,
|
|
512
|
+
grad,
|
|
513
|
+
group['lr'],
|
|
514
|
+
group['weight_decay'],
|
|
515
|
+
group['weight_decouple'],
|
|
516
|
+
False,
|
|
517
|
+
)
|
|
518
|
+
|
|
519
|
+
p.add_(buf, alpha=-group['lr'] * state['gsnr'])
|
|
520
|
+
|
|
521
|
+
return loss
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/lr_scheduler/__init__.py
RENAMED
|
File without changes
|
{pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/lr_scheduler/chebyshev.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/lr_scheduler/linear_warmup.py
RENAMED
|
File without changes
|
{pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/lr_scheduler/proportion.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/adabelief.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/adafactor.py
RENAMED
|
File without changes
|
{pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/adahessian.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/adam_mini.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/adasmooth.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/galore_utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/lookahead.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/schedulefree.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pytorch_optimizer-3.3.1 → pytorch_optimizer-3.3.2}/pytorch_optimizer/optimizer/shampoo_utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|