Interactive lab. Use the allocation slider (arrow keys, Home, End) to trade model parameters against training tokens under a fixed FLOP budget. Telemetry below the slider announces the computed loss, both loss terms, and your distance from the compute-optimal frontier.

3D rendering is unavailable in this browser.
The lab still works: every number, challenge, and export below is computed live from the Hoffmann et al. (2022) fit — use the slider and the 2D loss curve in the panel.

More capability per FLOP — the allocation lab

The loss terrain of pre-training, from the fitted Chinchilla law. Your budget is the bright rope. Your model is the lantern. Find where FLOPs buy the most.

BOOTING…
params tokens
loss gap

The question, taken seriously

“For those of us actually training or running models locally: what if better pre-training methods could give us more capability per FLOP? the entire pre-training paradigm we’ve been scaling for years isn’t general enough. The Bitter Lesson might not be bitter enough anymore.”
— @0x0SojalSec, the post this lab was built from

“Capability per FLOP” sounds like a slogan, but it is a measurable quantity, and the field has a published instrument for it: the parametric loss fit from Hoffmann et al. (2022), the Chinchilla paper. This lab puts that instrument under your hands. Nothing on this page is simulated data or decoration — every number is the fit, evaluated live.

The model under the terrain

L(N, D) = 1.69 + 406.4 / N0.34 + 410.7 / (m·D)0.28   (nats per token)
C = 6 · N · D  →  the isoFLOP rope: D = C / (6N)

N is parameters, D is training tokens, C is total training FLOPs, and m is an effective-data multiplier for a better pre-training method (m = 1 is the published fit). The first term is the capacity wall: small models cannot represent what the data contains. The second is the data wall: big models starved of tokens never learn what they could hold. A fixed budget C is not a knob — it is a constraint line, and training well means choosing where to stand on it.

The frontier — the bottom of the U along the rope — has a closed form: Nopt = 1.3447·(mC/6)0.4516. At the optimum the two walls push back equally (α·capacity term = β·data term), which is why the frontier is a ridge-bottom river on the terrain above.

Worked example — 1e21 FLOPs, allocated well

N = 1.8B params · D = 94B tokens (~53 tok/param)
capacity term 0.291 + data term 0.348
L = 2.329 nats · +0.0% vs frontier

Roughly 8×A100 for twelve days. A 1.8B model trained this way beats every other allocation of the same silicon.

Counterexample — same FLOPs, spent on size

N = 3.2T params · D = 53M tokens (0.00002 tok/param)
capacity term 0.023 + data term 2.827
L = 4.540 nats · +346% vs frontier

The same budget, incinerated. And the mirror-image error — 32M params fed 5.3T tokens — still stalls at 2.948 nats against the capacity wall. The U has two sides.

The Bitter Lesson, priced instead of argued

Rich Sutton’s essay says general methods that ride growing compute beat hand-built knowledge. The post asks whether that lesson is “bitter enough anymore.” The fit gives a sharper answer than either slogan: at the optimum, reducible loss depends only on the product m·C. A method that makes each token teach twice as much is indistinguishable from doubling your FLOPs — you can verify it in Step 3, where m = 3 at 1e21 FLOPs lands exactly on the 3e21 frontier (2.2297 nats both ways).

So better pre-training methods don’t repeal the Bitter Lesson; they trade in its own currency. For people training locally, that is the actionable version of “more capability per FLOP”: a 3× data-quality method is a rented cluster you didn’t pay for. The catch — and the honest part — is that m is a hypothesis you must measure for your own pipeline, which is exactly what small local ablations are good at.

Assumptions and limits (read before believing)

Super generates helpful tools and automates fact-checking across the internet proactively. If you enjoyed this tool, build your own with Super and share it with a friend.