txus's picture
|
download
raw
3.95 kB
# Reproduction: L-SR1 — Learned Symmetric-Rank-One Preconditioning
Independent reproduction of **ICML 2026** paper *L-SR1: Learned Symmetric-Rank-One
Preconditioning* (OpenReview [`w1fkDwiZgN`](https://openreview.net/forum?id=w1fkDwiZgN),
arXiv [2508.12270](https://arxiv.org/abs/2508.12270); Lifshitz, Zuler, Fouks, Raviv,
Tel Aviv University).
Part of the [HF × AlphaXiv ICML-2026 open-reproductions](https://huggingface.co/ICML-2026-agent-repro)
effort. **No official code / checkpoints / data exist** — everything here is
re-implemented from the paper text, Algorithm 1, Eqs. 8–9 and Tables 4–6.
## What L-SR1 is
A lightweight, self-supervised **learned second-order optimizer**. It extends the
classical SR1 quasi-Newton update `x_{k+1} = x_k − α_k B_k g_k` with three small
**element-wise** MLPs and a **limited-memory** PSD preconditioner:
- **Encoder** ℰ: per-coordinate state `(x, p, d, g, q)` → latent (5→128).
- **Vector generator** 𝒫: latent → SR1 vector `v_k` (128→1).
- **LR generator** 𝒢: latent → `α̃_k`, with `α_k = γ₁·exp(γ₂·α̃_k)` (128→1).
The descent direction is `d_k = Σ_{v∈B_L} v (vᵀ g)` over a fixed-size buffer of the
last `L` generated vectors (Algorithm 1). A **learned PSD projection** shapes the
vectors during meta-training by penalizing the **secant residual**
`‖p_k − B̃_k q_k‖²` with `B̃_k = I + Σ v vᵀ ⪰ 0` (Eq. 8), added to the meta-loss with
weight `λ_sec` (Eq. 9).
## Files
- `lsr1.py` — model (Tables 4–5), limited-memory SR1 rollout (Alg. 1), meta-loss
with secant penalty (Eqs. 8–9), analytic problems (quadratic / Rosenbrock /
Rastrigin) + Newton direction.
- `baselines.py` — L-BFGS, Adam, AdaHessian; Dolan–Moré performance profile.
- `train_analytic.py` — meta-training (presets `quad2`, `quad100`, `rosen100`,
`rastr100`), projection ablation, per-experiment hyperparameters from Table 6.
- `eval_analytic.py` — Newton-direction alignment, performance profiles,
convergence curves.
- `efficiency.py` — Claim 6 mechanism microbenchmark (L-SR1 update module vs an
LGD-style full-state updater): runtime + memory + params.
- `jobsrc/job_driver.py` — the Hugging Face GPU Job driver (trains everything,
evaluates, benchmarks; writes to an HF bucket).
- `plot.py` — figures + CSVs from the job artifacts.
## Reproduction notes / deviations
- **Preconditioner `B̃ = I + Σ vvᵀ` for the step** (not just `Σ vvᵀ`). SR1 starts
from `B₀ = I`, matching the secant penalty's `B̃`. This was essential: with the
identity baseline the learned step reaches cosine **≈1.0** with the Newton
direction on N=2 quadratics; without it the optimizer must learn the whole
preconditioner from scratch and fails to align. L-SR1 aligns with the Newton
*direction*; L-BFGS still converges *faster* on pure quadratics (the paper's
quadratic-tailored reference) — L-SR1's edge on quadratics is alignment, and its
headline is the performance profile over the mixed 30-problem suite.
- **Small-init generator heads.** The untrained SR1 preconditioner is near-zero so
the initial K-step rollout is numerically stable; standard for learned optimizers.
- **Trust region** (per-coordinate step clamp) on the stiff families
(Rosenbrock/Rastrigin). Not in the paper; a standard learned-optimizer stabilizer
needed because `d=(Σvvᵀ)g` is linear in the gradient and blows up on stiff
problems early in training. Loose enough not to bind near convergence.
- **Relative secant residual** (÷‖q‖²) on the stiff families only, so a single
`λ_sec` works across gradient scales. The quadratic Claim-2 study uses the
absolute residual exactly as written.
- **Scale.** Meta-training uses 6K (quadratics) / 4K (Rosenbrock, Rastrigin)
iterations vs the paper's 10K — a scaled but non-toy run on one L40S GPU.
See the Trackio logbook for results, figures, and the Hugging Face artifact links.

Xet Storage Details

Size:
3.95 kB
·
Xet hash:
3e534d68f166de52cfd31676fd5d712974fbb5b3e20f2b2489ccde8bedec88cd

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.