Chess easy-to-hard RL checkpoints (group size 16)
RL checkpoints from the chess easy-to-hard experiment
(code at commit 1e78e48). Each run
starts from a 100M-parameter chess transformer that was pre-trained on human
games and then SFT'd on chain-of-thought solutions to 800β900 Elo puzzles
(SFT checkpoints,
one per pre-training budget). It is then trained with GRPO in Miles on
these puzzles
(900_easy17k_1200_hard): 64 puzzles Γ 16 samples per step, 2,000 steps.
| Folder | Trains on | Reward |
|---|---|---|
all_rb_g16 |
easy + hard | ground truth on both |
easy_rb_g16 |
easy only | ground truth |
mixed_rb_mv_g16 |
easy + hard | ground truth on easy, majority vote on hard |
hard_mv_g16 |
hard only | majority vote |
Easy puzzles are rated 800β900 Elo and hard ones 900β1200. Majority vote rewards a sample for matching the most common answer among the puzzle's 16 samples, so the ground truth is never seen.
Layout
100m_<budget>/<arm>_g16/global_step_<N>/, where <budget> is the
pre-training budget in tokens and N runs from 100 to 2000 in steps of 100. Each
folder is a Hugging Face model (Qwen3ForCausalLM, fp32) with the chess
tokenizer (tokenizer.py, vocab.json). COMMITTED.json lists each file's
SHA-256.
Budgets: 40B, 20B, 11B, 2.1B, 1.1B and 0.53B, all complete.
Resuming past step 2000
Each arm also keeps its final training state, so a run can continue past step
2000. 100m_<budget>/<arm>_g16/trajectory_sep_no_labels/multi_turn_lr1e-5_bs1024_kl0.001_res2560_minimax_grpo_miles/100m_<budget>/checkpoints/
holds latest_checkpointed_iteration.txt and iter_0002000/ (model,
optimizer, LR scheduler, RNG and rollout state, as torch distributed
checkpoints saved by 2 GPUs). The path matches the run's layout under
OUTPUT_DIR, so downloading it there puts it where run_rl.sh looks with
RESUME=1:
hf download davidafrica/chess-e2h-rl-g16 --local-dir "$OUTPUT_DIR" \
--include '100m_40B/all_rb_g16/trajectory_sep_no_labels/*'