Skip to content

benchmarks: repeat runs are byte-identical since the Aug-25 anchor — #1947's N>=3 protocol and its ±0.58 noise band rest on an unexplained change #2642

Description

@Xore

Found while harvesting the #1805-c ghidra-slot round (PR #2641).

The observation

In that round, all 12 models on both tiers scored identically on all three
repeats — and every one of the 14 answer strings was byte-identical across
repeats.
Only wall_seconds moved.

This is not an aggregation artifact. The 62 runs each have their own
transcript_run_id, their own transcripts_sha256, and their own wall times;
three independent lanes logged each start and finish; the resume guard keys on
the output filename and each repeat wrote a new one. They are genuinely
separate executions that produced identical bytes.

Why it matters

  1. N = 3 bought nothing. The round burned 37.4 h of model-wall, of which
    22.1 h (59%) re-derived identical bytes.
    Parts 1 and 2 of One benchmark, every model, every aspect: rebuild the model matrix on current hardware with error bars #1947 show the
    same ±0-dominant spread and very likely paid the same tax undiagnosed.
  2. One benchmark, every model, every aspect: rebuild the model matrix on current hardware with error bars #1947's protocol rests on a noise band that is not a measured property of
    the current code.
    Rule 3 mandates N >= 3 on the strength of Benchmark fidelity: run real Ghidra over the #159 corpus so models are scored on production-shaped input #1805-b's
    2026-08-25 measurement: four runs of one model at temp 0 / seed 144 /
    identical digest scoring 56, 56, 55, 55, with 7 of 14 cases moving and 0 of
    14 answers byte-identical. Two days later, nothing moves at all. ±0.58
    must not be used to dismiss small margins in post-fix(benchmarks): send thinking:false, and stop paying for an empty answer #1953 matrices
    until
    this is understood.
  3. It changes what a single number is worth, in both directions, and the
    promote/no-promote calls in One benchmark, every model, every aspect: rebuild the model matrix on current hardware with error bars #1947 depend on that.

What is NOT established: the cause

The obvious candidate is f3f4c14 (#1953), merged between the two
measurements, which added reasoning_effort: "none" to every request. A
direct probe refutes that as a sufficient explanation.
Ollama 0.32.13 on the
analysis host, identical prompt, temperature 0, seed 144, three repeats each
way:

model reasoning_effort: "none" parameter omitted
qwen2.5-coder:7b-instruct-q4_K_M identical x3, sequential and concurrent 2 distinct outputs, both ways
qwen3:8b first call differs, then stable first call differs, then stable

qwen3:8b is not byte-stable under the probe, yet it was perfectly stable
across all six of its benchmark runs. So the parameter is not the explanation,
and the probe is not a clean replication either — it repeats one short prompt,
where the harness sends 14 distinct long ones.

What the probe does settle: concurrency is not the variable. The
container runs OLLAMA_NUM_PARALLEL=1 / OLLAMA_MAX_LOADED_MODELS=1, requests
to a model are serialised and never batched, and the deterministic arm stays
byte-stable under three simultaneous requests.

Remaining hypotheses worth testing, none of them checked: cold-load vs warm
state (the probe's first-call-differs pattern points here), KV-cache prefix
reuse across repeated identical prompts, prompt length, and model-eviction
behaviour under MAX_LOADED_MODELS=1 when lanes interleave.

What to do

  1. Establish the cause with a replication that matches the harness request
    shape — long corpus prompts, 14 distinct cases per run, same eviction
    pattern — rather than a synthetic short prompt.
  2. Then set an N policy explicitly in the One benchmark, every model, every aspect: rebuild the model matrix on current hardware with error bars #1947 protocol instead of
    inheriting N >= 3. If repeat-identical requests are genuinely
    deterministic, repeats belong on the axes that are not fixed (seed,
    quant, prompt phrasing), not on the one that is. That is a strictly better
    use of the same GPU hours.
  3. Until then, treat run-to-run spread in the Benchmark fidelity: run real Ghidra over the #159 corpus so models are scored on production-shaped input #1805-c matrix as
    uninformative, not as evidence the harness is noise-free — and do not
    quote ±0.58 as its noise floor.

Note this does not invalidate the #1805-c scores; it invalidates the error bars
around them, which are all exactly zero for a reason nobody has yet pinned.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

enhancementNew feature or requestllmLLM analysis workermlML worker and GPU scoring

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions