pytorch_optimizer 3.10.1__tar.gz → 4.0.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.
Files changed (530) hide show
  1. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/.github/ISSUE_TEMPLATE/bug_report.md +2 -2
  2. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/.github/labeler.yml +4 -1
  3. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/.github/pull_request_template.md +3 -3
  4. pytorch_optimizer-4.0.0/.github/workflows/ci.yml +134 -0
  5. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/.github/workflows/pr_automerge.yml +8 -4
  6. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/.github/workflows/pr_codeql.yml +3 -3
  7. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/.github/workflows/pr_labeler.yml +2 -2
  8. pytorch_optimizer-4.0.0/.github/workflows/publish.yml +231 -0
  9. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/.github/workflows/update_docs.yml +3 -3
  10. pytorch_optimizer-4.0.0/AGENTS.md +110 -0
  11. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/CHANGELOG.md +119 -0
  12. pytorch_optimizer-4.0.0/CONTRIBUTING.md +85 -0
  13. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/PKG-INFO +30 -14
  14. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/README.md +23 -3
  15. pytorch_optimizer-4.0.0/docs/.readthedocs.yaml +11 -0
  16. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/base.md +1 -1
  17. pytorch_optimizer-4.0.0/docs/changelogs/index.md +43 -0
  18. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/changelogs/v2.10.0.md +5 -5
  19. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/changelogs/v2.10.1.md +1 -1
  20. pytorch_optimizer-4.0.0/docs/changelogs/v2.11.0.md +21 -0
  21. pytorch_optimizer-4.0.0/docs/changelogs/v2.11.1.md +16 -0
  22. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/changelogs/v2.11.2.md +2 -2
  23. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/changelogs/v2.7.0.md +18 -18
  24. pytorch_optimizer-4.0.0/docs/changelogs/v2.8.0.md +37 -0
  25. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/changelogs/v2.9.0.md +7 -7
  26. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/changelogs/v3.0.0.md +8 -8
  27. pytorch_optimizer-4.0.0/docs/changelogs/v3.0.1.md +21 -0
  28. pytorch_optimizer-4.0.0/docs/changelogs/v3.0.2.md +21 -0
  29. pytorch_optimizer-4.0.0/docs/changelogs/v3.10.0.md +37 -0
  30. pytorch_optimizer-4.0.0/docs/changelogs/v3.10.1.md +16 -0
  31. pytorch_optimizer-4.0.0/docs/changelogs/v3.11.0.md +67 -0
  32. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/changelogs/v3.4.0.md +1 -1
  33. pytorch_optimizer-4.0.0/docs/changelogs/v4.0.0.md +31 -0
  34. pytorch_optimizer-4.0.0/docs/getting-started.md +107 -0
  35. pytorch_optimizer-4.0.0/docs/index.md +41 -0
  36. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/javascripts/tables.js +1 -1
  37. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/optimizer.md +12 -0
  38. pytorch_optimizer-4.0.0/docs/qa.md +21 -0
  39. pytorch_optimizer-4.0.0/docs/requirements-docs.txt +2 -0
  40. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/util.md +1 -1
  41. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/examples/benchmark_foreach.py +9 -9
  42. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/examples/huggingface_trainer_example.py +3 -3
  43. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/examples/visualize_optimizers.py +39 -37
  44. pytorch_optimizer-4.0.0/justfile +34 -0
  45. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pyproject.toml +30 -32
  46. pytorch_optimizer-4.0.0/pytorch_optimizer/__init__.py +13 -0
  47. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/base/exception.py +10 -10
  48. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/base/optimizer.py +223 -129
  49. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/base/scheduler.py +17 -12
  50. pytorch_optimizer-4.0.0/pytorch_optimizer/base/type.py +24 -0
  51. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/loss/__init__.py +32 -8
  52. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/loss/bi_tempered.py +78 -48
  53. pytorch_optimizer-4.0.0/pytorch_optimizer/loss/cross_entropy.py +36 -0
  54. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/loss/dice.py +33 -20
  55. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/loss/f1.py +15 -5
  56. pytorch_optimizer-4.0.0/pytorch_optimizer/loss/focal.py +176 -0
  57. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/loss/jaccard.py +30 -19
  58. pytorch_optimizer-4.0.0/pytorch_optimizer/loss/ldam.py +50 -0
  59. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/loss/lovasz.py +19 -9
  60. pytorch_optimizer-4.0.0/pytorch_optimizer/loss/tversky.py +42 -0
  61. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/lr_scheduler/__init__.py +44 -10
  62. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/lr_scheduler/chebyshev.py +25 -27
  63. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/lr_scheduler/cosine_anealing.py +25 -20
  64. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/lr_scheduler/experimental/deberta_v3_lr_scheduler.py +8 -8
  65. pytorch_optimizer-4.0.0/pytorch_optimizer/lr_scheduler/linear_warmup.py +66 -0
  66. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/lr_scheduler/proportion.py +11 -10
  67. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/lr_scheduler/rex.py +10 -9
  68. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/lr_scheduler/wsd.py +21 -21
  69. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/__init__.py +280 -47
  70. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/a2grad.py +13 -13
  71. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/adabelief.py +31 -26
  72. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/adabound.py +21 -17
  73. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/adadelta.py +9 -9
  74. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/adafactor.py +47 -46
  75. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/adagc.py +23 -21
  76. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/adahessian.py +24 -22
  77. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/adai.py +12 -14
  78. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/adalite.py +13 -13
  79. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/adam_mini.py +53 -38
  80. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/adamax.py +11 -15
  81. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/adamc.py +11 -11
  82. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/adamg.py +13 -13
  83. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/adamod.py +11 -12
  84. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/adamp.py +38 -38
  85. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/adams.py +22 -16
  86. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/adamw.py +76 -52
  87. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/adan.py +22 -24
  88. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/adanorm.py +12 -12
  89. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/adapnm.py +11 -11
  90. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/adashift.py +18 -19
  91. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/adasmooth.py +14 -14
  92. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/ademamix.py +159 -37
  93. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/adopt.py +19 -21
  94. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/agc.py +9 -6
  95. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/aggmo.py +8 -8
  96. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/aida.py +16 -16
  97. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/alig.py +15 -14
  98. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/amos.py +22 -24
  99. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/ano.py +13 -12
  100. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/apollo.py +28 -26
  101. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/avagrad.py +10 -10
  102. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/bcos.py +19 -20
  103. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/came.py +29 -32
  104. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/conda.py +11 -11
  105. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/dadapt.py +78 -71
  106. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/demo.py +30 -28
  107. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/diffgrad.py +29 -24
  108. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/dual_adam.py +12 -12
  109. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/emonavi.py +49 -49
  110. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/exadam.py +10 -10
  111. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/experimental/ranger25.py +34 -47
  112. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/fadam.py +20 -14
  113. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/fira.py +14 -9
  114. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/flash_adamw.py +48 -44
  115. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/focus.py +9 -9
  116. pytorch_optimizer-4.0.0/pytorch_optimizer/optimizer/foreach_utils.py +102 -0
  117. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/fp16.py +52 -58
  118. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/fromage.py +7 -8
  119. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/ftrl.py +9 -9
  120. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/galore.py +11 -8
  121. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/galore_utils.py +14 -14
  122. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/gradient_centralization.py +4 -4
  123. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/grams.py +10 -10
  124. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/gravity.py +7 -7
  125. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/grokfast.py +78 -67
  126. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/kate.py +9 -9
  127. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/lamb.py +58 -51
  128. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/laprop.py +16 -15
  129. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/lars.py +23 -22
  130. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/lion.py +29 -29
  131. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/lomo.py +70 -38
  132. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/lookahead.py +44 -27
  133. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/lora_rite.py +27 -27
  134. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/madgrad.py +30 -28
  135. pytorch_optimizer-4.0.0/pytorch_optimizer/optimizer/magma.py +242 -0
  136. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/mars.py +32 -26
  137. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/msvag.py +10 -10
  138. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/muon.py +346 -115
  139. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/nero.py +12 -13
  140. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/novograd.py +27 -34
  141. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/orthograd.py +19 -22
  142. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/padam.py +13 -11
  143. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/pcgrad.py +25 -24
  144. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/pid.py +13 -12
  145. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/pnm.py +10 -10
  146. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/prodigy.py +19 -24
  147. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/psgd.py +69 -67
  148. pytorch_optimizer-4.0.0/pytorch_optimizer/optimizer/psgd_utils.py +108 -0
  149. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/qhadam.py +13 -17
  150. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/qhm.py +10 -10
  151. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/racs.py +55 -49
  152. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/radam.py +11 -11
  153. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/ranger.py +16 -14
  154. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/ranger21.py +61 -58
  155. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/rose.py +17 -20
  156. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/rotograd.py +40 -48
  157. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/sam.py +241 -248
  158. pytorch_optimizer-4.0.0/pytorch_optimizer/optimizer/sara.py +211 -0
  159. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/schedulefree.py +107 -66
  160. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/scion.py +132 -129
  161. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/sgd.py +127 -134
  162. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/shampoo.py +55 -51
  163. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/shampoo_utils.py +136 -138
  164. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/sm3.py +17 -12
  165. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/snsm.py +26 -23
  166. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/soap.py +25 -26
  167. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/sophia.py +26 -23
  168. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/spam.py +103 -64
  169. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/splus.py +34 -24
  170. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/srmm.py +10 -11
  171. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/sso.py +52 -68
  172. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/swats.py +13 -13
  173. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/tam.py +26 -23
  174. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/tiger.py +14 -16
  175. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/trac.py +63 -25
  176. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/utils.py +91 -77
  177. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/yogi.py +11 -11
  178. pytorch_optimizer-4.0.0/scripts/update_changelog.py +43 -0
  179. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/scripts/update_docs.py +19 -19
  180. pytorch_optimizer-4.0.0/tests/conftest.py +51 -0
  181. pytorch_optimizer-4.0.0/tests/fixtures.py +59 -0
  182. pytorch_optimizer-4.0.0/tests/optimizer_cases.py +96 -0
  183. pytorch_optimizer-4.0.0/tests/optimizers/__init__.py +1 -0
  184. pytorch_optimizer-4.0.0/tests/optimizers/test_a2grad.py +34 -0
  185. pytorch_optimizer-4.0.0/tests/optimizers/test_adabound.py +8 -0
  186. pytorch_optimizer-4.0.0/tests/optimizers/test_adafactor.py +22 -0
  187. pytorch_optimizer-4.0.0/tests/optimizers/test_adamwsn.py +12 -0
  188. pytorch_optimizer-4.0.0/tests/optimizers/test_amos.py +11 -0
  189. pytorch_optimizer-4.0.0/tests/optimizers/test_dadapt.py +34 -0
  190. pytorch_optimizer-4.0.0/tests/optimizers/test_emo.py +14 -0
  191. pytorch_optimizer-4.0.0/tests/optimizers/test_flash_adamw.py +203 -0
  192. pytorch_optimizer-4.0.0/tests/optimizers/test_fromage.py +7 -0
  193. pytorch_optimizer-4.0.0/tests/optimizers/test_galore.py +52 -0
  194. pytorch_optimizer-4.0.0/tests/optimizers/test_grokfast.py +29 -0
  195. pytorch_optimizer-4.0.0/tests/optimizers/test_hessian.py +22 -0
  196. pytorch_optimizer-4.0.0/tests/optimizers/test_kron.py +82 -0
  197. pytorch_optimizer-4.0.0/tests/optimizers/test_lomo.py +90 -0
  198. pytorch_optimizer-4.0.0/tests/optimizers/test_lora_rite.py +93 -0
  199. pytorch_optimizer-4.0.0/tests/optimizers/test_mars.py +10 -0
  200. pytorch_optimizer-4.0.0/tests/optimizers/test_muon.py +49 -0
  201. pytorch_optimizer-4.0.0/tests/optimizers/test_nero.py +39 -0
  202. pytorch_optimizer-4.0.0/tests/optimizers/test_racs.py +13 -0
  203. pytorch_optimizer-4.0.0/tests/optimizers/test_ranger21.py +35 -0
  204. pytorch_optimizer-4.0.0/tests/optimizers/test_rectified.py +20 -0
  205. pytorch_optimizer-4.0.0/tests/optimizers/test_rose.py +17 -0
  206. pytorch_optimizer-4.0.0/tests/optimizers/test_sara.py +16 -0
  207. pytorch_optimizer-4.0.0/tests/optimizers/test_schedulefree.py +13 -0
  208. pytorch_optimizer-4.0.0/tests/optimizers/test_scion.py +58 -0
  209. pytorch_optimizer-4.0.0/tests/optimizers/test_sgd.py +32 -0
  210. pytorch_optimizer-4.0.0/tests/optimizers/test_shampoo.py +147 -0
  211. pytorch_optimizer-4.0.0/tests/optimizers/test_sign_sgd.py +53 -0
  212. pytorch_optimizer-4.0.0/tests/optimizers/test_sm3.py +41 -0
  213. pytorch_optimizer-4.0.0/tests/optimizers/test_soap.py +44 -0
  214. pytorch_optimizer-4.0.0/tests/optimizers/test_spam.py +10 -0
  215. pytorch_optimizer-4.0.0/tests/optimizers/test_spectral_sphere.py +20 -0
  216. pytorch_optimizer-4.0.0/tests/optimizers/test_splus.py +10 -0
  217. pytorch_optimizer-4.0.0/tests/optimizers/test_stable_adamw.py +32 -0
  218. pytorch_optimizer-4.0.0/tests/optimizers/test_swats.py +15 -0
  219. pytorch_optimizer-4.0.0/tests/recipes.py +453 -0
  220. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/tests/test_base.py +16 -0
  221. pytorch_optimizer-4.0.0/tests/test_create_optimizer.py +108 -0
  222. pytorch_optimizer-4.0.0/tests/test_docs.py +38 -0
  223. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/tests/test_foreach_utils.py +1 -1
  224. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/tests/test_general_optimizer_parameters.py +17 -25
  225. pytorch_optimizer-4.0.0/tests/test_gradients.py +118 -0
  226. pytorch_optimizer-4.0.0/tests/test_load_modules.py +96 -0
  227. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/tests/test_loss_functions.py +121 -16
  228. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/tests/test_lr_schedulers.py +167 -47
  229. pytorch_optimizer-4.0.0/tests/test_optimizer_parameters.py +71 -0
  230. pytorch_optimizer-4.0.0/tests/test_optimizer_variants.py +184 -0
  231. pytorch_optimizer-4.0.0/tests/test_optimizers.py +216 -0
  232. pytorch_optimizer-4.0.0/tests/test_test_helpers.py +102 -0
  233. pytorch_optimizer-4.0.0/tests/test_utils.py +203 -0
  234. pytorch_optimizer-4.0.0/tests/test_wrapper_optimizers.py +686 -0
  235. pytorch_optimizer-4.0.0/tests/utils.py +232 -0
  236. pytorch_optimizer-4.0.0/uv.lock +877 -0
  237. pytorch_optimizer-4.0.0/zensical.toml +80 -0
  238. pytorch_optimizer-3.10.1/.github/workflows/ci.yml +0 -100
  239. pytorch_optimizer-3.10.1/.github/workflows/copy_readme.yml +0 -25
  240. pytorch_optimizer-3.10.1/.github/workflows/publish.yml +0 -110
  241. pytorch_optimizer-3.10.1/CLAUDE.md +0 -136
  242. pytorch_optimizer-3.10.1/CONTRIBUTING.md +0 -91
  243. pytorch_optimizer-3.10.1/Makefile +0 -34
  244. pytorch_optimizer-3.10.1/docs/.nav.yml +0 -22
  245. pytorch_optimizer-3.10.1/docs/.readthedocs.yaml +0 -14
  246. pytorch_optimizer-3.10.1/docs/changelogs/v2.11.0.md +0 -21
  247. pytorch_optimizer-3.10.1/docs/changelogs/v2.11.1.md +0 -16
  248. pytorch_optimizer-3.10.1/docs/changelogs/v2.8.0.md +0 -37
  249. pytorch_optimizer-3.10.1/docs/changelogs/v3.0.1.md +0 -21
  250. pytorch_optimizer-3.10.1/docs/changelogs/v3.0.2.md +0 -21
  251. pytorch_optimizer-3.10.1/docs/changelogs/v3.10.0.md +0 -37
  252. pytorch_optimizer-3.10.1/docs/changelogs/v3.10.1.md +0 -16
  253. pytorch_optimizer-3.10.1/docs/index.md +0 -366
  254. pytorch_optimizer-3.10.1/docs/qa.md +0 -13
  255. pytorch_optimizer-3.10.1/mkdocs.yml +0 -86
  256. pytorch_optimizer-3.10.1/pytorch_optimizer/__init__.py +0 -200
  257. pytorch_optimizer-3.10.1/pytorch_optimizer/base/type.py +0 -35
  258. pytorch_optimizer-3.10.1/pytorch_optimizer/loss/cross_entropy.py +0 -26
  259. pytorch_optimizer-3.10.1/pytorch_optimizer/loss/focal.py +0 -124
  260. pytorch_optimizer-3.10.1/pytorch_optimizer/loss/ldam.py +0 -41
  261. pytorch_optimizer-3.10.1/pytorch_optimizer/loss/tversky.py +0 -33
  262. pytorch_optimizer-3.10.1/pytorch_optimizer/lr_scheduler/linear_warmup.py +0 -42
  263. pytorch_optimizer-3.10.1/pytorch_optimizer/optimizer/foreach_utils.py +0 -113
  264. pytorch_optimizer-3.10.1/pytorch_optimizer/optimizer/psgd_utils.py +0 -96
  265. pytorch_optimizer-3.10.1/requirements-docs.txt +0 -12
  266. pytorch_optimizer-3.10.1/tests/conftest.py +0 -39
  267. pytorch_optimizer-3.10.1/tests/constants.py +0 -1026
  268. pytorch_optimizer-3.10.1/tests/test_create_optimizer.py +0 -65
  269. pytorch_optimizer-3.10.1/tests/test_gradients.py +0 -246
  270. pytorch_optimizer-3.10.1/tests/test_load_modules.py +0 -49
  271. pytorch_optimizer-3.10.1/tests/test_optimizer_parameters.py +0 -340
  272. pytorch_optimizer-3.10.1/tests/test_optimizer_variants.py +0 -82
  273. pytorch_optimizer-3.10.1/tests/test_optimizers.py +0 -894
  274. pytorch_optimizer-3.10.1/tests/test_utils.py +0 -435
  275. pytorch_optimizer-3.10.1/tests/test_wrapper_optimizers.py +0 -276
  276. pytorch_optimizer-3.10.1/tests/utils.py +0 -364
  277. pytorch_optimizer-3.10.1/uv.lock +0 -1911
  278. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/.gitattributes +0 -0
  279. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/.github/CODEOWNERS +0 -0
  280. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  281. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/.github/labels.yml +0 -0
  282. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/.gitignore +0 -0
  283. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/CITATION.cff +0 -0
  284. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/CODE_OF_CONDUCT.md +0 -0
  285. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/LICENSE +0 -0
  286. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/SECURITY.md +0 -0
  287. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/benchmark.md +0 -0
  288. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/changelogs/v2.12.0.md +0 -0
  289. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/changelogs/v2.9.1.md +0 -0
  290. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/changelogs/v3.1.0.md +0 -0
  291. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/changelogs/v3.1.1.md +0 -0
  292. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/changelogs/v3.1.2.md +0 -0
  293. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/changelogs/v3.2.0.md +0 -0
  294. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/changelogs/v3.3.0.md +0 -0
  295. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/changelogs/v3.3.1.md +0 -0
  296. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/changelogs/v3.3.2.md +0 -0
  297. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/changelogs/v3.3.3.md +0 -0
  298. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/changelogs/v3.3.4.md +0 -0
  299. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/changelogs/v3.4.1.md +0 -0
  300. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/changelogs/v3.4.2.md +0 -0
  301. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/changelogs/v3.5.0.md +0 -0
  302. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/changelogs/v3.5.1.md +0 -0
  303. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/changelogs/v3.6.0.md +0 -0
  304. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/changelogs/v3.6.1.md +0 -0
  305. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/changelogs/v3.7.0.md +0 -0
  306. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/changelogs/v3.7.1.md +0 -0
  307. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/changelogs/v3.8.0.md +0 -0
  308. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/changelogs/v3.8.1.md +0 -0
  309. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/changelogs/v3.8.2.md +0 -0
  310. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/changelogs/v3.9.0.md +0 -0
  311. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/loss.md +0 -0
  312. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/lr_scheduler.md +0 -0
  313. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualization.md +0 -0
  314. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_ADOPT.jpg +0 -0
  315. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_APOLLO.jpg +0 -0
  316. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_ASGD.jpg +0 -0
  317. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_AccSGD.jpg +0 -0
  318. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_AdEMAMix.jpg +0 -0
  319. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_AdaBelief.jpg +0 -0
  320. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_AdaBound.jpg +0 -0
  321. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_AdaDelta.jpg +0 -0
  322. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_AdaFactor.jpg +0 -0
  323. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_AdaGC.jpg +0 -0
  324. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_AdaHessian.jpg +0 -0
  325. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_AdaMax.jpg +0 -0
  326. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_AdaMod.jpg +0 -0
  327. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_AdaNorm.jpg +0 -0
  328. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_AdaPNM.jpg +0 -0
  329. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_AdaShift.jpg +0 -0
  330. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_AdaSmooth.jpg +0 -0
  331. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_AdaTAM.jpg +0 -0
  332. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_Adai.jpg +0 -0
  333. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_Adalite.jpg +0 -0
  334. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_Adam.jpg +0 -0
  335. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_AdamG.jpg +0 -0
  336. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_AdamMini.jpg +0 -0
  337. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_AdamP.jpg +0 -0
  338. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_AdamS.jpg +0 -0
  339. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_AdamW.jpg +0 -0
  340. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_Adan.jpg +0 -0
  341. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_AggMo.jpg +0 -0
  342. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_Aida.jpg +0 -0
  343. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_AliG.jpg +0 -0
  344. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_Amos.jpg +0 -0
  345. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_ApolloDQN.jpg +0 -0
  346. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_AvaGrad.jpg +0 -0
  347. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_BCOS.jpg +0 -0
  348. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_BSAM.jpg +0 -0
  349. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_CAME.jpg +0 -0
  350. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_DAdaptAdaGrad.jpg +0 -0
  351. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_DAdaptAdam.jpg +0 -0
  352. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_DAdaptAdan.jpg +0 -0
  353. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_DAdaptLion.jpg +0 -0
  354. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_DAdaptSGD.jpg +0 -0
  355. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_DiffGrad.jpg +0 -0
  356. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_EXAdam.jpg +0 -0
  357. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_EmoFact.jpg +0 -0
  358. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_EmoLynx.jpg +0 -0
  359. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_EmoNavi.jpg +0 -0
  360. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_FAdam.jpg +0 -0
  361. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_FOCUS.jpg +0 -0
  362. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_FTRL.jpg +0 -0
  363. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_Fira.jpg +0 -0
  364. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_Fromage.jpg +0 -0
  365. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_GaLore.jpg +0 -0
  366. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_Grams.jpg +0 -0
  367. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_Gravity.jpg +0 -0
  368. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_GrokFastAdamW.jpg +0 -0
  369. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_Kate.jpg +0 -0
  370. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_Kron.jpg +0 -0
  371. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_LARS.jpg +0 -0
  372. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_LaProp.jpg +0 -0
  373. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_Lamb.jpg +0 -0
  374. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_Lion.jpg +0 -0
  375. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_MADGRAD.jpg +0 -0
  376. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_MARS.jpg +0 -0
  377. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_MSVAG.jpg +0 -0
  378. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_NAdam.jpg +0 -0
  379. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_Nero.jpg +0 -0
  380. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_NovoGrad.jpg +0 -0
  381. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_PAdam.jpg +0 -0
  382. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_PID.jpg +0 -0
  383. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_PNM.jpg +0 -0
  384. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_Prodigy.jpg +0 -0
  385. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_QHAdam.jpg +0 -0
  386. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_QHM.jpg +0 -0
  387. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_RACS.jpg +0 -0
  388. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_RAdam.jpg +0 -0
  389. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_RMSprop.jpg +0 -0
  390. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_Ranger.jpg +0 -0
  391. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_Ranger21.jpg +0 -0
  392. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_Ranger25.jpg +0 -0
  393. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_SCION.jpg +0 -0
  394. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_SCIONLight.jpg +0 -0
  395. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_SGD.jpg +0 -0
  396. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_SGDP.jpg +0 -0
  397. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_SGDSaI.jpg +0 -0
  398. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_SGDW.jpg +0 -0
  399. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_SM3.jpg +0 -0
  400. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_SOAP.jpg +0 -0
  401. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_SPAM.jpg +0 -0
  402. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_SRMM.jpg +0 -0
  403. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_SWATS.jpg +0 -0
  404. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_ScalableShampoo.jpg +0 -0
  405. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_ScheduleFreeAdamW.jpg +0 -0
  406. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_ScheduleFreeRAdam.jpg +0 -0
  407. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_ScheduleFreeSGD.jpg +0 -0
  408. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_Shampoo.jpg +0 -0
  409. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_SignSGD.jpg +0 -0
  410. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_SimplifiedAdEMAMix.jpg +0 -0
  411. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_SophiaH.jpg +0 -0
  412. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_StableAdamW.jpg +0 -0
  413. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_StableSPAM.jpg +0 -0
  414. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_TAM.jpg +0 -0
  415. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_Tiger.jpg +0 -0
  416. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_VSGD.jpg +0 -0
  417. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rastrigin_Yogi.jpg +0 -0
  418. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_ADOPT.jpg +0 -0
  419. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_APOLLO.jpg +0 -0
  420. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_ASGD.jpg +0 -0
  421. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_AccSGD.jpg +0 -0
  422. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_AdEMAMix.jpg +0 -0
  423. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_AdaBelief.jpg +0 -0
  424. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_AdaBound.jpg +0 -0
  425. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_AdaDelta.jpg +0 -0
  426. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_AdaFactor.jpg +0 -0
  427. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_AdaGC.jpg +0 -0
  428. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_AdaHessian.jpg +0 -0
  429. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_AdaMax.jpg +0 -0
  430. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_AdaMod.jpg +0 -0
  431. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_AdaNorm.jpg +0 -0
  432. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_AdaPNM.jpg +0 -0
  433. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_AdaShift.jpg +0 -0
  434. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_AdaSmooth.jpg +0 -0
  435. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_AdaTAM.jpg +0 -0
  436. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_Adai.jpg +0 -0
  437. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_Adalite.jpg +0 -0
  438. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_Adam.jpg +0 -0
  439. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_AdamG.jpg +0 -0
  440. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_AdamMini.jpg +0 -0
  441. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_AdamP.jpg +0 -0
  442. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_AdamS.jpg +0 -0
  443. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_AdamW.jpg +0 -0
  444. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_Adan.jpg +0 -0
  445. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_AggMo.jpg +0 -0
  446. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_Aida.jpg +0 -0
  447. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_AliG.jpg +0 -0
  448. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_Amos.jpg +0 -0
  449. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_ApolloDQN.jpg +0 -0
  450. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_AvaGrad.jpg +0 -0
  451. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_BCOS.jpg +0 -0
  452. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_BSAM.jpg +0 -0
  453. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_CAME.jpg +0 -0
  454. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_DAdaptAdaGrad.jpg +0 -0
  455. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_DAdaptAdam.jpg +0 -0
  456. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_DAdaptAdan.jpg +0 -0
  457. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_DAdaptLion.jpg +0 -0
  458. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_DAdaptSGD.jpg +0 -0
  459. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_DiffGrad.jpg +0 -0
  460. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_EXAdam.jpg +0 -0
  461. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_EmoFact.jpg +0 -0
  462. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_EmoLynx.jpg +0 -0
  463. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_EmoNavi.jpg +0 -0
  464. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_FAdam.jpg +0 -0
  465. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_FOCUS.jpg +0 -0
  466. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_FTRL.jpg +0 -0
  467. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_Fira.jpg +0 -0
  468. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_Fromage.jpg +0 -0
  469. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_GaLore.jpg +0 -0
  470. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_Grams.jpg +0 -0
  471. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_Gravity.jpg +0 -0
  472. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_GrokFastAdamW.jpg +0 -0
  473. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_Kate.jpg +0 -0
  474. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_Kron.jpg +0 -0
  475. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_LARS.jpg +0 -0
  476. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_LaProp.jpg +0 -0
  477. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_Lamb.jpg +0 -0
  478. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_Lion.jpg +0 -0
  479. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_MADGRAD.jpg +0 -0
  480. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_MARS.jpg +0 -0
  481. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_MSVAG.jpg +0 -0
  482. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_NAdam.jpg +0 -0
  483. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_Nero.jpg +0 -0
  484. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_NovoGrad.jpg +0 -0
  485. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_PAdam.jpg +0 -0
  486. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_PID.jpg +0 -0
  487. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_PNM.jpg +0 -0
  488. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_Prodigy.jpg +0 -0
  489. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_QHAdam.jpg +0 -0
  490. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_QHM.jpg +0 -0
  491. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_RACS.jpg +0 -0
  492. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_RAdam.jpg +0 -0
  493. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_RMSprop.jpg +0 -0
  494. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_Ranger.jpg +0 -0
  495. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_Ranger21.jpg +0 -0
  496. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_Ranger25.jpg +0 -0
  497. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_SCION.jpg +0 -0
  498. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_SCIONLight.jpg +0 -0
  499. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_SGD.jpg +0 -0
  500. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_SGDP.jpg +0 -0
  501. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_SGDSaI.jpg +0 -0
  502. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_SGDW.jpg +0 -0
  503. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_SM3.jpg +0 -0
  504. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_SOAP.jpg +0 -0
  505. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_SPAM.jpg +0 -0
  506. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_SRMM.jpg +0 -0
  507. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_SWATS.jpg +0 -0
  508. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_ScalableShampoo.jpg +0 -0
  509. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_ScheduleFreeAdamW.jpg +0 -0
  510. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_ScheduleFreeRAdam.jpg +0 -0
  511. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_ScheduleFreeSGD.jpg +0 -0
  512. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_Shampoo.jpg +0 -0
  513. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_SignSGD.jpg +0 -0
  514. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_SimplifiedAdEMAMix.jpg +0 -0
  515. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_SophiaH.jpg +0 -0
  516. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_StableAdamW.jpg +0 -0
  517. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_StableSPAM.jpg +0 -0
  518. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_TAM.jpg +0 -0
  519. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_Tiger.jpg +0 -0
  520. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_VSGD.jpg +0 -0
  521. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/docs/visualizations/rosenbrock_Yogi.jpg +0 -0
  522. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/examples/__init__.py +0 -0
  523. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/examples/pytorch_lightning_example.py +0 -0
  524. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/examples/pytorch_lightning_manual_backward_example.py +0 -0
  525. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/hubconf.py +0 -0
  526. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/base/__init__.py +0 -0
  527. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/lr_scheduler/experimental/__init__.py +0 -0
  528. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/optimizer/experimental/__init__.py +0 -0
  529. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/pytorch_optimizer/py.typed +0 -0
  530. {pytorch_optimizer-3.10.1 → pytorch_optimizer-4.0.0}/tests/__init__.py +0 -0
