ChrisMcCormick commited on
Commit
4c66da7
·
verified ·
1 Parent(s): 412ea12

Flag that val bpb is not comparable across the batched/varlen pipelines

Browse files
Files changed (1) hide show
  1. README.md +18 -3
README.md CHANGED
@@ -49,9 +49,24 @@ DecoderStack tracks 0.2–1.4% behind through step 1000 (where the upstream base
49
  stopped) while running ~6% faster per step (1,212 vs 1,291 ms/step). Full head-to-head in
50
  [`logs/baseline_report.md`](logs/baseline_report.md).
51
 
 
 
 
 
 
 
 
 
 
52
  `ChrisMcCormick/nanochat-varlen-d24-2026-03-22` is the closest sibling release
53
- (0.724772 val bpb, 0.2614 CORE, 97.4 min) but it is **not** a controlled comparison: it
54
- trained with FP8 and a different 32k tokenizer.
 
 
 
 
 
 
55
 
56
  ## ⚠️ Tokenizer
57
 
@@ -208,7 +223,7 @@ a toy config — structure, per-rank sharding, shard reassembly, and a real warm
208
 
209
  Trained by [`chrisjmccormick/stacks`](https://github.com/chrisjmccormick/stacks) — the
210
  converter is committed at
211
- [`a5e608f`](https://github.com/chrisjmccormick/stacks/commit/a5e608fac7759aefd5037ca1a985d0165a7d285c)
212
  (`utils/convert_ckpt_to_nanochat.py`). The training script that produced these weights is
213
  `code/run_full_d24_w8.py` in this repo, which is the run copy of the single-file d24
214
  trainer with three launcher overrides (`micro_batch_tokens` 32768→65536,
 
49
  stopped) while running ~6% faster per step (1,212 vs 1,291 ms/step). Full head-to-head in
50
  [`logs/baseline_report.md`](logs/baseline_report.md).
51
 
52
+ ⚠️ **but val bpb is not really comparable across the two pipelines.** Upstream nanochat
53
+ batches with best-fit cropping, discarding ~35% of tokens to pack rows exactly (its own
54
+ dataloader docstring's figure) against DecoderStack's 11–12% `seq_len` truncation — so the
55
+ two are not scoring the same text. And upstream measures loss with **cross-document
56
+ attention**: its rows concatenate several documents with no isolation (`cu_seqlens` appears
57
+ nowhere in upstream `nanochat/gpt.py`), where DecoderStack's varlen path isolates documents
58
+ in validation as in training. The direction of that bias has not been measured. Treat the
59
+ throughput numbers as the solid comparison and the bpb deltas as indicative.
60
+
61
  `ChrisMcCormick/nanochat-varlen-d24-2026-03-22` is the closest sibling release
62
+ (0.724772 val bpb, 0.2614 CORE, 97.4 min). It is varlen-trained, so it does not carry the
63
+ caveat above, but it is still **not** a controlled comparison: it trained with FP8 and a
64
+ different 32k tokenizer.
65
+
66
+ Both numbers also deserve error bars: Karpathy's re-runs of an identical d24 config span
67
+ **0.0153 in CORE** (5 runs, mean 0.261), so our 0.2517 and that 0.2614 are inside each
68
+ other's noise. Sources in
69
+ [`stacks/models/nanochat/reference/METRICS.md`](https://github.com/chrisjmccormick/stacks/blob/main/models/nanochat/reference/METRICS.md).
70
 
71
  ## ⚠️ Tokenizer
72
 
 
223
 
224
  Trained by [`chrisjmccormick/stacks`](https://github.com/chrisjmccormick/stacks) — the
225
  converter is committed at
226
+ [`5f3d29e`](https://github.com/chrisjmccormick/stacks/commit/5f3d29e)
227
  (`utils/convert_ckpt_to_nanochat.py`). The training script that produced these weights is
228
  `code/run_full_d24_w8.py` in this repo, which is the run copy of the single-file d24
229
  trainer with three launcher overrides (`micro_batch_tokens` 32768→65536,