You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Arm backend: Document validated TinyML models for Cortex-M
Adds a Validated Models section to the Cortex-M backend overview listing
the six models exported, INT8 quantized, and run on the Corstone-300 FVP
by CI: mv2 and ds_cnn on trunk, and mv3, mobilenet_v1_025, resnet8, and
deep_autoencoder nightly. For each model the table points at the source
file and the per-model dialect/implementation test. A short note calls
out that mobilenet_v1_025 is the MLPerf Tiny Visual Wake Words reference
model — the canonical TinyML person-detection benchmark — since that
naming is not obvious from the name.
The page also documents the bundled (.bpte) testing flow that CI uses:
aot_arm_compiler --bundleio embeds reference inputs and expected outputs
in the program, and examples/arm/run.sh drives the full export → build
→ FVP chain with Test_result PASS/FAIL self-checking, so a reader can
reproduce what trunk and nightly do.
An admonition clarifies that CI validates INT8 numerical parity between
the exported .bpte and the eager-mode quantized model, not task accuracy
(VWW / KWS / ImageNet).
This change was authored with Claude (claude-opus-4-7[1m]).
For a complete end-to-end walkthrough including dataset setup, calibration, and result validation, see the [Cortex-M MobileNetV2 notebook](https://github.com/pytorch/executorch/blob/main/examples/arm/cortex_m_mv2_example.ipynb).
167
+
168
+
## Testing with Bundled I/O
169
+
170
+
The tutorial above produces a plain `.pte`. For programmatic testing,
171
+
`aot_arm_compiler --bundleio` instead produces a bundled (`.bpte`) program
172
+
that embeds reference inputs and expected outputs; the Cortex-M test runner
173
+
loads the bundle via semihosting and self-checks its outputs against the
174
+
embedded references, emitting `Test_result: PASS` or `Test_result: FAIL`
175
+
on the UART.
176
+
177
+
The driver for this flow is `examples/arm/run.sh`, which exports the model,
178
+
builds the Cortex-M test runner, launches the Corstone-300 FVP with
179
+
semihosting enabled, and checks the bundled output. Run it from the
180
+
ExecuTorch repo root after `./install_executorch.sh`:
|`mobilenet_v1_025`| Visual Wake Words (MLPerf Tiny) |`1x3x96x96`|`examples/models/mlperf_tiny/mobilenet_v1_025.py`|`backends/cortex_m/test/models/test_mobilenet_v1_025.py`|
0 commit comments