Skip to content

Model equivalence (Standardized division)

If you are submitting Standardized, this page governs every optimisation decision you are about to make. If you are submitting Serviced, augmentation is allowed with disclosure; RDI allows it without that requirement. For both, this page is background only.

The policy repository wins

This page summarises policy in submitter language. It does not restate it. Where this page and mlcommons/endpoints_policies disagree, the policy repository is correct and this page is a bug. Please report it.

The rules themselves are in §2.9 of the rules, with the disallowed list in §2.2.1. This page tells you which part to read for which decision, and adds what the checker does.

Check your assumptions here

Endpoints inherits the MLPerf Inference model-equivalence rules, then deliberately diverges in three places: cross-query KV reuse, dynamic approximate sparsity, and quantization of a speculative-decoding drafter. If you've submitted to MLPerf Inference before, recheck your assumptions on all three.

The framing: disallowed-only

Anything not on the disallowed list, and not in conflict with §2.9, is permitted (§2.2.1, including the note on why). You don't need permission for a technique that isn't banned, but you do need to pass the accuracy gate and meet the disclosure requirements.

Parameters the benchmark fixes

Sampling parameters and anything else the reference implementation marks as fixed must not be changed (§2.9.1). This was made explicit in 2026-09. It doesn't narrow what was already allowed; it closes the reading that a parameter not otherwise mentioned in the rules was yours to tune.

Always disallowed

The full list is under Disallowed optimizations in §2.2.1. The entries that catch people out are response caching (distinct from KV reuse, which is allowed), input-based optimization, client-side dispatch manipulation, and speculative decoding with a drafter that isn't on the benchmark's approved list (below).

Weights

Start from the canonical weights. Post-training quantization is the permitted transformation, under four conditions; fine-tuning, pruning and distillation are not (§2.9.3).

The checkpoint must stay complete

You may not strip components from the derived checkpoint

A derived checkpoint must keep every component the reference checkpoint ships, MTP and EAGLE-style heads included, even ones you don't use (§2.9.3). Not using a component at run time is fine; removing it from the artifact is not.

Residency is undecided

Whether a component present in the checkpoint must also be resident in accelerator memory during measurement is an open working-group item, and the freed memory converts directly into KV-cache capacity. Tracked upstream as [CKPT-RESIDENCY], and here under Likely to affect your optimisation choices in Open questions.

Speculative decoding

Allowed only with a drafter on your benchmark's approved list. The list, how drafters get on it, what disqualifies one, what you can't do with an approved drafter, and the per-point disclosure are all in §2.9.4. Tree-structured verification is covered in Q6 of §2.9.9.

Approved heads exist for the agentic benchmarks only

The client's agentic README lists the approved heads for Kimi K3, and the approved DeepSeek-V4.1-Flash checkpoint ships its own. There's no list for the legacy benchmarks. The checker's bundled list is still empty, so it rejects any point that uses speculative decoding for now. Tracked as C10 in Open questions.

What the checker enforces:

  • approved-drafter: the drafter you declare must match a list entry.
  • drafter-approval-lead-time: a newly approved drafter is usable only from two cohorts after the list update, counted against your target_cohort.

Both reject the affected points, not the whole submission (§9.1). Across the curve it's one drafter; its configuration can vary per point, including switching speculation off. The drafter's details go in the speculative_decoding block of point.yaml (§8.3).

KV cache: the big difference

Cross-query KV reuse is permitted in Endpoints

Sharing KV state across requests, including prefix caching of the shared system prompt, is allowed. MLPerf Inference prohibits it (§2.9.5).

A per-query salt between system prompt and user context is what keeps this sound; its requirements are in §2.9.5.1. Accuracy runs use the un-salted dataset, and you don't have to switch KV reuse off for them. Reduced-precision KV and non-reference compression have to be disclosed.

Pre-tokenizing clients must salt the token stream

If your client sends input_tokens, the salt has to be in the token stream the system receives. Salting only a prompt text field is non-compliant. The two conforming approaches are under Clients that pre-tokenize in §2.9.5.1.

Agentic benchmarks salt differently

They use benchmark-specific salting switched on by benchmark-specific flags, which must be enabled (§2.9.5.1). Which flags, for which benchmarks, is not yet published — see Open questions.

Not portable to MLPerf Inference

Code paths that rely on cross-query KV reuse won't carry over to an MLPerf Inference submission without disabling it.

Sparsity and approximate computation

The test is whether a technique changes the tokens the model emits for any input (§2.9.6.1). Where that puts a technique:

If the technique… Status Section
is mathematically equivalent (exact sparse ops, online softmax, softmax elision under greedy) Permitted, no disclosure §2.9.6.2
implements sparsity the canonical architecture specifies (native sparse attention, MoE routing) Required §2.9.6.3
derives sparsity at run time from scores or activations (the Endpoints-specific delta) Permitted under the accuracy gate, no benchmark-data calibration, disclosed §2.9.6.4, §2.9.6.6
changes structure: attention pattern, normalization, weight-side sparsity, removed experts Disallowed, whatever accuracy does §2.9.6.5

Pre- and post-processing

Tokenization, chat template, truncation, detokenization, stop handling and sampling all have to match the reference (§2.9.2, §2.9.7).

Chat-template flags count too

Since 2026-09 the rule names the template's flags explicitly, such as enable_thinking. Flipping a thinking flag changes the effective input to the model, so it is a template modification, not a serving-side setting.

The accuracy gate is necessary, not sufficient

It is not a general override

Hitting the quality target doesn't make a banned technique model equivalent (§2.9.8).

These rules are a working draft

MLPerf Endpoints v1.0 rules are on an active development branch. Sections marked [TENTATIVE], [WIP], [WG Open Item] or [WG Decision Required] upstream can still change. Before committing hardware time to a submission, read Open questions and WIP rules.

Last verified against: mlcommons/endpoints_policies@v1.0_rules_dev (d2d9da6), mlcommons/endpoints-submission-cli@main (a42a056, v1.1.0.0) and mlcommons/endpoints@main (f1100cf), 2026-10-02.