Optimal Linear Decay Learning Rate Schedules and Further Refinements

Aaron Defazio, Ashok Cutkosky, Harsh Mehta, Konstantin Mishchenko
10/11/2023
cs.LGcs.AIstat.ML

Official code: facebookresearch/adaptive_scheduling (22 stars, last commit 2023-10-18).

Abstract

Learning rate schedules used in practice bear little resemblance to those recommended by theory. We close much of this theory/practice gap, and as a consequence are able to derive new problem-adaptive learning rate schedules. Our main technical contribution is a refined analysis of learning rate schedules for a wide class of optimization algorithms (including SGD). When considering only worst-case analysis, our theory predicts that the optimal choice is the linear decay schedule where the step-size is set proportional to 1 - t/T, where t is the current iteration and T is the total number of steps. To go beyond this worst-case analysis, we use the observed gradient norms to derive schedules refined for any particular task. These refined schedules exhibit learning rate warm-up and rapid learning rate annealing near the end of training. Ours is the first systematic approach to automatically yield both of these properties. We perform the most comprehensive evaluation of learning rate schedules to date, evaluating across 10 diverse deep learning problems, a series of LLMs, and a suite of logistic regression problems. We validate that overall, the linear-decay schedule outperforms all commonly used default schedules including cosine annealing. Our adaptive schedule refinement method gives further improvements.

View on arXivView PDF

Code Implementations(1)

Experimental scripts for researching data adaptive learning rate scheduling.

222PythonAug 3, 20233 years agoNOASSERTION

Similar Papers

Cite this paper

@article{defazio2023optimal,
  title  = {Optimal Linear Decay Learning Rate Schedules and Further Refinements},
  author = {Aaron Defazio and Ashok Cutkosky and Harsh Mehta and Konstantin Mishchenko},
  year   = {2023},
  eprint = {2310.07831},
  archivePrefix = {arXiv},
  url    = {http://arxiv.org/abs/2310.07831v2}
}

Add a badge to your README

Shows whether official code is linked for this paper.

Code of Paper badge
[![Code of Paper](https://codeofpaper.com/badge/2310.07831.svg)](https://codeofpaper.com/paper/2310.07831)

Discussion