Models

What Is RMSProp?

An adaptive optimizer that scales learning rate per parameter using an exponential moving average of recent squared gradients.

What Is RMSProp?

RMSProp (Root Mean Square Propagation) is a stochastic gradient descent optimizer that adapts the learning rate per parameter using an exponential moving average of squared gradients. Proposed by Geoff Hinton in a 2012 Coursera lecture, it was designed to fix AdaGrad’s diminishing learning rate by replacing the cumulative sum of past squared gradients with an exponentially decaying average. The result is a per-parameter learning rate that adjusts to recent gradient magnitudes without monotonically shrinking to zero. RMSProp is a direct ancestor of Adam and AdamW, which add a momentum term on top of RMSProp’s idea — and which power most LLM training runs in 2026.

Why It Matters in Production LLM and Agent Systems

RMSProp is rarely the optimizer behind a 2026 LLM you deploy — but the family it spawned is everywhere. Adam combines RMSProp’s per-parameter scaling with momentum. AdamW decouples weight decay from gradient updates while keeping the same RMSProp core. Lion, the more recent contender, returns to the simpler signed-gradient idea but inherits the per-parameter intuition. Understanding RMSProp is the prerequisite for reasoning about every adaptive optimizer your team’s fine-tunes might use.

The pain shows up at fine-tune time. A team running a long-training-run on RMSProp watches loss plateau because the EMA decay rate was too aggressive — the optimizer is moving in too small a step late in training. Another team picks RMSProp for an RNN-based reranker (where it remains competitive), then tries to use the same hyperparameters on a transformer fine-tune and watches it underperform Adam by two points on downstream evals. A platform engineer is asked, “why did the new fine-tune regress?” and discovers the optimizer was swapped without anyone updating the eval baselines.

In 2026, optimizer choice is a versioned hyperparameter that propagates through to production output quality. A regression eval comparing RMSProp-trained vs AdamW-trained variants of the same base model often reveals 1-3 point quality differences on long-context tasks — small in isolation, large under cumulative production load.

How FutureAGI Handles Optimizer-Driven Quality Regressions

FutureAGI does not tune optimizers — we evaluate the outputs of models trained with them. The link is downstream: when a fine-tune ships, FutureAGI runs the new model against a versioned Dataset and compares scores against the prior model.

Concretely: a team fine-tunes a code-completion model with RMSProp on a niche legacy codebase. They register the checkpoint, point it at the same Dataset (versioned at v6) used for the previous AdamW-trained variant, and run Dataset.add_evaluation with Faithfulness, AnswerRelevancy, FunctionCallAccuracy, and Completeness. The RMSProp variant scores 0.9 points higher on Completeness for legacy-pattern code but 1.6 points lower on FunctionCallAccuracy. They route the AdamW variant for general traffic and reserve the RMSProp variant for an A/B route that triggers when a traceAI-langchain span tags the request as legacy-codebase work.

For teams running custom optimizers — RMSProp on RNNs, Lion on a small specialist model, AdamW with custom warmup — CustomEvaluation lets them wrap a domain rubric and gate releases with the same regression-eval discipline that foundation-model swaps use. FutureAGI’s approach is to make optimizer choices visible through their downstream output effects.

How to Measure or Detect It

Optimizer-driven regressions surface as eval-score deltas across dataset cohorts:

  • Per-checkpoint regression eval: run the same eval suite against each fine-tune checkpoint; gate deploy on score delta.
  • Faithfulness, AnswerRelevancy, Completeness: the canonical trio for fine-tune output quality.
  • FunctionCallAccuracy: when the task involves tools, this captures regression invisible to text-only metrics.
  • Optimizer-config tag (custom OTel attribute): record model.optimizer.name, model.optimizer.lr, and model.optimizer.decay on every checkpoint trace.
  • Loss-curve plateau: detected at training time, but its symptom appears at eval time as missing capabilities.
from fi.datasets import Dataset
from fi.evals import Faithfulness, FunctionCallAccuracy

ds = Dataset(name="code-completion-eval", version=6)
ds.add_evaluation(evaluator="Faithfulness")
ds.add_evaluation(evaluator="FunctionCallAccuracy")
# Compare RMSProp vs AdamW variants of the same base.

Common Mistakes

  • Reusing AdaGrad-era hyperparameters. RMSProp’s EMA decay needs different tuning than AdaGrad’s cumulative sum; copy-paste hyperparameters underperform.
  • Skipping the regression eval after an optimizer swap. Loss curves can match while output quality regresses on tasks the loss does not represent.
  • Using RMSProp on long transformer training runs. Adam and AdamW outperform RMSProp on deep networks; default to AdamW unless you have a specific reason.
  • Not versioning the optimizer config alongside the checkpoint. When a regression appears, the config you cannot reproduce is the bug you cannot fix.
  • Confusing momentum-RMSProp with vanilla RMSProp. Some implementations include a Nesterov momentum term; check before comparing benchmarks.

Frequently Asked Questions

What is RMSProp?

RMSProp is a per-parameter adaptive optimizer that divides the learning rate by the square root of an exponential moving average of recent squared gradients, fixing AdaGrad's monotonically shrinking learning rate problem.

How is RMSProp different from Adam?

Adam combines RMSProp's exponential moving average of squared gradients with momentum (an EMA of gradients themselves). Adam usually outperforms RMSProp on deep networks but RMSProp remains competitive on RNNs.

How does FutureAGI relate to RMSProp?

FutureAGI does not tune optimizers. We evaluate the outputs of models trained with RMSProp-family optimizers, running regression evals via Dataset.add_evaluation to detect quality regressions after training-config changes.