pytorch_optimizer 3.10.0__tar.gz → 3.11.0__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.10.0 → pytorch_optimizer-3.11.0}/.github/labeler.yml +4 -1
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/.github/pull_request_template.md +3 -3
- pytorch_optimizer-3.11.0/.github/workflows/ci.yml +134 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/.github/workflows/pr_automerge.yml +1 -1
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/.github/workflows/pr_codeql.yml +3 -3
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/.github/workflows/pr_labeler.yml +2 -2
- pytorch_optimizer-3.11.0/.github/workflows/publish.yml +214 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/.github/workflows/update_docs.yml +3 -3
- pytorch_optimizer-3.11.0/AGENTS.md +77 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/CHANGELOG.md +59 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/CONTRIBUTING.md +46 -14
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/PKG-INFO +11 -4
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/README.md +6 -0
- pytorch_optimizer-3.11.0/docs/.readthedocs.yaml +11 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/base.md +1 -1
- pytorch_optimizer-3.11.0/docs/changelogs/index.md +41 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/changelogs/v2.10.0.md +5 -5
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/changelogs/v2.10.1.md +1 -1
- pytorch_optimizer-3.11.0/docs/changelogs/v2.11.0.md +21 -0
- pytorch_optimizer-3.11.0/docs/changelogs/v2.11.1.md +16 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/changelogs/v2.11.2.md +2 -2
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/changelogs/v2.7.0.md +18 -18
- pytorch_optimizer-3.11.0/docs/changelogs/v2.8.0.md +37 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/changelogs/v2.9.0.md +7 -7
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/changelogs/v3.0.0.md +8 -8
- pytorch_optimizer-3.11.0/docs/changelogs/v3.0.1.md +21 -0
- pytorch_optimizer-3.11.0/docs/changelogs/v3.0.2.md +21 -0
- pytorch_optimizer-3.11.0/docs/changelogs/v3.10.0.md +37 -0
- pytorch_optimizer-3.11.0/docs/changelogs/v3.10.1.md +16 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/changelogs/v3.4.0.md +1 -1
- pytorch_optimizer-3.11.0/docs/getting-started.md +91 -0
- pytorch_optimizer-3.11.0/docs/index.md +41 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/javascripts/tables.js +1 -1
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/optimizer.md +20 -0
- pytorch_optimizer-3.11.0/docs/qa.md +21 -0
- pytorch_optimizer-3.11.0/docs/requirements-docs.txt +2 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/util.md +1 -1
- pytorch_optimizer-3.11.0/justfile +34 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pyproject.toml +13 -9
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/__init__.py +5 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/base/optimizer.py +37 -4
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/loss/focal.py +12 -4
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/__init__.py +17 -2
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/a2grad.py +1 -1
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/adabound.py +7 -2
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/adai.py +0 -2
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/adam_mini.py +20 -16
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/adamw.py +33 -19
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/adashift.py +1 -1
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/adasmooth.py +1 -1
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/ademamix.py +3 -4
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/ano.py +2 -1
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/apollo.py +3 -2
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/dadapt.py +1 -1
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/demo.py +2 -0
- pytorch_optimizer-3.11.0/pytorch_optimizer/optimizer/dual_adam.py +134 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/experimental/ranger25.py +0 -15
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/fadam.py +10 -4
- pytorch_optimizer-3.11.0/pytorch_optimizer/optimizer/flash_adamw.py +423 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/ftrl.py +1 -1
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/grokfast.py +3 -1
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/lamb.py +17 -10
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/laprop.py +3 -3
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/lars.py +5 -3
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/lomo.py +4 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/lookahead.py +27 -11
- pytorch_optimizer-3.11.0/pytorch_optimizer/optimizer/lora_rite.py +448 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/madgrad.py +1 -1
- pytorch_optimizer-3.11.0/pytorch_optimizer/optimizer/magma.py +239 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/mars.py +7 -2
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/msvag.py +3 -3
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/novograd.py +17 -24
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/orthograd.py +14 -15
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/padam.py +2 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/pcgrad.py +5 -4
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/pid.py +2 -1
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/prodigy.py +0 -2
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/psgd.py +2 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/racs.py +7 -1
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/ranger21.py +17 -11
- pytorch_optimizer-3.11.0/pytorch_optimizer/optimizer/rose.py +172 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/sam.py +4 -4
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/schedulefree.py +31 -5
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/sgd.py +22 -2
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/shampoo.py +1 -1
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/tiger.py +1 -1
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/trac.py +37 -1
- pytorch_optimizer-3.11.0/scripts/update_changelog.py +43 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/tests/conftest.py +16 -2
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/tests/constants.py +126 -5
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/tests/test_base.py +16 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/tests/test_create_optimizer.py +9 -6
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/tests/test_gradients.py +28 -2
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/tests/test_load_modules.py +1 -1
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/tests/test_loss_functions.py +82 -5
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/tests/test_optimizer_parameters.py +3 -3
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/tests/test_optimizer_variants.py +31 -8
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/tests/test_optimizers.py +393 -9
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/tests/test_utils.py +1 -1
- pytorch_optimizer-3.11.0/tests/test_wrapper_optimizers.py +536 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/tests/utils.py +10 -7
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/uv.lock +575 -777
- pytorch_optimizer-3.11.0/zensical.toml +80 -0
- pytorch_optimizer-3.10.0/.github/workflows/ci.yml +0 -100
- pytorch_optimizer-3.10.0/.github/workflows/copy_readme.yml +0 -25
- pytorch_optimizer-3.10.0/.github/workflows/publish.yml +0 -110
- pytorch_optimizer-3.10.0/CLAUDE.md +0 -136
- pytorch_optimizer-3.10.0/Makefile +0 -34
- pytorch_optimizer-3.10.0/docs/.nav.yml +0 -22
- pytorch_optimizer-3.10.0/docs/.readthedocs.yaml +0 -14
- pytorch_optimizer-3.10.0/docs/changelogs/v2.11.0.md +0 -21
- pytorch_optimizer-3.10.0/docs/changelogs/v2.11.1.md +0 -16
- pytorch_optimizer-3.10.0/docs/changelogs/v2.8.0.md +0 -37
- pytorch_optimizer-3.10.0/docs/changelogs/v3.0.1.md +0 -21
- pytorch_optimizer-3.10.0/docs/changelogs/v3.0.2.md +0 -21
- pytorch_optimizer-3.10.0/docs/changelogs/v3.10.0.md +0 -37
- pytorch_optimizer-3.10.0/docs/index.md +0 -362
- pytorch_optimizer-3.10.0/docs/qa.md +0 -13
- pytorch_optimizer-3.10.0/mkdocs.yml +0 -86
- pytorch_optimizer-3.10.0/requirements-docs.txt +0 -12
- pytorch_optimizer-3.10.0/tests/test_wrapper_optimizers.py +0 -276
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/.gitattributes +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/.github/CODEOWNERS +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/.github/labels.yml +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/.gitignore +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/CITATION.cff +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/CODE_OF_CONDUCT.md +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/LICENSE +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/SECURITY.md +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/benchmark.md +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/changelogs/v2.12.0.md +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/changelogs/v2.9.1.md +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/changelogs/v3.1.0.md +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/changelogs/v3.1.1.md +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/changelogs/v3.1.2.md +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/changelogs/v3.2.0.md +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/changelogs/v3.3.0.md +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/changelogs/v3.3.1.md +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/changelogs/v3.3.2.md +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/changelogs/v3.3.3.md +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/changelogs/v3.3.4.md +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/changelogs/v3.4.1.md +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/changelogs/v3.4.2.md +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/changelogs/v3.5.0.md +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/changelogs/v3.5.1.md +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/changelogs/v3.6.0.md +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/changelogs/v3.6.1.md +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/changelogs/v3.7.0.md +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/changelogs/v3.7.1.md +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/changelogs/v3.8.0.md +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/changelogs/v3.8.1.md +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/changelogs/v3.8.2.md +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/changelogs/v3.9.0.md +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/loss.md +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/lr_scheduler.md +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualization.md +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_ADOPT.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_APOLLO.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_ASGD.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_AccSGD.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_AdEMAMix.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_AdaBelief.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_AdaBound.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_AdaDelta.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_AdaFactor.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_AdaGC.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_AdaHessian.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_AdaMax.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_AdaMod.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_AdaNorm.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_AdaPNM.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_AdaShift.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_AdaSmooth.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_AdaTAM.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_Adai.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_Adalite.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_Adam.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_AdamG.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_AdamMini.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_AdamP.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_AdamS.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_AdamW.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_Adan.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_AggMo.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_Aida.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_AliG.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_Amos.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_ApolloDQN.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_AvaGrad.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_BCOS.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_BSAM.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_CAME.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_DAdaptAdaGrad.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_DAdaptAdam.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_DAdaptAdan.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_DAdaptLion.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_DAdaptSGD.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_DiffGrad.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_EXAdam.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_EmoFact.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_EmoLynx.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_EmoNavi.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_FAdam.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_FOCUS.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_FTRL.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_Fira.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_Fromage.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_GaLore.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_Grams.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_Gravity.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_GrokFastAdamW.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_Kate.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_Kron.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_LARS.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_LaProp.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_Lamb.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_Lion.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_MADGRAD.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_MARS.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_MSVAG.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_NAdam.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_Nero.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_NovoGrad.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_PAdam.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_PID.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_PNM.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_Prodigy.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_QHAdam.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_QHM.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_RACS.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_RAdam.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_RMSprop.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_Ranger.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_Ranger21.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_Ranger25.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_SCION.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_SCIONLight.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_SGD.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_SGDP.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_SGDSaI.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_SGDW.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_SM3.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_SOAP.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_SPAM.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_SRMM.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_SWATS.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_ScalableShampoo.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_ScheduleFreeAdamW.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_ScheduleFreeRAdam.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_ScheduleFreeSGD.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_Shampoo.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_SignSGD.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_SimplifiedAdEMAMix.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_SophiaH.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_StableAdamW.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_StableSPAM.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_TAM.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_Tiger.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_VSGD.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rastrigin_Yogi.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_ADOPT.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_APOLLO.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_ASGD.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_AccSGD.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_AdEMAMix.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_AdaBelief.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_AdaBound.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_AdaDelta.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_AdaFactor.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_AdaGC.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_AdaHessian.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_AdaMax.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_AdaMod.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_AdaNorm.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_AdaPNM.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_AdaShift.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_AdaSmooth.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_AdaTAM.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_Adai.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_Adalite.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_Adam.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_AdamG.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_AdamMini.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_AdamP.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_AdamS.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_AdamW.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_Adan.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_AggMo.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_Aida.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_AliG.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_Amos.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_ApolloDQN.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_AvaGrad.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_BCOS.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_BSAM.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_CAME.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_DAdaptAdaGrad.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_DAdaptAdam.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_DAdaptAdan.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_DAdaptLion.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_DAdaptSGD.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_DiffGrad.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_EXAdam.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_EmoFact.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_EmoLynx.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_EmoNavi.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_FAdam.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_FOCUS.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_FTRL.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_Fira.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_Fromage.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_GaLore.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_Grams.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_Gravity.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_GrokFastAdamW.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_Kate.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_Kron.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_LARS.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_LaProp.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_Lamb.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_Lion.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_MADGRAD.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_MARS.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_MSVAG.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_NAdam.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_Nero.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_NovoGrad.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_PAdam.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_PID.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_PNM.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_Prodigy.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_QHAdam.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_QHM.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_RACS.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_RAdam.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_RMSprop.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_Ranger.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_Ranger21.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_Ranger25.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_SCION.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_SCIONLight.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_SGD.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_SGDP.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_SGDSaI.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_SGDW.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_SM3.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_SOAP.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_SPAM.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_SRMM.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_SWATS.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_ScalableShampoo.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_ScheduleFreeAdamW.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_ScheduleFreeRAdam.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_ScheduleFreeSGD.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_Shampoo.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_SignSGD.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_SimplifiedAdEMAMix.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_SophiaH.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_StableAdamW.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_StableSPAM.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_TAM.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_Tiger.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_VSGD.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/docs/visualizations/rosenbrock_Yogi.jpg +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/examples/__init__.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/examples/benchmark_foreach.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/examples/huggingface_trainer_example.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/examples/pytorch_lightning_example.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/examples/pytorch_lightning_manual_backward_example.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/examples/visualize_optimizers.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/hubconf.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/base/__init__.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/base/exception.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/base/scheduler.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/base/type.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/loss/__init__.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/loss/bi_tempered.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/loss/cross_entropy.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/loss/dice.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/loss/f1.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/loss/jaccard.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/loss/ldam.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/loss/lovasz.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/loss/tversky.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/lr_scheduler/__init__.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/lr_scheduler/chebyshev.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/lr_scheduler/cosine_anealing.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/lr_scheduler/experimental/__init__.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/lr_scheduler/experimental/deberta_v3_lr_scheduler.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/lr_scheduler/linear_warmup.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/lr_scheduler/proportion.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/lr_scheduler/rex.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/lr_scheduler/wsd.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/adabelief.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/adadelta.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/adafactor.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/adagc.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/adahessian.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/adalite.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/adamax.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/adamc.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/adamg.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/adamod.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/adamp.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/adams.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/adan.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/adanorm.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/adapnm.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/adopt.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/agc.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/aggmo.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/aida.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/alig.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/amos.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/avagrad.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/bcos.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/came.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/conda.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/diffgrad.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/emonavi.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/exadam.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/experimental/__init__.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/fira.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/focus.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/foreach_utils.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/fp16.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/fromage.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/galore.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/galore_utils.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/gradient_centralization.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/grams.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/gravity.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/kate.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/lion.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/muon.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/nero.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/pnm.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/psgd_utils.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/qhadam.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/qhm.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/radam.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/ranger.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/rotograd.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/scion.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/shampoo_utils.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/sm3.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/snsm.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/soap.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/sophia.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/spam.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/splus.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/srmm.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/sso.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/swats.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/tam.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/utils.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/optimizer/yogi.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/pytorch_optimizer/py.typed +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/scripts/update_docs.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/tests/__init__.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/tests/test_foreach_utils.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/tests/test_general_optimizer_parameters.py +0 -0
- {pytorch_optimizer-3.10.0 → pytorch_optimizer-3.11.0}/tests/test_lr_schedulers.py +0 -0
|
@@ -2,6 +2,8 @@ documentation:
|
|
|
2
2
|
- changed-files:
|
|
3
3
|
- any-glob-to-any-file:
|
|
4
4
|
- '**/*.md'
|
|
5
|
+
- zensical.toml
|
|
6
|
+
- docs/**
|
|
5
7
|
|
|
6
8
|
github_actions:
|
|
7
9
|
- changed-files:
|
|
@@ -14,7 +16,8 @@ dependencies:
|
|
|
14
16
|
- pyproject.toml
|
|
15
17
|
- requirements.txt
|
|
16
18
|
- requirements-dev.txt
|
|
17
|
-
- requirements-docs.txt
|
|
19
|
+
- docs/requirements-docs.txt
|
|
20
|
+
- uv.lock
|
|
18
21
|
|
|
19
22
|
optimizer:
|
|
20
23
|
- changed-files:
|
|
@@ -16,7 +16,7 @@ _Please note any questions, helps or contexts what maintainer(s) should know_
|
|
|
16
16
|
|
|
17
17
|
## Checklist
|
|
18
18
|
|
|
19
|
-
- [ ] Make sure to run `
|
|
20
|
-
- [ ] My code adheres to the style guidelines of this project (`
|
|
21
|
-
- [ ] Both new and existing unit tests pass successfully on my local environment by running `
|
|
19
|
+
- [ ] Make sure to run `just format` before commit
|
|
20
|
+
- [ ] My code adheres to the style guidelines of this project (`just check` shows no errors)
|
|
21
|
+
- [ ] Both new and existing unit tests pass successfully on my local environment by running `just test`
|
|
22
22
|
- [ ] I have made the necessary changes to the documentation
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [ main ]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [ main ]
|
|
8
|
+
workflow_call:
|
|
9
|
+
inputs:
|
|
10
|
+
ref:
|
|
11
|
+
description: Commit to validate
|
|
12
|
+
type: string
|
|
13
|
+
required: false
|
|
14
|
+
default: ''
|
|
15
|
+
skip_coverage_upload:
|
|
16
|
+
description: Skip coverage uploads during release validation
|
|
17
|
+
type: boolean
|
|
18
|
+
required: false
|
|
19
|
+
default: false
|
|
20
|
+
|
|
21
|
+
env:
|
|
22
|
+
OMP_NUM_THREADS: 8
|
|
23
|
+
MKL_NUM_THREADS: 8
|
|
24
|
+
PYTHONDONTWRITEBYTECODE: 1
|
|
25
|
+
|
|
26
|
+
jobs:
|
|
27
|
+
lint:
|
|
28
|
+
name: Lint
|
|
29
|
+
runs-on: ubuntu-latest
|
|
30
|
+
steps:
|
|
31
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
32
|
+
with:
|
|
33
|
+
ref: ${{ inputs.ref || github.sha }}
|
|
34
|
+
|
|
35
|
+
- name: Setup uv
|
|
36
|
+
uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
|
|
37
|
+
with:
|
|
38
|
+
python-version: 3.12
|
|
39
|
+
enable-cache: true
|
|
40
|
+
prune-cache: false
|
|
41
|
+
|
|
42
|
+
- name: Install dependencies
|
|
43
|
+
run: uv sync --frozen --no-editable
|
|
44
|
+
|
|
45
|
+
- name: Run lint
|
|
46
|
+
run: |
|
|
47
|
+
uv run ruff check pytorch_optimizer examples tests scripts hubconf.py
|
|
48
|
+
|
|
49
|
+
type_check:
|
|
50
|
+
name: Static Type Check
|
|
51
|
+
runs-on: ubuntu-latest
|
|
52
|
+
steps:
|
|
53
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
54
|
+
with:
|
|
55
|
+
ref: ${{ inputs.ref || github.sha }}
|
|
56
|
+
|
|
57
|
+
- name: Setup uv
|
|
58
|
+
uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
|
|
59
|
+
with:
|
|
60
|
+
python-version: 3.12
|
|
61
|
+
enable-cache: true
|
|
62
|
+
prune-cache: false
|
|
63
|
+
|
|
64
|
+
- name: Install dependencies
|
|
65
|
+
run: uv sync --frozen --no-editable
|
|
66
|
+
|
|
67
|
+
- uses: jakebailey/pyright-action@8ec14b5cfe41f26e5f41686a31eb6012758217ef # v3.0.2
|
|
68
|
+
with:
|
|
69
|
+
version: 1.1.414
|
|
70
|
+
|
|
71
|
+
docs:
|
|
72
|
+
name: Documentation
|
|
73
|
+
runs-on: ubuntu-latest
|
|
74
|
+
steps:
|
|
75
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
76
|
+
with:
|
|
77
|
+
ref: ${{ inputs.ref || github.sha }}
|
|
78
|
+
|
|
79
|
+
- name: Setup uv
|
|
80
|
+
uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
|
|
81
|
+
with:
|
|
82
|
+
python-version: 3.12
|
|
83
|
+
enable-cache: true
|
|
84
|
+
|
|
85
|
+
- name: Build documentation
|
|
86
|
+
run: uv run --no-project --python 3.12 --with-requirements docs/requirements-docs.txt zensical build --strict
|
|
87
|
+
|
|
88
|
+
test:
|
|
89
|
+
runs-on: ubuntu-latest
|
|
90
|
+
strategy:
|
|
91
|
+
matrix:
|
|
92
|
+
python-version: ['3.8', '3.9', '3.10', '3.11', '3.12', '3.13', '3.14', '3.15']
|
|
93
|
+
|
|
94
|
+
steps:
|
|
95
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
96
|
+
with:
|
|
97
|
+
ref: ${{ inputs.ref || github.sha }}
|
|
98
|
+
|
|
99
|
+
- name: Setup uv
|
|
100
|
+
uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
|
|
101
|
+
with:
|
|
102
|
+
python-version: ${{ matrix.python-version }}
|
|
103
|
+
enable-cache: true
|
|
104
|
+
prune-cache: false
|
|
105
|
+
|
|
106
|
+
- name: Install dependencies
|
|
107
|
+
run: uv sync --frozen --no-editable
|
|
108
|
+
|
|
109
|
+
- name: Check test
|
|
110
|
+
run: uv run --frozen pytest
|
|
111
|
+
|
|
112
|
+
- name: Upload coverage
|
|
113
|
+
if: success() && !inputs.skip_coverage_upload
|
|
114
|
+
uses: codecov/codecov-action@303a32d7a59b442fa8d48b6a1cc6825c09c847a5 # v7.1.1
|
|
115
|
+
with:
|
|
116
|
+
token: ${{ secrets.CODECOV_TOKEN }}
|
|
117
|
+
directory: ./
|
|
118
|
+
files: ./coverage.xml
|
|
119
|
+
env_vars: OS,PYTHON
|
|
120
|
+
flags: ${{ matrix.python-version }}
|
|
121
|
+
fail_ci_if_error: true
|
|
122
|
+
verbose: false
|
|
123
|
+
|
|
124
|
+
ci-summary:
|
|
125
|
+
if: always()
|
|
126
|
+
needs: [lint, type_check, docs, test]
|
|
127
|
+
runs-on: ubuntu-latest
|
|
128
|
+
steps:
|
|
129
|
+
- name: Check results
|
|
130
|
+
if: contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled')
|
|
131
|
+
run: exit 1
|
|
132
|
+
|
|
133
|
+
- name: Report Summary
|
|
134
|
+
run: echo "✅ Lint, documentation, and tests completed for all targets"
|
|
@@ -21,7 +21,7 @@ jobs:
|
|
|
21
21
|
- id: automerge
|
|
22
22
|
if: ${{ contains(github.event.pull_request.labels.*.name, 'automerge') }}
|
|
23
23
|
name: automerge
|
|
24
|
-
uses: pascalgn/automerge-action@v0.16.4
|
|
24
|
+
uses: pascalgn/automerge-action@7961b8b5eec56cc088c140b56d864285eabd3f67 # v0.16.4
|
|
25
25
|
env:
|
|
26
26
|
MERGE_LABELS: "automerge"
|
|
27
27
|
MERGE_METHOD_LABEL_REQUIRED: "false"
|
|
@@ -35,14 +35,14 @@ jobs:
|
|
|
35
35
|
|
|
36
36
|
steps:
|
|
37
37
|
- name: Checkout repository
|
|
38
|
-
uses: actions/checkout@
|
|
38
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
39
39
|
|
|
40
40
|
- name: Initialize CodeQL
|
|
41
|
-
uses: github/codeql-action/init@v4
|
|
41
|
+
uses: github/codeql-action/init@2892aa5e19bbd11bc0cff5427e3b750a04d9e3c2 # v4.38.2
|
|
42
42
|
with:
|
|
43
43
|
languages: ${{ matrix.language }}
|
|
44
44
|
|
|
45
45
|
- name: Perform CodeQL Analysis
|
|
46
|
-
uses: github/codeql-action/analyze@v4
|
|
46
|
+
uses: github/codeql-action/analyze@2892aa5e19bbd11bc0cff5427e3b750a04d9e3c2 # v4.38.2
|
|
47
47
|
with:
|
|
48
48
|
category: "/language:${{matrix.language}}"
|
|
@@ -17,9 +17,9 @@ jobs:
|
|
|
17
17
|
pull-requests: write
|
|
18
18
|
|
|
19
19
|
steps:
|
|
20
|
-
- uses: actions/checkout@
|
|
20
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
21
21
|
|
|
22
|
-
- uses: actions/labeler@
|
|
22
|
+
- uses: actions/labeler@bf12e9b00b37c5c0ca2b87b79b2daf7891dbda13 # v7.0.0
|
|
23
23
|
if: ${{ github.event.action != 'labeled' && github.event.action != 'unlabeled' && !contains(github.event.pull_request.labels.*.name, 'automerge') }}
|
|
24
24
|
with:
|
|
25
25
|
configuration-path: '.github/labeler.yml'
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
run-name: Release / ${{ github.ref_name }}
|
|
3
|
+
|
|
4
|
+
on:
|
|
5
|
+
push:
|
|
6
|
+
tags:
|
|
7
|
+
- 'v[0-9]+.[0-9]+.[0-9]+'
|
|
8
|
+
workflow_dispatch:
|
|
9
|
+
inputs:
|
|
10
|
+
bump:
|
|
11
|
+
description: Version component to increment
|
|
12
|
+
required: true
|
|
13
|
+
type: choice
|
|
14
|
+
default: patch
|
|
15
|
+
options: [major, minor, patch]
|
|
16
|
+
|
|
17
|
+
permissions:
|
|
18
|
+
contents: read
|
|
19
|
+
|
|
20
|
+
concurrency:
|
|
21
|
+
group: publish
|
|
22
|
+
cancel-in-progress: false
|
|
23
|
+
|
|
24
|
+
jobs:
|
|
25
|
+
guard:
|
|
26
|
+
name: Guard Release Ref
|
|
27
|
+
runs-on: ubuntu-latest
|
|
28
|
+
steps:
|
|
29
|
+
- name: Require main for manual releases
|
|
30
|
+
run: |
|
|
31
|
+
if [[ "$GITHUB_EVENT_NAME" == 'workflow_dispatch' && "$GITHUB_REF" != 'refs/heads/main' ]]; then
|
|
32
|
+
echo "Run manual releases from main, not $GITHUB_REF" >&2
|
|
33
|
+
exit 1
|
|
34
|
+
fi
|
|
35
|
+
|
|
36
|
+
validate:
|
|
37
|
+
name: Validate
|
|
38
|
+
needs: guard
|
|
39
|
+
uses: ./.github/workflows/ci.yml
|
|
40
|
+
with:
|
|
41
|
+
ref: ${{ github.sha }}
|
|
42
|
+
skip_coverage_upload: true
|
|
43
|
+
|
|
44
|
+
prepare:
|
|
45
|
+
name: Prepare Version
|
|
46
|
+
needs: validate
|
|
47
|
+
runs-on: ubuntu-latest
|
|
48
|
+
permissions:
|
|
49
|
+
contents: write
|
|
50
|
+
outputs:
|
|
51
|
+
tag: ${{ steps.version.outputs.tag }}
|
|
52
|
+
ref: ${{ steps.commit.outputs.ref }}
|
|
53
|
+
steps:
|
|
54
|
+
- name: Checkout release ref
|
|
55
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
56
|
+
with:
|
|
57
|
+
ref: ${{ github.sha }}
|
|
58
|
+
fetch-depth: 0
|
|
59
|
+
token: ${{ secrets.GH_TOKEN }}
|
|
60
|
+
|
|
61
|
+
- name: Setup uv
|
|
62
|
+
uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
|
|
63
|
+
with:
|
|
64
|
+
python-version: '3.12'
|
|
65
|
+
|
|
66
|
+
- name: Validate and bump package version
|
|
67
|
+
id: version
|
|
68
|
+
env:
|
|
69
|
+
BUMP: ${{ inputs.bump }}
|
|
70
|
+
run: |
|
|
71
|
+
uv lock --check
|
|
72
|
+
current="$(uv version --short)"
|
|
73
|
+
if [[ ! "$current" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
|
|
74
|
+
echo 'Package version must have the form MAJOR.MINOR.PATCH' >&2
|
|
75
|
+
exit 1
|
|
76
|
+
fi
|
|
77
|
+
|
|
78
|
+
if [[ "$GITHUB_EVENT_NAME" == 'workflow_dispatch' ]]; then
|
|
79
|
+
version="$(uv version --bump "$BUMP" --no-sync --short)"
|
|
80
|
+
tag="v$version"
|
|
81
|
+
else
|
|
82
|
+
tag="$GITHUB_REF_NAME"
|
|
83
|
+
if [[ "$tag" != "v$current" ]]; then
|
|
84
|
+
echo "Tag $tag does not match package version $current" >&2
|
|
85
|
+
exit 1
|
|
86
|
+
fi
|
|
87
|
+
fi
|
|
88
|
+
echo "tag=$tag" >> "$GITHUB_OUTPUT"
|
|
89
|
+
|
|
90
|
+
- name: Commit and push version bump
|
|
91
|
+
id: commit
|
|
92
|
+
env:
|
|
93
|
+
RELEASE_TAG: ${{ steps.version.outputs.tag }}
|
|
94
|
+
run: |
|
|
95
|
+
if [[ "$GITHUB_EVENT_NAME" == 'workflow_dispatch' ]]; then
|
|
96
|
+
if git rev-parse --verify --quiet "refs/tags/$RELEASE_TAG"; then
|
|
97
|
+
echo "Tag $RELEASE_TAG already exists" >&2
|
|
98
|
+
exit 1
|
|
99
|
+
fi
|
|
100
|
+
git config user.name 'github-actions[bot]'
|
|
101
|
+
git config user.email '41898282+github-actions[bot]@users.noreply.github.com'
|
|
102
|
+
git add pyproject.toml uv.lock
|
|
103
|
+
git commit -m "build: prepare version ${RELEASE_TAG#v} [skip ci]"
|
|
104
|
+
git push origin HEAD:main
|
|
105
|
+
fi
|
|
106
|
+
echo "ref=$(git rev-parse HEAD)" >> "$GITHUB_OUTPUT"
|
|
107
|
+
|
|
108
|
+
deploy:
|
|
109
|
+
name: Publish Package
|
|
110
|
+
needs: prepare
|
|
111
|
+
runs-on: ubuntu-latest
|
|
112
|
+
permissions:
|
|
113
|
+
contents: write
|
|
114
|
+
steps:
|
|
115
|
+
- name: Checkout release commit
|
|
116
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
117
|
+
with:
|
|
118
|
+
ref: ${{ needs.prepare.outputs.ref }}
|
|
119
|
+
fetch-depth: 0
|
|
120
|
+
|
|
121
|
+
- name: Setup uv
|
|
122
|
+
uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
|
|
123
|
+
with:
|
|
124
|
+
python-version: '3.12'
|
|
125
|
+
|
|
126
|
+
- name: Build package
|
|
127
|
+
run: uv build
|
|
128
|
+
|
|
129
|
+
- name: Create and push release tag
|
|
130
|
+
if: github.event_name == 'workflow_dispatch'
|
|
131
|
+
env:
|
|
132
|
+
RELEASE_TAG: ${{ needs.prepare.outputs.tag }}
|
|
133
|
+
RELEASE_REF: ${{ needs.prepare.outputs.ref }}
|
|
134
|
+
run: |
|
|
135
|
+
if git rev-parse --verify --quiet "refs/tags/$RELEASE_TAG"; then
|
|
136
|
+
if [[ "$(git rev-list -n 1 "$RELEASE_TAG")" != "$RELEASE_REF" ]]; then
|
|
137
|
+
echo "Tag $RELEASE_TAG points to a different commit" >&2
|
|
138
|
+
exit 1
|
|
139
|
+
fi
|
|
140
|
+
else
|
|
141
|
+
git config user.name 'github-actions[bot]'
|
|
142
|
+
git config user.email '41898282+github-actions[bot]@users.noreply.github.com'
|
|
143
|
+
git tag -a "$RELEASE_TAG" -m "pytorch-optimizer $RELEASE_TAG"
|
|
144
|
+
git push origin "refs/tags/$RELEASE_TAG"
|
|
145
|
+
fi
|
|
146
|
+
|
|
147
|
+
- name: Publish package to PyPI
|
|
148
|
+
env:
|
|
149
|
+
UV_PUBLISH_TOKEN: ${{ secrets.PYPI_TOKEN }}
|
|
150
|
+
run: uv publish --check-url https://pypi.org/simple
|
|
151
|
+
|
|
152
|
+
release:
|
|
153
|
+
name: Create Release
|
|
154
|
+
runs-on: ubuntu-latest
|
|
155
|
+
needs: [prepare, deploy]
|
|
156
|
+
permissions:
|
|
157
|
+
contents: write
|
|
158
|
+
steps:
|
|
159
|
+
- name: Generate release notes and create release
|
|
160
|
+
uses: softprops/action-gh-release@efb35369e0ad2afab669f228072c1b0d510eae64 # v3.0.3
|
|
161
|
+
with:
|
|
162
|
+
generate_release_notes: true
|
|
163
|
+
draft: false
|
|
164
|
+
prerelease: false
|
|
165
|
+
name: pytorch-optimizer ${{ needs.prepare.outputs.tag }}
|
|
166
|
+
tag_name: ${{ needs.prepare.outputs.tag }}
|
|
167
|
+
target_commitish: ${{ needs.prepare.outputs.ref }}
|
|
168
|
+
token: ${{ secrets.GH_TOKEN }}
|
|
169
|
+
|
|
170
|
+
changelog:
|
|
171
|
+
name: Update Changelogs
|
|
172
|
+
runs-on: ubuntu-latest
|
|
173
|
+
needs: [prepare, release]
|
|
174
|
+
permissions:
|
|
175
|
+
contents: write
|
|
176
|
+
pull-requests: write
|
|
177
|
+
steps:
|
|
178
|
+
- name: Checkout main
|
|
179
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
180
|
+
with:
|
|
181
|
+
ref: main
|
|
182
|
+
|
|
183
|
+
- name: Set up Python
|
|
184
|
+
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
|
|
185
|
+
with:
|
|
186
|
+
python-version: '3.12'
|
|
187
|
+
|
|
188
|
+
- name: Update changelogs from the published release
|
|
189
|
+
env:
|
|
190
|
+
GH_TOKEN: ${{ github.token }}
|
|
191
|
+
GH_REPO: ${{ github.repository }}
|
|
192
|
+
RELEASE_TAG: ${{ needs.prepare.outputs.tag }}
|
|
193
|
+
run: |
|
|
194
|
+
gh release view "$RELEASE_TAG" --json body --jq .body > "$RUNNER_TEMP/release-notes.md"
|
|
195
|
+
python scripts/update_changelog.py "$RELEASE_TAG" "$RUNNER_TEMP/release-notes.md"
|
|
196
|
+
|
|
197
|
+
- name: Create changelog pull request
|
|
198
|
+
uses: peter-evans/create-pull-request@5f6978faf089d4d20b00c7766989d076bb2fc7f1 # v8.1.1
|
|
199
|
+
with:
|
|
200
|
+
branch: docs/changelog-update-${{ needs.prepare.outputs.tag }}
|
|
201
|
+
commit-message: 'docs: update changelogs for ${{ needs.prepare.outputs.tag }}'
|
|
202
|
+
title: 'docs: update changelogs for ${{ needs.prepare.outputs.tag }}'
|
|
203
|
+
body: >-
|
|
204
|
+
Sync the generated release notes from
|
|
205
|
+
https://github.com/${{ github.repository }}/releases/tag/${{ needs.prepare.outputs.tag }}
|
|
206
|
+
into CHANGELOG.md and the documentation.
|
|
207
|
+
base: main
|
|
208
|
+
add-paths: |
|
|
209
|
+
CHANGELOG.md
|
|
210
|
+
docs/changelogs/${{ needs.prepare.outputs.tag }}.md
|
|
211
|
+
docs/changelogs/index.md
|
|
212
|
+
delete-branch: true
|
|
213
|
+
labels: automerge
|
|
214
|
+
token: ${{ secrets.GH_TOKEN }}
|
|
@@ -12,10 +12,10 @@ jobs:
|
|
|
12
12
|
update-docs:
|
|
13
13
|
runs-on: ubuntu-latest
|
|
14
14
|
steps:
|
|
15
|
-
- uses: actions/checkout@
|
|
15
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
16
16
|
|
|
17
17
|
- name: Set up Python 3.12
|
|
18
|
-
uses: actions/setup-python@
|
|
18
|
+
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
|
|
19
19
|
with:
|
|
20
20
|
python-version: 3.12
|
|
21
21
|
|
|
@@ -23,7 +23,7 @@ jobs:
|
|
|
23
23
|
run: python scripts/update_docs.py
|
|
24
24
|
|
|
25
25
|
- name: Commit updated documentation
|
|
26
|
-
uses: stefanzweifel/git-auto-commit-action@
|
|
26
|
+
uses: stefanzweifel/git-auto-commit-action@4a55954c782fc1ea30b9056cd3e7a2b40ca8887d # v7.2.0
|
|
27
27
|
id: auto-commit-action
|
|
28
28
|
with:
|
|
29
29
|
commit_message: "docs: update documentation"
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# Agent Instructions
|
|
2
|
+
|
|
3
|
+
## Development workflow
|
|
4
|
+
|
|
5
|
+
- Use `uv` for dependency resolution and execution. Prefer `uv run just <recipe>` so tests use the versions in `uv.lock`.
|
|
6
|
+
- The repository `justfile` is cross-platform and works on Windows, macOS, and Linux/WSL.
|
|
7
|
+
- Run the relevant checks after changes:
|
|
8
|
+
- `uv run just format`
|
|
9
|
+
- `uv run just check`
|
|
10
|
+
- `uv run just test`
|
|
11
|
+
- New or changed implementation code should have 100% test coverage. Check it with `uv run coverage report -m`.
|
|
12
|
+
- If coverage drops, add focused tests using the existing patterns in `tests/constants.py` and `tests/test_*.py`.
|
|
13
|
+
- Run a focused test with `uv run pytest tests/test_optimizers.py::test_name -sv -vv`.
|
|
14
|
+
- Use `uv run just docs` to serve the Zensical documentation and `uv run just docs-build` to build it with strict validation.
|
|
15
|
+
- Run `uv run just update-docs` after changing public exports to regenerate the API reference.
|
|
16
|
+
|
|
17
|
+
## Architecture
|
|
18
|
+
|
|
19
|
+
- `pytorch_optimizer/base/` contains `BaseOptimizer`, scheduler bases, shared types, and exceptions.
|
|
20
|
+
- `pytorch_optimizer/optimizer/` contains optimizers, wrappers, and shared gradient and update utilities.
|
|
21
|
+
- `pytorch_optimizer/lr_scheduler/` and `pytorch_optimizer/loss/` contain schedulers and loss functions.
|
|
22
|
+
- The public API exports components from `pytorch_optimizer/__init__.py`. Use `load_optimizer()` to load a class by name
|
|
23
|
+
and `create_optimizer()` to configure an optimizer with common options and wrappers.
|
|
24
|
+
- Optional integrations include `bitsandbytes`, `q-galore-torch`, and `torchao`.
|
|
25
|
+
- `tests/test_optimizers.py` uses recipes from `tests/constants.py` for training tests. Parameter validation, variants,
|
|
26
|
+
wrappers, losses, and schedulers have separate test modules. `tests/conftest.py` supplies the training data fixture.
|
|
27
|
+
- `zensical.toml` owns documentation navigation and theme settings. Keep the home page separate from `README.md`.
|
|
28
|
+
|
|
29
|
+
## Code style
|
|
30
|
+
|
|
31
|
+
- Follow nearby repository code and tests before introducing new patterns.
|
|
32
|
+
- Add comments only when code is difficult to understand; avoid redundant, meaningless, or excessive comments.
|
|
33
|
+
- Use blank lines to separate logical steps and improve readability.
|
|
34
|
+
- Do not add introductory comments or docstrings to scripts.
|
|
35
|
+
- Use a maximum line length of 119 characters and single-quoted strings.
|
|
36
|
+
- Use the repository's existing typing style. Do not add `from __future__ import annotations` or `TYPE_CHECKING` imports unless the surrounding code requires them.
|
|
37
|
+
- Optimizers inherit from `BaseOptimizer`, implement `init_group()` and `step()`, and reuse its validation and update helpers where applicable.
|
|
38
|
+
- All optimizer implementations must follow the algorithms and update rules in their original papers.
|
|
39
|
+
- Follow Google-style docstrings. Reuse helpers such as `apply_weight_decay()`, `apply_cautious()`, `debias()`,
|
|
40
|
+
`validate_learning_rate()`, `validate_betas()`, and `validate_range()` before adding update or validation logic.
|
|
41
|
+
- Keep implementations focused; remove redundant compatibility layers and abstractions.
|
|
42
|
+
|
|
43
|
+
## Adding an optimizer
|
|
44
|
+
|
|
45
|
+
- Add the implementation under `pytorch_optimizer/optimizer/`.
|
|
46
|
+
- Export it from the optimizer package and register it in `OPTIMIZER_LIST` so it is available through `OPTIMIZERS` and `load_optimizer()`.
|
|
47
|
+
- Add a training recipe to `tests/constants.py`; the parametrized tests in `tests/test_optimizers.py` will exercise it.
|
|
48
|
+
- Add focused tests for optimizer-specific behavior, state handling, validation, wrappers, and edge cases as needed.
|
|
49
|
+
- Update the relevant documentation and algorithm table in `README.md`.
|
|
50
|
+
- Write clear PR titles and descriptions; the release workflow generates notes from merged PRs and syncs them to
|
|
51
|
+
`CHANGELOG.md`, `docs/changelogs/<tag>.md`, and the changelog index through an automated PR.
|
|
52
|
+
- Register new loss functions and schedulers in their package exports and add them to the corresponding tests and README tables.
|
|
53
|
+
- Never edit the root `CHANGELOG.md`; it is maintained automatically.
|
|
54
|
+
|
|
55
|
+
## Commits and pull requests
|
|
56
|
+
|
|
57
|
+
Every commit subject must start with one of these prefixes:
|
|
58
|
+
|
|
59
|
+
| Prefix | Use for |
|
|
60
|
+
| --- | --- |
|
|
61
|
+
| `feat:` | Add a feature or public API. |
|
|
62
|
+
| `fix:` | Correct a bug or unintended behavior. |
|
|
63
|
+
| `perf:` | Improve execution speed or resource use. |
|
|
64
|
+
| `style:` | Change code formatting without changing behavior. |
|
|
65
|
+
| `refactor:` | Restructure code without changing public behavior. |
|
|
66
|
+
| `docs:` | Add, revise, or reorganize documentation. |
|
|
67
|
+
| `chore:` | Maintain development tools, automation, or repository housekeeping. |
|
|
68
|
+
| `build:` | Change build, packaging, or dependency configuration. |
|
|
69
|
+
| `update:` | Refresh project content or metadata when no more specific prefix applies. |
|
|
70
|
+
|
|
71
|
+
Keep the text after the prefix imperative, concise, and specific to the committed change.
|
|
72
|
+
Do not use commit prefixes outside this list.
|
|
73
|
+
|
|
74
|
+
- Write concise, specific PR titles that describe the actual change. Use a title tag only when it adds useful context
|
|
75
|
+
and accurately matches the work; do not derive it mechanically from the commit prefix.
|
|
76
|
+
- Feature PR titles follow the existing format, such as `[Feature] Implement Magma optimizer`.
|
|
77
|
+
- Keep commits focused, verify the branch and working tree before pushing, and use `--force-with-lease` only when rewriting a pushed branch is necessary.
|
|
@@ -1,3 +1,62 @@
|
|
|
1
|
+
# v3.10.1
|
|
2
|
+
|
|
3
|
+
## Change Log
|
|
4
|
+
|
|
5
|
+
### Feature
|
|
6
|
+
|
|
7
|
+
* Implement `LoRARite` optimizer. (#498, #504)
|
|
8
|
+
* [LoRA Done RITE: Robust Invariant Transformation Equilibration for LoRA Optimization](https://arxiv.org/abs/2410.20625)
|
|
9
|
+
* Implement `FlashAdamW` optimizer. (#495, #503)
|
|
10
|
+
* [FlashOptim: Optimizers for Memory-Efficient Training](https://arxiv.org/abs/2602.23349)
|
|
11
|
+
* Implement `DualAdam` optimizer. (#496, #502)
|
|
12
|
+
* [Combining Adam and its Inverse Counterpart to Enhance Generalization of Deep Learning Optimizers](https://arxiv.org/abs/2603.07122)
|
|
13
|
+
* Implement `ROSE` optimizer. (#500, #501)
|
|
14
|
+
* [Stateless optimization through range-normalized gradient updates](https://github.com/MatthewK78)
|
|
15
|
+
|
|
16
|
+
## Contributions
|
|
17
|
+
|
|
18
|
+
thanks to @mfazrinizar
|
|
19
|
+
|
|
20
|
+
# v3.10.0
|
|
21
|
+
|
|
22
|
+
## Change Log
|
|
23
|
+
|
|
24
|
+
### Feature
|
|
25
|
+
|
|
26
|
+
* Add support for `foreach`. (#287, #476, #477)
|
|
27
|
+
* More than 10 optimizers (e.g. AdaFactor, StableAdamW, Lion, AdaBelief, Amos, ...) now support `foreach`.
|
|
28
|
+
* In most cases, `foreach` improves training speed by 1.1x to 1.5x, with a moderate increase in memory usage.
|
|
29
|
+
* Like official `PyTorch` optimizers, the default value of `foreach` is `None`. When `foreach=None`, CUDA paths prefer the `foreach` implementation over the for-loop implementation.
|
|
30
|
+
* If you need the previous for-loop behavior, set `foreach=False` explicitly.
|
|
31
|
+
* Update the Emo-series optimizers. (#472, #478)
|
|
32
|
+
* Update `EmoNavi`, `EmoFact`, and `EmoLynx`.
|
|
33
|
+
* Begin deprecating `EmoNeco` and `EmoZeal` (they are being phased out).
|
|
34
|
+
* Implement `SpectralSphere` optimizer. (#483, #485)
|
|
35
|
+
* [Controlled LLM Training on Spectral Sphere](https://arxiv.org/abs/2601.08393)
|
|
36
|
+
* Support various coefficients for `zero_power_via_newton_schulz_5`. (#487)
|
|
37
|
+
* Add coefficient presets: `original`, `quintic`, `polar_express`, and `polar_express_safer`.
|
|
38
|
+
* Support custom coefficient schedules and expose `ns_coeffs` in `Muon`, `DistributedMuon`, `AdaMuon`, and `AdaGO`.
|
|
39
|
+
|
|
40
|
+
### Refactor
|
|
41
|
+
|
|
42
|
+
* Rename and organize type aliases. (#488)
|
|
43
|
+
|
|
44
|
+
### Fix
|
|
45
|
+
|
|
46
|
+
* Fix misbehavior in `AdaFactor` optimizer. (#477)
|
|
47
|
+
* Fix a potential `NaN` issue in `AdamP` optimizer. (#480, #481)
|
|
48
|
+
* Fix `Lookahead` wrapper compatibility with `accelerate` by normalizing `lookahead_state` serialization. (#484, #489)
|
|
49
|
+
|
|
50
|
+
### Docs
|
|
51
|
+
|
|
52
|
+
* Convert the previous docstring style to Google style. (#487)
|
|
53
|
+
* Add `py.typed` to mark distributed typing information. (#487)
|
|
54
|
+
* rework the README.md. (#491, #492)
|
|
55
|
+
|
|
56
|
+
### CI/CD
|
|
57
|
+
|
|
58
|
+
* Introduce `uv`. (#473)
|
|
59
|
+
|
|
1
60
|
# v3.9.0
|
|
2
61
|
|
|
3
62
|
## Change Log
|