From 16144a7e02dd23cdbb4d0a93ffb15aaf37746f7b Mon Sep 17 00:00:00 2001 From: Liang Juhao Date: Tue, 19 May 2026 11:22:10 +0800 Subject: [PATCH 1/5] =?UTF-8?q?chore:=20OSS=20readiness=20audit=20?= =?UTF-8?q?=E2=80=94=20license,=20schema,=20validators,=20refactor,=20docs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Phase 1 — Legal & attribution - Align license: pyproject.toml + README badge → Apache-2.0 (matches LICENSE). - Add NOTICE summarising bundled third-party data and upstream terms. - Add License & attribution sections to datasets/README.md and each datasets/sharegpt_*_v1/README.md (CC BY 4.0, upstream link). - Add schema/accuracy_subset.README.md documenting the MMLU subset (MIT). Phase 2 — Contributor experience & validation - Fix doc drift in DEVELOPMENT.md, README.md, runners/README.md, suites/README.md, runners/template/runner.py (rename SUPPORTED_QUANTIZATIONS → SUPPORTED_QUANTIZATION_BACKENDS in *editable* files only; existing runner.py hashes untouched). - Add schema/suite.schema.json + runners/validate_suites.py and wire both into validate_pr.yml / generate_leaderboard.yml. - Add .github/ISSUE_TEMPLATE/new_suite.md for community suite proposals. - CONTRIBUTING.md: add local leaderboard preview instructions. - .gitignore: ignore node_modules/, .cursor/, .aider*, .envrc, .direnv/. Phase 3 — Code quality & CI - runners/benchmark_runner.py: * Remove dead code (stub format_prompt, dead spec-decoding branch, redundant acc_result init, duplicated _build_result_json block). * Extract helpers (_prepare_load_context, _score_accuracy_questions, _write_accuracy_artifacts) shared between accuracy scenarios. * Replace inference dispatch if/elif ladder with _SCENARIO_REGISTRY (ScenarioSpec dataclass: inference_kind, use_async, merge_key…). * _MERGE_SCENARIO_KEYS now derived from the registry. Net −111 lines. - leaderboard: split SUITE_META into leaderboard/site/assets/data/suite-meta.js, data.js re-exports it (data.js 1010 → 800 lines). - validate_pr.yml: add python-tests job (serve + openclaw_skill pytest). - pyproject.toml: setuptools.packages.find now lists loadgen/runners/ serve/openclaw_skill explicitly and excludes tests*. README hero & citation - Embed docs/assets/framework-overview.png under nav links and docs/assets/chip-cloud.png in a new "Currently on the leaderboard" section. - Expand BibTeX author list in the Citation section. Co-authored-by: Cursor --- .github/ISSUE_TEMPLATE/new_suite.md | 75 +++ .github/workflows/generate_leaderboard.yml | 6 +- .github/workflows/validate_pr.yml | 67 ++- .gitignore | 9 + CONTRIBUTING.md | 15 + DEVELOPMENT.md | 60 +- NOTICE | 71 +++ README.md | 37 +- datasets/README.md | 16 + datasets/sharegpt_edge_v1/README.md | 32 +- datasets/sharegpt_longctx_v1/README.md | 17 +- datasets/sharegpt_standard_v1/README.md | 14 +- docs/assets/chip-cloud.png | Bin 0 -> 219759 bytes docs/assets/framework-overview.png | Bin 0 -> 146196 bytes leaderboard/site/assets/data/suite-meta.js | 230 ++++++++ leaderboard/site/assets/js/data.js | 230 +------- pyproject.toml | 22 +- runners/README.md | 18 +- runners/benchmark_runner.py | 629 ++++++++++----------- runners/template/runner.py | 21 +- runners/validate_suites.py | 164 ++++++ schema/accuracy_subset.README.md | 58 ++ schema/suite.schema.json | 215 +++++++ suites/README.md | 18 +- suites/suite_C/suite.json | 2 +- 25 files changed, 1415 insertions(+), 611 deletions(-) create mode 100644 .github/ISSUE_TEMPLATE/new_suite.md create mode 100644 NOTICE create mode 100644 docs/assets/chip-cloud.png create mode 100644 docs/assets/framework-overview.png create mode 100644 leaderboard/site/assets/data/suite-meta.js create mode 100644 runners/validate_suites.py create mode 100644 schema/accuracy_subset.README.md create mode 100644 schema/suite.schema.json diff --git a/.github/ISSUE_TEMPLATE/new_suite.md b/.github/ISSUE_TEMPLATE/new_suite.md new file mode 100644 index 00000000..4c358a18 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/new_suite.md @@ -0,0 +1,75 @@ +--- +name: Propose a new suite +about: Propose a new benchmark suite (new model, scenario mix, or scaling axis) +title: "[Suite] " +labels: suite-proposal +assignees: '' +--- + + + +## Why this suite? + + + +## Suite contract (draft) + +| Field | Proposed value | +|---|---| +| **Suite ID** | `suite_` | +| **Model** | `` | +| **Model revision** | `` | +| **Chip count** | `1` / `auto` / specific number | +| **Precision** | `BF16` / `FP16` / list of allowed precisions | +| **Dataset** | existing (`sharegpt_standard_v1`, `sharegpt_edge_v1`, `sharegpt_longctx_v1`) or new | +| **Max model length** | tokens | +| **Output tokens (max)** | tokens | +| **Concurrency levels** | e.g. `[8, 32, 128]` | +| **Default scenarios** | subset of `accuracy / offline / online / interactive / sustained` | +| **Extra scenarios** | optional: `sustained / speculative / burst / …` | +| **Primary metric** | `offline_throughput`, `max_valid_qps`, … | +| **Expected run time on A100** | minutes | + +## Accuracy baseline + + + +- [ ] I will provide an A100 (or equivalent reference) BF16 baseline score + to add to `schema/accuracy_baselines.json`. +- [ ] If a new dataset is required, I will submit it under + `datasets/_v1/` with a `README.md` that documents the source + and upstream license (see [`datasets/README.md`](../../datasets/README.md)). + +## Custom orchestration? + + + +- [ ] Standard scenario dispatch is enough — no `suite.py` needed. +- [ ] A `suite.py` plugin is required. Reason: + +## Reference result plan + + + +- Reference hardware: +- Runner: `` +- Who will run it: <@your-handle / vendor / community member> + +## Open questions + + diff --git a/.github/workflows/generate_leaderboard.yml b/.github/workflows/generate_leaderboard.yml index 31dec72d..04d51173 100644 --- a/.github/workflows/generate_leaderboard.yml +++ b/.github/workflows/generate_leaderboard.yml @@ -11,8 +11,9 @@ on: paths: - 'results/**' - 'leaderboard/**' + - 'suites/**' + - 'schema/**' - 'tools/generate_platforms_matrix.py' - - 'schema/platforms.json' - 'runners/*/meta.json' # Allow manual trigger from Actions tab (useful for first deploy or to @@ -37,6 +38,9 @@ jobs: - name: Validate all runner meta.json files and hashes run: python runners/validate_runners.py + - name: Validate all suite definitions + run: python runners/validate_suites.py + generate: name: Generate and deploy leaderboard runs-on: ubuntu-latest diff --git a/.github/workflows/validate_pr.yml b/.github/workflows/validate_pr.yml index d24bbf16..43054c8f 100644 --- a/.github/workflows/validate_pr.yml +++ b/.github/workflows/validate_pr.yml @@ -8,7 +8,8 @@ on: paths: - 'results/**' - 'runners/**' - - 'schema/platforms.json' + - 'suites/**' + - 'schema/**' - 'tools/generate_platforms_matrix.py' - 'README.md' - 'leaderboard/site/**' @@ -89,6 +90,29 @@ jobs: python tools/generate_platforms_matrix.py --check echo "::endgroup::" + validate-suites: + name: Validate suite definitions + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-python@v5 + with: + python-version: "3.11" + cache: pip + + - name: Install dependencies + run: pip install jsonschema + + # Always validate every suite (and re-validate on schema changes too). + # This catches drift introduced by shared changes — e.g. a + # suite.schema.json edit that breaks an unrelated existing suite. + - name: Validate all suite folders (drift check) + run: | + echo "::group::Validating every suite folder in the repo" + python runners/validate_suites.py + echo "::endgroup::" + validate: name: Validate result submissions runs-on: ubuntu-latest @@ -225,4 +249,43 @@ jobs: # extra files to leaderboard/site/test/ to widen coverage; the # glob below picks them up automatically. - name: Run leaderboard frontend tests - run: node --test leaderboard/site/test/*.test.mjs \ No newline at end of file + run: node --test leaderboard/site/test/*.test.mjs + + python-tests: + name: Python unit tests (serve + skill) + runs-on: ubuntu-latest + # Lightweight checks for the FastAPI serve layer and the OpenClaw skill + # entry point. No GPU, no real model — everything is mocked. Tests are + # opt-in per package so missing deps in one folder don't take the rest + # of the suite down with them. + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-python@v5 + with: + python-version: "3.11" + cache: pip + + - name: Install test dependencies + run: | + pip install --quiet pytest pydantic fastapi httpx pyyaml jsonschema + + - name: Run serve unit tests + run: | + if [ -d serve/tests ]; then + echo "::group::pytest serve/tests" + python -m pytest serve/tests -q --no-header --color=no + echo "::endgroup::" + else + echo "serve/tests/ not present — skipping." + fi + + - name: Run OpenClaw skill unit tests + run: | + if [ -d openclaw_skill/tests ]; then + echo "::group::pytest openclaw_skill/tests" + python -m pytest openclaw_skill/tests -q --no-header --color=no + echo "::endgroup::" + else + echo "openclaw_skill/tests/ not present — skipping." + fi \ No newline at end of file diff --git a/.gitignore b/.gitignore index 07e5795e..36e1481f 100644 --- a/.gitignore +++ b/.gitignore @@ -12,11 +12,20 @@ env/ # ── Editor / IDE ──────────────────────────────────────────────────────────── .idea/ .vscode/ +.cursor/ *.swp *.swo *~ *.tmp .DS_Store +.aider* +.envrc +.direnv/ + +# ── Node / frontend tooling ───────────────────────────────────────────────── +node_modules/ +.eslintcache +npm-debug.log* # ── Test / lint caches ────────────────────────────────────────────────────── .pytest_cache/ diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 6ff8d5d1..a3044cdc 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -320,6 +320,21 @@ CI then re-runs the schema validator and the runner-folder integrity check. When both pass and a contributor reviews the diff, the PR is merged and your result shows up on the leaderboard on the next site build. +### Optional: preview the leaderboard locally + +The static site is generated from `results/` by `leaderboard/generate.py`. +After dropping your result into `results/community//`, you can +preview the final UI before opening the PR: + +```bash +python leaderboard/generate.py # writes leaderboard/site/leaderboard.js + api/ +python -m http.server -d leaderboard/site 8000 # serve the static site +# open http://localhost:8000 +``` + +Both `leaderboard.js` and `leaderboard/site/api/` are gitignored — the GitHub +Actions workflow regenerates them on every merge to `main`. + ### Alternative: open a submission issue (no git required) If you'd rather not use git, paste your `result.json` into a diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index 343a3132..98cddbca 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -32,13 +32,14 @@ AccelMark/ │ ├── loadgen.py ← Shared timing and measurement engine │ └── types.py ← InferenceResult, SampleRecord ├── suites/ -│ ├── suite_A/suite.json + requests.jsonl -│ ├── suite_B/suite.json + requests.jsonl -│ ├── suite_C/suite.json + suite.py + requests.jsonl -│ ├── suite_D/suite.json + requests.jsonl -│ ├── suite_E/suite.json + suite.py + requests.jsonl -│ ├── suite_F/suite.json + requests.jsonl -│ └── suite_G/suite.json + requests.jsonl +│ ├── suite_A/suite.json +│ ├── suite_B/suite.json +│ ├── suite_C/suite.json + suite.py ← suite.py is optional; only C and E ship one +│ ├── suite_D/suite.json +│ ├── suite_E/suite.json + suite.py +│ ├── suite_F/suite.json +│ └── suite_G/suite.json +│ (request data lives in datasets/, referenced by "dataset" in suite.json) ├── datasets/ │ ├── sharegpt_standard_v1/requests.jsonl ← 500 prompts, ~280/310 tok │ ├── sharegpt_longctx_v1/requests.jsonl ← 200 prompts, ~28K input tok (Suite D) @@ -554,12 +555,15 @@ descriptions and distributions. If you need a custom distribution: 1. Create `datasets/{your_dataset}_v1/requests.jsonl` -2. Create `datasets/{your_dataset}_v1/README.md` +2. Create `datasets/{your_dataset}_v1/README.md` (must document source + + upstream license — see `datasets/README.md`) 3. Set `"dataset": "{your_dataset}_v1"` in your suite.json -If your suite needs a custom dataset only used by that suite, you can -also place `requests.jsonl` directly in `suites/suite_X/` — the -benchmark runner checks there as a fallback. +The `dataset` field is **required** — `BenchmarkRunner._resolve_requests_path` +loads `datasets//requests.jsonl` and raises `FileNotFoundError` if it +cannot find the file. Earlier versions allowed putting `requests.jsonl` +directly under `suites/suite_X/`; that fallback has been removed in favor +of the immutable, versioned `datasets/` layout. Dataset format (one JSON object per line): ```json @@ -622,6 +626,38 @@ not shown on the main leaderboard. --- +## Adding a new scenario type + +If you need a scenario name that none of `accuracy / offline / online / +interactive / sustained / speculative / burst` covers, you can register +one without forking the dispatch logic: + +1. Open `runners/benchmark_runner.py` and add a row to + `_SCENARIO_REGISTRY` near the top of the file: + + ```python + "your_scenario": ScenarioSpec( + name="your_scenario", + inference_kind="streaming", # or "offline" + needs_streaming=True, # require SUPPORTS_STREAMING? + use_async=True, # passed to load_model() + merge_key="your_scenario", # None = no-merge (e.g. accuracy) + ), + ``` + +2. If the scenario needs special LoadGen behaviour (e.g. like `sustained`), + add a branch under "Run benchmark" inside `_run_single_scenario`. + +3. List the new scenario name in your suite's + `scenarios.{default,extra}` array — the merge order is derived from + the registry automatically. + +Without a registry entry the base class falls back to a streaming +inference path with `merge_key = `. Register an entry whenever +you want the scenario to be treated differently (offline, no merge, etc.). + +--- + ## Suite plugin system Suites with custom orchestration logic (multiple subprocesses, special @@ -1098,6 +1134,6 @@ python runners/validate_submission.py --dir /tmp/accelmark_test/ ## Questions and Support - **Bug in LoadGen or schema:** Open a GitHub Issue -- **New suite proposal:** Open a GitHub Issue with the "Request new suite" template +- **New suite proposal:** Open a GitHub Issue with the [**Propose a new suite**](https://github.com/JuhaoLiang1997/AccelMark/issues/new?template=new_suite.md) template - **New platform support:** Open a PR with a working platform script and at least one verified result - **Leaderboard question:** Check `leaderboard/generate.py` — it's well-commented \ No newline at end of file diff --git a/NOTICE b/NOTICE new file mode 100644 index 00000000..d904b638 --- /dev/null +++ b/NOTICE @@ -0,0 +1,71 @@ +AccelMark +Copyright 2024-2026 Juhao Liang and The AccelMark Contributors + +This product includes software developed as part of the AccelMark project +(https://github.com/JuhaoLiang1997/AccelMark). + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +================================================================================ +Third-party bundled data +================================================================================ + +The AccelMark source tree includes a small amount of third-party data so that +benchmark runs are fully reproducible without network access. Each bundled +dataset retains its upstream license; the Apache 2.0 license above covers only +the AccelMark code, schemas, and configuration around it. + +-------------------------------------------------------------------------------- +1. datasets/sharegpt_standard_v1/requests.jsonl (500 prompts) + datasets/sharegpt_edge_v1/requests.jsonl (500 prompts) + datasets/sharegpt_longctx_v1/requests.jsonl (200 prompts) +-------------------------------------------------------------------------------- + + Derived from the ShareGPT GPT-4 conversational dataset curated by: + + shibing624/sharegpt_gpt4 + https://huggingface.co/datasets/shibing624/sharegpt_gpt4 + License: CC BY 4.0 + (https://creativecommons.org/licenses/by/4.0/) + + The upstream corpus was assembled from publicly shared ChatGPT/GPT-4 + conversations. AccelMark's variants are filtered subsets used as fixed + benchmark inputs; no derivation is intended as the authoritative copy. + + Attribution: shibing624/sharegpt_gpt4 contributors, distributed under CC BY 4.0. + + See datasets//README.md for the per-subset filtering criteria and + token statistics. + +-------------------------------------------------------------------------------- +2. schema/accuracy_subset.jsonl (100 multiple-choice items) +-------------------------------------------------------------------------------- + + A 100-question subset of MMLU (Massive Multitask Language Understanding): + + Hendrycks, D., Burns, C., Basart, S., Zou, A., Mazeika, M., Song, D., + & Steinhardt, J. (2021). "Measuring Massive Multitask Language + Understanding." International Conference on Learning Representations. + https://arxiv.org/abs/2009.03300 + https://github.com/hendrycks/test + + License: MIT + (https://opensource.org/licenses/MIT) + + AccelMark uses this subset purely as an accuracy gate (model-quality + sanity check) — it is NOT a measurement of MMLU performance. The subset + is immutable; see CONTRIBUTING.md "A few rules". + +================================================================================ +Third-party software dependencies +================================================================================ + +AccelMark's Python runtime dependencies (jsonschema, numpy, pyyaml, …) and +the framework backends invoked by each runner (vLLM, SGLang, mlx-lm, +vllm-ascend, vllm-rocm, vllm-tpu, vllm-musa, …) retain their own licenses. +See each runner's requirements.txt for pinned versions; see the upstream +projects for the corresponding license terms. diff --git a/README.md b/README.md index 7fac6641..c378e681 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@