@@ -14,8 +14,8 @@ A clear and concise description of what the bug is.
14
14
  ## To Reproduce
15
15
 
16
16
  * OS : (e.g. Linux, Windows, MacOS)
17
- * PyTorch version : (e.g. 2.0.1, 1.13, >=1.8, <1.10)
18
- * Python version : (e.g. 3.8, 3.11)
17
+ * PyTorch version : (e.g. 2.1.0, 2.13.0)
18
+ * Python version : (e.g. 3.10, 3.12)
19
19
  * pytorch-optimizer version : (e.g. 3.3.0)
20
20
  * reproducible codes : please share your reproducible codes, scripts, or links. If sharing the code is complicated, you can manually write minimal code to reproduce bugs!
21
21
 
@@ -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 `make format` before commit
20
- - [ ] My code adheres to the style guidelines of this project (`make check` shows no errors)
21
- - [ ] Both new and existing unit tests pass successfully on my local environment by running `make test`
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_dispatch:
9
+ workflow_call:
10
+ inputs:
11
+ ref:
12
+ description: Commit to validate
13
+ type: string
14
+ required: false
15
+ default: ''
16
+ skip_coverage_upload:
17
+ description: Skip coverage uploads during release validation
18
+ type: boolean
19
+ required: false
20
+ default: false
21
+
22
+ env:
23
+ OMP_NUM_THREADS: 8
24
+ MKL_NUM_THREADS: 8
25
+ PYTHONDONTWRITEBYTECODE: 1
26
+
27
+ jobs:
28
+ lint:
29
+ name: Lint
30
+ runs-on: ubuntu-latest
31
+ steps:
32
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
33
+ with:
34
+ ref: ${{ inputs.ref || github.sha }}
35
+
36
+ - name: Setup uv
37
+ uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
38
+ with:
39
+ python-version: 3.12
40
+ enable-cache: true
41
+ prune-cache: false
42
+
43
+ - name: Install dependencies
44
+ run: uv sync --frozen --no-editable
45
+
46
+ - name: Run lint
47
+ run: |
48
+ uv run ruff check pytorch_optimizer examples tests scripts hubconf.py
49
+
50
+ type_check:
51
+ name: Static Type Check
52
+ runs-on: ubuntu-latest
53
+ steps:
54
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
55
+ with:
56
+ ref: ${{ inputs.ref || github.sha }}
57
+
58
+ - name: Setup uv
59
+ uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
60
+ with:
61
+ python-version: 3.12
62
+ enable-cache: true
63
+ prune-cache: false
64
+
65
+ - name: Install dependencies
66
+ run: uv sync --frozen --no-editable
67
+
68
+ - name: Run type check
69
+ run: uv run --frozen ty check
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.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"
@@ -5,7 +5,9 @@ on:
5
5
  types:
