(rontolisp) docs
← Functions

torch:adamw

(torch:adamw params &key lr betas eps weight-decay)

Returns an AdamW optimizer (PyTorch's torch.optim.AdamW) over params, a module or a list of parameter tensors. torch:adam's rule with DECOUPLED weight decay: the parameter shrinks on its own before the Adam step, instead of the decay entering the gradient and being rescaled by the adaptive denominator. Per element, torch:step computes

param <- param - lr * weight-decay * param
m <- beta1 * m + (1 - beta1) * grad
v <- beta2 * v + (1 - beta2) * grad^2
param <- param - lr * (m / (1 - beta1^t)) / (sqrt(v / (1 - beta2^t)) + eps)

:lr defaults to 0.001, :betas to (0.9 0.999), :eps to 1.0e-8 and :weight-decay to 0.01 -- PyTorch's default, against torch:adam's 0.

This is the rule a transformer is trained with, and a parameter that must NOT decay (a bias, a LayerNorm gain, an embedding table) belongs in a SECOND optimizer built with :weight-decay 0.0: two optimizers over disjoint parameter lists are what torch.optim's parameter GROUPS express here.