Phase 1 write-up: Stabilizing cumulant propagation at depth 32 — a trajectory-calibrated moment chain, with an error budget (submission #314695)

Erratum: the FLOPScope v0.10.0 repricing (announced here) regraded the submissions this write-up cites. The science is unaffected; the grader-reported scores it quotes are superseded as follows.

Our write-up’s numbers were graded under the previous, dtype-blind cost model. Under v0.10.0 (float64 bills 2× float32, priced by output dtype), the official record now reads:

submission quoted in the write-up official after regrade
#314695 (the write-up’s artifact) adjusted 9.97e-7, multiplier 0.169 adjusted 1.76842e-6, multiplier 0.300
our sampling entry adjusted 3.17e-7 superseded by a float32 resubmission, #323492, adjusted 3.07e-7 (raw identical)
pscamillo, #314331 adjusted 2.45e-6 2.4501e-6 — unchanged (at the multiplier floor, insensitive to the repricing)
radiant-allomancer, #317660 adjusted 4.47e-7 4.98e-7

No raw MSE changed (the regrade left #314695’s raw byte-identical at 5.89e-6), so the diagnosis, the trajectory-fitted stabilization, the ground-truth cumulant tests, and the error budget all stand as written.

Why #314695 moved the most of these: its hot path runs in default float64 — the probe draws float64 normals, so every matmul against the grader’s float32 weights promotes to the 2× rate. Re-metered under flopscope 0.10.0 (repricing_erratum_check.py in the replication repository), the graded file bills 7.40e10 FLOPs per net vs 3.70e10 for a float32 port with identical arithmetic (ratio 1.999, output delta ≤ 2.7e-6 against a per-element RMSE of ~2.4e-3). A float32 resubmission would grade at multiplier ≈ 0.15, adjusted ≈ 0.9e-6 — essentially the originally-quoted numbers. We are not resubmitting it: the write-up’s claim is mechanistic, not positional.

Two corrections to the text itself. The wall-time paragraph (which attributed the 13.6% → 0.169 gap to Python-dispatch wall time) is superseded: under v0.10.0 the regraded multiplier is accounted for by the FLOP bill alone, and dtype — not wall-time batching — is now the dominant multiplier lever for this estimator family. And the §3 economics line should read multiplier ≈ 0.15–0.30, adjusted ≈ 0.9–1.8e-6 under the new model; the conclusion (well short of the sampling frontier) is unchanged, and in fact strengthened — the repricing hit dtype-naive mid-multiplier entries like ours hardest, while the frontier entries sit at the multiplier floor and barely moved.

One practical note for other teams, in the spirit of Mohanty’s post: if your estimator never sets a dtype, your entire hot path is float64 and your bill has roughly doubled. Casting activations to float32 after any tail-sensitive transforms recovers the old bill; in our sampling entry the inverse-CDF stays float64 precisely because Sobol uniforms can round to exactly 1.0 in float32 and NaN the tail branch.

Henry_ARC-WhiteBox_Phase1_Writeup_Submission-314695_erratum-v0100.pdf (125.6 KB)

2 Likes