Views
No views yet
mlp_in in every block. Trained on
FineWeb-Edu-100B with a cosine LR schedule (peak 1.2e-2, floor 1.2e-3) on
4× B200.iter 35,250 of a 38,147-iter schedule — best val
(2.9058) during the run. It sits deep inside a grad_norm episode that started
around iter 17k and peaked at ~0.2 around iter 25k. Val loss was resilient
through the episode (adjacent-eval numbers 2.906–2.910 in the floor cluster),
but the 26B-token predecessor (v2-cosine, same config, longer schedule)
spiked harder and regressed 0.16 nats without recovering — so treat weights
from this checkpoint as taken from a schedule that was walking a line.| Parameter | Value |
|---|---|
| n_layer | 24 |
| n_head | 16 |
| n_embd | 2048 |
| block_size | 1024 |
| vocab_size | 50304 |
| bias | False |
| norm | RMSNorm (affine) |
| MLP | GELU, 4× expansion |
| pos_encoding | learned |
| tokenizer | GPT-2 (tiktoken) |
| dtype | bfloat16 |
| sparsity_mode | cayley |
| cayley_locations | mlp_in |
| cayley_levels | 11,16,0; 15,32,256; 17,64,256 |
| cayley_per_parent_budget | True |
| cayley_score_standardize | True |
[L, k, delta]):| Parameter | Value |
|---|---|
| optimizer | Muon (hidden 2D) + AdamW (embeddings) |
| muon_lr | 1.2e-2 peak → 1.2e-3 floor |
| adamw_lr | 1.2e-2 peak → 1.2e-3 floor |
| lr_schedule | cosine |
| warmup_iters | 200 |
| muon_momentum | 0.95 |
| muon_ns_steps | 5 |
| batch_size | 64 |
| seq_len | 1024 |
| grad_accum_steps (global) | 8 |
| tokens/iter | 524,288 |
| scheduled max_iters | 38,147 |
| uploaded checkpoint iter | 35,250 (best_val) |
| training killed at iter | 37,220 (early kill; floor plateau) |
| tokens seen at upload | ~18.5B |
| dataset | FineWeb-Edu-100B |
| best_val_loss | 2.9058 |
v2-cosine (same config, 26B-token schedule, resumed) spiked
at ~iter 24.4k (~49% of schedule) and regressed val 0.16 nats without
recovering. v3 was a fresh-init run at 20B and came through with only a mild
grad_norm bump, though both runs show the same mid-schedule signature.mh/reports/ in the source repo for the full campaign context.ckpt.pt — torch checkpoint dict with keys model, optimizer_states,
config, model_config, iter_num=35250, best_val_loss=2.9058,
wandb_step_offset, parity_trigger_iter=-1. Torch 2.4+.config.json — full training config used by the run (not the model_config
only — includes optimizer / schedule / data knobs).1import torch
2from deeptopk.src.sparse_nanogpt.model import GPT, DeepTopKGPTConfig
3
4ckpt = torch.load("ckpt.pt", map_location="cpu", weights_only=False)
5model_cfg = DeepTopKGPTConfig.from_dict(ckpt["model_config"])
6model = GPT(model_cfg)
7state = {k.removeprefix("module.").removeprefix("_orig_mod."): v
8 for k, v in ckpt["model"].items()}
9model.load_state_dict(state)
10model.eval()