mlboydaisuke commited on
Commit
bef4a2e
·
verified ·
1 Parent(s): 0c4fa7f

Upload README.md with huggingface_hub

Browse files
Files changed (1) hide show
  1. README.md +21 -4
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` | 204.8 | 1.000000 | 833.8 |
 
 
 
 
 
 
 
 
 
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: 638.2 ms).
 
 
 
 
 
 
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.510e-06 | 1.000000 |
41
 
42
- XNNPACK delegate coverage (fp32): 49.8% (2020/4056 ops); ops left on the portable kernels: `aten.abs.default` x460, `aten.sub.Tensor` x460, `aten.expand_copy.default` x288, `aten.arange.start_step` x230, `aten.index.Tensor` x230, `aten.select_copy.int` x144, `dim_order_ops._to_dim_order_copy.default` x116, `aten.view_as_real_copy.default` x72, `aten._fft_r2c.default` x36
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.