Repository navigation
eeANE 1.6.1 brings the Qwen3 models back onto the Neural Engine on macOS 27, where the size of model the Neural Engine accepts was found to have dropped from 2 GiB to 1 GiB. If you serve Qwen3 models on macOS 27 or later, recompile them with this version.
What changed in macOS 27
Up to macOS 26, the Neural Engine accepted a compiled model of up to about 2 GiB. From macOS 27 on, the limit is 1 GiB (1,073,741,824 bytes). A model above it is not rejected: conversion, loading and inference all succeed and the system logs nothing. Every operation of the model simply runs on the CPU.
The limit was located with synthetic models of one shape that differ only in vocabulary size: 1,072,681,458 bytes is placed on the Neural Engine (99.6% of its operations) and 1,074,770,418 bytes is not placed at all. It does not depend on the architecture. This was measured on an M2 Mac mini with macOS 27.0.1; Apple has not documented the change, so it may differ on other hardware or change again.
The two Qwen3 models compile to 1.11 GiB. On macOS 27 they kept returning correct results, about 3.5 times slower.
Recompile, and the model fits again
eeane compile Qwen/Qwen3-Embedding-0.6B
eeane compile Qwen/Qwen3-Reranker-0.6B
No option is needed: artifacts made by an earlier eeANE are rebuilt automatically. When a Qwen3 model compiled on macOS 27 or later exceeds the limit, eeane compile stores its vocabulary embedding table as 8-bit integers — every other weight stays FP16 — and compiles again. That table is read one row per token, so little accuracy is at stake, and it is about a quarter of the model.
Measured on an M2 Mac mini (16 GB, macOS 27.0.1):
| Model | Bucket | Neural Engine placement | Warm latency | vs CPU-only |
|---|---|---|---|---|
| Qwen/Qwen3-Embedding-0.6B | 128 | 99.4% | 19.3 ms | 3.5x |
| Qwen/Qwen3-Embedding-0.6B | 512 | 99.4% | 104.2 ms | 2.5x |
| Qwen/Qwen3-Embedding-0.6B | 1024 | 99.4% | 287.6 ms | 2.3x |
| Qwen/Qwen3-Reranker-0.6B | 512 | 99.3% | 105.5 ms | 2.4x |
| Qwen/Qwen3-Reranker-0.6B | 1024 | 99.3% | 288.0 ms | 2.3x |
Placement and speed match what these models showed on macOS 26. The built-in self-check is unchanged (cosine 0.99994 for the embedding model). Against the reference implementations, the embedding model's row-wise cosine stays at 0.9996 or higher and the reranker's score differs by at most 0.23 in logit space, with the top result identical for every query tested; among 567 document pairs whose reference scores differ by more than 0.2, one pair of clearly irrelevant documents changed order.
Nothing else is touched. A model under the limit, a model of any other architecture, and any model compiled on macOS 26 or earlier come out exactly as before.
The operating system you compile on decides
The reduction is applied only when eeane compile runs on macOS 27 or later. So after upgrading a Mac to macOS 27, recompile the affected models: artifacts made on the older system are above the new limit. Behaviour on macOS 26 or earlier is covered by tests, not by a run on such a system.
The server now says so
eeane serve checks every configured model at start-up and logs a warning for one that will not run on the Neural Engine — because that was already recorded when it was compiled, or because it is above 1 GiB on macOS 27 or later. The server still starts; the warning names the model, the buckets, the reason and what to run.
Not fixed yet: XLM-RoBERTa large-class models
The size reduction covers the Qwen3 family only. The XLM-RoBERTa large-class models in the verified list are above 1 GiB as well and cannot currently be used on macOS 27 or later: intfloat/multilingual-e5-large was measured (0% placement, and an output that is not a number), and BAAI/bge-m3, Snowflake/snowflake-arctic-embed-l-v2.0, intfloat/multilingual-e5-large-instruct, BAAI/bge-reranker-v2-m3, BAAI/bge-reranker-large and hotchpotch/japanese-bge-reranker-v2-m3-v1 share its size and are expected to behave the same. They keep working on macOS 26 and earlier. Support is planned for a later release.
The README has a section on all of this, linked from its top: "macOS 27 and the 1 GiB Neural Engine limit".