6
6
  - opened
7
7
  - synchronize
8
- check_suite:
8
+ - labeled
9
+ workflow_run:
10
+ workflows: [CI]
9
11
  types:
10
12
  - completed
11
13
 
@@ -19,13 +21,15 @@ jobs:
19
21
 
20
22
  steps:
21
23
  - id: automerge
22
- if: ${{ contains(github.event.pull_request.labels.*.name, 'automerge') }}
24
+ if: >-
25
+ contains(github.event.pull_request.labels.*.name, 'automerge') ||
26
+ (github.event_name == 'workflow_run' && github.event.workflow_run.conclusion == 'success')
23
27
  name: automerge
24
- uses: pascalgn/automerge-action@v0.16.4
28
+ uses: pascalgn/automerge-action@7961b8b5eec56cc088c140b56d864285eabd3f67 # v0.16.4
25
29
  env:
26
30
  MERGE_LABELS: "automerge"
27
31
  MERGE_METHOD_LABEL_REQUIRED: "false"
28
- GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
32
+ GITHUB_TOKEN: ${{ github.token }}
29
33
  MERGE_METHOD: "squash"
30
34
  MERGE_REQUIRED_APPROVALS: "0"
31
35
  MERGE_DELETE_BRANCH: "true"
@@ -35,14 +35,14 @@ jobs:
35
35
 
