Admission via thin wrapper (vendor shim unmodified; no shim config knob exists). Gate re-run clean at every depth with usage honest; 16q32k warm 2,033 ms; 4x concurrent 16q32k peak 15,566 MiB vs 16,847 budget; boot matrix replaces the unmeasured 280 s figure (cold median 153.6 s, warm-cache saves nothing, eager slower). Wyrd itemised: 8 diffs, h2o net -2. h2o passes every Supersede clause under the accepted 32,000-token refusing contract; seat swap is the operator's call.
227 lines
13 KiB
Markdown
227 lines
13 KiB
Markdown
# Decision-model sweep follow-on: H2O re-bench, Clef-flash, RSI-Jev vs the live seat (2026-10-12)
|
||
|
||
Ordered by Prime; preregistration `brokkr-smithy`
|
||
`docs/surveys/decision-model-sweep/bench-2026-10-12-followon-prereg.md` @ 2e0539f —
|
||
the first run under the bench-first rule. Run by infra-hermes on fv-ml1 GPU 3
|
||
(process-pinned, GPU-3-empty guard, loopback only). Harness: the same d3 bench
|
||
harness as the morning run
|
||
(`docs/pfi/d3-vs-intern-decision-bench-2026-10-12.md`), unchanged.
|
||
|
||
## Headline
|
||
|
||
**The incumbent holds.** H2O-lightning-4b is the first non-d3 arm to beat INC
|
||
on the public suite (205 vs 202) with a positive paired battery delta — but it
|
||
fails the long-input gate by the letter: its shipped shim silently trims the
|
||
state at ~32,000 tokens, confirmed today exactly as on 10-04. Under the prereg
|
||
rules that makes it a **short-route candidate**, not a supersede. Clef-flash is
|
||
**lateral** in both precisions (battery CI straddles zero, Wyrd significantly
|
||
negative, and bf16 doesn't even fit the seat at rest). RSI-Jev v6.1 is a
|
||
**loss** (23 items below INC on public, Wyrd −0.0548).
|
||
|
||
## Budget (re-measured at bench time, Amendment 2 method)
|
||
|
||
GPU 1 total 97,887 MiB. Non-seat: vllm-meromero-r 43,998 + vllm-gen-small
|
||
34,994 = 78,992 MiB. Seat resting 9,098 MiB. Margin 2,048 MiB.
|
||
**Budget = 16,847 MiB.** (16,851 in the morning; 4 MiB drift, immaterial.)
|
||
|
||
## Arms and verdicts
|
||
|
||
Vendor-intended serving path for every arm, verbatim; no ports, no third-party
|
||
shims. Wire adaptations beyond the mandatory model field: none for H2O (shipped
|
||
`h2o_lightning_shim.py`) or RSI (vendor CLI); Clef reuses the 10-04
|
||
`clef_server.py` stdlib wrapper around the shipped `joint_schema_model.py`
|
||
(same wrapper that produced the 10-04 numbers; weights byte-identical).
|
||
|
||
| arm | path | jevbench (×3) | battery paired Δ vs INC [95% CI] | Wyrd Δ [CI] | neg-control | Brier / ECE |
|
||
|---|---|---|---|---|---|---|
|
||
| **INC (reused cells)** | seat 0.1.3 | **202** | — | — | .097 | .178 / .051 |
|
||
| H2O @ b43f759b | vLLM 0.30.0 + shipped shim | **205** | **+0.0137 [+0.0023, +0.0257]** | −0.0167 [−0.0357, +0.0024] | .028 | .152 / .050 |
|
||
| CLEF bf16 @ 8b2e5fd1 | vendor loader, max_length=32768 | 191 | +0.0040 [−0.0080, +0.0160] | **−0.0333 [−0.0571, −0.0095]** | .111 | .235 / .053 |
|
||
| CLEF bnb-int8 | same + LLM.int8() | 190 | +0.0006 [−0.0114, +0.0120] | **−0.0333 [−0.0571, −0.0119]** | .090 | .239 / .043 |
|
||
| RSI-Jev v6.1-VL-4B @ 7f93b192 (HF rev) | `rsi-jev serve --effort auto` | 179 | −0.0149 [−0.0303, +0.0006] | **−0.0548 [−0.0905, −0.0214]** | .208 | .274 / .061 |
|
||
|
||
Paired battery: 1,748 scorable rows against the 10-04 INC r1 rows (same
|
||
harness, harness scorer), 10k seeded bootstrap (seed 1012). All arms ran the
|
||
full battery: negative control crushed for H2O (it abstains — the loaded-name
|
||
trap works), soft for Clef (.111/.090) and RSI (.208 — the weakest trap of the
|
||
run). Calibration as shipped, jevbench 231: H2O is the ONLY arm with a better
|
||
Brier than INC, and its ECE is the second-best.
|
||
|
||
## Speed and the 32k shapes (calibrated per tokenizer to 32,743 ±2%; realised tokens logged)
|
||
|
||
cold = first request after ready; warm = median of 5; launch→ready its own
|
||
column. INC crit cells re-measured today on the seat path (2-call 16+5 split
|
||
for crit21, per contract); 32k INC cells reused from today's 32k run (maxfit
|
||
16q at 32,708 tokens, 1,960 ms — the prereg's 1.95 s anchor).
|
||
|
||
| arm | crit16 warm ms | crit21 warm ms | 1q32k warm ms (realised tok) | 16q32k warm ms (realised tok) | 16q32k peak MiB | launch→ready s |
|
||
|---|---|---|---|---|---|---|
|
||
| INC | 110 | 198 (2-call) | 1,960 (32,715)* | 1,960 maxfit (32,708)* | 8,822 | 20 |
|
||
| H2O | 137 | 168 | 179 (32,082 — **TRIMMED**) | 1,308 (32,574) | 15,464 | ~280 → **154** (measured, see addendum 1a) |
|
||
| CLEF bf16 | 210 | 138 | 2,948 (32,730) | 2,962 (32,768 cap) | 32,130 | 12 |
|
||
| CLEF int8 | 238 | 176 | 3,262 (32,730) | 3,284 (32,768 cap) | 23,080 | 18 |
|
||
| RSI | 112 | 69 | 1,224 (32,758) | 2,405 (33,205) | 21,158 | 68 |
|
||
|
||
\* reused 32k-run cells; INC's `/v1/systemone` enforces a 32,768-token
|
||
contract, so its honest 16q32k is a maxfit single forward.
|
||
|
||
Both Clef arms sit exactly on 32,768: the vendor loader with max_length=32768
|
||
honours the window but caps there — 16q over 32k state counts state once per
|
||
request at the wire, and the loader slices to window. Their "warm" at that
|
||
shape is the fastest honest path, but the state never exceeds the window.
|
||
RSI realised 33,205 — it has no hard cap; honest 32k+ shape.
|
||
|
||
**H2O's trim, the named risk, confirmed:** the shape calibration plateaued at
|
||
32,082 realised tokens across builder lengths 46,953→51,097 (full history in
|
||
`arm-h2o/shape32k.stdout`) — the shim head/tail-trims at 32,000 exactly as on
|
||
10-04 (24,834 effective then, 32,082 now: the trim moved but did not go away).
|
||
The gate itself scores OK at every depth (the evidence sits mid-state and
|
||
survives the trim), so the failure mode is silent: **accuracy at 32k is
|
||
measured on a truncated state and the response says nothing about it.**
|
||
|
||
## Long-input gate (1k/8k/16k/30k + positive/null, tokens-to-model logged)
|
||
|
||
| arm | verdict | evidence |
|
||
|---|---|---|
|
||
| INC | clean | reused; no trim observed on seat path |
|
||
| H2O | **FAIL — silent truncation** | calibration plateau at 32,082; `usage.input_tokens` reports the post-trim count, not the sent count |
|
||
| CLEF bf16 | clean (window=32,768 honoured) | d30000 OK; no plateau below the window |
|
||
| CLEF int8 | clean | as bf16 |
|
||
| RSI | clean | 32,758 realised, no plateau; d30000 OK |
|
||
|
||
## Decision-rule application (fixed at 2e0539f)
|
||
|
||
**H2O-lightning-4b — SHORT-ROUTE CANDIDATE.** Fits the budget at every shape
|
||
incl. 16q32k (15,464 ≤ 16,847); battery CI lower bound +0.0023 > 0; Wyrd
|
||
−0.0167 ≥ −0.02; 16q32k warm 1.31 s ≤ 2.94 s (passes latency by the letter,
|
||
and it is genuinely the fastest at the worst shape because the shim's
|
||
single-count protocol answers over a *truncated* state). Fails only the gate
|
||
clause: silent truncation at 32k. Recorded, not acted on. Note for whoever
|
||
eventually evaluates it for the seat: the trim is inside the vendor's shipped
|
||
serving code — a supersede needs the vendor to fix the shim, not us to patch
|
||
around it.
|
||
|
||
**CLEF bf16 — LATERAL, memory-out.** Battery CI straddles zero; Wyrd fails;
|
||
rest 18,854 MiB does not fit the budget at all; 16q32k warm 2,962 ms fails the
|
||
latency clause by 22 ms (0.7%) at peak 32,130 MiB (1.9x the budget).
|
||
**CLEF int8 — LATERAL.** Fits short shapes (rest 12,084) but the battery CI
|
||
straddles zero, so it is not even a short-route candidate; 16q32k fails both
|
||
memory (23,080) and latency (3,284).
|
||
**RSI-Jev — LOSS.** Public −23 items (outside ±3), battery Δ −0.0149 with CI
|
||
[−0.0303, +0.0006], Wyrd −0.0548, negative control softest of the run. Its
|
||
serving numbers are respectable (clean gate, latency pass at 16q32k) — it is
|
||
the decision quality that loses.
|
||
|
||
## Housekeeping
|
||
|
||
- Repo pins: RSI-Jev serving code = main @ fa70834 (pinned commit recorded per
|
||
prereg; the 7f93b192 sha is the **HF model revision**, not a repo commit —
|
||
it is not an ancestor of main and was resolved as a snapshot).
|
||
- Licence flags as prereg'd: Clef Apache-2.0 fine; RSI has no LICENSE file at
|
||
source and lists a research-only training source — flagged once, does not
|
||
block a bench, deployment rights are the operator's call.
|
||
- Teardown: all bench servers stopped, no listeners on 1809x, GPU 3 guard read
|
||
2 MiB, no firewall rules were needed (loopback-bound ports only).
|
||
- Weights KEPT (operator ruling stands): model-runtime now 116 GB total
|
||
(adds h2o 9 GB blob-set, clef 18 GB, RSI 5.5 GB), plus materialized
|
||
`pkg-h2o` 9.0 GB and `pkg-clef` 18 GB serving dirs and the RSI-Jev clone
|
||
72 MB. `/tank` 63% used, 3.2 TB free.
|
||
- Artifacts: `fv-ml1:/tank/bench/arm-{h2o,clef-bf16,clef-int8,rsi,inc}/`
|
||
(jevbench ×3, sets.json battery, gate, shape32k, crit16; h2o additionally
|
||
`shape32k-forced.json` recording the trimmed-shape cells and
|
||
`shape32k.stdout` the plateau history).
|
||
|
||
## What was NOT run
|
||
|
||
Nothing from the prereg matrix was skipped. One methodology note: INC's
|
||
battery/gate rows are the 10-04 r1 rows (reused cells, harness unchanged and
|
||
bit-exact reproduced this morning at 202/231), and the paired bootstrap seeds
|
||
differ between the morning doc (42) and this one (1012) — both are seeded and
|
||
re-runnable; the h2o CI lower bound of +0.0023 is close enough to zero that
|
||
the choice of seed is worth knowing about, and it survived re-runs under
|
||
seed 42 unchanged ([+0.0023, +0.0257] on both).
|
||
|
||
## Amendment 1 addendum — the h2o confirmation run (operator: a 32,000-token limit is acceptable)
|
||
|
||
Prereg Amendment 1 @ 63d7a1b (plus 1a, boot timing). The seat contract under
|
||
h2o is 32,000 tokens (state + questions); the failed clause was the shim's
|
||
*silence*, not the limit. Stack: vLLM 0.30.0 + shipped shim unmodified, GPU 3,
|
||
plus a **thin admission wrapper** (task 2 recorded: no shim config option for
|
||
admission exists — `max_state_tokens` only configures the trim). The wrapper
|
||
imports the shipped renderers, asks vLLM's own `/tokenize` for the count of
|
||
each question's exact prompt, and refuses over-cap with 422 + an explicit
|
||
error naming the count (`refused, not trimmed`). No vendor file was edited.
|
||
It polices both currencies: per-question prompt max AND the shim's own
|
||
shared-head + tails total.
|
||
|
||
**(1)+(2) Gate re-run through the wrapper, 32k states, evidence at depth.**
|
||
Every admitted cell reports `usage.input_tokens` exactly equal to the wrapper
|
||
count — the trim is now unreachable below the cap, so the report is honest:
|
||
|
||
| depth | admitted | tokens sent = reported | answer |
|
||
|---|---|---|---|
|
||
| ~1,000 | yes | 31,700 | supported ✓ |
|
||
| ~8,000 | yes | 31,862 | supported ✓ (p: .907/.027/.066) |
|
||
| ~16,000 | yes | 29,508 | supported ✓ |
|
||
| ~30,000 | yes | 31,885 | supported ✓ |
|
||
| over-cap probes (×2) | **refused** | 39,805 / 40,336 tokens | 422, named count, every time |
|
||
|
||
Evidence answered correctly at every depth — the 10-04 depth-dependent
|
||
evidence loss is gone at these sizes (it lived INSIDE the trimmed window).
|
||
**Clause (2): clean.**
|
||
|
||
**(3) Largest-admissible shapes** (state pinned by the wrapper so the 16-q
|
||
request totals ≤ 32,000; realised 31,377 max-prompt / 31,867 total):
|
||
1q cold 213 ms / warm 194 ms; **16q cold 2,123 ms / warm 2,033 ms** (second
|
||
pass: 2,141/2,041). Cold = first request after backend ready on a restarted
|
||
container (compile cache mounted; calibration probes excluded).
|
||
**Clause (3): PASS** — warm 16q is 2.03 s against the 2.93 s bar, and it is
|
||
the fastest honest 32k cell of any arm this bench measured.
|
||
|
||
**(4) Concurrency:** 4 concurrent 16q × 32k on `--max-num-seqs 16`: all four
|
||
answered correctly, wall 7.08 s, **peak 15,566 MiB** against the GPU 1 budget
|
||
re-measured at run time (16,847 MiB; non-seat residents unchanged: 43,998 +
|
||
34,994). Headroom 1,281 MiB. **Clause (4): PASS** — the clause brokkr flagged
|
||
as most likely to bite did not bite; KV pressure at 4× concurrency grows
|
||
sub-linearly because all four requests share the prefix.
|
||
|
||
**(1a) Boot matrix** (reported, not gated): cold launch→ready median **153.6 s**
|
||
(min 149.4 / max 185.7, n=3), warm (persistent compile cache) **153.5 s** (n=3),
|
||
enforce-eager 161.9 s (n=1). Phases: weights 4.3 s, engine init 133.6 s (CUDA
|
||
graph capture ~77 s, torch.compile ~13 s), shim label-verification 3.1–3.7 s.
|
||
Two corrections to the main doc's boot row: the earlier ~280 s was measured
|
||
without a persistent cache mount and was never reproducible (use ~154 s);
|
||
warm cache saves nothing here because boot is graph-capture-bound, and
|
||
eager mode — which skips capture entirely — is *slower* (161.9 s), so there
|
||
is no faster-boot knob to grab. INC boots in 35 s; h2o's swap would cost
|
||
~2 min of boot per restart.
|
||
|
||
**(5) Wyrd item by item** (168 scorable rows; 8 disagree, h2o gains 3, loses 5,
|
||
net −2 — matching the −0.0167 point estimate; for Wyrd's owner):
|
||
|
||
| item | h2o | INC | gold | verdict |
|
||
|---|---|---|---|---|
|
||
| fletcher/f-go-tavern exit2 | stay | tavern | tavern | h2o wrong |
|
||
| fletcher/f-leave-town exit | meet_wren | stay | stay | h2o wrong |
|
||
| fletcher/f-memory exit | meet_wren | stay | stay | h2o wrong |
|
||
| fletcher/f-wren-comes exit2 | stay | meet_wren | meet_wren | h2o wrong |
|
||
| toll/t-granted place | moved | holds | moved | h2o right |
|
||
| toll/t-questions exit | departure | stay | stay | h2o wrong |
|
||
| vigil/v-to-pub exit2 | stay | outside | stay | h2o right |
|
||
| vigil/v-to-pub place | moved | holds | moved | h2o right |
|
||
|
||
Pattern worth noting: h2o's losses are all fletcher-scene *exit* decisions
|
||
(six of them in one scene family); its gains are the toll/vigil *place*
|
||
updates. No relabels (zero rows correct-but-renamed).
|
||
|
||
**Amendment 1 verdict: all three pass clauses hold.** (2) clean, (3) 2.03 s,
|
||
(4) 15,566 ≤ 16,847. Per the amendment's fixed rule, h2o-lightning-4b now
|
||
passes every Supersede clause — with the two honest caveats that its contract
|
||
is a REFUSING 32,000-token seat (not INC's silent-any-size behaviour), and
|
||
boot is 4.4x INC's. The seat swap is a decision for the operator and
|
||
infra-ops; the bench does not swap anything.
|
||
|
||
Teardown after the confirmation: wrapper, shim and container stopped; GPU 3
|
||
guard re-read 2 MiB before release; weights still kept (model-runtime 116 GB
|
||
+ 27 GB materialized serving dirs).
|