Live Leaderboard - License: MIT + License: Apache 2.0 Contributions welcome

@@ -23,6 +23,16 @@ Development

+

+ AccelMark framework pipeline: five stages — workload suites, pinned execution, validation, publish, consume — with a community contribution loop closing back to the suites. +

+ +

+ From workload spec to published result — every row on the leaderboard carries its runner hash, environment fingerprint, and accuracy receipt. +

+ --- ## Why AccelMark? @@ -53,9 +63,11 @@ python run.py --runner nvidia_vllm_47f5d58e --suite suite_A # 4. Submit your result — open a pull request: # git checkout -b submit/ -# cp results/your-result.json results/community//result.json -# git add results/ env_info.json && git commit -m "results: " +# git add results/community// && git commit -m "results: " # gh pr create # or open via the GitHub web UI +# +# is the directory auto-created by run.py — it already contains +# your result.json and env_info.json; no manual file moves are needed. ``` See [CONTRIBUTING.md](CONTRIBUTING.md) for the full guide. If you'd rather skip the PR workflow, [open a submission issue](https://github.com/JuhaoLiang1997/AccelMark/issues/new?template=community_submission.md) instead and a bot will draft the PR for you. @@ -80,6 +92,18 @@ See [suites/README.md](suites/README.md) for full specs, time budgets, SLA defin --- +## Currently on the leaderboard + +

+ Chips currently on the AccelMark leaderboard, sized by submission count and coloured by vendor — NVIDIA, Huawei Ascend, Google TPU, Moore Threads, and Apple. +

