What is, and is not, in the benchmark database.
Method version 1.0 · Dataset 2026-09-07 · Last updated: September 2026
Benchmark Explorer answers one question: for a given hardware, model, precision and runtime, what has actually been measured, by whom, and what should you expect? Every row keeps its evidence class and its source line. This page states the row schema, the three sources merged into the database, the dedupe rule, the evidence classes, the expected-range and fallback rules, the comparison rule, the confidence rule and the known coverage gaps. If a number on a result page cannot be traced back to something on this page, that is a bug.
Contents
1. What the database is, and is not
The database is 567 rows, one per hardware × model × runtime ×
precision × input × power mode, each carrying a throughput or latency
metric with a source. It is inference-only unless a
row's scope says end_to_end: publisher numbers
are almost always the model forward pass at batch 1, measured with the
hardware's clocks locked to maximum (jetson_clocks on
Jetson) — not a full camera pipeline (decode, pre/post-processing,
tracking, encode). A full pipeline runs slower; use
Camera Stream Capacity for
the end-to-end budget.
It does not run any benchmark itself. It reads numbers the hardware or model vendor already published, or numbers EdgeAIStack derived from those with the scaling stated, and reports them with their class and source. Where nothing has been measured for an exact configuration, it consults the same benchmark hierarchy the Inference Estimator engine uses (class B → C → D) and reports the fallback with its tier chain — never a silent guess.
2. Row schema
| Field | Meaning |
|---|---|
id | Stable row id. |
key | Dedupe key: hardware|family|variant|runtime|precision|resolution|batch|power_mode. |
origin | catalog (EdgeAIStack's existing benchmark library), research_corpus (the deep-research pipeline), or p185 (the LLM/VLM tokens/s pass layered from the Model Memory Fit registry). |
hardware | One of the 21 hardware ids (§9 for the full list, and the hub for labels). |
power_mode | The nvpmodel preset or power state the row was measured at, or default when the publisher did not state one. |
software | { name, version } of the SDK/runtime build, when the source states it. |
model | { family, series, variant, task } — e.g. yolo11 / n / detection. |
input | { resolution, batch } — the input size and batch size the row was measured at. |
runtime | tensorrt, edge_tpu, hailo_sdk, rknn, openvino, pytorch, cpu, mlc, … |
runtime_inferred | True when the source did not state a runtime and the platform's native runtime was assumed (mostly research-corpus rows). |
precision | fp32, fp16, bf16, fp8, int8, int4. |
accelerator | gpu, igpu, npu, tpu, cpu. |
scope | inference_only (default) or end_to_end. |
metrics | { fps, latency_ms, latency_p99_ms, tokens_per_s, power_w, memory_mb, accuracy_map50_95 } — whichever the source published. |
class | C or D — see §5. |
confidence | high / medium / low, set at ingestion from source quality. |
date | Publication or measurement date/quarter, when stated. |
derivation | For class-D rows, the scaling basis in plain text (e.g. "Coral TPU Extended"). |
sources[] | One or more provenance records. |
duplicates[] | Other rows that described the same configuration before dedupe (§4), kept as a count on result pages. |
3. Sources merged
The database is built (edgeaistack-api/scripts/build-benchmarks-v2.js) from three inputs:
- Catalog benchmark library (437 rows before dedupe) — EdgeAIStack's existing per-platform benchmark table, sourced from vendor model pages (Ultralytics, Hailo Model Zoo, Google Coral) and NVIDIA-AI-IOT project READMEs.
- Research corpus (118 rows) — the deep-research pipeline's benchmark corpus (
tools/stream-calculator/benchmark-corpus-research.json), aggregated from published community and vendor measurements across platforms not otherwise covered. - LLM/VLM tokens/s (12 rows) — tokens-per-second measurements from the Jetson AI Lab benchmark pass, layered onto the Model Memory Fit registry's Jetson measurements.
Rows without any usable metric (no fps, latency or tokens/s) are dropped at build time.
4. Dedupe rule
Rows are grouped by hardware × model (family + variant) × runtime
× precision × input (resolution + batch). Within a group, the
power_mode is folded in: a row recorded at the
default power mode (the publisher did not state one) merges
into the same slot as an explicit power mode for the same configuration,
rather than creating a second row — so a class-D estimate made before a
power mode was known does not survive alongside the same configuration
measured at, say, maxn_super. Rows for genuinely different
explicit power modes on the same hardware × model × precision keep
separate rows.
Inside one group, the best-evidenced row is kept: higher
evidence class wins (C over D), and within the same class, higher stated
confidence wins. Everything else in the group is recorded on the kept
row's duplicates[] (origin, class, metric value, source doc
id) rather than discarded outright — 96 rows were folded this way across
the current build.
5. Evidence classes
Only two classes appear in this database today; A and B are reserved.
| Class | Meaning |
|---|---|
| C | Measured and published by the source named on the row (a vendor benchmark page, model-zoo table, or a community/research measurement the corpus cites). 163 rows. |
| D | EdgeAIStack-derived — scaled or interpolated from a related measurement, with the derivation basis stated in plain text on the row. 404 rows. |
A (vendor specification) does not apply to a performance number by definition — a spec sheet states a chip's peak TOPS, not a model's measured fps. B (EdgeAIStack measurement) is reserved for rows measured by EdgeAIStack itself under the measurement protocol and reviewed against it; none exist yet. Submit one and it lands here.
6. Expected-range and fallback rules
For a given hardware × model, the expected range per precision is the min / median / max of every matching row (both classes), plus the count and how many of those are class C. This is not a statistical confidence interval — it is the spread of what has actually been reported, which can be wide when sources disagree on measurement conditions (JetPack version, power mode, warm-up).
When a precision has no matching row, the engine calls the same estimator hierarchy the Inference Estimator engine uses: it tries a class-B (EdgeAIStack measurement), then class-C (measured benchmark), then class-D (derived) source in that order, reports which tier answered, and lists the whole tier chain it walked — so a fallback value is never presented as if it were a measured row. Reference platforms outside the hardware catalog (e.g. NVIDIA A100, T4, V100, Raspberry Pi 5) have no estimator hierarchy to fall back to; an unmatched precision on those platforms reports no value rather than a guess.
7. Comparison rule
The cross-hardware comparison takes the best row per hardware for the same model and precision (highest fps or tokens/s; lowest latency if that is the only metric published), across every hardware that has at least one matching row, and ranks them relative to the fastest. It is a comparison of best-published numbers, not a guarantee every platform was measured under the same conditions — check each row's power mode, input size and runtime before treating the ranking as a like-for-like result.
8. Confidence rule
The rule is deliberately coarse — it is a signal to look at the rows, not a statistical measure. A single class-C row against a wall of class-D estimates for other precisions still reports HIGH or MEDIUM overall depending on the row mix for the exact query; narrow the query (hardware + model + precision) to see the mix that produced the label.
9. Publishers and documents
| Publisher | Document | Covers |
|---|---|---|
| Ultralytics | NVIDIA Jetson guide — YOLO benchmarks | YOLO family on Jetson modules |
| Ultralytics | Raspberry Pi guide — YOLO benchmarks | YOLO family on Raspberry Pi |
| Ultralytics | YOLOv8 model page | YOLOv8 performance table |
| Ultralytics | YOLO11 model page | YOLO11 performance table |
| Ultralytics | YOLOv10 model page | YOLOv10 performance table |
| Ultralytics | RT-DETR model page | RT-DETR performance table |
| Google Coral | Edge TPU benchmarks | Coral Edge TPU throughput |
| Google Coral | Model zoo — image classification | Coral classification models |
| Google Coral | Model zoo — object detection | Coral detection models |
| Google AutoML | EfficientDet repository benchmark table | EfficientDet family |
| Hailo | Hailo Model Zoo — HAILO8 object detection | Hailo-8 detection models |
| Hailo | Hailo Model Zoo — HAILO8 classification | Hailo-8 classification models |
| Hailo | Hailo Model Zoo — HAILO8L object detection | Hailo-8L detection models |
| Hailo | Hailo Model Zoo — HAILO8L classification | Hailo-8L classification models |
| Hailo (community examples) | hailo-rpi5-examples benchmark README | Hailo on Raspberry Pi 5 |
| NVIDIA (NVIDIA-AI-IOT) | nanosam README benchmark table | NanoSAM on Jetson |
| NVIDIA (NVIDIA-AI-IOT) | whisper_trt README benchmark table | Whisper ASR on Jetson |
| MLCommons | MLPerf Inference: Edge results | Cross-vendor edge inference results |
| Hailo | Hailo-8 SDK benchmarks (Model Zoo) | Hailo SDK-reported throughput |
| EdgeAIStack | Benchmark corpus — research-derived rows (P-series) | Class-D derived rows, derivation cited per row |
10. Dataset statistics
| Breakdown | Values |
|---|---|
| Rows | 567 |
| By class | C 163 · D 404 |
| By origin | catalog 437 · research_corpus 118 · p185 12 |
| By runtime | tensorrt 344 · hailo_sdk 111 · edge_tpu 40 · rknn 25 · openvino 25 · pytorch 5 · cpu 5 · mlc 4 · unspecified 8 |
| By precision | int8 301 · fp16 202 · fp32 31 · fp8 21 · int4 4 · unspecified 8 |
| By task | detection 367 · segmentation 72 · pose 47 · classification 59 · text_generation 8 · speech_recognition 8 · vision_language 4 · lidar_detection_3d 2 |
| Hardware | 21 |
| Model families | 49 |
| Deduped | 96 rows folded into duplicates[] during build |
Full breakdown, always current: benchmarks-v2.json (stats object).
11. Coverage gaps
From the research corpus's own gap analysis (tools/stream-calculator/benchmark-corpus-research.json):
- "jetson_agx_thor - only YOLO26 benchmarks available publicly as of 2026-03; no YOLOv8/YOLO11 data"
- "jetson_orin_nano_4gb - no public benchmarks; expect ~55% of Nano 8GB throughput"
- "jetson_agx_orin_32gb - no distinct benchmarks; interpolate between Orin NX and AGX Orin 64GB"
- "whisper models on AGX Orin / Orin NX - only Nano measured by NVIDIA-AI-IOT/whisper_trt"
- "whisper_small on any edge platform - no published measurements found"
- "coral TPU - YOLOv8 incompatible (anchor-free head not fully Edge TPU compilable)"
- "hailo_8 - yolov8l/x too large for on-chip SRAM without model partitioning"
- "NanoSAM on Orin NX - only Nano and AGX Orin measured"
- "raspberry_pi_5 INT8 CPU benchmarks - no INT8 TFLite delegate benchmarks found for detection"
- "intel_nuc - OpenVINO iGPU benchmarks are community-only; no official Intel NUC AI benchmark suite"
These are exactly the configurations where the expected-range table (§6) falls back to the estimator hierarchy rather than a matched row — a submitted measurement for any of them replaces a fallback with a class-C row.
12. What invalidates a result
- A dataset update. Every result URL carries
mv(method version) anddv(dataset version); a newer research pass or measurement submission bumpsdv, and a result page built against an older one says so. - A different power mode, JetPack/SDK version or input size than the row's. Rows are keyed to an exact configuration; a measurement at a different power mode or clock lock can differ meaningfully, especially near thermal limits.
- A class-D row later measured. Submitting a measurement for a configuration that currently only has a class-D estimate replaces it with a class-C row and moves the derived estimate to that row's
duplicates[]. - A coverage gap filled by future research (§11) — the fallback chain reported today may shorten once a real measurement lands.
13. Limitations
- 404 of 567 rows (71%) are class D — EdgeAIStack-derived, not independently measured. Treat any figure without a class-C row nearby as a planning estimate.
- No class-A or class-B rows exist yet; class B is reserved for EdgeAIStack's own measurements once the measurement protocol produces some.
- Publisher measurement conditions (exact JetPack/SDK version, thermal state, warm-up length) are not always fully stated on the source page; where a row's
runtimeis inferred rather than stated, it is flaggedruntime_inferred. - The cross-hardware comparison (§7) does not normalise for different power modes, input sizes or measurement dates across hardware — read each row before treating a ranking as apples-to-apples.
- See §11 for the specific hardware × model combinations known to be unmeasured.
14. Method changelog
| Method | Dataset | Date | Change |
|---|---|---|---|
| 1.0 | 2026-09-07 | 2026-09-07 | First release. 567 rows across 21 hardware platforms and 49 model families, merged from the catalog benchmark library, the research corpus and the LLM/VLM tokens/s pass, deduplicated to the best-evidenced row per configuration. Expected-range, comparison and confidence rules shared in spirit with the other V2 constraint engines. |
Method changes bump the method version; dataset updates (new research
passes, new measurement submissions) bump the dataset version. Both
appear in the citation block under every result and in the
provenance object of every API response.
Browse the database, or measure your own board.
Every result carries its rows, evidence classes, source lines and a permanent link. Browse the precomputed tree at /benchmarks/, the raw database at benchmarks-v2.json, or read the measurement protocol to submit a class-C row.