← back to the archiveCover illustration for “Temperature zero is not a determinism guarantee”
POSTday 56·7w ago·by Andy Padia

Temperature zero is not a determinism guarantee

Temperature zero controls token selection, not the entire serving path. Separate fresh inference, cached research and saved verdicts before promising repeatable results.

One prompt, temperature zero, 1,000 completions: 80 different outputs. Horace He and colleagues at Thinking Machines Lab reported that result for Qwen3-235B-A22B-Instruct-2507 in non-thinking mode. Then they enabled batch-invariant kernels and obtained 1,000 identical completions.

Both halves matter. The first defeats the promise that a sampling setting guarantees repeatability. The second defeats the idea that deterministic inference is impossible, or that a cache is the only way to obtain it.

Their September 2025 investigation explains how changing batch sizes can change floating-point reduction paths. Greedy selection can then choose a different token because the numbers reaching the sampler differ. That is a demonstrated mechanism in the studied stack, not a diagnosis of every hosted API or every inconsistent application. These are the authors' results; I haven't reproduced their inference experiment.

Name the thing that stays the same

My rule for a repeatability promise is to make the team finish this sentence: “The same inputs produce the same ___.” Exact text, a parsed score and a business decision are different commitments. A system can satisfy one and fail another.

As an illustration, consider a pitch scorer that retrieves pay-range research, sends that evidence to a model and maps the response to pass, caution or fail. The research lookup might come from a database while the verdict is generated afresh. Calling that application “cached” tells the reviewer very little.

I would separate the review into three checks:

  • Research reuse: which external facts were reused, under what key and from what date?
  • Fresh inference: which model, request settings, prompt and evidence produced this response?
  • Decision replay: was the final verdict recomputed, or was an existing result returned unchanged?

Keeping those checks separate prevents a common review shortcut: treating evidence that one stage repeated as proof that the whole application repeated. It also gives the failure somewhere specific to land. A changed source document calls for a different investigation from a changed answer to an otherwise fixed request.

A saved answer is a different contract

For an application that needs to replay a decision, I would store the accepted result with the inputs and policy version that gave it meaning. The proposed contract is then explicit: return this recorded decision for this recorded case. It is not a promise to regenerate identical text from a model.

That choice needs an invalidation policy. In the pitch-scorer illustration, a changed pay range or scoring rule could make yesterday's verdict inappropriate today. A time-to-live can be one control, but I would also account for known source and policy changes rather than wait for a timer. Repeating an answer and justifying it are separate jobs.

For fresh inference, I would ask the serving team what reproducibility they actually support and under which configuration. Don't diagnose batch sensitivity from a screen recording of two different answers. Preserve the request, retrieved inputs and version information first; otherwise the comparison may not even hold the application inputs fixed.

Test the promise you intend to sell

Before signing off, I would run repeated requests against a fixed test set and compare the exact output, parsed fields and final decision separately. Then repeat the exercise after deliberately changing one dependency, such as a source snapshot or scoring rule. This is a proposed test plan, not a result from a client deployment.

The useful report should distinguish observed repeatability from a supported guarantee. A finite run without differences is evidence about those runs; it isn't proof that every future request will match. Conversely, one difference is enough to reject an unconditional exact-output promise for the tested configuration.

Temperature zero is a setting. Repeatability is a contract: name what repeats, preserve its inputs and test the boundary that promises it.

#llm-inference#determinism#evals#reproducibility#caching
← older drop
Vulnerability counts need a CVE ledger
newer drop →
Agent harnesses need maps, not more manuals

related drops

explore all 128 drops →
← back to the archiveday 105