On an Apple M4 Max with macOS 27 and coremltools 9.0, you can now fetch the ANE artifacts instead of building them:
pip install -U 'laya-apple[ane]'
laya-apple artifacts fetch laya-typed-decisionsIn 1.6.1 that command raised ArtifactMissingError on macOS 27. Nothing else changed: the
code, the parity gate, the routing rule and the macOS 26 archives are the same as in 1.6.1.
- 1.6.2 pins
tc3oliver/laya-apple-artifactsat commit44a54765f89d434e9d85f401126cfee7d2059e7d(1.6.0 and 1.6.1 pinned93181067…). - That commit adds 10 archives built on macOS 27.0 (26A428):
laya64/96/128,laya-multilingual64/96/128/256 andlaya-typed-decisions64/96/128. - Its index has 20 entries. The 10 macOS 26 entries are identical to the old pin's.
- The macOS 27 routing profile shipped in 1.6.1, so
device="auto"uses fetched artifacts without a calibrate step.laya-multilingualL256 stays explicit-only.
Two clean-cache runs on the build machine (Apple M4 Max, macOS 27.0, coremltools 9.0):
- released 1.6.1 from PyPI, with
--revision 44a54765…; - the 1.6.2 wheel, with no
--revision, so it read its own pin.
Both runs fetched all 10 pairs. Each one matched its SHA-256 in the index, passed
artifacts verify and the FP16 parity gate with 0 hard mismatches (max probability error
0.0128), ran 100% on the Neural Engine with 0 transitions, and had a probe ratio of 0.8 or
less. Per-bucket results and timings:
benchmarks/prebuilt-artifacts-1.6.2-macos27.md.
- Only macOS 27.0 was measured. The profile matches every 27.x on an M4 Max with coremltools 9.0, so 27.1 and later will select these archives too. Every machine still re-runs the parity gate, the compute-plan check and the placement probe before it registers one.
- No second machine has checked them. Both runs used the machine that built the archives. The same is still true of the macOS 26 archives.
- Fetching skips the build, not Core ML's on-device compile. A cold start of
laya-typed-decisions (64/96/128) took about 210 s on macOS 27.0
(
results.md).ane_startup="background"serves on MLX meanwhile. - Core ML's compile cache still grows without eviction. One clean fetch of all three models
added 21.4 GB under
~/Library/Caches/python/com.apple.e5rt.e5bundlecache(each import compiles twice: once for the parity gate, once at the registered path). - The 1.6.1 limitations not repeated here still apply.
- No code change needed.
- M4 Max, macOS 27, coremltools 9.0: run
laya-apple artifacts fetch MODEL. Artifacts you already built locally keep working;fetchskips any bucket whose local artifact already passes verification (load_verified). - On 1.6.1 without upgrading:
laya-apple artifacts fetch MODEL --revision 44a54765f89d434e9d85f401126cfee7d2059e7d(checked in run A of the record). - Everywhere else, nothing changes.