Flag that val bpb is not comparable across the batched/varlen pipelines
Browse files
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)
|
| 54 |
-
trained with FP8 and a
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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 |
-
[`
|
| 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,
|