nl_tower checkpoints (levels 2 and 3)

Final checkpoints of the nl_tower level-2 and level-3 sweeps: a ~124M-parameter Llama-style model (12 layers, hidden 768, GPT-2 tokenizer, fp32 weights, 494 MB per checkpoint) trained with RL on nl_tower puzzles, with or without demonstration traces in the loss.

Every run is its own folder with a standard Hugging Face model layout (config.json, model.safetensors, tokenizer files, chat_template.jinja):

level2/<run>/   final step 6,000
level3/<run>/   final step 15,000
manifest.csv    one row per run: recipe, seed, step, where it was trained, our scores

Loading

from transformers import AutoModelForCausalLM, AutoTokenizer

repo, run = "sfanm/nl_tower_ckpts", "level3/x5_uni_a64_m0_L3"
tok = AutoTokenizer.from_pretrained(repo, subfolder=run)
model = AutoModelForCausalLM.from_pretrained(repo, subfolder=run)

Download everything, or one level:

hf download sfanm/nl_tower_ckpts --local-dir nl_tower_ckpts
hf download sfanm/nl_tower_ckpts --include "level3/*" --local-dir nl_tower_ckpts

The chat template concatenates message contents with no role markers; prompts are the raw puzzle text.

Runs

manifest.csv describes each run in plain columns. The run name encodes the same information:

Part of name Meaning
aN (first) Starting model CPT-N: the 100M base continued-pretrained with N demo rows added to every 256 web rows (N = 8, 16, 32, 64, 128)
hsep RL plus a separate SFT loss on demos: alpha * NLL(demo) + RL loss
a01 / a05 (last) alpha = 0.1 / 0.5 for hsep runs
uni_..._mM RL with M demo rows mixed into the same loss as the RL rows
m0 RL only, no demos
mM M demo rows per 512-row batch (4, 8, 16, 32, 64)
staged_eE Staged baseline: SFT on the demos for E epochs, then RL only (lr05 = a learning-rate variant of that SFT)
s2 / s3 / s4 Seed 2 / 3 / 4 (data-split seed differs); no suffix = seed 1
_L2 / _L3 Level 2 (trained on mid-difficulty prompts, 6,000 steps) / level 3 (mixed prompts including the hard rung, 15,000 steps)

Score columns in manifest.csv are our own evaluations of these exact checkpoints (pass@1 and pass@16 from 64 samples per question): nltw_m0 and nltw_m (mid-difficulty test sets; m0 is the easier one), nltw_h (hard test set, the level-3 target), nltw_hb and nltw_hb12 (10–11-person and 12-person puzzles, harder still). Empty means not evaluated on that set.

What is here and what is still coming

status in manifest.csv says, for each run:

  • uploaded — the folder is in this repo.
  • pending DeltaAI upload — trained on a second cluster; its folder is added from there.
  • training ... — the run has not reached its final step yet; added when it does.
Downloads last month

-

Downloads are not tracked for this model. How to track
Video Preview
loading