Vs AlphaZero

same network · different training signal · ~10,000× less compute

The Comparison

AlphaZero (2017)this project
approachtabula-rasa self-play RLsupervised distillation from stockfish
network20-block ResNet, 256 filtersidentical (20×256)
MCTS at training800 sims/move on agent’s own searchnone — stockfish provides targets
training positions~3.5B (44M games × 80 moves)5M–30M
training compute64 TPU-v2 × 9h + ~45k TPU-v1-hr self-play1 GPU × 5 h ≈ 5 GPU-hours (~10,000× less)
eval MCTS sims800 training / many tens of thousands tournament800 routine / 4,000 on the search ablation
teachernonestockfish d10 (~2,200) or d15 (~2,500), multipv=8, T=1
peak Elo~3,500–3,6002,301 (R2 v2 d15 46M cosine ep 14 @ 4,000 sims vs UCI=1,800, CI [2,190, 2,601] — 95% lower bound clears the 2,300 line); same-run ep 4: 2,285 [2,177, 2,554]; 40×256 sibling R1 v2 ep 7: 2,209 [2,115, 2,389]

What’s Literally Identical

The architecture. AlphaZero is a 20-block × 256-channel ResNet with a policy head producing 4,672 move logits (8×8×73 chess move encoding) and a value head producing a scalar in [-1, +1]. That’s the exact network we use here — about 23.7M parameters. Same residual blocks, same batch-norm-after-conv ordering, same tanh on the value head.

The eval anchor (Stockfish at calibrated UCI_Elo) is a measurement choice, not part of the model. Everything else — how the weights get there — is different.

What’s Deliberately Different

Approach

AlphaZero is tabula rasa. The weights start random; the only training signal is “did this position lead to a win?” Targets are MCTS visit counts from the agent’s own search.

In this project, the network is initialized by supervised distillation. Targets are Stockfish’s top-8 moves with softmax-cp weights, not MCTS visit counts. The model never plays a game during training — it watches Stockfish play ~50K of them (100K was the target; 49,525 games actually completed before pods churned).

Compute

AlphaZero used 5,000 first-generation TPUs for self-play data generation and 64 second-generation TPUs for training, for ~9 hours. Conservatively, that’s ~45,000 TPU-v1-hours plus ~576 TPU-v2-hours. Our supervised distillation runs cost ~5 hours on a single L4 or L40S GPU — roughly four orders of magnitude less.

Data

AZ’s 44M self-play games × ~80 moves/game = ~3.5 billion training positions. The largest dataset we’ve trained on is ~30M positions — about 100× less. The 5M subsample used for the headline result is ~700× less.

AZ used 800 sims during training and many tens of thousands at competitive play. Our routine evals run at 800 sims; the search ablation showed that the same checkpoint scores +277 Elo when re-evaluated at 4,000 sims — and we haven’t pushed it further yet.

Why a Small Project Can Still Be Interesting

Holding the architecture constant and varying the training procedure isolates the procedure. Each ablation tells you something specific about which knob controls the ceiling:

  • capacity (40×256 vs 20×256) → ceiling is not in the network.
  • search (4,000 vs 800 sims) → ~280 Elo of the ceiling is in the eval budget, not the model.
  • data (full 30M positions, running) → tests whether the rest is data-driven.
  • self-play (running) → tests the prior-plus-self-play idea (Lc0 / AlphaZero) on top of an engine-distilled prior, on a single GPU.

If we had AZ’s compute we wouldn’t run these experiments — we’d just do AZ’s thing and report ~3,500 Elo. The interesting question for a small lab is: which procedural changes are worth a lot per unit of compute? That’s what the ablations are measuring.

The Realistic Ceiling

Without a multi-GPU scale-up the realistic ceiling is somewhere in the 2,200–2,800 Elo range — strong-club to FIDE-master level on the same hardware AZ used a single accelerator for one second on. That’s not grandmaster. But it is enough to evaluate every conceptual change in the AZ recipe (search-during-training, target sharpness, self-play quantity, network depth) for ~$10–$100 of cloud compute per experiment. That’s the project.