Precision: how close to the BF16 model?
Both engines stay close to the BF16 model, and the vLLM fork is slightly closer. The difference is largest when reading long code (8-16K-token prompts): CuteAFD is +0.0054 further on K3.25 (coarse KL) and +0.0090 on K4 (a top-20 measure). Below 8K on K3.25, and on long human-written text at 32K-128K on both checkpoints, no difference is resolved. K4 sits closer to BF16 than K3.25 on both engines and both panels. These are CuteAFD v3.0.1 results; v4.0.0 is bit-identical on the teacher panel (CuteAFD v4).
What this shows. One row per CuteAFD setting, paired on the same scored positions; the two checkpoints use different measures, so each has its own panel.
How to use it. The blue line is the vLLM fork; a row whose interval is solid is resolved from it. Hollow triangles need more GPU memory than two RTX PRO 6000s have with K4.
Table view: the exact numbers
| Checkpoint and measure | CuteAFD setting | CuteAFD − vLLM fork | 95% interval | vLLM run-to-run band | Serves on 2x RTX |
|---|---|---|---|---|---|
| K3.25, coarse KL | As shipped | +0.0054 | [+0.0034, +0.0074] | ±0.0017 | yes |
| K3.25, coarse KL | W8A16 prefill F1c | +0.0022 | [+0.0005, +0.0041] | ±0.0017 | yes |
| K3.25, coarse KL | W8A16 + BF16 KDA and head F1d: all three FP8 switches off | +0.0016 | [−0.0005, +0.0033] | ±0.0017 | yes |
| K4, KL_pb20 | As shipped | +0.0090 | [+0.0062, +0.0122] | ±0.0013 | yes |
| K4, KL_pb20 | W8A16 prefill F1-K4 | +0.0072 | [+0.0048, +0.0096] | ±0.0013 | yes |
| K4, KL_pb20 | amax scale rule F1-K4b | +0.0068 | [+0.0046, +0.0090] | ±0.0013 | yes |
| K4, KL_pb20 | best scale rule F1-K4b | +0.0080 | [+0.0066, +0.0096] | ±0.0013 | yes |
| K4, KL_pb20 | W8A16 + amax scale rule K4c | +0.0030 | [+0.0011, +0.0049] | ±0.0013 | yes |
| K4, KL_pb20 | W8A16 + best scale rule K4d | +0.0047 | [+0.0030, +0.0065] | ±0.0013 | yes |
| K4, KL_pb20 | BF16 output head F1-K4b; does not fit 2x RTX | +0.0087 | [+0.0059, +0.0119] | ±0.0013 | no |
| K4, KL_pb20 | BF16 KDA projections F1-K4b; does not fit 2x RTX | +0.0055 | [+0.0026, +0.0084] | ±0.0013 | no |
| K4, KL_pb20 | Every switch F1-K4b; does not fit 2x RTX | +0.0041 | [+0.0027, +0.0054] | ±0.0013 | no |
"Reading" follows each run's declared rule: K3.25, the 95% interval excludes 0; K4, it also has to exceed the vLLM fork's launch-to-launch difference on the same rows. Band: the largest difference between any two vLLM runs' means on the same rows. CuteAFD repeats are byte-identical, so CuteAFD needs no band.
Teacher panel (P-A): every position of 25 texts of 2,048 tokens
brandonmusic's BF16 teacher logits, the full vocabulary. The K3.25 KL20 row is K3.25's own captures scored with K4's top-20 measure, so the two checkpoints can be compared on the same quantity. The panel is drawn from the corpus whose calibration windows K4's producer published (document-disjoint from them), so it can favour K4 against K3.25; read checkpoint differences beside P-B (Three checkpoints).
| Checkpoint | Measure | vLLM fork (K3.25: run V1, which its other two runs match to 1e-6; K4: mean of 2 launches) | CuteAFD | CuteAFD − vLLM fork [95%] | Reading |
|---|---|---|---|---|---|
| K3.25 | full-vocabulary KL | 0.0458 | 0.0476 | +0.0017 [+0.0006, +0.0028] | differs |
| K3.25 | KL20 (top-20) | 0.0365 | 0.0380 | +0.0015 [+0.0006, +0.0025] | differs |
| K4 | KL20 (top-20) | 0.0192 | 0.0219 | +0.0027 [+0.0012, +0.0047] | differs |
| K3.25 | top-1 agreement | 93.50% | 93.15% | −0.35 pts | |
| K4 | top-1 agreement | 95.28% | 94.73% | −0.55 pts [−0.72, −0.37] | differs |
Fidelity set (P-B): the model's own replies, prompts up to 14.4K tokens
tpurtell's cuteafd-fidelity set, generated positions only (his rule). K3.25 is scored with his coarse KL (top 1,024 tokens plus the rest), K4 with its top-20 truncation, which keeps 98-99% of the coarse value on these rows.
| Checkpoint and measure | Positions | History, tokens (min / median / max) | vLLM fork (K3.25: mean of 3 runs; K4: of 2 launches) | CuteAFD | CuteAFD − vLLM fork [95%] | vLLM run-to-run band | Reading |
|---|---|---|---|---|---|---|---|
| K3.25 · coarse KL | all generated positions | 1,084 / 5,751.5 / 14,402 | 0.0451 | 0.0484 | +0.0033 [+0.0016, +0.0049] | ±0.0011 | differs |
| K3.25 · coarse KL | 0-2K | 1,084 / 1,735 / 2,361 | 0.0469 | 0.0486 | +0.0017 [−0.0006, +0.0044] | ±0.0010 | not resolved |
| K3.25 · coarse KL | 2-8K | 2,083 / 4,254 / 5,781 | 0.0321 | 0.0328 | +0.0007 [−0.0029, +0.0032] | ±0.0013 | not resolved |
| K3.25 · coarse KL | 8-16K (long code) | 10,284 / 12,069 / 14,402 | 0.0504 | 0.0557 | +0.0054 [+0.0034, +0.0074] | ±0.0017 | differs |
| K4 · KL_pb20 (top-20) | all generated positions | 1,084 / 5,751.5 / 14,402 | 0.0305 | 0.0358 | +0.0053 [+0.0033, +0.0076] | ±0.0007 | differs |
| K4 · KL_pb20 (top-20) | 0-2K | 1,084 / 1,735 / 2,361 | 0.0325 | 0.0343 | +0.0018 [−0.0007, +0.0049] | ±0.0004 | not resolved |
| K4 · KL_pb20 (top-20) | 2-8K | 2,083 / 4,254 / 5,781 | 0.0219 | 0.0235 | +0.0015 [+0.0005, +0.0027] | ±0.0011 | differs |
| K4 · KL_pb20 (top-20) | 8-16K (long code) | 10,284 / 12,069 / 14,402 | 0.0334 | 0.0424 | +0.0090 [+0.0062, +0.0122] | ±0.0013 | differs |
| K4 · KL_pb20 (top-20) | block B (long code, the 8-16K windows) | 10,790 / 12,083 / 13,388 | 0.0372 | 0.0469 | +0.0098 [+0.0064, +0.0137] | ±0.0015 | differs |
| K3.25 · top-1 agreement | all generated positions | 1,084 / 5,751.5 / 14,402 | 93.79% | 93.33% | −0.46 pts [−0.73, −0.17] | differs | |
| K3.25 · top-1 agreement | 8-16K (long code) | 10,284 / 12,069 / 14,402 | 92.50% | 91.69% | −0.81 pts [−1.22, −0.44] | differs | |
| K4 · top-1 agreement | all generated positions | 1,084 / 5,751.5 / 14,402 | 94.93% | 94.59% | −0.34 pts [−0.62, −0.09] | differs | |
| K4 · top-1 agreement | 8-16K (long code) | 10,284 / 12,069 / 14,402 | 93.86% | 93.26% | −0.60 pts [−1.02, −0.19] | differs |
The K3.25 8-16K figure (+0.0054) is against the mean of all three vLLM runs. Against other references it reads +0.0044 (the first vLLM run alone), +0.0050 (the first two runs, the reference follow-up F1 used) and +0.0052 (K4's top-20 measure); the audit also reports +0.0057 against the second run alone.
Long human-written text (Q2, 32K-128K tokens): no BF16 reference
Six documents (three books, three source files) at 32K, 64K and 128K tokens; the last 4,096 positions of each. With no BF16 reference this compares how surprised each engine is by the text (NLL), not closeness to BF16. K3.25 had a vLLM repeat on 2 of the 6 documents; K4 ran two full vLLM launches on all six, so its noise floor covers every document.
| Checkpoint | NLL, vLLM fork | NLL, CuteAFD | CuteAFD − vLLM fork [95%] | vLLM run-to-run floor | Reading |
|---|---|---|---|---|---|
| K3.25 (against vLLM run V1, the run scored on all six documents) | 1.2329 | 1.2324 | −0.0005 [−0.0037, +0.0018] (bootstrap over documents) | −0.0001 (vLLM repeat, 2 of 6 documents) | not resolved |
| K4 (against the mean of 2 vLLM launches) | 1.2434 | 1.2510 | +0.0076 [−0.0076, +0.0228] (t-interval over documents) | +0.0003 (launch 2 − launch 1, all 6 documents) | not resolved |
One code window, q2-code-c2-064k, dominates the code result on both checkpoints; on K4 the vLLM fork differs from its own second launch there on 192 rows by more than 1 nat (Research). Without that window K4 reads +0.0012 and −0.0008 against the two vLLM launches.
Notes
- Why the vLLM fork is averaged over runs. Its prefill is not bit-reproducible beyond the first 2,045-token chunk, so one vLLM run is one draw; CuteAFD's repeats are byte-identical. CuteAFD is paired against the mean of three vLLM runs from two launches (K3.25) or two launches (K4).
- Length or content. The 8-16K bucket is block B of the set, long code reading; within block A, the only block at every length, the K3.25 KL difference is flat. Which of the two drives the difference is not separated.
- Projection source inside CuteAFD (K3.25). CuteAFD on Core-FP8 with the official FP8 projections (C1) against CuteAFD on K3.25-v1 with FP8 projections made at load (C0): C1 − C0 −0.0003 [−0.0019, +0.0014], not resolved.
- Where the panel text came from. P-B's replies were written greedily by an earlier CuteAFD release serving the official FP8 model; any bias from that favours CuteAFD, against the observed difference.
- Top-20 measures. KL20 reads about 0.8 of full-vocabulary KL on P-A; KL_pb20 keeps 98-99% of coarse KL on P-B generated positions; every K3.25 difference kept its sign and significance under the truncation.
- Only the prefill path was scored. Tokens generated during decode use another path; its precision was not measured.
Deeper: tails, position and the c2 document on Research; the full write-ups: RESULTS-Q.md (K3.25), the K4 run README, RESULTS-F1.md.