There's a particular parameter (epsilon) in Adam which is typically set to a bad default which causes instability when the gradient gets sufficiently small. It is far easier to set epsilon to 0.001 or so than muck around with learning rate schedules...
Here's another person in stack exchange who figured this out: https://stackoverflow.com/a/44844544
Pytorch and TG both use a default 1e-8.