36
36
  steps:
37
37
  - name: Checkout repository
38
- uses: actions/checkout@v5
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@v5
20
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
21
21
 
22
- - uses: actions/labeler@v5
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,231 @@
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 Release
46
+ needs: validate
47
+ runs-on: ubuntu-latest
48
+ permissions:
49
+ contents: write
50
+ pull-requests: write
51
+ outputs:
52
+ tag: ${{ steps.version.outputs.tag }}
53
+ ref: ${{ steps.commit.outputs.ref }}
54
+ notes: ${{ steps.notes.outputs.body }}
55
+ steps:
56
+ - name: Checkout release ref
57
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
58
+ with:
59
+ ref: ${{ github.sha }}
60
+ fetch-depth: 0
61
+ token: ${{ github.token }}
62
+
63
+ - name: Setup uv
64
+ uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
65
+ with:
66
+ python-version: '3.12'
67
+
68
+ - name: Validate and bump package version
69
+ id: version
70
+ env:
71
+ BUMP: ${{ inputs.bump }}
72
+ run: |
73
+ uv lock --check
74
+ current="$(uv version --short)"
75
+ if [[ ! "$current" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
76
+ echo 'Package version must have the form MAJOR.MINOR.PATCH' >&2
77
+ exit 1
78
+ fi
79
+
80
+ if [[ "$GITHUB_EVENT_NAME" == 'workflow_dispatch' ]]; then
81
+ version="$(uv version --bump "$BUMP" --no-sync --short)"
82
+ tag="v$version"
83
+ if git rev-parse --verify --quiet "refs/tags/$tag"; then
84
+ echo "Tag $tag already exists" >&2
85
+ exit 1
86
+ fi
87
+ else
88
+ tag="$GITHUB_REF_NAME"
89
+ if [[ "$tag" != "v$current" ]]; then
90
+ echo "Tag $tag does not match package version $current" >&2
91
+ exit 1
92
+ fi
93
+ fi
94
+ echo "tag=$tag" >> "$GITHUB_OUTPUT"
95
+
96
+ - name: Generate release notes and update changelogs
97
+ id: notes
98
+ env:
99
+ GH_TOKEN: ${{ github.token }}
100
+ GH_REPO: ${{ github.repository }}
101
+ RELEASE_TAG: ${{ steps.version.outputs.tag }}
102
+ run: |
103
+ gh api --method POST "repos/$GH_REPO/releases/generate-notes" \
104
+ -f tag_name="$RELEASE_TAG" -f target_commitish="$GITHUB_SHA" \
105
+ --jq .body > "$RUNNER_TEMP/release-notes.md"
106
+ uv run --no-project python scripts/update_changelog.py "$RELEASE_TAG" "$RUNNER_TEMP/release-notes.md"
107
+
108
+ delimiter="release_notes_${RANDOM}_${RANDOM}_${RANDOM}"
109
+ {
110
+ echo "body<<$delimiter"
111
+ cat "$RUNNER_TEMP/release-notes.md"
112
+ echo "$delimiter"
113
+ } >> "$GITHUB_OUTPUT"
114
+
115
+ - name: Create release preparation pull request
116
+ id: release_pr
117
+ uses: peter-evans/create-pull-request@5f6978faf089d4d20b00c7766989d076bb2fc7f1 # v8.1.1
118
+ with:
119
+ branch: release/prepare-${{ steps.version.outputs.tag }}
120
+ commit-message: 'build: prepare release ${{ steps.version.outputs.tag }}'
121
+ title: 'build: prepare release ${{ steps.version.outputs.tag }}'
122
+ body: >-
123
+ Prepare the package version, lockfile, and generated changelogs for ${{ steps.version.outputs.tag }}.
124
+ This pull request must merge before package publishing and GitHub release creation.
125
+ base: main
126
+ add-paths: |
127
+ pyproject.toml
128
+ uv.lock
129
+ CHANGELOG.md
130
+ docs/changelogs/${{ steps.version.outputs.tag }}.md
131
+ docs/changelogs/index.md
132
+ delete-branch: true
133
+ token: ${{ github.token }}
134
+
135
+ - name: Merge release preparation pull request and resolve release commit
136
+ id: commit
137
+ env:
138
+ GH_TOKEN: ${{ github.token }}
139
+ GH_REPO: ${{ github.repository }}
140
+ PR_NUMBER: ${{ steps.release_pr.outputs.pull-request-number }}
141
+ PR_HEAD_SHA: ${{ steps.release_pr.outputs.pull-request-head-sha }}
142
+ run: |
143
+ if [[ -z "$PR_NUMBER" || -z "$PR_HEAD_SHA" ]]; then
144
+ echo 'No release preparation pull request was created' >&2
145
+ exit 1
146
+ fi
147
+ for attempt in {1..10}; do
148
+ mergeable="$(gh pr view "$PR_NUMBER" --json mergeable --jq .mergeable)"
149
+ if [[ "$mergeable" != 'UNKNOWN' ]]; then
150
+ break
151
+ fi
152
+ sleep 3
153
+ done
154
+ if [[ "$mergeable" == 'UNKNOWN' ]]; then
155
+ echo 'GitHub has not finished calculating PR mergeability' >&2
156
+ exit 1
157
+ fi
158
+ gh pr merge "$PR_NUMBER" --squash --delete-branch --match-head-commit "$PR_HEAD_SHA"
159
+ merged_ref="$(gh pr view "$PR_NUMBER" --json state,mergeCommit \
160
+ --jq 'if .state == "MERGED" then .mergeCommit.oid else empty end')"
161
+ if [[ -z "$merged_ref" ]]; then
162
+ echo 'The release preparation pull request must be merged before publishing' >&2
163
+ exit 1
164
+ fi
165
+ if [[ "$GITHUB_EVENT_NAME" == 'workflow_dispatch' ]]; then
166
+ ref="$merged_ref"
167
+ else
168
+ ref="$GITHUB_SHA"
169
+ fi
170
+ echo "ref=$ref" >> "$GITHUB_OUTPUT"
171
+
172
+ deploy:
173
+ name: Publish Package
174
+ needs: prepare
175
+ runs-on: ubuntu-latest
176
+ permissions:
177
+ contents: write
178
+ id-token: write
179
+ steps:
180
+ - name: Checkout release commit
181
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
182
+ with:
183
+ ref: ${{ needs.prepare.outputs.ref }}
184
+ fetch-depth: 0
185
+
186
+ - name: Setup uv
187
+ uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
188
+ with:
189
+ python-version: '3.12'
190
+
191
+ - name: Build package
192
+ run: uv build
193
+
194
+ - name: Create and push release tag
195
+ if: github.event_name == 'workflow_dispatch'
196
+ env:
197
+ RELEASE_TAG: ${{ needs.prepare.outputs.tag }}
198
+ RELEASE_REF: ${{ needs.prepare.outputs.ref }}
199
+ run: |
200
+ if git rev-parse --verify --quiet "refs/tags/$RELEASE_TAG"; then
201
+ if [[ "$(git rev-list -n 1 "$RELEASE_TAG")" != "$RELEASE_REF" ]]; then
202
+ echo "Tag $RELEASE_TAG points to a different commit" >&2
203
+ exit 1
204
+ fi
205
+ else
206
+ git config user.name 'github-actions[bot]'
207
+ git config user.email '41898282+github-actions[bot]@users.noreply.github.com'
208
+ git tag -a "$RELEASE_TAG" -m "pytorch-optimizer $RELEASE_TAG"
209
+ git push origin "refs/tags/$RELEASE_TAG"
210
+ fi
211
+
212
+ - name: Publish package to PyPI
213
+ run: uv publish --trusted-publishing always --check-url https://pypi.org/simple
214
+
215
+ release:
216
+ name: Create Release
217
+ runs-on: ubuntu-latest
218
+ needs: [prepare, deploy]
219
+ permissions:
220
+ contents: write
221
+ steps:
222
+ - name: Create release with the prepared notes
223
+ uses: softprops/action-gh-release@efb35369e0ad2afab669f228072c1b0d510eae64 # v3.0.3
224
+ with:
225
+ body: ${{ needs.prepare.outputs.notes }}
226
+ draft: false
227
+ prerelease: false
228
+ name: pytorch-optimizer ${{ needs.prepare.outputs.tag }}
229
+ tag_name: ${{ needs.prepare.outputs.tag }}
230
+ target_commitish: ${{ needs.prepare.outputs.ref }}
231
+ token: ${{ github.token }}
@@ -12,10 +12,10 @@ jobs:
12
12
  update-docs:
13
13
  runs-on: ubuntu-latest
14
14
  steps:
15
- - uses: actions/checkout@v5
15
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
16
16
 
17
17
  - name: Set up Python 3.12
18
- uses: actions/setup-python@v5
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@v6
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,110 @@
1
+ # Agent Instructions
2
+
3
+ ## Development workflow
4
+
5
+ - Use `uv` for dependency resolution and execution. Prefer `uv run just <recipe>` to 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
+ - Cover new and changed implementation code at 100%. Check coverage with `uv run coverage report -m`.
12
+ - Use `uv run coverage report -m` to find uncovered lines, then add focused cases in the appropriate test module.
13
+ - Run focused optimizer tests with `uv run pytest tests/optimizers/test_muon.py -sv -vv`.
14
+ - Select a training recipe with `uv run pytest tests/test_optimizers.py::TestOptimizerTraining -k adammini -sv -vv`.
15
+ - Use `uv run just docs` to serve the Zensical documentation. Build it with strict validation using
16
+ `uv run just docs-build`.
17
+ - Run `uv run just update-docs` after changing public exports to regenerate the API reference.
18
+
19
+ ## Architecture
20
+
21
+ - `pytorch_optimizer/base/` contains `BaseOptimizer`, scheduler bases, shared types, and exceptions.
22
+ - `pytorch_optimizer/optimizer/` contains optimizers, wrappers, and shared gradient and update utilities.
23
+ - Put schedulers in `pytorch_optimizer/lr_scheduler/` and loss functions in `pytorch_optimizer/loss/`.
24
+ - Export public components from `pytorch_optimizer/__init__.py`. Use `load_optimizer()` to load a class by name and
25
+ `create_optimizer()` to configure an optimizer with common options and wrappers.
26
+ - Optional integrations include `bitsandbytes`, `q-galore-torch`, and `torchao`.
27
+ - `tests/test_optimizers.py` runs shared training and interface tests using `OPTIMIZER_RECIPES` from
28
+ `tests/recipes.py`. Focused optimizer and algorithm-helper cases live in `tests/optimizers/test_<module>.py`.
29
+ Parameter validation, variants, wrappers, losses, and schedulers have separate shared test modules.
30
+ - `tests/fixtures.py` owns the shared training model and parameter builders. `tests/utils.py` supplies optimizer
31
+ construction and training helpers; `tests/conftest.py` supplies pytest fixtures, including training data.
32
+ - `tests/optimizer_cases.py` derives constructor options and model-based APIs from signatures, and sparse/complex
33
+ support from cached CPU step probes. Explicit exclusions cover specialized protocols and numerical limitations.
34
+ - `zensical.toml` owns documentation navigation and theme settings. Keep the home page separate from `README.md`.
35
+
36
+ ## Code style
37
+
38
+ - Follow nearby repository code and tests before introducing new patterns.
39
+ - Add comments only when code is difficult to understand; avoid redundant, meaningless, or excessive comments.
40
+ - Use blank lines to separate logical steps and improve readability.
41
+ - Do not add introductory comments or docstrings to scripts.
42
+ - Use a maximum line length of 119 characters and single-quoted strings.
43
+ - Use the repository's existing typing style. Do not add `from __future__ import annotations` or `TYPE_CHECKING`
44
+ imports unless the surrounding code requires them.
45
+ - Optimizers inherit from `BaseOptimizer`, implement `init_group()` and `step()`, and reuse its validation and update
46
+ helpers where applicable.
47
+ - All optimizer implementations must follow the algorithms and update rules in their original papers.
48
+ - Follow Google-style docstrings. Reuse helpers such as `apply_weight_decay()`, `apply_cautious()`, `debias()`,
49
+ `validate_learning_rate()`, `validate_betas()`, and `validate_range()` before adding update or validation logic.
50
+ - Keep implementations focused; remove redundant compatibility layers and abstractions.
51
+
52
+ ## Testing
53
+
54
+ - For optimizer changes, add or update minimal recipes in `OPTIMIZER_RECIPES`, including affected variants. Each
55
+ recipe contains an optimizer name, options, and an iteration count. Use the shared runner for model-based
56
+ optimizers when their update protocol fits; avoid separate training or smoke tests that a recipe can replace.
57
+ - Add focused cases for behavior the training recipes do not verify, such as numerical updates, checkpoint
58
+ restoration, validation, wrappers, and edge cases. Follow nearby patterns and preserve 100% implementation coverage.
59
+ - Give focused cases an observable assertion. Compare numerical results with `torch.testing.assert_close()` and
60
+ check expected exceptions with `pytest.raises()`. Use stable inputs and a trusted reference for iterative algorithms.
61
+ - Reuse `TrainingModel`, `build_model()`, and parameter builders from `tests/fixtures.py`. Use a parameter when a test
62
+ only calls optimizer methods, and create additional shapes or model features only when the behavior requires them.
63
+ - Use `tests.utils.build_optimizer()` for ordinary optimizer setup. Use `load_optimizer()` for constructor
64
+ validation or APIs that accept an optimizer class, and `create_optimizer()` when testing that public factory.
65
+ - Use pytest classes to group related behavior where useful. Parametrize only applicable combinations and run
66
+ shared interface checks once per optimizer rather than once per recipe.
67
+ - Reuse capability detection from `tests/optimizer_cases.py` instead of maintaining optimizer name lists. Keep
68
+ protocol-specific exclusions explicit; probes must preserve random state and propagate unexpected failures.
69
+ - Keep variant, scheduler, and loss case data beside their tests. Copy recipe options before attaching callbacks or
70
+ parameter groups, and avoid retaining model instances or optimizer state in shared case data.
71
+ - Keep tensors and training iteration counts small while retaining meaningful assertions. Remove redundant cases
72
+ without losing behavior checks or coverage, and avoid session-wide performance overrides.
73
+
74
+ ## Adding an optimizer
75
+
76
+ - Add the implementation under `pytorch_optimizer/optimizer/`.
77
+ - Export it from the optimizer package and register it in `OPTIMIZER_LIST` so it is available through `OPTIMIZERS`
78
+ and `load_optimizer()`.
79
+ - Add a training recipe and focused cases following the testing guidance above.
80
+ - Update the relevant documentation and algorithm table in `README.md`.
81
+ - Write clear PR titles and descriptions; the release workflow generates notes from merged PRs and syncs them to
82
+ `CHANGELOG.md`, `docs/changelogs/<tag>.md`, and the changelog index through an automated PR.
83
+ - Register new loss functions and schedulers in their package exports and add them to the corresponding tests and
84
+ README tables.
85
+ - Leave the root `CHANGELOG.md` to the release automation.
86
+
87
+ ## Commits and pull requests
88
+
89
+ Start commit subjects with one of these prefixes:
90
+
91
+ | Prefix | Use for |
92
+ | --- | --- |
93
+ | `feat:` | Add a feature or public API. |
94
+ | `fix:` | Correct a bug or unintended behavior. |
95
+ | `perf:` | Improve execution speed or resource use. |
96
+ | `style:` | Change code formatting without changing behavior. |
97
+ | `refactor:` | Restructure code without changing public behavior. |
98
+ | `docs:` | Add, revise, or reorganize documentation. |
99
+ | `chore:` | Maintain development tools, automation, or repository housekeeping. |
100
+ | `build:` | Change build, packaging, or dependency configuration. |
101
+ | `update:` | Refresh project content or metadata when no more specific prefix applies. |
102
+
103
+ Keep the text after the prefix imperative, concise, and specific to the committed change.
104
+ Do not use commit prefixes outside this list.
105
+
106
+ - Write concise, specific PR titles that describe the actual change. Use a title tag only when it adds useful context
107
+ and accurately matches the work; do not derive it mechanically from the commit prefix.
108
+ - Feature PR titles follow the existing format, such as `[Feature] Implement Magma optimizer`.
109
+ - Keep commits focused and verify the branch and working tree before pushing. Use `--force-with-lease` when you need
110
+ to rewrite a pushed branch.