Skip to content

Submission checker — submission-checker

Validates a submission folder against the automated compliance rules — the same checks that run server-side during Week 0. Used in step 6.

Ships with endpoints-submission-cli.

check

submission-checker check /path/to/submission

The path may be the submitting organisation's directory or a <submission_id>/ directory below it. A submission root is the level holding results/ and docs/.

Flag Description
--strict Treat warnings as errors — exit 1 on any warning
--quiet / -q Suppress INFO-level passing checks
--output FILE / -o FILE Write full results as JSON
--seed-sets FILE Published seed sets to check against. Defaults to the bundled set; also settable via $MLPERF_ENDPOINTS_SEED_SETS

Exit codes: 0 all checks passed · 1 one or more errors, or warnings under --strict.

Run with --strict at least once

Warnings are where methodology objections come from. A point that merely warns on duration or region placement is the kind of thing reviewers raise objections about in Weeks 1–3.

regions

submission-checker regions --max-concurrency 1024 --min-concurrency 16

Prints the concurrency range for each region for a given (C_max, C_min) pair, using the reference algorithm.

--min-concurrency defaults to 32. In a real submission C_min is derived from the lowest measurement point rather than declared, so the boundaries you get here are only correct if you pass the C_min you will actually submit.

Full algorithm and pre-computed tables: Metrics and regions.

Programmatic API

from pathlib import Path
from submission_checker import SubmissionChecker, Report

checker = SubmissionChecker(Path("/submissions/acme_corp"))
report = checker.run()

if report.passed:
    print("All checks passed")
else:
    for result in report.errors:
        print(f"[{result.rule}] {result.message}")

Report also exposes report.warnings and serialises via report.model_dump_json(). Wiring this into CI validates your disclosure files on every change.

Seed sets

The published sets ship as data at src/submission_checker/data/seed_sets.yaml. Point --seed-sets FILE or $MLPERF_ENDPOINTS_SEED_SETS at a newer file to check against a set published after the installed release.

The bundled set is provisional

The shipped file carries a single set (id: A), mirrored from a policy PR that was still open when the tooling was released, with cohorts: []. Because the upstream file carries no cohort keys, the seed-set-adoption test reports SKIP rather than passing. Confirm the correct set with MLCommons before running. Tracked as B4 in Open questions.

Expected layout

<submitting_organization>/
└── <submission_id>/
    ├── src/
    │   └── <implementation>/
    │       └── README.md            # required
    ├── docs/
    └── results/
        └── <system>/
            └── <model_name>/
                └── r<N>/
                    ├── point.yaml
                    ├── system_desc.json
                    ├── result_summary.json
                    ├── accuracy_results.json
                    ├── config.yaml            # OPTIONAL as of v1.0
                    └── server_configs/        # OPTIONAL

src/ and docs/ are shared across the whole submission; each point.yaml names them via shared_src and shared_docs, which must resolve to a directory under the submission root.

What gets checked

Seven families of rules. Full cross-walk from rule ID to clause, with severity: Compliance checks.

Family Covers
Structure Directories, required files, shared-path resolution
System description Schema validity, consistency, model name, C_max, tps_utilization
Regions Derived C_min, boundary computation, coverage of all four regions, point count and cap
Measurement points point.yaml schema, disclosure completeness, load pattern, streaming, duration, query count, warmup
Seed binding Set consistency, membership, runtime match, target cohort, adoption window
Metrics Result schema, duration, sample accounting, system_tps, TPOT P90, tps_per_user
Accuracy Presence, validity, sample count, quality gate

Last verified against: mlcommons/endpoints-submission-cli@main (f48ca84), 2026-09-19.