Sampler shootout: what RMSProp-preconditioning buys the loss kernel

Every experiment in this thread runs on the same instrument: draw weights from a around a trained model with , read out every probe document's loss at each draw, and take the — the covariance of those losses. Hitchcock & Hoogland's sampler benchmark says dominates vanilla SGLD for scalar estimation on deep linear networks — wider usable step-size band, fewer diverged chains, loud failures. None of that directly tests the kernel, a 1024×1024 covariance object whose off-diagonal structure is the whole point. So: pre-registered head-to-head on Pythia-14M over the Pile, one hypothesis per failure mode, decided against thresholds written down before any run.

Preconditioning buys the entire step-size axis — zero diverged chains anywhere on a 3.5-decade grid, λ̂ flat to ±5% — but buys no convergence speed at all: its 2× faster mixing is exactly cancelled by 2× noisier per-draw kernels. And the kernel itself turns out to be a resolution dial in ε: swapping samplers changes it less than a 10× step-size change within either sampler.

§1Setup

model
EleutherAI/pythia-14m (d = 14,067,712), final checkpoint; revisions step{16k, 64k, 143k} for controls
data
NeelNanda/pile-10k → fixed 512-token chunks, no padding; probe set 1024 = 128 × 8 Pile domains (one chunk per document); gradient pool 13,752 chunks
posterior
nβ = m/ln m = 9.23 (m = 32), γ = 100 tether to w*, per-document summed-NLL gradient (repo convention)
samplers
SGLD (existing pipeline, unchanged) vs RMSPropSGLD (devinterp semantics: V ← 0.99·V + 0.01·g², P = 1/(√V + 0.1), P on the full drift, √(εP) noise, no Γ term)
sweep
2 samplers × 8 ε (3e-7 … 1e-3) × 2 seeds, 8 chains × 2000 steps each; identical minibatches and identical Gaussian draws across samplers per seed
gold
16 chains × 8000 steps at each sampler's best ε, full 1024-probe recording
engine
chain-vectorised GPTNeoX forward (leading chain dim, chunked LM head, HF-parity-tested), torch.compile, bf16 fwd/bwd + fp32 master weights; 135 ms/step for 8 chains on one 4090
runtime
2× RTX 4090 (RunPod community, $0.68/hr the pair), preemption-safe per-cell checkpointing

Two deviations from the spec worth owning up front (both forced by reading the benchmark's actual pseudocode, both ablated): the RMSProp stability constant is devinterp's 0.1 rather than the spec's 1e-8 — at 1e-8 the preconditioner on zero-gradient coordinates (91% of this model's parameters are embedding rows, mostly unsampled in any given batch) reaches 108 and all 8 chains diverge (median √V literally 0.0, max 3.8×1017); and P multiplies the whole drift including the localisation term, matching benchmark Algorithm 3 and Li et al., not the spec's "loss gradient only" paraphrase (that variant is stable but shifts λ̂ by +11%).

§2H1 · the band

Lambda-hat vs step size with divergence-rate panel.
Fig. 1 · λ̂ vs ε (top) and diverged-chain fraction (bottom), pooled over 2 seeds × 8 chains. SGLD's usable band is [3e-7, 1e-5]; above it chains heat up (the 3e-5 error bar) and then die (94–100% at ≥1e-4). RMSPropSGLD passes the stability criteria at every grid point with λ̂ ≈ 25–27.5k flat to ±5% over the top 2.5 decades.

The pre-registered H1 statistic is the width of the contiguous ε range where, in both seeds, divergence < 10%, λ̂ sd/mean < 0.2, and λ̂ ∈ (0, d/2). SGLD: 1.52 decades. RMSPropSGLD: 3.52 decades — censored by the grid at both ends, with 0/128 chains diverged anywhere. That's +2.0 decades against a pre-registered threshold of +1.0, and it reproduces the DLN benchmark's headline on a real language model. We never even found pSGLD's cliff: it presumably lives above ε = 1e-3, where vanilla SGLD has been dead for two decades of ε.

