Repository navigation
docs: add a benchmarks section - #1457
Conversation
Adds docs/docs/04-benchmarks with the v0.10.0 measurements: 124 Android variants on a Galaxy S26 Ultra, 89 of them on a Pixel 10, and 124 iOS variants on an iPhone 17 and an iPhone SE (3rd gen), plus 23 LLM variants. Four pages: an overview covering devices, the input each task was given, and what the data says; per-task tables for Android and iOS; and LLM decode throughput. Tables are generated from the measurement data rather than hand-transcribed. Results and inputs only. How the measurements are produced is left out until the harness lands. Adreno added to the cspell wordlist.
|
Measured the three hooks that had no accelerator numbers on iOS. Device: iPhone 16 (
Speedups over the XNNPACK baseline on the same device:
Both Core ML rows also cut peak memory (432 to 242 MB for CLIP, 753 to 525 MB for OCR). Supertonic MLX is the exception: it is 3.8x faster but peaks slightly higher than XNNPACK. These three hooks previously had only Android Vulkan numbers, so the docs tables understated them: OCR was listed at 4.8x and text to speech at 1.4x. |
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Replaces the SE column with the 187-variant run from #1363 (comment 5873932524). The previous 124-variant SE numbers remain in comment 5608214269. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
@barhanc I guess we can add benchmarks now, and update with llms data later on. |
There was a problem hiding this comment.
Some general remarks:
- I feel there is too much text in overview that nobody is going to read. It should be more concentrated and punchy (e.g. one table for devices' info, one table for tasks info with benchmark notes column, etc.). Important info marked with :::info and so on.
- We shouldn't separate Android and iOS benchmarks into separate pages, makes it difficult to compare the two (see next point).
- We discussed in the past that raw measurement tables are not the best way to showcase the benchmarks and here this problem is even more visible because of the number of model/device/backend/precision configurations. Benchmarks are walls of numbers that are difficult to read and aren't very pleasant to the eye. This definitely needs to be changed. What I'd rather see are:
- interactive column charts where you can select model/metric and columns get rendered for different device/backend/precision configurations grouped by device (for comparing performance of given model on different devices)
- a way to also compare different models for a given task either by taking a mean or best results per devices or something like that.
I attach an example of what that interactive chart could look like
@barhanc Totally agreed. If you want, feel free to updating this PR by yourself so we don't postpone releasing the benchmark results too much :)) |
|
A few things:
|
…enance S26 Ultra model sizes were decimal MB while every other device used MiB. Converted them to MiB so each file has one size across devices, which also lets the size chart drop the per-device median.
## Description - Benchmark rows move from `src/data/` (shared by every docs version) to beside the page, so a version cut archives each release's numbers. - The page now says the numbers are from 0.11.0-dev, not v0.10.0. - Rows come from `measured.json` (generated by `yarn bench:docs` from raw runs, #1363) merged with `imported.json` (current rows, no raw runs). Published numbers are unchanged. ### Introduces a breaking change? - [ ] Yes - [x] No ### Type of change - [ ] Bug fix (change which fixes an issue) - [ ] New feature (change which adds functionality) - [x] Documentation update (improves or adds clarity to existing documentation) - [ ] Other (chores, tests, code style improvements etc.) ### Tested on - [ ] iOS - [ ] Android ### Testing instructions ```bash cd docs && yarn build ``` `/docs/next/benchmarks` renders the charts. ### Screenshots ### Related issues #727, #1457 ### Checklist - [x] I have performed a self-review of my code - [x] I have commented my code, particularly in hard-to-understand areas - [x] I have updated the documentation accordingly - [x] My changes generate no new warnings ### Additional notes


Description
Adds a Benchmarks section to the docs with the v0.10.0 measurements from #1363.
Four pages: an overview (devices, the input each task was given, what the data says), per-task tables for Android and iOS, and LLM decode throughput. New sidebar category between Core & Advanced and API Reference.
Results and inputs only. How the measurements are produced is deliberately left out until the harness in #1363 lands, so nothing here documents a command that does not exist on
main.Tables are generated from the measurement data rather than retyped, so the numbers match the source comments exactly.
Three things the tables surface that the raw comments did not:
paraphrase-multilingual-minilm-l12-v2is 1.21x faster on Adreno and 3.7x slower on Tensor G5.Introduces a breaking change?
Type of change
Tested on
Testing instructions
Passes with no broken links.
yarn startto read the pages.Screenshots
Related issues
Data from #1363. Feeds the deprecation tracker in #1456.
Checklist
Additional notes
Docs-only, so no device testing applies.
Open question for review: the data is v0.10.0 and lives in
docs/docs(next), not in the frozenversioned_docs/version-0.10.0. Say the word if it belongs in both.