Skip to content

Latest commit

 

History

History
64 lines (51 loc) · 3.29 KB

v1.6.2.md

File metadata and controls

64 lines (51 loc) · 3.29 KB

laya-apple 1.6.2: prebuilt ANE artifacts for M4 Max on macOS 27

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-decisions

In 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.

What changed

  • 1.6.2 pins tc3oliver/laya-apple-artifacts at commit 44a54765f89d434e9d85f401126cfee7d2059e7d (1.6.0 and 1.6.1 pinned 93181067…).
  • That commit adds 10 archives built on macOS 27.0 (26A428): laya 64/96/128, laya-multilingual 64/96/128/256 and laya-typed-decisions 64/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-multilingual L256 stays explicit-only.

How the archives were checked

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.

Limitations

  • 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.

Upgrading

  • No code change needed.
  • M4 Max, macOS 27, coremltools 9.0: run laya-apple artifacts fetch MODEL. Artifacts you already built locally keep working; fetch skips 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.