§3H3 · one kernel, many resolutions

Do the two samplers measure the same object? The pre-registered plan compared the two gold kernels by and got 0.62 — but that instrument turned out to be broken in an instructive way: at the τ/2-derived recording stride (k = 101), 63 draws/chain of a 1024×1024 covariance is draw-starved, and each gold kernel only agrees with its own other half at 0.44–0.58 (split-half). 0.62 between samplers is above that ceiling ( ≈ 1.0). The τ/2 stride heuristic is calibrated for scalar λ̂, not for M² covariance objects — re-recording the gold runs at k = 12 (533 draws/chain) fixed the reliability (split-half CKA 0.94/0.96) and is the cheap fix we'd recommend to anyone using the kernel pipeline: probe evals were only ~5% of gold cost, so there is no economy in recording sparsely (at k = 12 they're still just 31% — 8.5× the draws for 1.3× the cost).

CKA between every pair of (sampler, step-size) kernels.
Fig. 2 · Linear CKA between 128-probe kernels for every stable (sampler, ε) cell (seed 0; each cell's seed-replicate CKA is 0.97–0.99, so these numbers are signal, not noise). Banding along the diagonal of each block = the kernel changes smoothly with ε within a sampler; the off-block diagonal (matched ε, different sampler) reads 0.90–0.93 — as high as adjacent-ε agreement within a sampler.

The well-powered comparison uses the sweep's 128-probe kernels (3,200 draws each, seed-replicate CKA 0.97–0.99). Verdict: at matched ε the samplers agree, CKA 0.90–0.93 — passing the pre-registered 0.9 bar — while the kernel itself moves with ε for both samplers (SGLD's own 1e-5 vs 1e-6 kernels: 0.77). ε joins γ and nβ as a resolution dial on the object being measured, which reframes the "best-ε to best-ε" number (0.83): it's bounded by ε-dependence, not sampler disagreement. RMSPropSGLD@1e-5 agrees better with SGLD@1e-5 than SGLD@1e-5 agrees with SGLD@1e-6. Practical rule: you can swap samplers, but keep ε when you do — or re-baseline the kernel once.

§4H2 · no free speed

Kernel convergence vs independent replicate.
Fig. 3 · Convergence of the seed-0 kernel toward the independent seed-1 kernel (dots: steps to 95% of the seed-replicate ceiling). SGLD@1e-6: 543. RMSPropSGLD@1e-5: 537. RMSPropSGLD@1e-3 — with 8× faster mixing — 669. Flat.
Integrated autocorrelation time vs step size.
Fig. 4 · Integrated autocorrelation time of per-sequence probe losses. Mixing accelerates with ε for both samplers — RMSPropSGLD reaches τ = 26 steps at ε = 1e-3 while staying λ̂-stable. None of it converts into kernel precision.

