msluszniak commited on
Commit
2e6882a
·
verified ·
1 Parent(s): f82677f

Document why Core ML is not shipped

Browse files

Converts fine (fp16, ~710 MB) but the .pte fails to LOAD with 0x23 in the portable tensor parser. Distinct from the coremltools#2825 dynamic-shape crash, which fails at execute.

Files changed (1) hide show
  1. coreml/NOTES.md +36 -0
coreml/NOTES.md ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Core ML is not shipped for this model
2
+
3
+ The Core ML exporter exists in `export-scripts` and converts successfully, but the
4
+ artifact it produces cannot be loaded, so no `.pte` or `config.json` is published
5
+ here. Use the XNNPACK or MLX build instead.
6
+
7
+ ## Why
8
+
9
+ Conversion succeeds (fp16, about 710 MB). Loading it in the ExecuTorch runtime
10
+ does not:
11
+
12
+ ```
13
+ [tensor_parser_portable.cpp:192] getTensorDataPtr() failed: 0x23
14
+ [method.cpp:606] Failed parsing tensor at index 0: 0x23
15
+ ```
16
+
17
+ Note what this is **not**. It is not the dynamic-shape crash that disables Core ML
18
+ on the other text models in this project (apple/coremltools#2825). That one fails
19
+ at execute; this fails at **load**, inside the *portable* tensor parser. Ops the
20
+ Core ML partitioner did not claim kept their constants in the ExecuTorch program,
21
+ and that data is unreadable. The artifact size or a constant-segment issue is the
22
+ plausible cause.
23
+
24
+ Because it never executed, the dynamic-shape question remains **open** for
25
+ LFM2.5-ColBERT-350M. It never got far enough to hit it.
26
+
27
+ Re-tested on 2026-08-20 with the software-mansion-labs fork toolchain, rebuilt and
28
+ loaded under the fork runtime: identical `0x23`. So this is not an artifact of the
29
+ PyPI wheel, unlike the YOLO fp16 MLX case that the fork did fix.
30
+
31
+ ## Two deliberate differences from the other backends
32
+
33
+ The Core ML variant loads the model in **float32**, because Core ML has no
34
+ bfloat16 input dtype, and does **not** apply `quantize_model_`, which packs
35
+ weights for the MLX runtime. So the Core ML build is unquantized, and its size is
36
+ not comparable to the MLX one.