Upload README.md with huggingface_hub
Browse files
README.md
CHANGED
|
@@ -21,10 +21,25 @@ All variants take and return fp32 tensors — swap the `.pte` file, keep your ap
|
|
| 21 |
|
| 22 |
| build | file | size (MB) | parity vs fp32 eager (worst corr) | Mac median (ms)* |
|
| 23 |
|-----------|------|-----------|------------------------------------|------------------|
|
| 24 |
-
| fp32 | `lama_512_xnnpack_fp32.pte` |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 25 |
|
| 26 |
\*Mac arm64, single process, median of 10 — a reference point for relative cost
|
| 27 |
-
only, not a device number (torch eager fp32 on the same machine:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 28 |
|
| 29 |
### Builds that did not earn a slot
|
| 30 |
|
|
@@ -37,9 +52,9 @@ the correlation over all elements of each output tensor.
|
|
| 37 |
|
| 38 |
| output | shape | max_abs_diff | corr |
|
| 39 |
|--------|-------|--------------|------|
|
| 40 |
-
| 0 | [1, 3, 512, 512] | 7.
|
| 41 |
|
| 42 |
-
XNNPACK delegate coverage (fp32):
|
| 43 |
|
| 44 |
## Conversion
|
| 45 |
|
|
@@ -49,3 +64,5 @@ torch.export -> to_edge_transform_and_lower(partitioner) -> .pte
|
|
| 49 |
**Notes**: The inverse FFT inside every FourierUnit is replaced with the real matmul form from convert/fft_ops.py; ExecuTorch cannot lower torch.fft.irfftn. Spatial size is fixed because those matrices are built per size.
|
| 50 |
|
| 51 |
**Notes (int8)**: The inverse FFT inside every FourierUnit is replaced with the real matmul form from convert/fft_ops.py; ExecuTorch cannot lower torch.fft.irfftn. Spatial size is fixed because those matrices are built per size.
|
|
|
|
|
|
|
|
|
| 21 |
|
| 22 |
| build | file | size (MB) | parity vs fp32 eager (worst corr) | Mac median (ms)* |
|
| 23 |
|-----------|------|-----------|------------------------------------|------------------|
|
| 24 |
+
| fp32 | `lama_512_xnnpack_fp32.pte` | 205.0 | 1.000000 | 816.0 |
|
| 25 |
+
| Core ML (fp16, iOS) | `lama_512_coreml_all.pte` | 105.3 | 0.999553 | 59.2 |
|
| 26 |
+
|
| 27 |
+
|
| 28 |
+
The Core ML build is the same graph lowered to Apple's Neural Engine instead of
|
| 29 |
+
XNNPACK, which is CPU-only. Measured on an iPhone 17 Pro across seven models, it
|
| 30 |
+
runs **3.5x to 13.9x faster (median 12x)** at roughly half the file size — for
|
| 31 |
+
example Depth-Anything-V2-Small at 500.8 ms against 42.7 ms, and MODNet at 81.7 ms
|
| 32 |
+
against 5.9 ms. It computes in fp16 and is iOS-only; the XNNPACK files stay the
|
| 33 |
+
portable option and are what runs on Android.
|
| 34 |
|
| 35 |
\*Mac arm64, single process, median of 10 — a reference point for relative cost
|
| 36 |
+
only, not a device number (torch eager fp32 on the same machine: 526.7 ms).
|
| 37 |
+
|
| 38 |
+
### Checked in the task's own units
|
| 39 |
+
|
| 40 |
+
Correlation is a first filter. These are the numbers that decide:
|
| 41 |
+
|
| 42 |
+
- **Core ML (fp16, iOS)** — measured in the units that matter for this model — PSNR vs the fp32 .pte (dB): median 36.8776 over 5 real images, worst 36.6448.
|
| 43 |
|
| 44 |
### Builds that did not earn a slot
|
| 45 |
|
|
|
|
| 52 |
|
| 53 |
| output | shape | max_abs_diff | corr |
|
| 54 |
|--------|-------|--------------|------|
|
| 55 |
+
| 0 | [1, 3, 512, 512] | 7.629e-06 | 1.000000 |
|
| 56 |
|
| 57 |
+
XNNPACK delegate coverage (fp32): 57.4% (2884/5028 ops); ops left on the portable kernels: `aten.expand_copy.default` x576, `aten.abs.default` x460, `aten.sub.Tensor` x460, `aten.arange.start_step` x230, `aten.index.Tensor` x230, `dim_order_ops._to_dim_order_copy.default` x116, `aten.select_copy.int` x72
|
| 58 |
|
| 59 |
## Conversion
|
| 60 |
|
|
|
|
| 64 |
**Notes**: The inverse FFT inside every FourierUnit is replaced with the real matmul form from convert/fft_ops.py; ExecuTorch cannot lower torch.fft.irfftn. Spatial size is fixed because those matrices are built per size.
|
| 65 |
|
| 66 |
**Notes (int8)**: The inverse FFT inside every FourierUnit is replaced with the real matmul form from convert/fft_ops.py; ExecuTorch cannot lower torch.fft.irfftn. Spatial size is fixed because those matrices are built per size.
|
| 67 |
+
|
| 68 |
+
**Notes (coreml_all)**: The inverse FFT inside every FourierUnit is replaced with the real matmul form from convert/fft_ops.py; ExecuTorch cannot lower torch.fft.irfftn. Spatial size is fixed because those matrices are built per size.
|