adv-optm 2.6.2.dev1__tar.gz → 2.6.2.dev2__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.
- {adv_optm-2.6.2.dev1 → adv_optm-2.6.2.dev2}/PKG-INFO +1 -1
- {adv_optm-2.6.2.dev1 → adv_optm-2.6.2.dev2}/adv_optm/__init__.py +1 -1
- {adv_optm-2.6.2.dev1 → adv_optm-2.6.2.dev2}/adv_optm/optim/SinkSGD_adv.py +6 -2
- {adv_optm-2.6.2.dev1 → adv_optm-2.6.2.dev2}/adv_optm/util/sinkhorn.py +5 -7
- {adv_optm-2.6.2.dev1 → adv_optm-2.6.2.dev2}/adv_optm.egg-info/PKG-INFO +1 -1
- {adv_optm-2.6.2.dev1 → adv_optm-2.6.2.dev2}/setup.py +1 -1
- {adv_optm-2.6.2.dev1 → adv_optm-2.6.2.dev2}/LICENSE +0 -0
- {adv_optm-2.6.2.dev1 → adv_optm-2.6.2.dev2}/README.md +0 -0
- {adv_optm-2.6.2.dev1 → adv_optm-2.6.2.dev2}/adv_optm/optim/AdaMuon_adv.py +0 -0
- {adv_optm-2.6.2.dev1 → adv_optm-2.6.2.dev2}/adv_optm/optim/AdamW_adv.py +0 -0
- {adv_optm-2.6.2.dev1 → adv_optm-2.6.2.dev2}/adv_optm/optim/Adopt_adv.py +0 -0
- {adv_optm-2.6.2.dev1 → adv_optm-2.6.2.dev2}/adv_optm/optim/Lion_adv.py +0 -0
- {adv_optm-2.6.2.dev1 → adv_optm-2.6.2.dev2}/adv_optm/optim/Muon_adv.py +0 -0
- {adv_optm-2.6.2.dev1 → adv_optm-2.6.2.dev2}/adv_optm/optim/Prodigy_adv.py +0 -0
- {adv_optm-2.6.2.dev1 → adv_optm-2.6.2.dev2}/adv_optm/optim/SignSGD_adv.py +0 -0
- {adv_optm-2.6.2.dev1 → adv_optm-2.6.2.dev2}/adv_optm/optim/__init__.py +0 -0
- {adv_optm-2.6.2.dev1 → adv_optm-2.6.2.dev2}/adv_optm/util/Kourkoutas.py +0 -0
- {adv_optm-2.6.2.dev1 → adv_optm-2.6.2.dev2}/adv_optm/util/Muon_AuxAdam.py +0 -0
- {adv_optm-2.6.2.dev1 → adv_optm-2.6.2.dev2}/adv_optm/util/Muon_util.py +0 -0
- {adv_optm-2.6.2.dev1 → adv_optm-2.6.2.dev2}/adv_optm/util/OrthoGrad.py +0 -0
- {adv_optm-2.6.2.dev1 → adv_optm-2.6.2.dev2}/adv_optm/util/__init__.py +0 -0
- {adv_optm-2.6.2.dev1 → adv_optm-2.6.2.dev2}/adv_optm/util/centered_decay.py +0 -0
- {adv_optm-2.6.2.dev1 → adv_optm-2.6.2.dev2}/adv_optm/util/factorization_util.py +0 -0
- {adv_optm-2.6.2.dev1 → adv_optm-2.6.2.dev2}/adv_optm/util/lion_k.py +0 -0
- {adv_optm-2.6.2.dev1 → adv_optm-2.6.2.dev2}/adv_optm/util/param_update.py +0 -0
- {adv_optm-2.6.2.dev1 → adv_optm-2.6.2.dev2}/adv_optm/util/scaled_optm.py +0 -0
- {adv_optm-2.6.2.dev1 → adv_optm-2.6.2.dev2}/adv_optm/util/signed_util.py +0 -0
- {adv_optm-2.6.2.dev1 → adv_optm-2.6.2.dev2}/adv_optm/util/state_util.py +0 -0
- {adv_optm-2.6.2.dev1 → adv_optm-2.6.2.dev2}/adv_optm/util/update_util.py +0 -0
- {adv_optm-2.6.2.dev1 → adv_optm-2.6.2.dev2}/adv_optm.egg-info/SOURCES.txt +0 -0
- {adv_optm-2.6.2.dev1 → adv_optm-2.6.2.dev2}/adv_optm.egg-info/dependency_links.txt +0 -0
- {adv_optm-2.6.2.dev1 → adv_optm-2.6.2.dev2}/adv_optm.egg-info/requires.txt +0 -0
- {adv_optm-2.6.2.dev1 → adv_optm-2.6.2.dev2}/adv_optm.egg-info/top_level.txt +0 -0
- {adv_optm-2.6.2.dev1 → adv_optm-2.6.2.dev2}/setup.cfg +0 -0
|
@@ -373,9 +373,13 @@ class SinkSGD_adv(torch.optim.Optimizer):
|
|
|
373
373
|
del anchor
|
|
374
374
|
|
|
375
375
|
update_scaling = step_size
|
|
376
|
-
|
|
376
|
+
|
|
377
|
+
# If spectral normalization was already applied natively in the OFT sinkhorn, skip the scaling block
|
|
378
|
+
spectral_sinkhorn_applied = oft_sym and not normed_mt and group.get('spectral_normalization', False)
|
|
379
|
+
|
|
380
|
+
if group.get('spectral_normalization', False) and not spectral_sinkhorn_applied:
|
|
377
381
|
update = scale_update(p, update, update_scaling, state=state)
|
|
378
|
-
|
|
382
|
+
elif not spectral_sinkhorn_applied:
|
|
379
383
|
if snr_cond:
|
|
380
384
|
update_scaling = update_scaling * (4/math.pi)
|
|
381
385
|
update.mul_(update_scaling)
|
|
@@ -174,14 +174,13 @@ def apply_oft_sinkhorn(
|
|
|
174
174
|
g_orth_norm = torch.linalg.vector_norm(G, ord=2, dim=(1, 2), keepdim=True).clamp_min_(1e-12)
|
|
175
175
|
G.mul_(target_norm / g_orth_norm)
|
|
176
176
|
|
|
177
|
-
# Global normalization
|
|
178
|
-
norm = torch.linalg.vector_norm(G).clamp_min_(1e-12)
|
|
179
|
-
target_norm_global = math.sqrt(G.numel())
|
|
180
|
-
G.mul_(target_norm_global / norm)
|
|
181
|
-
|
|
182
|
-
# Extract upper triangular elements back into the flat format
|
|
183
177
|
update.copy_(G[batch_idx, rows, cols])
|
|
184
178
|
|
|
179
|
+
# Global normalization
|
|
180
|
+
norm = torch.linalg.vector_norm(update).clamp_min_(1e-12)
|
|
181
|
+
target_norm_global = math.sqrt(update.numel())
|
|
182
|
+
update.mul_(target_norm_global / norm)
|
|
183
|
+
|
|
185
184
|
return update
|
|
186
185
|
|
|
187
186
|
@torch.no_grad()
|
|
@@ -201,7 +200,6 @@ def apply_spectral_oft_sinkhorn(
|
|
|
201
200
|
device, dtype = p.device, p.dtype
|
|
202
201
|
rows, cols = scaled_optm.get_cached_structural_tensors(block_size, device)
|
|
203
202
|
|
|
204
|
-
# Flatten any prepended batch dimensions for processing
|
|
205
203
|
orig_shape = p.shape
|
|
206
204
|
|
|
207
205
|
# Align the scale of p with the forward pass
|
|
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
|
|
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
|