Preconditioning does mix faster where it counts: at the band midpoints, τ = 202 steps (pSGLD @ 1e-5) vs 388 (SGLD @ 1e-6), and pSGLD can push to τ = 26 at ε = 1e-3 where SGLD cannot go at all. The pre-registered H2 called for ≥1.5× fewer steps to kernel convergence. Measured four ways — the pre-registered gold statistic on the dense instrument (dead equal: 2,569 vs 2,569 per-chain steps, curves literally overlapping), and independent-seed-replicate convergence at three operating points (537 vs 543 steps at band midpoints; 669 at pSGLD's fastest-mixing ε) — the answer is no speed win, anywhere. The mechanism is a tidy conservation: hotter, faster-mixing chains have proportionally larger per-sequence loss fluctuations, so each recorded draw carries a proportionally noisier kernel estimate. Steps-to-kernel-precision sits at ~550–700 per-chain steps across both samplers and every stable ε we measured. Mixing speed and per-draw SNR cancel.

The cost clause fails too, comically: SGLD's counterfactual 8-point calibration sweep measures cheaper (4,688 s vs 7,122 s) because its four diverged cells crash early and stop billing. Divergence wastes information, not seconds — half of SGLD's calibration grid yields nothing, but the pre-registered accounting only counts seconds.

§5Controls

controlSGLDRMSPropSGLDreading
untrained model: label recoverability (NMI)0.3430.359pathology present in both
untrained model: clustering ARI0.1750.148pSGLD not worse
untrained: same−cross label corr gap0.0180.050letter-fails (see text)
trained: same−cross label corr gap0.0870.043pSGLD smaller
λ̂ ordering, step16k < 64k < 143k14.7k → 16.4k → 19.6k21.5k → 23.5k → 27.5kboth strictly ordered

The Loss-Kernel paper's Appendix-B warning replicates under both samplers: 100 SGMCMC steps on a randomly initialised Pythia-14M yield a kernel from which Pile domains are partially recoverable (NMI ≈ 0.35) — noise injected into embedding rows makes same-token inputs co-fluctuate, no learning required. Preconditioning neither causes nor cures it; the mitigations (freeze embeddings, delete same-label edges) stay mandatory. One pre-registered clause — raw same-label gap "not >20% worse" — fails on its letter (0.050 vs 0.018), but the comparison is confounded: SGLD@1e-6's untrained kernel carries a ~0.85 common-mode correlation floor that compresses its gap, and on the trained model pSGLD's spurious gap is half of SGLD's. We call it a substance-pass and flag it for any probe set with label structure. Checkpoint λ̂ ordering is clean for both samplers despite the documented small-Pythia LLC anomaly. Gold-v2 (dense recording, split-half reliability 0.94/0.96) confirms the resolution-dial story on the full 1024-probe kernels: cross-sampler CKA at the two different best ε's is 0.818 (ARI 0.611) — right where the sweep predicted (0.826), below the pre-registered 0.9 bar not because the samplers disagree but because ε = 1e-6 and ε = 1e-5 measure genuinely different-resolution kernels. pSGLD's chains also agree better with each other about the kernel: relative across-chain off-diagonal variance 0.36 vs SGLD's 0.55.

Spectral embeddings of both gold kernels, same-label edges deleted.
Fig. 5 · Spectral embedding of each gold kernel's correlation graph with the App-B deconfound applied (same-domain edges deleted before building the kNN graph), coloured by Pile domain. Domain structure survives the deconfound under both samplers.

§6Verdict

hypothesispre-registered barresultverdict
H1 robustnessband +1 decade, div ≤ SGLD+2.0 decades (censored), 0/128 divergedpass ×2 margin
H2 efficiency1.5× fewer steps or 2× cheaper0.75–1.2×; cost 0.67×fail
H3 same objectCKA ≥ 0.9, ARI ≥ 0.70.90–0.93 at matched ε; ε is a resolution dialpass at matched ε
H4 pathologiesnot >20% worserecoverability equal; one confounded letter-failsubstance pass

The pre-registered adoption rule (H1 ∧ H3 ∧ (H2 ∨ cost)) is not met: there is no speed case for switching at this scale. The robustness case is overwhelming, though, and it's the case that matters when ε is not already known: a blind ε pick fails 4/8 times under SGLD and 0/8 under RMSPropSGLD, per-step overhead is ≤7%, and the DLN benchmark says the gap widens with scale. So: keep SGLD for calibrated, repeated production runs at a known operating point; reach for RMSPropSGLD the moment ε is uncertain — new scale, new γ/nβ, one-shot runs — and re-baseline the kernel at matched ε when you switch. Also, record gold kernels densely: the probe evals are 5% of the cost, and the τ/2 stride heuristic that seemed thrifty was quietly destroying the measurement.

Source · experiments/rmspropsgld_comparison (SPEC.md pre-registered; REPORT.md has the full metric-by-metric account; PR #187).
Logs & traces · arcadia-impact/rmspropsgld-comparison-logs-20260709.
Run · 2× RTX 4090 (RunPod community), 37 cells, ~8 GPU-h, ~$5; pod s62fifb0d4q71m; repo @ 51a162e.