Download mlx/NOTES.md from software-mansion/SSDlite320-MobileNetV3-Large-ExecuTorch: direct link, hf CLI and curl.
- Browser
- Download file 3.45 kB
-
https://huggingface.co/software-mansion/SSDlite320-MobileNetV3-Large-ExecuTorch/resolve/main/mlx/NOTES.md
- Command line
-
hf download hf://software-mansion/SSDlite320-MobileNetV3-Large-ExecuTorch/mlx/NOTES.md
-
curl -L -o NOTES.md https://huggingface.co/software-mansion/SSDlite320-MobileNetV3-Large-ExecuTorch/resolve/main/mlx/NOTES.md
MLX is not shipped for this model
The MLX artifacts for this model were removed deliberately. The exporter in
export-scripts is kept so the decision can be re-tested against a future
ExecuTorch/MLX release, but no .pte or config.json is published here.
Why
Measured on device (iPhone 16, ExecuTorch 1.4.1, Release build, 3 warmup runs + 15 timed runs, median), on ssdlite320 (mobilenet_v3_large):
| backend | precision | median latency |
|---|---|---|
| Core ML | fp32 (precision matched) | 9.2 ms |
| MLX | fp32 (only precision offered) | 17.0 ms |
| Core ML | fp16 (shipped default) | 9.7 ms |
MLX is 1.9x slower than Core ML at matched precision, and 1.75x slower than the Core ML build that actually ships.
These exporters only ever declared an MLX fp32 variant, so fp32-vs-fp32 is the fair comparison and it is deliberately the conservative one: MLX still loses it.
Caveat specific to this model. The 1.75x margin against the shipped Core ML
default was the narrowest in this study. A follow-up compute-unit sweep has since
improved the Core ML side: pinning compute_unit=CPU_ONLY gives 7.2 ms, so the
real margin is 2.4x (17.0 vs 7.2 ms). The removal therefore stands more
firmly than the table above suggests.
Correction. An earlier revision of this file stated that Core ML fp16 is slower than its own fp32 for this model (9.7 vs 9.2 ms). That was measured on a single run and did not reproduce: a repeat gave fp32 9.6 ms and fp16 9.5 ms, i.e. the ordering flipped, and both gaps sit inside run-to-run variance of about 0.5 ms with fully overlapping min/p90 distributions. The correct statement is that fp16 buys no speed on this model, not that it is slower.
The reason is that the Apple Neural Engine is a net loss here. Pinned compute units, fp16, iPhone 16:
| compute unit | median |
|---|---|
| ALL (default) | 9.5 ms |
| CPU_AND_NE | 9.7 ms |
| CPU_AND_GPU | 11.8 ms |
| CPU_ONLY | 7.2 ms |
ALL and CPU_AND_NE are indistinguishable, so the default routes to the ANE,
and dropping the ANE is 24% faster. That also explains why fp16 shows no gain:
on the ANE path, conv math precision is not the bottleneck. This is a question
about Core ML compute-unit defaults, not about MLX.
Context
MLX was measured behind Core ML on every convolutional vision model tested. The margin varies widely with architecture, so each model carries its own number rather than a blanket figure.
Two things compound the gap. MLX weight quantization cannot shrink a conv model:
quantize_model_ only rewrites nn.Linear and embedding modules, and
EfficientNet-V2-S holds just 6.0% of its parameters in its single nn.Linear,
so 4-bit quantization buys about 5% file size. Core ML by contrast reaches the
convolutions.
Scope
This concerns convolution-dominated vision models. It does not generalize:
rfdetr-nano(conv + transformer) measured only 1.24x behind Core ML.- The
lfm2.5text encoders measured 2.7-3.1x faster on MLX than XNNPACK.
MLX suits matmul-heavy graphs. The right backend depends on model class, so this file is not a statement about MLX in general.
Availability history
MLX for this model was only ever published on main / v0.10.0. No earlier tag
(v0.9.0 and below) carried an MLX artifact for it, so there is no pinned
revision from which these files can still be fetched. They remain recoverable
from this repository's git history.