+ +A snapshot of accelerators that have at least one submission on the leaderboard. Tile size is proportional to submission count; colour denotes vendor. See the [**live leaderboard**](https://juhaoliang1997.github.io/AccelMark) for current rankings, per-suite breakdowns, and the underlying `result.json` files. + +--- + ## Supported platforms Reference runners live under `runners/` (see each folder’s `meta.json`). The table below is **auto-generated** from each runner's `meta.json` — never hand-edited. Add a runner, declare its `suite_support` in `meta.json`, and the matrix updates on its own. @@ -141,7 +165,7 @@ If you use AccelMark results in research, please cite: ```bibtex @misc{accelmark2026, title = {AccelMark: Open Benchmark Leaderboard for AI Accelerators on LLM Workloads}, - author = {Liang, Juhao and {The AccelMark Contributors}}, + author = {Liang, Juhao and Zhang, Zhiyuan and Li, Siyu and Lin, Zhihang and Yu, Minchen and Zeng, Li and Chen, Zizhong and Sun, Ruoyu and Wang, Benyou}, year = {2026}, url = {https://github.com/JuhaoLiang1997/AccelMark} } @@ -151,5 +175,6 @@ If you use AccelMark results in research, please cite: ## License -MIT — see [LICENSE](LICENSE). -Submitted benchmark results are contributed under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/). \ No newline at end of file +Apache 2.0 — see [LICENSE](LICENSE). +Submitted benchmark results are contributed under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/). +Bundled third-party data (datasets, accuracy subsets) keeps its upstream license — see [NOTICE](NOTICE). \ No newline at end of file diff --git a/datasets/README.md b/datasets/README.md index 737d2318..82c06df4 100644 --- a/datasets/README.md +++ b/datasets/README.md @@ -41,3 +41,19 @@ Each line in `requests.jsonl`: "prompt_type": "conversational" } ``` + +## License & attribution + +Bundled prompt data keeps its **upstream license**, not AccelMark's +Apache-2.0. The three ShareGPT-derived datasets shipped here are +redistributed under **[CC BY 4.0](https://creativecommons.org/licenses/by/4.0/)** +from [shibing624/sharegpt_gpt4](https://huggingface.co/datasets/shibing624/sharegpt_gpt4). + +If you add a new dataset, its `README.md` **must** include: + +1. The upstream source (URL or HuggingFace ID). +2. The upstream license (link to the canonical text). +3. A citation block if the upstream authors request one. + +See [`../NOTICE`](../NOTICE) for the full third-party attribution that ships +with the repository. diff --git a/datasets/sharegpt_edge_v1/README.md b/datasets/sharegpt_edge_v1/README.md index 2d53ad7e..0626fd46 100644 --- a/datasets/sharegpt_edge_v1/README.md +++ b/datasets/sharegpt_edge_v1/README.md @@ -5,18 +5,30 @@ Short-turn ShareGPT conversational prompts. Used by Suite F (consumer/edge bench Filtered from `shibing624/sharegpt_gpt4` to retain only short-turn exchanges, producing a distribution representative of interactive consumer inference workloads. -| Field | Value | -|-------------------|----------------------------------| -| Source | shibing624/sharegpt_gpt4 | -| Prompts | 500 | -| Input tokens p50 | ~95 | -| Input tokens p99 | ~600 | -| Output tokens p50 | ~150 | -| Output tokens p99 | ~400 | -| Type | Conversational, single-turn | +| Field | Value | +|-------------------|--------------------------------------------------------------------------------------| +| Source | [shibing624/sharegpt_gpt4](https://huggingface.co/datasets/shibing624/sharegpt_gpt4) | +| Prompts | 500 | +| Input tokens p50 | ~95 | +| Input tokens p99 | ~600 | +| Output tokens p50 | ~150 | +| Output tokens p99 | ~400 | +| Type | Conversational, single-turn | ## Difference from sharegpt_standard_v1 `sharegpt_standard_v1` (Suites A, B, C, and E) has p50 input ~280 tokens and p50 output ~310 tokens. `sharegpt_edge_v1` uses shorter prompts to keep benchmark runtime practical on consumer GPUs -and to reflect the latency-sensitive interactive use cases they are typically deployed for. \ No newline at end of file +and to reflect the latency-sensitive interactive use cases they are typically deployed for. + +## License & attribution + +The prompts are derived from `shibing624/sharegpt_gpt4` and are redistributed +under the upstream license, **[CC BY 4.0](https://creativecommons.org/licenses/by/4.0/)**. + +Apache-2.0 (the AccelMark repository license) covers only the AccelMark code, +schemas, and selection logic — not the prompt text itself. See [`../../NOTICE`](../../NOTICE) +for the full third-party attribution. + +If you use these prompts in research, please cite the upstream dataset and +this repository. \ No newline at end of file diff --git a/datasets/sharegpt_longctx_v1/README.md b/datasets/sharegpt_longctx_v1/README.md index 72f86980..6d70a1ef 100644 --- a/datasets/sharegpt_longctx_v1/README.md +++ b/datasets/sharegpt_longctx_v1/README.md @@ -4,8 +4,23 @@ Long-context prompts for Suite D (~28K-token inputs; `max_model_len` 30,208 in ` | Field | Value | |---|---| -| Source | Long-context subset of ShareGPT | +| Source | [shibing624/sharegpt_gpt4](https://huggingface.co/datasets/shibing624/sharegpt_gpt4) (long-context subset) | | Prompts | 200 | | Input tokens p50 | ~28,000 | | Output tokens p50 | ~256 (suite caps generation) | | Type | Document QA, long-form input | + +## License & attribution + +The prompts are derived from the same ShareGPT GPT-4 corpus as +`sharegpt_standard_v1` and are redistributed under the upstream license, +**[CC BY 4.0](https://creativecommons.org/licenses/by/4.0/)**. Long-context +items are selected by tokenized input length; no additional editorial +modification beyond filtering is applied. + +Apache-2.0 (the AccelMark repository license) covers only the AccelMark code, +schemas, and selection logic — not the prompt text itself. See [`../../NOTICE`](../../NOTICE) +for the full third-party attribution. + +If you use these prompts in research, please cite the upstream dataset and +this repository. diff --git a/datasets/sharegpt_standard_v1/README.md b/datasets/sharegpt_standard_v1/README.md index 2f1655a6..f2413ee2 100644 --- a/datasets/sharegpt_standard_v1/README.md +++ b/datasets/sharegpt_standard_v1/README.md @@ -4,8 +4,20 @@ Standard ShareGPT conversational prompts. Used by Suite A, B, C, E. | Field | Value | |---|---| -| Source | shibing624/sharegpt_gpt4 | +| Source | [shibing624/sharegpt_gpt4](https://huggingface.co/datasets/shibing624/sharegpt_gpt4) | | Prompts | 500 | | Input tokens p50 | ~280 | | Output tokens p50 | ~310 | | Type | Conversational, single-turn | + +## License & attribution + +The prompts are derived from `shibing624/sharegpt_gpt4` and are redistributed +under the upstream license, **[CC BY 4.0](https://creativecommons.org/licenses/by/4.0/)**. + +Apache-2.0 (the AccelMark repository license) covers only the AccelMark code, +schemas, and selection logic — not the prompt text itself. See [`../../NOTICE`](../../NOTICE) +for the full third-party attribution. + +If you use these prompts in research, please cite the upstream dataset and +this repository. diff --git a/docs/assets/chip-cloud.png b/docs/assets/chip-cloud.png new file mode 100644 index 0000000000000000000000000000000000000000..e3ccccec784dace50c29b3136f34b31c0423640a GIT binary patch literal 219759 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ʺwAfF8padg=c_*?|9;#~7(!G7d<8#%| z#u}XwcBxCvdzxLN+qvzb)QNiF!%J(^mH=YC*}(Bv?>1OG`v<0-PrQ~UtxUm^#y;8C zCM(~UE+Bs{@}knBj{`Ro&`b*|-vV@cmGX1dDnh#MOGkpn2U$nE5b1ehgw?r#-_pg( zwi?$L2W&nL9vsHgyqr*w%^5ea&nq_;~HZ)72h7%&cCH2XJA`e`(FkoFG@kN8De+wSs zabssXWYR;id?KDzvNU6X80{!xbG`J@gi!~ z`>gnyx+j_f(@U+E63Q@JWblquU5+y^URq5GAX}_`%%B|95&}a{7GL0}n~@!ib}jtd z?mtxD7pc?Sx&`@A_b~&;1&0vlf{Th5z+OhRW+4qF{oeh9LC@8o4UZ1o6^K-QUr5o< zIOi+~gIS7sEl%%&WNh!ELDCbdQ2r6k@Oe|xlukp}Mv05mOirimAJ5hK=@!x?Mae7h0I&Ff7SpBT18^%FLRMH2K;JXtr zg{W%+H8^-^y4(&mg*B0Y->}iFw!e-2w%ep$JUh7FYpZ54Ru)iO#&$$r8-qS(vJM*e zUrWk+S4Sg{*FVC}VgUszpcYBkY1;j@;v8Dw%2@a<_ae<&ACZQbbqh>IBT+I4zE##( z9V5hJ)eBTr@Ww^iSeCJ<$B>vM;=V3|VZ-{U4?hmD+K%$QvlSTU&|CTuZkH~==l&bD z)8pm{P9K=F+7PSx!L}^SLW_X(*DGYqi038nE~mbDt}e(6RwEcPSR=TF536?y-2pZ4 zsMC@XmOmPi3jyJwlul6_pJDC(1Rp7P z*+uMMD^8OCP}#+m1GiYrR$X9C+UJ!4MOSJG+j49#*WY`1*6!$e@YTdue7U%8QWr0sab|yAS@V2oIrKUIX@zn|UYhH6E$Fat=?Fz#g0PuI>e2U! ztzJ`S=nK?BzLA7s)Kgg^-Ud++(r-%)6s)+z;+U6$CK2R`=t^(+)vAd zbF_(CeiwE|O~d83^`rMf3OF>z?AD2n#!+;R>L z0Yt$z$dexw$6P0aI4JO8@rZO~sT+S8l`82+pE^A^)o~~o zQ&d*V)nJ#EMcUq<6pUwtaIQ(P+mhx9Na=zJM`=sA*#Pyi?UDMWo43VI)mZj=1IX?( zQ0_YNi;{sT4i%tfqn0NADDcOQdShIp@fY330;R}+UKM1rr0Qgq0~?cBZ<;s&=*0|L z9u)N5_5r<@I%*e$_K`@FBP;Q5fsm-4JlIULb4NT;~6N9QAA*!|6#{NXL%_ez5R zg+{XoDA-4umv+L6gYa5L0k5UpRx|bK#h}0fbaYPkuihLGBA$#v{~nwq~B_} zK0S94(}Gx$)xpXJv@42bYT1PP79GEK7m;^oH0aXN4xW-FWSOG`JugPM=fUjXRhT$E zRiAjxTkq!yFF>#|8x|VpMTyw@$($~h@|}t%6T!v(5#kq4vpkN)wp_hgo^w=$>mBW! z3&SqDDlH4=E}x%adN_L`xDR|R;PMslg`_;U!9SJK%Wrw8a zA{g^OB224+px0>37+V7_{j@Z@F_@-39)Qq5?u$yL;oy|2(rz4NGh31U<$=-I41M0$ zK#CW@Yrtg~MJU9l3YjKu0#h3+GvfY}u4X<1GTx16J$z=0PKaYLUx7)sQoj7)RSDEX z!?K2h%1u=Li$B@phIs2uJc505Zw=n=i^a0|SS6;)sV7UkE(+{(D?AW!9J=r3Xb|#n zN}X!!*}XZ7m+CS{U+>5`Y1GZ2w5TY*T&_hiOCyJy2_PWp;~bg_S727Q5e7753KFPF zNSp_Yl*D+PrzDj)>Y*$1VePEW_!|ND4WcxDL{ngBZ@Vi-^KJm?+GKY9()gR;sp-Q> z#DFnj<05{6N&+Tn6RR7WBKSwQ?0{f%te~7K12hACs#Oy&z4QgL>^iqz3>3)@*Z7)f zrlhqyo&)BJx0~l=-W%Lr_Gp?dQEUtm$2DmgM0A~&x!cX+A+It7!Tyhw|0H83B$um$ z$(}t0vbw!RLd~1nsJd5FrXmA3I;X3RUs(I7^{W@9)3Z8FuATDx7#y)p2(d`H@1@at zZ0R2lBN>^~ktJ^-8*2Fh0S*&)UH$RhwVgiLr;Y(bd!j%JX5+wwq5<1vf^YG6iN&>o zxQeC^RAt=l1p`a|SQsKjr$2or*B9rQMKw!+DPRLe*B=_!yCoj_1aXcP*A2g?ko9AQ5Q2>n_L0O|{g09*y2q*e_P`wlHO8|`|H{qr8$ zX4+;$4INfXojTeReftKcKJ$v$!L(gjGe>S!Ph3q>n9lp;$CibjmDold7ba=Ps*$4c z77Qa`$`00}g*rpu-RoNb!+Ej!)$a%;u{J|^CxKG}M8Y@!S|oh?^kWlK9?%|Mao^SjU7^@`bGl;qN)+m$QLQV+s`B47)hiS(3o@+ZgkvYicof%nwSZ0Uq3Jo+fRD$53 z_*rK_zG1c?KCM_kFoc)i-ZYB}3cO#`J!VJP8!OKO-MCnPv1h#kmD%6AC4(R%5o<`m zovMK{9AIL8lYkgUfLAm7rU$L^tt_O z=ZdPV@vimEImVd7rwthm!LGydT$O6w^uctofxx;CZJsSn_NqeS@V`O}T@Q1Mb30o4 zc~}oyF|8I)wpc$?m~;+<^B5N_c5SbTfu3OeEX{Wxe{CMYm*xS%EmWY`!H%!N>jfyB zv7M-v5Rm$#w{#&c2;f4uKr`1^zd|DsH;xG)kv#V_ao&>YmG;yy6mww1bpPpkLB)Ex z>stf!nK<0dRE4+UqIRU?8kefBjpbi(lH4K=_yTX)dGgg%R8^9jq7YQJ~kj+;VUS)9j$4ULq?hGPgosvmE`zJ zS<2_oRdC^1@t`{}6bFQlcs3lY73c*LuUQ1HIm|R3(|$`8elTyWoKd%TAI;#Y(JwI@ zZ?>JE(}EimF!F@Vw0qj+H~lVSMO&kgPQ6+@EMe=);r?{8IpOGa%a^_vTs3KLX|;Dk zL*j>y``PIPC_%2~Ez@-)g8L=~7z)<|&p>UkxbHM)Q47A3ibAF

;*;eQ9ezuF!hM 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 ?S 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 =esOmZ$R!1rum;-hBW!uPEAeF4TqAa2<2H*lU1q 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

y_nad@;g}p{`aFE9aFya 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ô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/suite.json` on the Python side and is injected into +// the page as `window.SUITE_SPECS`. Splitting the two keeps editorial +// edits (taglines, descriptions, primary-metric units) out of the diff +// when the actual benchmark contract changes — and vice versa. +// +// Consumers should keep importing `SUITE_META` from `../data.js`; this +// file is its single source of truth and only exists to keep `data.js` +// at a manageable size. + +export const SUITE_META = { + suite_A: { + letter: "A", + title: "Single-chip throughput", + tagline: "How fast can one accelerator serve an 8B model?", + description: + "The canonical bandwidth-bound regime. 8B Llama on a single accelerator is small enough to fit comfortably in HBM, large enough that decode is memory-bandwidth-bound rather than compute-bound. This is the bread-and-butter serving workload that anchors most other LLM benchmarks, and the suite where vendor marketing numbers usually land.", + primary: { key: "offline_throughput", label: "tokens/sec", direction: "desc", unit: "tokens/sec" }, + workload: { + model: "meta-llama/Meta-Llama-3-8B-Instruct", + chips: "1", + precision: "BF16", + dataset: "sharegpt_standard_v1", + inputTokens: "~280", + outputTokens: "~310", + }, + scenarios: [ + { name: "accuracy", isExtra: false, + desc: "MMLU subset score against the baseline. Gate for a valid submission." }, + { name: "offline", isExtra: false, + desc: "Max throughput with all requests batched at once.", + metric: { key: "offline_throughput", label: "tokens/sec", direction: "desc", unit: "tokens/sec" } }, + { name: "online", isExtra: false, + desc: "Highest QPS that meets the 500 ms p99 TTFT SLA under Poisson arrivals.", + metric: { key: "online_max_qps", label: "queries/sec", direction: "desc", unit: "queries/sec" } }, + { name: "interactive", isExtra: true, + desc: "Single-stream first-token latency. No concurrency.", + metric: { key: "interactive_ttft_p99", label: "TTFT p99", direction: "asc", unit: "ms", decimals: 0 } }, + { name: "sustained", isExtra: true, + desc: "30 min fixed-concurrency load. Reports throughput stability and throttle ratio.", + metric: { key: "sustained_throughput", label: "sustained throughput", direction: "desc", unit: "tokens/sec" } }, + { name: "speculative", isExtra: true, + desc: "Offline workload with a 1B draft model loaded. Reports acceptance rate." }, + { name: "burst", isExtra: true, + desc: "TTFT p99 during 5x burst windows versus steady. KV pressure test." }, + ], + }, + suite_B: { + letter: "B", + title: "Multi-chip throughput", + tagline: "Large-model serving across multiple chips.", + description: + "70B Llama distributed across multiple accelerators. Two effects compound: the model itself no longer fits on one chip (capacity-bound) and tensor-parallel inference shards KV cache, activations, and all-reduce traffic over the interconnect. Both the framework's TP path and the chip's NVLink / Infinity Fabric / scale-out fabric come under test here.", + primary: { key: "offline_throughput", label: "tokens/sec", direction: "desc", unit: "tokens/sec" }, + workload: { + model: "meta-llama/Meta-Llama-3-70B-Instruct", + chips: "flexible (typ. 4 / 8)", + precision: "BF16", + dataset: "sharegpt_standard_v1", + inputTokens: "~280", + outputTokens: "~310", + }, + scenarios: [ + { name: "accuracy", isExtra: false, + desc: "MMLU subset score against the 70B baseline." }, + { name: "offline", isExtra: false, + desc: "Aggregate throughput across N chips serving the 70B model.", + metric: { key: "offline_throughput", label: "tokens/sec", direction: "desc", unit: "tokens/sec" } }, + { name: "online", isExtra: false, + desc: "Highest QPS that meets the 500 ms p99 TTFT SLA at 70B scale.", + metric: { key: "online_max_qps", label: "queries/sec", direction: "desc", unit: "queries/sec" } }, + { name: "interactive", isExtra: true, + desc: "Single-stream TTFT at 70B. Decode-bound." }, + { name: "sustained", isExtra: true, + desc: "30 min fixed load; concurrency 4 (70B leaves less KV headroom than 8B).", + metric: { key: "sustained_throughput", label: "sustained throughput", direction: "desc", unit: "tokens/sec" } }, + { name: "burst", isExtra: true, + desc: "Burst vs steady TTFT p99 at 70B scale." }, + ], + }, + suite_C: { + letter: "C", + title: "Quantization efficiency", + tagline: "Quality-adjusted throughput across precision formats.", + description: + "The bandwidth-to-compute transition. The same 8B model is run at five precision formats (BF16, FP8, W8A8, W8A16, W4A16); quality efficiency multiplies throughput speedup by the accuracy drop so a chip can't trade quality for speed silently. Reveals which chips have working low-precision tensor cores and which fall back to BF16 on the same instruction.", + primary: { key: "quant_quality_eff", label: "quality efficiency", direction: "desc", unit: "" }, + workload: { + model: "meta-llama/Llama-3.1-8B-Instruct", + chips: "1", + precision: "BF16, FP8, W8A8, W8A16, W4A16", + dataset: "sharegpt_standard_v1", + inputTokens: "~280", + outputTokens: "~310", + }, + scenarios: [ + { name: "accuracy", isExtra: false, + desc: "Per-format accuracy gate (each format has its own threshold)." }, + { name: "offline (×5 formats)", isExtra: false, + desc: "Offline throughput at each precision. Quality efficiency = throughput × accuracy.", + metric: { key: "quant_quality_eff", label: "quality efficiency", direction: "desc", unit: "" } }, + { name: "online", isExtra: true, + desc: "Online QPS sweep per format. Extra: 5 formats × QPS levels is expensive." }, + { name: "sustained", isExtra: true, + desc: "15 min sustained load per format." }, + ], + }, + suite_D: { + letter: "D", + title: "Long-context inference", + tagline: "28K-token prefill, compute-bound regime.", + description: + "Compute-bound prefill. ~28K-token prompts push arithmetic intensity past the roofline knee, so chips with more raw FLOPS pull ahead of bandwidth-rich ones. The output cap (256 tokens) keeps decode short on purpose; this suite isolates the prefill side and is where Suite A's bandwidth-bound rankings begin to invert.", + primary: { key: "offline_throughput", label: "tokens/sec", direction: "desc", unit: "tokens/sec" }, + workload: { + model: "meta-llama/Llama-3.1-8B-Instruct", + chips: "1", + precision: "BF16; max_model_len 30,208", + dataset: "sharegpt_longctx_v1", + inputTokens: "~28K", + outputTokens: "≤256", + }, + scenarios: [ + { name: "accuracy", isExtra: false, + desc: "MMLU gate against the 8B Llama-3.1 baseline." }, + { name: "offline", isExtra: false, + desc: "Offline throughput at ~28K input tokens. Prefill-bound, tests raw FLOPS.", + metric: { key: "offline_throughput", label: "tokens/sec", direction: "desc", unit: "tokens/sec" } }, + { name: "interactive", isExtra: true, + desc: "Long-context TTFT (~11 s per request at 28K). p90 is primary." }, + { name: "online", isExtra: true, + desc: "Sub-QPS levels (0.5 / 1 / 2). Rate-bound at long context." }, + { name: "sustained", isExtra: true, + desc: "30 min sustained at concurrency 8. Throttle ratio is the headline." }, + { name: "speculative", isExtra: true, + desc: "Long-context offline with 1B draft model. Prefill-bound speculative." }, + ], + }, + suite_E: { + letter: "E", + title: "Multi-chip scaling efficiency", + tagline: "How well does 8B throughput scale to 2 / 4 / 8 chips?", + description: + "The Amdahl penalty in numbers. The same 8B model runs at 1×, 2×, and (optionally) 4× / 8× chip counts; the headline metric is 2× scaling efficiency = T_2× / (2 · T_1×). Reveals NVLink / Infinity Fabric / PCIe ceilings, and exposes flagships whose per-chip throughput grew faster than the interconnect did.", + primary: { key: "scaling_efficiency_2x", label: "2× scaling efficiency", direction: "desc", unit: "%", scale: 100, decimals: 1 }, + workload: { + model: "meta-llama/Meta-Llama-3-8B-Instruct", + chips: "1× / 2× required; 4× / 8× optional", + precision: "BF16", + dataset: "sharegpt_standard_v1", + inputTokens: "~280", + outputTokens: "~310", + }, + scenarios: [ + { name: "offline (1× / 2×)", isExtra: false, + desc: "Two-chip scaling efficiency vs single chip. Required for a valid submission.", + metric: { key: "scaling_efficiency_2x", label: "2× scaling efficiency", direction: "desc", unit: "%", scale: 100, decimals: 1 } }, + { name: "offline (4×)", isExtra: false, + desc: "Four-chip scaling efficiency. Optional but commonly reported.", + metric: { key: "scaling_efficiency_4x", label: "4× scaling efficiency", direction: "desc", unit: "%", scale: 100, decimals: 1 } }, + { name: "offline (8×)", isExtra: false, + desc: "Eight-chip scaling. Communication overhead is the binding constraint here." }, + ], + }, + suite_F: { + letter: "F", + title: "Edge / consumer hardware", + tagline: "Small models on single-GPU edge hardware.", + description: + "The pure-bandwidth lower bound. Qwen2.5-0.5B with ~95-token prompts strips away residual compute interference and short-circuits prefill, exposing raw HBM headroom and software overhead. Commodity GPUs (RTX 4090, A6000) tend to be most competitive per dollar here, and the suite doubles as a regression check for low-VRAM deployments.", + primary: { key: "offline_throughput", label: "tokens/sec", direction: "desc", unit: "tokens/sec" }, + workload: { + model: "Qwen/Qwen2.5-0.5B-Instruct", + chips: "1 (≥4 GB VRAM)", + precision: "BF16", + dataset: "sharegpt_edge_v1", + inputTokens: "~95", + outputTokens: "~150", + }, + scenarios: [ + { name: "accuracy", isExtra: false, + desc: "MMLU gate against the 0.5B baseline." }, + { name: "offline", isExtra: false, + desc: "Offline throughput on the edge dataset (~95 tok prompts).", + metric: { key: "offline_throughput", label: "tokens/sec", direction: "desc", unit: "tokens/sec" } }, + { name: "online", isExtra: false, + desc: "Max QPS at the standard 500 ms p99 TTFT SLA.", + metric: { key: "online_max_qps", label: "queries/sec", direction: "desc", unit: "queries/sec" } }, + { name: "interactive", isExtra: false, + desc: "Single-stream TTFT on consumer hardware.", + metric: { key: "interactive_ttft_p99", label: "TTFT p99", direction: "asc", unit: "ms", decimals: 0 } }, + { name: "sustained", isExtra: true, + desc: "15 min sustained load (shorter than datacenter suites)." }, + ], + }, + suite_G: { + letter: "G", + title: "Mixture-of-Experts (MoE)", + tagline: "Sparse routing; bandwidth-bound multi-chip serving.", + description: + "Sparse activation. Mixtral 8×7B activates only 2 of 8 experts per token, which keeps arithmetic intensity below dense 8B inference even at multi-chip scale. Chips with high aggregate HBM bandwidth (HBM3e generation) pay off here; pure-FLOPS advantages from compute-bound suites don't translate.", + primary: { key: "sustained_throughput", label: "tokens/sec", direction: "desc", unit: "tokens/sec" }, + workload: { + model: "mistralai/Mixtral-8x7B-Instruct-v0.1", + chips: "≥2 (auto)", + precision: "BF16", + dataset: "sharegpt_standard_v1", + inputTokens: "~280", + outputTokens: "~310", + }, + scenarios: [ + { name: "accuracy", isExtra: false, + desc: "MMLU gate against the Mixtral baseline." }, + { name: "offline", isExtra: false, + desc: "Aggregate MoE throughput. Only 2 of 8 experts activate per token.", + metric: { key: "offline_throughput", label: "tokens/sec", direction: "desc", unit: "tokens/sec" } }, + { name: "online", isExtra: false, + desc: "Max QPS under the 500 ms p99 TTFT SLA on MoE serving.", + metric: { key: "online_max_qps", label: "queries/sec", direction: "desc", unit: "queries/sec" } }, + { name: "interactive", isExtra: true, + desc: "Single-stream TTFT on MoE inference." }, + { name: "sustained", isExtra: true, + desc: "30 min sustained MoE load. Several chips show thermal onset on this suite.", + metric: { key: "sustained_throughput", label: "sustained throughput", direction: "desc", unit: "tokens/sec" } }, + ], + }, +}; diff --git a/leaderboard/site/assets/js/data.js b/leaderboard/site/assets/js/data.js index 470af671..8c7bcba2 100644 --- a/leaderboard/site/assets/js/data.js +++ b/leaderboard/site/assets/js/data.js @@ -9,232 +9,22 @@ import { groupBy, chipSlug, toTitleCase } from "./utils.js"; -// Each suite has a "primary metric" most relevant to a buyer's question. -// This drives default sort on the rankings page and the top-3 podium on home. +// Editorial copy and per-suite display rules live in +// `../data/suite-meta.js`. We re-export so existing consumers +// ("import { SUITE_META } from './data.js'") keep working unchanged. +// +// Why split? `data.js` is the runtime / view-state hub; `suite-meta.js` +// is pure editorial content (titles, taglines, descriptions, primary- +// metric units). Keeping them separate lets copy edits land without +// touching the data-processing diff, and vice versa. // // `primary.scale` multiplies raw value at display (e.g. 0.945 → 94.5 %). // `primary.decimals` overrides automatic decimal selection. -// Suite workload constants — fixed per suite definition (suites/README.md). // `inputTokens` / `outputTokens` are the dataset p50s used at benchmark // time and are NOT derived from data files; they're part of the suite // contract and only change with a suite revision. -export const SUITE_META = { - suite_A: { - letter: "A", - title: "Single-chip throughput", - tagline: "How fast can one accelerator serve an 8B model?", - description: - "The canonical bandwidth-bound regime. 8B Llama on a single accelerator is small enough to fit comfortably in HBM, large enough that decode is memory-bandwidth-bound rather than compute-bound. This is the bread-and-butter serving workload that anchors most other LLM benchmarks, and the suite where vendor marketing numbers usually land.", - primary: { key: "offline_throughput", label: "tokens/sec", direction: "desc", unit: "tokens/sec" }, - workload: { - model: "meta-llama/Meta-Llama-3-8B-Instruct", - chips: "1", - precision: "BF16", - dataset: "sharegpt_standard_v1", - inputTokens: "~280", - outputTokens: "~310", - }, - scenarios: [ - { name: "accuracy", isExtra: false, - desc: "MMLU subset score against the baseline. Gate for a valid submission." }, - { name: "offline", isExtra: false, - desc: "Max throughput with all requests batched at once.", - metric: { key: "offline_throughput", label: "tokens/sec", direction: "desc", unit: "tokens/sec" } }, - { name: "online", isExtra: false, - desc: "Highest QPS that meets the 500 ms p99 TTFT SLA under Poisson arrivals.", - metric: { key: "online_max_qps", label: "queries/sec", direction: "desc", unit: "queries/sec" } }, - { name: "interactive", isExtra: true, - desc: "Single-stream first-token latency. No concurrency.", - metric: { key: "interactive_ttft_p99", label: "TTFT p99", direction: "asc", unit: "ms", decimals: 0 } }, - { name: "sustained", isExtra: true, - desc: "30 min fixed-concurrency load. Reports throughput stability and throttle ratio.", - metric: { key: "sustained_throughput", label: "sustained throughput", direction: "desc", unit: "tokens/sec" } }, - { name: "speculative", isExtra: true, - desc: "Offline workload with a 1B draft model loaded. Reports acceptance rate." }, - { name: "burst", isExtra: true, - desc: "TTFT p99 during 5x burst windows versus steady. KV pressure test." }, - ], - }, - suite_B: { - letter: "B", - title: "Multi-chip throughput", - tagline: "Large-model serving across multiple chips.", - description: - "70B Llama distributed across multiple accelerators. Two effects compound: the model itself no longer fits on one chip (capacity-bound) and tensor-parallel inference shards KV cache, activations, and all-reduce traffic over the interconnect. Both the framework's TP path and the chip's NVLink / Infinity Fabric / scale-out fabric come under test here.", - primary: { key: "offline_throughput", label: "tokens/sec", direction: "desc", unit: "tokens/sec" }, - workload: { - model: "meta-llama/Meta-Llama-3-70B-Instruct", - chips: "flexible (typ. 4 / 8)", - precision: "BF16", - dataset: "sharegpt_standard_v1", - inputTokens: "~280", - outputTokens: "~310", - }, - scenarios: [ - { name: "accuracy", isExtra: false, - desc: "MMLU subset score against the 70B baseline." }, - { name: "offline", isExtra: false, - desc: "Aggregate throughput across N chips serving the 70B model.", - metric: { key: "offline_throughput", label: "tokens/sec", direction: "desc", unit: "tokens/sec" } }, - { name: "online", isExtra: false, - desc: "Highest QPS that meets the 500 ms p99 TTFT SLA at 70B scale.", - metric: { key: "online_max_qps", label: "queries/sec", direction: "desc", unit: "queries/sec" } }, - { name: "interactive", isExtra: true, - desc: "Single-stream TTFT at 70B. Decode-bound." }, - { name: "sustained", isExtra: true, - desc: "30 min fixed load; concurrency 4 (70B leaves less KV headroom than 8B).", - metric: { key: "sustained_throughput", label: "sustained throughput", direction: "desc", unit: "tokens/sec" } }, - { name: "burst", isExtra: true, - desc: "Burst vs steady TTFT p99 at 70B scale." }, - ], - }, - suite_C: { - letter: "C", - title: "Quantization efficiency", - tagline: "Quality-adjusted throughput across precision formats.", - description: - "The bandwidth-to-compute transition. The same 8B model is run at five precision formats (BF16, FP8, W8A8, W8A16, W4A16); quality efficiency multiplies throughput speedup by the accuracy drop so a chip can't trade quality for speed silently. Reveals which chips have working low-precision tensor cores and which fall back to BF16 on the same instruction.", - primary: { key: "quant_quality_eff", label: "quality efficiency", direction: "desc", unit: "" }, - workload: { - model: "meta-llama/Llama-3.1-8B-Instruct", - chips: "1", - precision: "BF16, FP8, W8A8, W8A16, W4A16", - dataset: "sharegpt_standard_v1", - inputTokens: "~280", - outputTokens: "~310", - }, - scenarios: [ - { name: "accuracy", isExtra: false, - desc: "Per-format accuracy gate (each format has its own threshold)." }, - { name: "offline (×5 formats)", isExtra: false, - desc: "Offline throughput at each precision. Quality efficiency = throughput × accuracy.", - metric: { key: "quant_quality_eff", label: "quality efficiency", direction: "desc", unit: "" } }, - { name: "online", isExtra: true, - desc: "Online QPS sweep per format. Extra: 5 formats × QPS levels is expensive." }, - { name: "sustained", isExtra: true, - desc: "15 min sustained load per format." }, - ], - }, - suite_D: { - letter: "D", - title: "Long-context inference", - tagline: "28K-token prefill, compute-bound regime.", - description: - "Compute-bound prefill. ~28K-token prompts push arithmetic intensity past the roofline knee, so chips with more raw FLOPS pull ahead of bandwidth-rich ones. The output cap (256 tokens) keeps decode short on purpose; this suite isolates the prefill side and is where Suite A's bandwidth-bound rankings begin to invert.", - primary: { key: "offline_throughput", label: "tokens/sec", direction: "desc", unit: "tokens/sec" }, - workload: { - model: "meta-llama/Llama-3.1-8B-Instruct", - chips: "1", - precision: "BF16; max_model_len 30,208", - dataset: "sharegpt_longctx_v1", - inputTokens: "~28K", - outputTokens: "≤256", - }, - scenarios: [ - { name: "accuracy", isExtra: false, - desc: "MMLU gate against the 8B Llama-3.1 baseline." }, - { name: "offline", isExtra: false, - desc: "Offline throughput at ~28K input tokens. Prefill-bound, tests raw FLOPS.", - metric: { key: "offline_throughput", label: "tokens/sec", direction: "desc", unit: "tokens/sec" } }, - { name: "interactive", isExtra: true, - desc: "Long-context TTFT (~11 s per request at 28K). p90 is primary." }, - { name: "online", isExtra: true, - desc: "Sub-QPS levels (0.5 / 1 / 2). Rate-bound at long context." }, - { name: "sustained", isExtra: true, - desc: "30 min sustained at concurrency 8. Throttle ratio is the headline." }, - { name: "speculative", isExtra: true, - desc: "Long-context offline with 1B draft model. Prefill-bound speculative." }, - ], - }, - suite_E: { - letter: "E", - title: "Multi-chip scaling efficiency", - tagline: "How well does 8B throughput scale to 2 / 4 / 8 chips?", - description: - "The Amdahl penalty in numbers. The same 8B model runs at 1×, 2×, and (optionally) 4× / 8× chip counts; the headline metric is 2× scaling efficiency = T_2× / (2 · T_1×). Reveals NVLink / Infinity Fabric / PCIe ceilings, and exposes flagships whose per-chip throughput grew faster than the interconnect did.", - primary: { key: "scaling_efficiency_2x", label: "2× scaling efficiency", direction: "desc", unit: "%", scale: 100, decimals: 1 }, - workload: { - model: "meta-llama/Meta-Llama-3-8B-Instruct", - chips: "1× / 2× required; 4× / 8× optional", - precision: "BF16", - dataset: "sharegpt_standard_v1", - inputTokens: "~280", - outputTokens: "~310", - }, - scenarios: [ - { name: "offline (1× / 2×)", isExtra: false, - desc: "Two-chip scaling efficiency vs single chip. Required for a valid submission.", - metric: { key: "scaling_efficiency_2x", label: "2× scaling efficiency", direction: "desc", unit: "%", scale: 100, decimals: 1 } }, - { name: "offline (4×)", isExtra: false, - desc: "Four-chip scaling efficiency. Optional but commonly reported.", - metric: { key: "scaling_efficiency_4x", label: "4× scaling efficiency", direction: "desc", unit: "%", scale: 100, decimals: 1 } }, - { name: "offline (8×)", isExtra: false, - desc: "Eight-chip scaling. Communication overhead is the binding constraint here." }, - ], - }, - suite_F: { - letter: "F", - title: "Edge / consumer hardware", - tagline: "Small models on single-GPU edge hardware.", - description: - "The pure-bandwidth lower bound. Qwen2.5-0.5B with ~95-token prompts strips away residual compute interference and short-circuits prefill, exposing raw HBM headroom and software overhead. Commodity GPUs (RTX 4090, A6000) tend to be most competitive per dollar here, and the suite doubles as a regression check for low-VRAM deployments.", - primary: { key: "offline_throughput", label: "tokens/sec", direction: "desc", unit: "tokens/sec" }, - workload: { - model: "Qwen/Qwen2.5-0.5B-Instruct", - chips: "1 (≥4 GB VRAM)", - precision: "BF16", - dataset: "sharegpt_edge_v1", - inputTokens: "~95", - outputTokens: "~150", - }, - scenarios: [ - { name: "accuracy", isExtra: false, - desc: "MMLU gate against the 0.5B baseline." }, - { name: "offline", isExtra: false, - desc: "Offline throughput on the edge dataset (~95 tok prompts).", - metric: { key: "offline_throughput", label: "tokens/sec", direction: "desc", unit: "tokens/sec" } }, - { name: "online", isExtra: false, - desc: "Max QPS at the standard 500 ms p99 TTFT SLA.", - metric: { key: "online_max_qps", label: "queries/sec", direction: "desc", unit: "queries/sec" } }, - { name: "interactive", isExtra: false, - desc: "Single-stream TTFT on consumer hardware.", - metric: { key: "interactive_ttft_p99", label: "TTFT p99", direction: "asc", unit: "ms", decimals: 0 } }, - { name: "sustained", isExtra: true, - desc: "15 min sustained load (shorter than datacenter suites)." }, - ], - }, - suite_G: { - letter: "G", - title: "Mixture-of-Experts (MoE)", - tagline: "Sparse routing; bandwidth-bound multi-chip serving.", - description: - "Sparse activation. Mixtral 8×7B activates only 2 of 8 experts per token, which keeps arithmetic intensity below dense 8B inference even at multi-chip scale. Chips with high aggregate HBM bandwidth (HBM3e generation) pay off here; pure-FLOPS advantages from compute-bound suites don't translate.", - primary: { key: "sustained_throughput", label: "tokens/sec", direction: "desc", unit: "tokens/sec" }, - workload: { - model: "mistralai/Mixtral-8x7B-Instruct-v0.1", - chips: "≥2 (auto)", - precision: "BF16", - dataset: "sharegpt_standard_v1", - inputTokens: "~280", - outputTokens: "~310", - }, - scenarios: [ - { name: "accuracy", isExtra: false, - desc: "MMLU gate against the Mixtral baseline." }, - { name: "offline", isExtra: false, - desc: "Aggregate MoE throughput. Only 2 of 8 experts activate per token.", - metric: { key: "offline_throughput", label: "tokens/sec", direction: "desc", unit: "tokens/sec" } }, - { name: "online", isExtra: false, - desc: "Max QPS under the 500 ms p99 TTFT SLA on MoE serving.", - metric: { key: "online_max_qps", label: "queries/sec", direction: "desc", unit: "queries/sec" } }, - { name: "interactive", isExtra: true, - desc: "Single-stream TTFT on MoE inference." }, - { name: "sustained", isExtra: true, - desc: "30 min sustained MoE load. Several chips show thermal onset on this suite.", - metric: { key: "sustained_throughput", label: "sustained throughput", direction: "desc", unit: "tokens/sec" } }, - ], - }, -}; +export { SUITE_META } from "../data/suite-meta.js"; +import { SUITE_META } from "../data/suite-meta.js"; // House style: headline-style Title Case for all suite titles so they // look correct everywhere they surface (home cards, rankings hero, diff --git a/pyproject.toml b/pyproject.toml index ea8d476d..bbdcf567 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,7 +3,7 @@ name = "accelmark" version = "0.1.0" description = "Open benchmark leaderboard for AI accelerators on LLM workloads" readme = "README.md" -license = "MIT" +license = "Apache-2.0" license-files = ["LICENSE"] requires-python = ">=3.10" authors = [ @@ -31,7 +31,7 @@ classifiers = [ "Intended Audience :: Science/Research", "Topic :: Scientific/Engineering :: Artificial Intelligence", "Topic :: System :: Benchmark", - "License :: OSI Approved :: MIT License", + "License :: OSI Approved :: Apache Software License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", @@ -60,4 +60,20 @@ requires = ["setuptools>=68"] build-backend = "setuptools.build_meta" [tool.setuptools.packages.find] -include = ["loadgen*"] +# AccelMark is primarily a clone-and-run repository (see `python run.py` +# in README.md). `pip install -e .` is supported so contributors can pick +# up the shared deps and import the helper packages (`loadgen`, the base +# `runners.benchmark_runner` class, `serve.adapter` / `serve.capacity`, +# and the `openclaw_skill` entry points) from anywhere — but there is no +# top-level `accelmark` package to invoke via `python -m`. +include = [ + "loadgen*", + "runners*", + "serve*", + "openclaw_skill*", +] +exclude = [ + "tests*", + "*.tests", + "*.tests.*", +] diff --git a/runners/README.md b/runners/README.md index aaf4d812..c5180111 100644 --- a/runners/README.md +++ b/runners/README.md @@ -89,13 +89,15 @@ class MyFrameworkRunner(BenchmarkRunner): # You almost never need to restrict this below ["bf16", "fp16", "fp32"]. SUPPORTED_PRECISIONS = ["bf16", "fp16", "fp32"] - # Declare supported quantization formats for Suite C. - # BF16 is always included. List only formats your framework can load. - # FP8 requires native FP8 hardware (H100, MI300X). - SUPPORTED_QUANTIZATIONS = ["fp8", "w8a8", "w8a16", "w4a16"] # H100 full support - # SUPPORTED_QUANTIZATIONS = ["w8a8", "w8a16", "w4a16"] # A100 (no FP8) - # SUPPORTED_QUANTIZATIONS = ["w8a8", "w4a16"] # ROCm example - # SUPPORTED_QUANTIZATIONS = [] # Apple MLX + # Declare the framework's quantization backends. Suite C cross-references + # each precision_model_map entry's engine_kwargs.quantization against this + # list to decide which formats to run on this runner. The strings must + # match the engine's own backend names (e.g. vLLM's `quantization=` kwarg), + # NOT suite-level precision tags like W8A8/FP8. + SUPPORTED_QUANTIZATION_BACKENDS = ["fp8", "compressed-tensors", "gptq_marlin"] # vLLM full + # SUPPORTED_QUANTIZATION_BACKENDS = ["compressed-tensors", "gptq_marlin"] # A100 (no FP8) + # SUPPORTED_QUANTIZATION_BACKENDS = ["compressed-tensors", "gptq_marlin"] # ROCm + # SUPPORTED_QUANTIZATION_BACKENDS = [] # Apple MLX def load_model(self, model_path: str, parallelism: dict) -> None: from myframework import Engine @@ -268,7 +270,7 @@ Override these class attributes in your runner to declare what the framework sup | `SUPPORTS_ONLINE` | `True` | Set `False` if framework cannot handle concurrent requests | | `SUPPORTS_MULTI_CHIP` | `True` | Set `False` if no tensor parallelism — tensor_parallel_size from runner config and CLI is ignored; runner always uses 1 chip | | `SUPPORTED_PRECISIONS` | `["bf16", "fp16", "fp32"]` | Maximum compute precisions on capable hardware. Hardware detection automatically restricts this (V100 → FP16, MI100 → FP16, M1 → FP16). Only restrict below the default if your framework genuinely cannot use a precision regardless of hardware. | -| `SUPPORTED_QUANTIZATIONS` | `[]` | Quantization formats supported for Suite C. Use uppercase strings: `"FP8"`, `"W8A8"`, `"W8A16"`, `"W4A16"`. BF16 is always supported and does not need to be listed. Empty list means this runner skips all quantized formats in Suite C. | +| `SUPPORTED_QUANTIZATION_BACKENDS` | `[]` | Framework-level quantization backends Suite C can use, named after the engine's own identifiers (vLLM examples: `"fp8"`, `"compressed-tensors"`, `"gptq_marlin"`, `"awq"`). NOT the suite precision tags (`W8A8`, `FP8`, `W4A16` …). BF16/FP16/FP32 are always allowed and must not be listed. Empty list means this runner skips every quantized entry in Suite C's `precision_model_map`. | --- diff --git a/runners/benchmark_runner.py b/runners/benchmark_runner.py index 5b0c2747..747071af 100644 --- a/runners/benchmark_runner.py +++ b/runners/benchmark_runner.py @@ -82,12 +82,43 @@ class InferenceRequest: extra: dict = dataclass_field(default_factory=dict) -# ── Scenario constants ──────────────────────────────────────────────────────── +# ── Scenario registry ──────────────────────────────────────────────────────── +# +# Each ScenarioSpec describes how the base class should drive a scenario name +# at runtime. Adding a new scenario means appending one row to +# ``_SCENARIO_REGISTRY`` (and, if needed, implementing a new inference method +# on the runner) — no edits to the if/elif ladders or merge order constants. + +from dataclasses import dataclass + + +@dataclass(frozen=True) +class ScenarioSpec: + """Declarative contract for one scenario name.""" + + name: str + inference_kind: str # "offline" | "streaming" + needs_streaming: bool # raise an error if SUPPORTS_STREAMING is False + use_async: bool # passed to load_model() as use_async + merge_key: Optional[str] # key under metrics dict to merge (None = no-merge, e.g. accuracy) + + +_SCENARIO_REGISTRY: "dict[str, ScenarioSpec]" = { + "accuracy": ScenarioSpec("accuracy", "offline", False, False, None), + "offline": ScenarioSpec("offline", "offline", False, False, "offline"), + "online": ScenarioSpec("online", "streaming", True, True, "online"), + "interactive": ScenarioSpec("interactive", "streaming", True, True, "interactive"), + "sustained": ScenarioSpec("sustained", "streaming", True, True, "sustained"), + "speculative": ScenarioSpec("speculative", "offline", False, False, "speculative"), + "burst": ScenarioSpec("burst", "streaming", True, True, "burst"), + "training": ScenarioSpec("training", "offline", False, False, "training"), +} # Canonical order in which scenario metrics are merged into a suite result. -_MERGE_SCENARIO_KEYS = [ - "offline", "online", "interactive", "sustained", "training", - "speculative", "burst", +# Derived from the registry so adding a new scenario only requires editing +# the registry above. +_MERGE_SCENARIO_KEYS: list[str] = [ + spec.merge_key for spec in _SCENARIO_REGISTRY.values() if spec.merge_key ] # ── Base class ──────────────────────────────────────────────────────────────── @@ -315,13 +346,9 @@ def get_peak_memory_gb(self) -> Optional[float]: """ return None - def format_prompt(self, prompt: str) -> str: - """ - Apply chat template or other prompt formatting. - Override if the platform requires specific prompt formatting. - Default: return prompt unchanged. - """ - return prompt + # ``format_prompt`` is defined further down (it depends on self.tokenizer + # which subclasses populate during load_model). Keeping it as a single + # source of truth avoids two definitions on the same class. def get_supported_precisions( self, chip_name: str, env_info: dict @@ -933,6 +960,152 @@ def parse_args(self) -> argparse.Namespace: return args + # ── Scenario dispatch helpers ──────────────────────────────────────────── + + @classmethod + def _scenario_spec(cls, scenario: str) -> ScenarioSpec: + """Return the ScenarioSpec for ``scenario``. + + Falls back to a synthetic streaming spec for names not declared in + the global registry — this preserves the historical behaviour where + unknown scenarios defaulted to streaming inference. New scenarios + SHOULD register themselves in ``_SCENARIO_REGISTRY`` so the merge + order and use_async flag are picked up automatically. + """ + spec = _SCENARIO_REGISTRY.get(scenario) + if spec is not None: + return spec + return ScenarioSpec( + name=scenario, + inference_kind="streaming", + needs_streaming=False, + use_async=True, + merge_key=scenario, + ) + + def _resolve_inference_fn(self, scenario: str): + """Pick the runner's inference function for the given scenario name. + + Dispatch rules are derived from the scenario registry: + - ``inference_kind == "offline"`` → ``inference_fn_offline`` + - ``inference_kind == "streaming"`` → ``inference_fn_streaming`` + (requires ``SUPPORTS_STREAMING = True``; aborts otherwise when + the scenario explicitly demands streaming) + - Unknown / non-streaming runners fall back to a sync wrapper + around ``inference_fn_offline``. + """ + spec = self._scenario_spec(scenario) + + if spec.inference_kind == "offline": + return self.inference_fn_offline + + if spec.inference_kind == "streaming": + if self.SUPPORTS_STREAMING: + return self.inference_fn_streaming + if spec.needs_streaming: + print( + f"Error: scenario '{scenario}' requires " + f"SUPPORTS_STREAMING = True." + ) + sys.exit(1) + def _sync_wrapper(request: InferenceRequest) -> InferenceResult: + results = self.inference_fn_offline([request]) + return results[0] + return _sync_wrapper + + raise ValueError( + f"Unknown inference_kind '{spec.inference_kind}' for scenario " + f"'{scenario}'. Update _SCENARIO_REGISTRY in benchmark_runner.py." + ) + + # ── Shared load-context preparation ─────────────────────────────────────── + + def _prepare_load_context(self, args, suite: dict, output_dir: Path) -> dict: + """ + Common pre-`load_model` plumbing shared by accuracy and benchmark + scenarios. Resolves the precision-aware model id, model path, + parallelism, env_info, and configures the precision-related instance + variables (``_precision_dtype_override``, ``_precision_engine_kwargs``, + ``_effective_precision``). Returns a dict of locally useful values. + + Centralising this avoids the precision_model_map / dtype-override / + engine_kwargs glue being copy-pasted between branches. + """ + # For Suite C subprocesses, --precision is set and precision_model_map + # holds the actual checkpoint being loaded. Use it for the display + # label so the log doesn't show "Loading meta-llama/..." when in fact + # loading the FP8/W8A8/... variant. + _precision_arg = getattr(args, "precision", None) + _precision_model_map = suite.get("precision_model_map", {}) + _fmt_entry = _precision_model_map.get((_precision_arg or "").upper(), {}) + + model_id = _fmt_entry.get("model_id") or suite.get("model_id", "unknown") + effective_model_path = self._resolve_model_path( + model_id, getattr(args, "model_path", None) + ) + + if getattr(args, "model_note", None): + self._model_note_override = args.model_note + if getattr(args, "model_name", None): + self._model_name_override = args.model_name + + _par = getattr(self, "_parallelism", {}) + parallelism = { + "tensor_parallel_size": _par.get("tensor_parallel_size", 1), + "pipeline_parallel_size": _par.get("pipeline_parallel_size", 1), + "expert_parallel_size": _par.get("expert_parallel_size", 1), + "data_parallel_size": _par.get("data_parallel_size", 1), + } + + # Read env_info.json from task directory. For standalone runs it's in + # output_dir; for --scenario all it's in the parent. For deeply nested + # subprocess runs it may be two levels up — search up the tree. + env_info: dict = {} + for _candidate in (output_dir, output_dir.parent, output_dir.parent.parent): + _p = _candidate / "env_info.json" + if _p.exists(): + with open(_p) as _f: + env_info = json.load(_f) + break + + # Resolve precision — explicit --precision (e.g. set by a suite + # subprocess) takes priority over hardware-derived selection. + if getattr(args, "precision", None): + effective_precision = args.precision.upper() + else: + effective_precision = self._resolve_precision(suite, env_info) + self._effective_precision = effective_precision + + # Inject dtype_override and engine_kwargs from precision_model_map + # so the runner can apply the correct quantization kernel and dtype. + self._precision_dtype_override = _fmt_entry.get("dtype_override") + self._precision_engine_kwargs = dict(_fmt_entry.get("engine_kwargs") or {}) + + # If the precision_model_map entry declares a quantization + # engine_kwarg, the runner will use dtype="auto", which lets vLLM + # default the compute dtype to BF16 internally. On pre-Ampere + # hardware (V100/T4) that does not support BF16 this silently + # produces wrong results — force float16 when no dtype_override was + # already set and the hardware can't do BF16. + _entry_has_quantization = bool( + (_fmt_entry.get("engine_kwargs") or {}).get("quantization") + ) + if ( + not self._precision_dtype_override + and _entry_has_quantization + and "BF16" not in self._detect_supported_precisions(env_info) + ): + self._precision_dtype_override = "float16" + + return { + "model_id": model_id, + "effective_model_path": effective_model_path, + "parallelism": parallelism, + "env_info": env_info, + "effective_precision": effective_precision, + "fmt_entry": _fmt_entry, + } + # ── Single scenario ─────────────────────────────────────────────────────── def _run_single_scenario(self, args, suite: dict) -> dict: @@ -956,96 +1129,23 @@ def _run_single_scenario(self, args, suite: dict) -> dict: output_dir.mkdir(parents=True, exist_ok=True) self._setup_logging(str(output_dir)) - # Resolve and load model - # For Suite C subprocesses, --precision is set — use precision_model_map - # to get the actual checkpoint model_id for display and metadata. - _precision_arg = getattr(args, "precision", None) - _precision_model_map = suite.get("precision_model_map", {}) - _fmt_entry = _precision_model_map.get((_precision_arg or "").upper(), {}) - model_id = ( - _fmt_entry.get("model_id") - or suite.get("model_id", "unknown") - ) - effective_model_path = self._resolve_model_path( - model_id, getattr(args, "model_path", None) - ) - if getattr(args, "model_note", None): - self._model_note_override = args.model_note - if getattr(args, "model_name", None): - self._model_name_override = args.model_name - _par = getattr(self, "_parallelism", {}) - tp_size = _par.get("tensor_parallel_size", 1) - pp_size = _par.get("pipeline_parallel_size", 1) - ep_size = _par.get("expert_parallel_size", 1) - dp_size = _par.get("data_parallel_size", 1) - - # Load env_info for precision resolution (search up to 2 levels) - _acc_env_info: dict = {} - for _c in [output_dir, output_dir.parent, output_dir.parent.parent]: - _p = _c / "env_info.json" - if _p.exists(): - with open(_p) as _f: - _acc_env_info = json.load(_f) - break - - if getattr(args, "precision", None): - effective_precision = args.precision.upper() - else: - effective_precision = self._resolve_precision(suite, _acc_env_info) - self._effective_precision = effective_precision - - # Inject dtype_override and engine_kwargs from precision_model_map entry - # so the runner can apply the correct quantization kernel and dtype. - self._precision_dtype_override = _fmt_entry.get("dtype_override") - self._precision_engine_kwargs = dict(_fmt_entry.get("engine_kwargs") or {}) - - # If the precision_model_map entry declares a quantization engine_kwarg, the - # runner will use dtype="auto", which lets vLLM default the compute dtype to - # BF16 internally. On pre-Ampere hardware (V100/T4) that doesn't support BF16 - # this silently produces wrong results. If no dtype_override was already set - # by the suite entry and the hardware doesn't support BF16, force float16. - _entry_has_quantization = bool( - (_fmt_entry.get("engine_kwargs") or {}).get("quantization") - ) - if (not self._precision_dtype_override - and _entry_has_quantization - and "BF16" not in self._detect_supported_precisions(_acc_env_info)): - self._precision_dtype_override = "float16" - - if (args.scenario == "speculative" - and "speculative_model" not in self._precision_engine_kwargs): - _draft_id = suite.get("speculative_draft_model_id") - if _draft_id: - _saved = ( - getattr(self, "_model_source", None), - getattr(self, "_model_name_override", None), - getattr(self, "_model_note_override", None), - ) - _draft_path = self._resolve_model_path(_draft_id, None) - (self._model_source, - self._model_name_override, - self._model_note_override) = _saved - self._precision_engine_kwargs["speculative_model"] = _draft_path - self._precision_engine_kwargs.setdefault( - "num_speculative_tokens", - suite.get("speculative_num_tokens", 4), - ) - self._precision_engine_kwargs.setdefault( - "speculative_draft_tensor_parallel_size", 1, - ) + # Resolve precision-aware model_id, parallelism, env_info, and + # configure self._precision_* via the shared helper. Accuracy is + # always plain decode, so no speculative-draft injection here. + _ctx = self._prepare_load_context(args, suite, output_dir) + model_id = _ctx["model_id"] + effective_model_path = _ctx["effective_model_path"] + parallelism = _ctx["parallelism"] print(f"Loading {model_id} for accuracy check...") t_load = time.perf_counter() self._current_scenario = "accuracy" self._advance_dist_port() self.load_model(effective_model_path, { - "tensor_parallel_size": tp_size, - "pipeline_parallel_size": pp_size, - "expert_parallel_size": ep_size, - "data_parallel_size": dp_size, - "max_tokens": suite.get("output_tokens_max", 512), - "max_model_len": suite.get("max_model_len"), - "use_async": False, + **parallelism, + "max_tokens": suite.get("output_tokens_max", 512), + "max_model_len": suite.get("max_model_len"), + "use_async": False, }) print(f"Model loaded in {round(time.perf_counter() - t_load, 1)}s") @@ -1072,74 +1172,17 @@ def _run_single_scenario(self, args, suite: dict) -> dict: # Load submitter profile profile = self._load_submitter_profile() - # Resolve model path - # For Suite C subprocesses, --precision is set and precision_model_map holds - # the actual checkpoint being loaded. Use it for the display label so the log - # doesn't show "Loading meta-llama/Llama-3.1-8B-Instruct..." when loading FP8. - _precision_arg = getattr(args, "precision", None) - _precision_model_map = suite.get("precision_model_map", {}) - _fmt_entry = _precision_model_map.get((_precision_arg or "").upper(), {}) - model_id = ( - _fmt_entry.get("model_id") - or suite.get("model_id", "unknown") - ) - effective_model_path = self._resolve_model_path( - model_id, getattr(args, "model_path", None) - ) - if getattr(args, "model_note", None): - self._model_note_override = args.model_note - if getattr(args, "model_name", None): - self._model_name_override = args.model_name - - # Read env_info.json from task directory. - # For standalone runs it's in output_dir; for --scenario all it's in the parent. - # For deeply nested subprocess runs it may be two levels up — search up the tree. - env_info = {} - for _candidate in [output_dir, output_dir.parent, output_dir.parent.parent]: - _p = _candidate / "env_info.json" - if _p.exists(): - with open(_p) as f: - env_info = json.load(f) - break - - # Load model - _par = getattr(self, "_parallelism", {}) - tp_size = _par.get("tensor_parallel_size", 1) - pp_size = _par.get("pipeline_parallel_size", 1) - ep_size = _par.get("expert_parallel_size", 1) - dp_size = _par.get("data_parallel_size", 1) - - print(f"Loading {model_id}...") - t_load_start = time.perf_counter() - self._current_scenario = args.scenario - self._advance_dist_port() - - # Resolve precision — handles BF16→FP16 fallback for older hardware. - # Explicit --precision (e.g. set by a suite subprocess) takes priority. - if getattr(args, "precision", None): - effective_precision = args.precision.upper() - else: - effective_precision = self._resolve_precision(suite, env_info) - self._effective_precision = effective_precision - - # Inject dtype_override and engine_kwargs from precision_model_map entry - # so the runner can apply the correct quantization kernel and dtype. - self._precision_dtype_override = _fmt_entry.get("dtype_override") - self._precision_engine_kwargs = dict(_fmt_entry.get("engine_kwargs") or {}) - - # If the precision_model_map entry declares a quantization engine_kwarg, the - # runner will use dtype="auto", which lets vLLM default the compute dtype to - # BF16 internally. On pre-Ampere hardware (V100/T4) that doesn't support BF16 - # this silently produces wrong results. If no dtype_override was already set - # by the suite entry and the hardware doesn't support BF16, force float16. - _entry_has_quantization = bool( - (_fmt_entry.get("engine_kwargs") or {}).get("quantization") - ) - if (not self._precision_dtype_override - and _entry_has_quantization - and "BF16" not in self._detect_supported_precisions(env_info)): - self._precision_dtype_override = "float16" - + # Resolve precision-aware model_id, parallelism, env_info, and + # configure self._precision_* via the shared helper. + _ctx = self._prepare_load_context(args, suite, output_dir) + model_id = _ctx["model_id"] + effective_model_path = _ctx["effective_model_path"] + parallelism = _ctx["parallelism"] + env_info = _ctx["env_info"] + + # Inject speculative-decoding draft model (only relevant in the + # ``speculative`` scenario branch — accuracy / offline / online never + # need a draft model and the suite contract may not declare one). if (args.scenario == "speculative" and "speculative_model" not in self._precision_engine_kwargs): _draft_id = suite.get("speculative_draft_model_id") @@ -1162,14 +1205,16 @@ def _run_single_scenario(self, args, suite: dict) -> dict: "speculative_draft_tensor_parallel_size", 1, ) + print(f"Loading {model_id}...") + t_load_start = time.perf_counter() + self._current_scenario = args.scenario + self._advance_dist_port() + self.load_model(effective_model_path, { - "tensor_parallel_size": tp_size, - "pipeline_parallel_size": pp_size, - "expert_parallel_size": ep_size, - "data_parallel_size": dp_size, - "max_tokens": suite.get("output_tokens_max", 512), - "max_model_len": suite.get("max_model_len"), - "use_async": args.scenario not in ("offline", "accuracy", "speculative"), + **parallelism, + "max_tokens": suite.get("output_tokens_max", 512), + "max_model_len": suite.get("max_model_len"), + "use_async": self._scenario_spec(args.scenario).use_async, }) model_load_seconds = round(time.perf_counter() - t_load_start, 1) print(f"Model loaded in {model_load_seconds}s") @@ -1204,29 +1249,10 @@ def _run_single_scenario(self, args, suite: dict) -> dict: chip_count=chip_count, ) - # Select inference function - if args.scenario == "offline": - inference_fn = self.inference_fn_offline - elif args.scenario == "speculative": - inference_fn = self.inference_fn_offline - elif args.scenario == "sustained": - if not self.SUPPORTS_STREAMING: - print(f"Error: sustained scenario requires SUPPORTS_STREAMING = True.") - sys.exit(1) - inference_fn = self.inference_fn_streaming - elif args.scenario == "burst": - if not self.SUPPORTS_STREAMING: - print(f"Error: burst scenario requires SUPPORTS_STREAMING = True.") - sys.exit(1) - inference_fn = self.inference_fn_streaming - elif self.SUPPORTS_STREAMING: - inference_fn = self.inference_fn_streaming - else: - # Fallback for platforms without streaming - def _sync_wrapper(request: InferenceRequest) -> InferenceResult: - results = self.inference_fn_offline([request]) - return results[0] - inference_fn = _sync_wrapper + # Select inference function via the scenario registry. Unknown + # scenarios fall through with a sensible default — streaming when + # supported, otherwise a sync wrapper around inference_fn_offline. + inference_fn = self._resolve_inference_fn(args.scenario) # Run benchmark benchmark_start = datetime.now(timezone.utc) @@ -1458,7 +1484,6 @@ def _run_all_scenarios(self, args, suite: dict) -> None: else: print(" --skip-accuracy-gate set -- continuing anyway.\n") acc_result = None - acc_result = None else: # Subprocess succeeded — read accuracy.json written by the child with open(acc_json_path) as f: @@ -1746,33 +1771,19 @@ def _load_accuracy_baseline_for_format( except Exception: return None - def _run_accuracy_scenario( - self, - suite: dict, - output_dir: Path, - ) -> dict: + def _score_accuracy_questions(self, questions: list) -> tuple: """ - Run accuracy check as a proper scenario. - Uses inference_fn_offline() — same model, framework, precision as the benchmark. - - Args: - suite: Parsed suite.json dict - output_dir: Where to write accuracy.json + Run the accuracy question bank through ``inference_fn_offline`` and + score the answers. - Returns: - Accuracy dict with subset_score, baseline_delta, valid fields. + Returns ``(score, correct, total, wrong_examples, scored_outputs)`` + — shared by both :meth:`_run_accuracy_scenario` and + :meth:`_run_accuracy_scenario_for_format` so the inference/scoring + path stays identical (only baseline policy differs between callers). """ - questions = self._load_accuracy_questions() - - print(f"\n{'='*60}") - print(f" Accuracy Check ({len(questions)} questions)") - print(f" Framework: {self._get_framework_name()}") - print(f" Precision: {getattr(self, '_effective_precision', None) or suite.get('precision_required', 'BF16')}") - print(f"{'='*60}\n") - # Build InferenceRequest objects with raw (unformatted) prompts. - # format_prompt() is called by the runner's inference_fn_offline internally — - # passing raw prompts here avoids double-formatting. + # format_prompt() is called by the runner's inference_fn_offline + # internally — passing raw prompts here avoids double-formatting. accuracy_requests = [] for i, q in enumerate(questions): raw = ( @@ -1788,7 +1799,6 @@ def _run_accuracy_scenario( request_id=i, )) - # Run through inference_fn_offline — same model, framework, precision t_start = time.perf_counter() try: results = self.inference_fn_offline(accuracy_requests) @@ -1797,10 +1807,9 @@ def _run_accuracy_scenario( elapsed = round(time.perf_counter() - t_start, 1) print(f"Completed in {elapsed}s") - # Score answers correct = 0 - wrong_examples = [] - scored_outputs = [] + wrong_examples: list[str] = [] + scored_outputs: list[dict] = [] for i, result in enumerate(results): text = (result.output_text or "").strip() match = re.search(r"\b([ABCD])\b", text.upper()) @@ -1817,15 +1826,58 @@ def _run_accuracy_scenario( ) scored_outputs.append({ "question_id": questions[i].get("question_id", i), - "question": questions[i]["question"], - "choices": questions[i]["choices"], - "expected": expected, - "predicted": predicted, - "correct": is_correct, - "raw_output": text[:500], + "question": questions[i]["question"], + "choices": questions[i]["choices"], + "expected": expected, + "predicted": predicted, + "correct": is_correct, + "raw_output": text[:500], }) score = round(correct / len(questions), 4) if questions else 0.0 + return score, correct, len(questions), wrong_examples, scored_outputs + + @staticmethod + def _write_accuracy_artifacts( + output_dir: Path, acc: dict, scored_outputs: list + ) -> None: + """Persist accuracy.json and accuracy_outputs.jsonl for one scenario.""" + acc_path = output_dir / "accuracy.json" + with open(acc_path, "w") as f: + json.dump(acc, f, indent=2) + print(f"Saved to: {acc_path}") + + outputs_path = output_dir / "accuracy_outputs.jsonl" + with open(outputs_path, "w") as f: + for row in scored_outputs: + f.write(json.dumps(row) + "\n") + + def _run_accuracy_scenario( + self, + suite: dict, + output_dir: Path, + ) -> dict: + """ + Run accuracy check as a proper scenario. + Uses inference_fn_offline() — same model, framework, precision as the benchmark. + + Args: + suite: Parsed suite.json dict + output_dir: Where to write accuracy.json + + Returns: + Accuracy dict with subset_score, baseline_delta, valid fields. + """ + questions = self._load_accuracy_questions() + + print(f"\n{'='*60}") + print(f" Accuracy Check ({len(questions)} questions)") + print(f" Framework: {self._get_framework_name()}") + print(f" Precision: {getattr(self, '_effective_precision', None) or suite.get('precision_required', 'BF16')}") + print(f"{'='*60}\n") + + score, correct, total, wrong_examples, scored_outputs = \ + self._score_accuracy_questions(questions) # Compare to baseline — one-sided: score must not drop more than threshold # below baseline. Scoring ABOVE baseline is always valid. @@ -1844,7 +1896,7 @@ def _run_accuracy_scenario( valid = (delta >= -threshold) if delta is not None else True # Print results - print(f"Score: {correct}/{len(questions)} = {score:.4f}") + print(f"Score: {correct}/{total} = {score:.4f}") if baseline_score is not None: sign = "+" if delta >= 0 else "" print(f"Baseline: {baseline_score:.4f}") @@ -1859,30 +1911,18 @@ def _run_accuracy_scenario( f"(threshold: {threshold}) — submission will be flagged") acc = { - "subset_score": score, + "subset_score": score, "baseline_delta": delta, - "valid": valid, - "framework": self._get_framework_name(), - "precision": getattr(self, "_effective_precision", None) or suite.get("precision_required", "BF16"), + "valid": valid, + "framework": self._get_framework_name(), + "precision": getattr(self, "_effective_precision", None) or suite.get("precision_required", "BF16"), "notes": ( f"Integrated accuracy check — used same " f"{self._get_framework_name()} instance as benchmark." ), } - # Save accuracy.json to submission directory - acc_path = output_dir / "accuracy.json" - with open(acc_path, "w") as f: - json.dump(acc, f, indent=2) - print(f"Saved to: {acc_path}") - - # Save per-question outputs (gitignored — for local debugging only) - outputs_path = output_dir / "accuracy_outputs.jsonl" - with open(outputs_path, "w") as f: - for row in scored_outputs: - f.write(json.dumps(row) + "\n") - print(f"Per-question outputs saved to: {outputs_path}") - + self._write_accuracy_artifacts(output_dir, acc, scored_outputs) return acc def _run_accuracy_scenario_for_format( @@ -1918,60 +1958,8 @@ def _run_accuracy_scenario_for_format( print(f" Framework: {self._get_framework_name()}") print(f"{'='*60}\n") - # Build InferenceRequest objects with raw (unformatted) prompts. - # format_prompt() is called by the runner's inference_fn_offline internally. - accuracy_requests = [] - for i, q in enumerate(questions): - raw = ( - f"Question: {q['question']}\n" - f"A) {q['choices'][0]}\n" - f"B) {q['choices'][1]}\n" - f"C) {q['choices'][2]}\n" - f"D) {q['choices'][3]}\n" - f"Answer:" - ) - accuracy_requests.append(InferenceRequest( - prompt=raw, - request_id=i, - )) - - t_start = time.perf_counter() - try: - results = self.inference_fn_offline(accuracy_requests) - except Exception as e: - raise RuntimeError(f"Accuracy inference failed: {e}") from e - elapsed = round(time.perf_counter() - t_start, 1) - print(f"Completed in {elapsed}s") - - # Score answers - correct = 0 - wrong_examples = [] - scored_outputs = [] - for i, result in enumerate(results): - text = (result.output_text or "").strip() - match = re.search(r"\b([ABCD])\b", text.upper()) - predicted = match.group(1) if match else "?" - expected = questions[i].get("answer", "") - is_correct = (predicted == expected) - if is_correct: - correct += 1 - elif len(wrong_examples) < 3: - wrong_examples.append( - f" Q: {questions[i]['question'][:65]}\n" - f" Expected: {expected}, Got: {predicted} " - f"(raw: '{text[:20]}')" - ) - scored_outputs.append({ - "question_id": questions[i].get("question_id", i), - "question": questions[i]["question"], - "choices": questions[i]["choices"], - "expected": expected, - "predicted": predicted, - "correct": is_correct, - "raw_output": text[:500], - }) - - score = round(correct / len(questions), 4) if questions else 0.0 + score, correct, total, wrong_examples, scored_outputs = \ + self._score_accuracy_questions(questions) # Per-format baseline and threshold baseline_score = self._load_accuracy_baseline_for_format(model_id, precision) @@ -1982,7 +1970,7 @@ def _run_accuracy_scenario_for_format( # None = baseline not set yet (placeholder) — not a failure # Print results - print(f"Score: {correct}/{len(questions)} = {score:.4f}") + print(f"Score: {correct}/{total} = {score:.4f}") if baseline_score is not None: sign = "+" if delta >= 0 else "" print(f"Baseline ({precision}): {baseline_score:.4f}") @@ -2010,18 +1998,7 @@ def _run_accuracy_scenario_for_format( "notes": f"Suite C per-format accuracy check. Threshold: {threshold}", } - # Write accuracy.json - acc_path = output_dir / "accuracy.json" - with open(acc_path, "w") as f: - json.dump(acc, f, indent=2) - print(f"Saved to: {acc_path}") - - # Write per-question outputs (gitignored) - outputs_path = output_dir / "accuracy_outputs.jsonl" - with open(outputs_path, "w") as f: - for row in scored_outputs: - f.write(json.dumps(row) + "\n") - + self._write_accuracy_artifacts(output_dir, acc, scored_outputs) return acc # ── GPU memory release ──────────────────────────────────────────────────── @@ -2111,28 +2088,10 @@ def _build_result_json( ep_size = _par.get("expert_parallel_size", 1) dp_size = _par.get("data_parallel_size", 1) - # For Suite C subprocesses, --precision is set and precision_model_map holds - # the actual quantized checkpoint. Use it so each per-format result.json records - # the real model_id/revision (e.g. RedHatAI/...-FP8), not the suite-level model_id. - _result_precision = ( - getattr(self, "_effective_precision", None) - or getattr(args, "precision", None) - ) - _pm_entry = suite.get("precision_model_map", {}).get( - (_result_precision or "").upper(), {} - ) - _result_model_id = ( - _pm_entry.get("model_id") - or suite.get("model_id", "unknown") - ) - _result_model_revision = ( - _pm_entry.get("model_revision") - or suite.get("model_revision", "unknown") - ) - - # For Suite C subprocesses, --precision is set and precision_model_map holds - # the actual quantized checkpoint. Use it so each per-format result.json records - # the real model_id/revision (e.g. RedHatAI/...-FP8), not the suite-level model_id. + # For Suite C subprocesses, --precision is set and precision_model_map + # holds the actual quantized checkpoint. Use it so each per-format + # result.json records the real model_id/revision (e.g. + # RedHatAI/...-FP8), not the suite-level model_id. _result_precision = ( getattr(self, "_effective_precision", None) or getattr(args, "precision", None) @@ -2196,7 +2155,7 @@ def _build_result_json( "subset_score": None, "baseline_delta": None, "valid": False, - "notes": "Run --scenario accuracy to check model accuracy.", + "notes": "Run --scenario accuracy to check model accuracy.", }, "meta": { "submitted_by": profile.get("submitted_by", ""), diff --git a/runners/template/runner.py b/runners/template/runner.py index 2b502d32..7e797770 100644 --- a/runners/template/runner.py +++ b/runners/template/runner.py @@ -65,11 +65,24 @@ class TemplateRunner(BenchmarkRunner): BenchmarkRunner auto-detects hardware limits and intersects with this list. """ - SUPPORTED_QUANTIZATIONS = [] + SUPPORTED_QUANTIZATION_BACKENDS = [] """ - Quantization formats for Suite C. List any of: "fp8", "w8a8", "w8a16", "w4a16" - BF16 is always supported — do not list it here. - Empty list = this runner skips all quantized formats in Suite C. + Framework-level quantization backends supported by this runner. The + values are passed directly to the engine (e.g. vLLM's `quantization=` + kwarg), so the names mirror the engine's vocabulary — NOT the suite-level + precision tags (W8A8, FP8, W4A16, …). + + Suite C cross-references each precision_model_map entry's + engine_kwargs.quantization against this list to decide which formats to + run on this runner. Adding a new quantized format becomes a pure suite + edit — no runner change is needed if the backend is already supported. + + Examples (vLLM names): + SUPPORTED_QUANTIZATION_BACKENDS = ["fp8", "compressed-tensors", "gptq_marlin"] + SUPPORTED_QUANTIZATION_BACKENDS = ["compressed-tensors", "gptq_marlin"] + SUPPORTED_QUANTIZATION_BACKENDS = [] # BF16/FP16/FP32 only + + BF16/FP16/FP32 are always allowed — do not list them here. """ # ── Initializer ─────────────────────────────────────────────────────────── diff --git a/runners/validate_suites.py b/runners/validate_suites.py new file mode 100644 index 00000000..a7b60c79 --- /dev/null +++ b/runners/validate_suites.py @@ -0,0 +1,164 @@ +#!/usr/bin/env python3 +""" +Validate suite folders under suites/. + +Checks per folder: + - suite.json exists and parses as JSON + - suite.json validates against schema/suite.schema.json + - suite.suite_id matches the folder name + - suite.dataset resolves to datasets//requests.jsonl + +Usage: + # Validate every suite + python runners/validate_suites.py + + # Validate a specific suite folder (name or path) + python runners/validate_suites.py --dir suite_A + python runners/validate_suites.py --dir suites/suite_A + python runners/validate_suites.py --dir /abs/path/to/suite_A +""" + +from __future__ import annotations + +import argparse +import json +import sys +from pathlib import Path + +try: + import jsonschema + HAS_JSONSCHEMA = True +except ImportError: + HAS_JSONSCHEMA = False + print("Warning: jsonschema not installed — schema validation skipped") + +REPO_ROOT = Path(__file__).resolve().parent.parent +SUITES_DIR = REPO_ROOT / "suites" +SCHEMA_PATH = REPO_ROOT / "schema" / "suite.schema.json" +DATASETS_DIR = REPO_ROOT / "datasets" + +# Files / folders that live flat under suites/ — not suite folders +_NON_SUITE_NAMES = {"README.md", "__pycache__", ".DS_Store"} + + +def _load_schema() -> dict | None: + if not HAS_JSONSCHEMA: + return None + if not SCHEMA_PATH.exists(): + print(f"Error: schema not found at {SCHEMA_PATH}") + sys.exit(1) + return json.loads(SCHEMA_PATH.read_text()) + + +def _iter_suite_folders() -> list[Path]: + if not SUITES_DIR.exists(): + return [] + out = [] + for entry in sorted(SUITES_DIR.iterdir()): + if not entry.is_dir() or entry.name in _NON_SUITE_NAMES or entry.name.startswith("."): + continue + out.append(entry) + return out + + +def _resolve_target(target: str) -> Path: + p = Path(target) + if p.is_absolute(): + return p + # Allow "suite_A" or "suites/suite_A" + if (SUITES_DIR / target).exists(): + return SUITES_DIR / target + return REPO_ROOT / target + + +def validate_suite(folder: Path, schema: dict | None) -> list[str]: + errors: list[str] = [] + name = folder.name + suite_json = folder / "suite.json" + + if not suite_json.exists(): + errors.append(f"missing suite.json at {suite_json}") + return errors + + try: + data = json.loads(suite_json.read_text()) + except json.JSONDecodeError as exc: + errors.append(f"suite.json is not valid JSON: {exc}") + return errors + + declared_id = data.get("suite_id") + if declared_id != name: + errors.append( + f"suite_id mismatch: folder is '{name}' but suite.suite_id is " + f"'{declared_id}'." + ) + + if schema is not None: + validator = jsonschema.Draft7Validator(schema) + for err in validator.iter_errors(data): + path = ".".join(str(p) for p in err.absolute_path) or "" + errors.append(f"schema: {path}: {err.message}") + + dataset = data.get("dataset") + if dataset: + dataset_path = DATASETS_DIR / dataset / "requests.jsonl" + if not dataset_path.exists(): + errors.append( + f"dataset '{dataset}' referenced by suite.json does not exist " + f"at {dataset_path}. Add the dataset to datasets/ or fix the " + f"'dataset' field." + ) + + return errors + + +def _print_result(folder: Path, errors: list[str]) -> None: + if errors: + print(f"FAIL {folder.name}") + for err in errors: + print(f" - {err}") + else: + print(f"OK {folder.name}") + + +def main() -> int: + parser = argparse.ArgumentParser( + description="Validate suite folders under suites/." + ) + parser.add_argument( + "--dir", + default=None, + help="Validate a single suite folder (name, relative, or absolute path).", + ) + args = parser.parse_args() + + schema = _load_schema() + + if args.dir: + target = _resolve_target(args.dir) + if not target.exists() or not target.is_dir(): + print(f"Error: '{args.dir}' is not an existing directory.") + return 2 + folders = [target] + else: + folders = _iter_suite_folders() + if not folders: + print("No suite folders found under suites/.") + return 0 + + total_errors = 0 + for folder in folders: + errs = validate_suite(folder, schema) + _print_result(folder, errs) + total_errors += len(errs) + + print() + if total_errors: + print(f"Found {total_errors} problem(s) across {len(folders)} suite folder(s).") + return 1 + print(f"All {len(folders)} suite folder(s) valid.") + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/schema/accuracy_subset.README.md b/schema/accuracy_subset.README.md new file mode 100644 index 00000000..4705f0c2 --- /dev/null +++ b/schema/accuracy_subset.README.md @@ -0,0 +1,58 @@ +# `accuracy_subset.jsonl` — accuracy gate question bank + +100 multiple-choice items drawn from +[MMLU](https://github.com/hendrycks/test) (Massive Multitask Language +Understanding). Every benchmark run executes this subset against the loaded +model as a "model-quality sanity check" before measuring throughput or +latency. The subset is **immutable** — see `CONTRIBUTING.md` "A few rules" +and `benchmark_runner.py::_run_accuracy_scenario`. + +## File format + +One JSON object per line: + +```json +{ + "question_id": "mmlu_0096", + "subject": "machine_learning", + "question": "Which of the following statements about Naive Bayes is incorrect?", + "choices": ["...", "...", "...", "..."], + "answer": "B" +} +``` + +| Field | Notes | +|---------------|---------------------------------------------------| +| `question_id` | Stable identifier (`mmlu_`) — never reused | +| `subject` | MMLU subject tag (e.g. `machine_learning`) | +| `question` | Plain-text prompt | +| `choices` | List of exactly 4 strings | +| `answer` | Letter in `{"A", "B", "C", "D"}` | + +## How AccelMark uses it + +- Loaded by `runners/benchmark_runner.py` (`_run_accuracy_scenario`, ~line 1700). +- Scored as `correct / total`; compared against per-suite baselines in + [`accuracy_baselines.json`](accuracy_baselines.json). +- A failed gate aborts the benchmark unless the user passes + `--skip-accuracy-gate` (the resulting submission is permanently flagged). + +This is **not** a measurement of MMLU performance — the subset is too small. +It exists only to catch grossly broken model weights / quantization configs +before runtime measurements waste hours of compute. + +## License & attribution + +The questions are a 100-item subset of MMLU: + +> Hendrycks, D., Burns, C., Basart, S., Zou, A., Mazeika, M., Song, D., & +> Steinhardt, J. (2021). **Measuring Massive Multitask Language +> Understanding.** *International Conference on Learning Representations.* +> arXiv:[2009.03300](https://arxiv.org/abs/2009.03300) +> Source: + +MMLU is distributed under the **MIT License**. AccelMark redistributes +this subset under the same license; the AccelMark Apache-2.0 license +covers only the surrounding evaluation code, not the question content. + +See [`../NOTICE`](../NOTICE) for the full third-party attribution. diff --git a/schema/suite.schema.json b/schema/suite.schema.json new file mode 100644 index 00000000..1367fe0d --- /dev/null +++ b/schema/suite.schema.json @@ -0,0 +1,215 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema", + "title": "AccelMark Suite", + "description": "Contract for suites//suite.json. Validates the fields BenchmarkRunner and the leaderboard generator depend on. Inline notes (keys prefixed with '_') are intentionally allowed.", + "type": "object", + + "required": [ + "suite_id", + "description", + "model_id", + "model_revision", + "dataset", + "scenarios", + "precision_required", + "allowed_precisions", + "max_model_len", + "output_tokens_max", + "concurrency_levels", + "num_runs", + "warmup_runs", + "request_count" + ], + + "additionalProperties": true, + + "properties": { + "suite_id": { + "type": "string", + "pattern": "^suite_[A-Z][A-Za-z0-9_]*$", + "description": "Folder name under suites/. Must match the directory name." + }, + "description": { + "type": "string", + "minLength": 1 + }, + "model_id": { + "type": "string", + "minLength": 1, + "description": "Canonical model identifier (typically a HuggingFace repo id)." + }, + "model_revision": { + "type": "string", + "minLength": 1, + "description": "Pinned model revision (commit SHA or tag) — never 'main'." + }, + "dataset": { + "type": "string", + "pattern": "^[a-z0-9][a-z0-9_]*_v[0-9]+$", + "description": "Dataset folder name under datasets/. Must exist as datasets//requests.jsonl." + }, + + "scenarios": { + "type": "object", + "required": ["default", "extra"], + "additionalProperties": false, + "properties": { + "default": { + "type": "array", + "items": { "$ref": "#/definitions/scenarioName" }, + "uniqueItems": true, + "minItems": 1, + "description": "Scenarios executed when `--scenario default` (or no --scenario) is passed." + }, + "extra": { + "type": "array", + "items": { "$ref": "#/definitions/scenarioName" }, + "uniqueItems": true, + "description": "Opt-in scenarios runnable with --scenario all or --scenario ." + } + } + }, + + "precision_required": { "$ref": "#/definitions/precisionTag" }, + "allowed_precisions": { + "type": "array", + "items": { "$ref": "#/definitions/precisionTag" }, + "uniqueItems": true, + "minItems": 1 + }, + + "max_model_len": { "type": "integer", "minimum": 128 }, + "output_tokens_max": { "type": "integer", "minimum": 1 }, + + "concurrency_levels": { + "type": "array", + "items": { "type": "integer", "minimum": 1 }, + "minItems": 1, + "uniqueItems": true + }, + + "num_runs": { "type": "integer", "minimum": 1 }, + "warmup_runs": { "type": "integer", "minimum": 0 }, + "warmup_minutes": { "type": "number", "minimum": 0 }, + + "request_count": { "type": "integer", "minimum": 1 }, + + "request_distribution": { + "type": "object", + "additionalProperties": true, + "properties": { + "input_tokens_p25": { "type": "number", "minimum": 0 }, + "input_tokens_p50": { "type": "number", "minimum": 0 }, + "input_tokens_p75": { "type": "number", "minimum": 0 }, + "input_tokens_p99": { "type": "number", "minimum": 0 }, + "output_tokens_p50": { "type": "number", "minimum": 0 }, + "output_tokens_p99": { "type": "number", "minimum": 0 }, + "source": { "type": "string" } + } + }, + + "online_qps_levels": { + "type": ["array", "null"], + "items": { "type": "number", "exclusiveMinimum": 0 }, + "minItems": 1, + "uniqueItems": true + }, + "online_sla_ttft_ms": { "type": ["integer", "null"], "minimum": 1 }, + "online_sla_ttft_ms_relaxed": { "type": ["integer", "null"], "minimum": 1 }, + "online_request_count": { "type": ["integer", "null"], "minimum": 1 }, + "online_warmup_runs": { "type": "integer", "minimum": 0 }, + + "interactive_request_count": { "type": ["integer", "null"], "minimum": 1 }, + "interactive_warmup_runs": { "type": "integer", "minimum": 0 }, + + "sustained_concurrency": { "type": "integer", "minimum": 1 }, + "duration_minutes": { "type": "number", "minimum": 0 }, + "sample_interval_seconds": { "type": "number", "minimum": 0 }, + + "accuracy_threshold_delta": { "type": "number" }, + + "required_chips": { + "oneOf": [ + { "type": "integer", "minimum": 1 }, + { "type": "string", "enum": ["auto"] } + ], + "description": "Either an explicit chip count or the literal string 'auto'." + }, + + "chip_counts_required": { + "type": "array", + "items": { "type": "integer", "minimum": 1 }, + "uniqueItems": true + }, + "chip_counts_optional": { + "type": "array", + "items": { "type": "integer", "minimum": 1 }, + "uniqueItems": true + }, + "chip_counts_all": { + "type": "array", + "items": { "type": "integer", "minimum": 1 }, + "uniqueItems": true + }, + + "speculative_draft_model_id": { "type": "string", "minLength": 1 }, + "speculative_draft_model_revision": { "type": "string", "minLength": 1 }, + "speculative_num_tokens": { "type": "integer", "minimum": 1 }, + + "burst_steady_qps": { "type": "number", "exclusiveMinimum": 0 }, + "burst_peak_qps": { "type": "number", "exclusiveMinimum": 0 }, + "burst_duration_seconds": { "type": "number", "exclusiveMinimum": 0 }, + "burst_interval_seconds": { "type": "number", "exclusiveMinimum": 0 }, + + "precision_model_map": { + "type": "object", + "description": "Suite C only — maps each precision tag to a fixed quantized checkpoint.", + "patternProperties": { + "^[A-Z][A-Z0-9]*$": { + "type": "object", + "required": ["model_id", "model_revision"], + "additionalProperties": true, + "properties": { + "model_id": { "type": "string", "minLength": 1 }, + "model_revision": { "type": "string", "minLength": 1 }, + "dtype_override": { "type": "string" }, + "engine_kwargs": { "type": "object" } + } + } + } + }, + "precision_levels": { + "type": "array", + "items": { "$ref": "#/definitions/precisionTag" }, + "uniqueItems": true, + "description": "Suite C only — ordered list of precisions to evaluate." + }, + "accuracy_thresholds": { + "type": "object", + "description": "Suite C only — per-format accuracy delta thresholds.", + "patternProperties": { + "^[A-Z][A-Z0-9]*$": { "type": "number" } + } + } + }, + + "definitions": { + "scenarioName": { + "type": "string", + "enum": [ + "accuracy", + "offline", + "online", + "interactive", + "sustained", + "speculative", + "burst" + ] + }, + "precisionTag": { + "type": "string", + "pattern": "^[A-Z][A-Z0-9]*$", + "description": "Uppercase precision tag (BF16, FP16, FP32, FP8, W8A8, W8A16, W4A16, …)." + } + } +} diff --git a/suites/README.md b/suites/README.md index e3cdbfb6..aedb5652 100644 --- a/suites/README.md +++ b/suites/README.md @@ -309,8 +309,10 @@ not model version differences. Each format runs against the same 100 prompts with concurrency levels `[1, 4, 16, 64]` from `suite_C/suite.json` (not the same sweep as Suite A’s -`[8, 32, 128]`). Format availability depends on the runner's `SUPPORTED_QUANTIZATIONS` -declaration — unsupported formats are skipped automatically. +`[8, 32, 128]`). Format availability depends on the runner's +`SUPPORTED_QUANTIZATION_BACKENDS` declaration — unsupported formats are +skipped automatically by matching each entry's `engine_kwargs.quantization` +against the runner's backend list. ### Metrics @@ -341,13 +343,15 @@ On H100, FP8 would show ~1.5-1.8× speedup. ### Runner requirements -Declare which formats your runner supports: +Declare which quantization backends your runner's framework supports. The +strings are the engine's own backend identifiers (vLLM names shown), NOT +suite precision tags such as W8A8/FP8/W4A16: ```python # In your runner class: -SUPPORTED_QUANTIZATIONS = ["fp8", "w8a8", "w8a16", "w4a16"] # H100 -SUPPORTED_QUANTIZATIONS = ["w8a8", "w8a16", "w4a16"] # A100 (no native FP8) -SUPPORTED_QUANTIZATIONS = [] # BF16 only +SUPPORTED_QUANTIZATION_BACKENDS = ["fp8", "compressed-tensors", "gptq_marlin"] # vLLM full +SUPPORTED_QUANTIZATION_BACKENDS = ["compressed-tensors", "gptq_marlin"] # No native FP8 +SUPPORTED_QUANTIZATION_BACKENDS = [] # BF16 only ``` Each format's checkpoint must be available locally. Add to @@ -712,7 +716,7 @@ submissions. ## Adding a new suite -1. Open a GitHub Issue using the "Request new suite" template +1. Open a GitHub Issue using the [**Propose a new suite**](https://github.com/JuhaoLiang1997/AccelMark/issues/new?template=new_suite.md) template 2. Specify: model, chip count, scenarios, and rationale 3. Discuss the proposal in the issue thread — interested contributors weigh in 4. Create `suites/suite_X/suite.json` referencing a shared dataset diff --git a/suites/suite_C/suite.json b/suites/suite_C/suite.json index 8adbb45c..fa14a3c5 100644 --- a/suites/suite_C/suite.json +++ b/suites/suite_C/suite.json @@ -47,7 +47,7 @@ }, "precision_levels": ["BF16", "FP16", "FP8", "W8A8", "W8A16", "W4A16"], - "_precision_levels_note": "FP16 runs on all hardware including pre-Ampere. FP8 requires Ampere+ and is skipped automatically on FP16-only runners via SUPPORTED_QUANTIZATIONS.", + "_precision_levels_note": "FP16 runs on all hardware including pre-Ampere. FP8 requires Ampere+ and is skipped automatically on FP16-only runners via SUPPORTED_QUANTIZATION_BACKENDS.", "accuracy_thresholds": { "BF16": 0.03, From 7bdd3789f580102fc81279d802ddcdc1ff2c72fb Mon Sep 17 00:00:00 2001 From: Liang Juhao Date: Tue, 19 May 2026 11:23:06 +0800 Subject: [PATCH 2/5] docs(readme): update citation title Co-authored-by: Cursor --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c378e681..5fb2f691 100644 --- a/README.md +++ b/README.md @@ -164,7 +164,7 @@ If you use AccelMark results in research, please cite: ```bibtex @misc{accelmark2026, - title = {AccelMark: Open Benchmark Leaderboard for AI Accelerators on LLM Workloads}, + title = {Beyond NVIDIA! A Multi-Regime Framework for Benchmarking Heterogeneous AI Accelerators}, author = {Liang, Juhao and Zhang, Zhiyuan and Li, Siyu and Lin, Zhihang and Yu, Minchen and Zeng, Li and Chen, Zizhong and Sun, Ruoyu and Wang, Benyou}, year = {2026}, url = {https://github.com/JuhaoLiang1997/AccelMark} From e2e881499b3e7ed5c7d444ca481a44897b40a450 Mon Sep 17 00:00:00 2001 From: Liang Juhao Date: Tue, 19 May 2026 11:27:07 +0800 Subject: [PATCH 3/5] =?UTF-8?q?ci:=20fix=20python-tests=20collection=20?= =?UTF-8?q?=E2=80=94=20lazy=20uvicorn=20import=20+=20add=20numpy?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - serve/server.py: import uvicorn lazily inside start_server() so that importing the module (e.g. from tests, or to expose the ASGI app) does not require uvicorn to be installed. - validate_pr.yml: add numpy to the python-tests install list — pulled in transitively by loadgen, needed once serve.server imports runners.benchmark_runner during test collection. Co-authored-by: Cursor --- .github/workflows/validate_pr.yml | 6 +++++- serve/server.py | 5 ++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/workflows/validate_pr.yml b/.github/workflows/validate_pr.yml index 43054c8f..541af133 100644 --- a/.github/workflows/validate_pr.yml +++ b/.github/workflows/validate_pr.yml @@ -267,8 +267,12 @@ jobs: cache: pip - name: Install test dependencies + # numpy is pulled in transitively by loadgen (imported when serve.server + # touches runners.benchmark_runner). Keep this list lean — these are the + # only packages required to *collect and run* the unit tests; no torch, + # no vendor SDKs, no real runner. run: | - pip install --quiet pytest pydantic fastapi httpx pyyaml jsonschema + pip install --quiet pytest pydantic fastapi httpx pyyaml jsonschema numpy - name: Run serve unit tests run: | diff --git a/serve/server.py b/serve/server.py index 59d85036..a8482c7b 100644 --- a/serve/server.py +++ b/serve/server.py @@ -24,7 +24,6 @@ from contextlib import asynccontextmanager from typing import Optional, Union -import uvicorn from fastapi import Depends, FastAPI, Header, HTTPException, Request, status from fastapi.responses import StreamingResponse @@ -397,6 +396,10 @@ def start_server( logger.info("=" * 60) # ── Launch uvicorn ───────────────────────────────────────────────────── + # Imported lazily so importing `serve.server` (e.g. from tests, or to + # build the ASGI `app` for an external runner) does not require uvicorn. + import uvicorn + uvicorn.run( app, host=host, From b60d5f027e592b8b07cdc8948bb9d4180e8dc48a Mon Sep 17 00:00:00 2001 From: Liang Juhao Date: Tue, 19 May 2026 11:31:50 +0800 Subject: [PATCH 4/5] fix(serve/tests): add TokenStreamingMockRunner; MockRunner now raises NotImplementedError MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Pre-existing breakage in serve/tests/test_server.py — never caught because python-tests was not wired into CI until this branch. - test_server.py imports TokenStreamingMockRunner from mock_runner, but the class did not exist (4 ImportError collection errors). - test_fallback_when_no_token_stream expects MockRunner to *not* implement true token streaming so the server's single-chunk fallback path runs. MockRunner used to yield word-by-word, so the test asserted len(content_chunks) == 1 but got more (1 AssertionError). Fix to match the RunnerProtocol contract (runners/protocol.py:67) — true token streaming is optional, runners signal "not supported" by raising NotImplementedError: - MockRunner.inference_fn_token_stream now raises NotImplementedError (with a trailing unreachable yield so the function shape stays an async generator, matching the protocol). - Add TokenStreamingMockRunner(MockRunner) that overrides the method to yield word-by-word with a small async delay — used by the four tests that exercise the multi-chunk SSE path. Co-authored-by: Cursor --- serve/tests/mock_runner.py | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/serve/tests/mock_runner.py b/serve/tests/mock_runner.py index 9d2c42c5..d0c5c333 100644 --- a/serve/tests/mock_runner.py +++ b/serve/tests/mock_runner.py @@ -73,10 +73,14 @@ async def inference_fn_streaming(self, request: InferenceRequest) -> InferenceRe ) async def inference_fn_token_stream(self, request: InferenceRequest): - """Yield response word by word to simulate token streaming.""" - for word in self._response_text.split(): - await asyncio.sleep(0.001) - yield word + " " + """ + Per RunnerProtocol, true token streaming is optional. MockRunner + declares "not supported" by raising NotImplementedError so the + serve layer exercises its single-chunk fallback path. Use + TokenStreamingMockRunner below to test the true-streaming path. + """ + raise NotImplementedError("MockRunner does not implement true token streaming") + yield # pragma: no cover - keeps this an async generator for the protocol shape def format_prompt(self, prompt: str) -> str: return prompt # pass through unchanged @@ -93,4 +97,17 @@ def _compute_implementation_id(self) -> Optional[str]: class NoStreamingMockRunner(MockRunner): """Mock runner that declares SUPPORTS_STREAMING = False.""" - SUPPORTS_STREAMING = False \ No newline at end of file + SUPPORTS_STREAMING = False + + +class TokenStreamingMockRunner(MockRunner): + """ + Mock runner that *does* implement true token streaming — yields the + response text word by word with a small async delay. Used by tests + that exercise the multi-chunk SSE path in serve/server.py. + """ + + async def inference_fn_token_stream(self, request: InferenceRequest): + for word in self._response_text.split(): + await asyncio.sleep(0.001) + yield word + " " \ No newline at end of file From 42177276aa8082f43b94b9bb80cfa499a0722ef6 Mon Sep 17 00:00:00 2001 From: Liang Juhao Date: Tue, 19 May 2026 11:34:29 +0800 Subject: [PATCH 5/5] =?UTF-8?q?fix(serve/tests):=20TokenStreamingMockRunne?= =?UTF-8?q?r=20=E2=80=94=20emit=20leading=20separator,=20not=20trailing?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit test_token_stream_reassembles_correctly concatenates every content delta and expects exact equality with the response_text. Yielding "word + ' '" tacks an extra trailing space onto the reassembled string, so the assertion failed: got: 'Hello from token stream. ' expected: 'Hello from token stream.' Switch to a leading-space separator (space before every word *after* the first). Concatenation now round-trips exactly, and the shape matches how real BPE / SentencePiece tokenizers stream pieces (the first token has no preceding space; subsequent ones do). Co-authored-by: Cursor --- serve/tests/mock_runner.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/serve/tests/mock_runner.py b/serve/tests/mock_runner.py index d0c5c333..c2d7d9b1 100644 --- a/serve/tests/mock_runner.py +++ b/serve/tests/mock_runner.py @@ -105,9 +105,14 @@ class TokenStreamingMockRunner(MockRunner): Mock runner that *does* implement true token streaming — yields the response text word by word with a small async delay. Used by tests that exercise the multi-chunk SSE path in serve/server.py. + + Spaces are emitted as a leading separator before each word *after* + the first, so concatenating every delta reconstructs the original + response text exactly (no trailing space) — matching how real + tokenizers stream BPE / SentencePiece pieces. """ async def inference_fn_token_stream(self, request: InferenceRequest): - for word in self._response_text.split(): + for i, word in enumerate(self._response_text.split()): await asyncio.sleep(0.001) - yield word + " " \ No newline at end of file + yield (" " + word) if i else word \ No newline at end of file