alexwengg commited on
Commit
f66dd2a
·
verified ·
1 Parent(s): 10bca41

Add optional ANE-gather variant with 98.2 percent ANE placement

Browse files

Preserve int32 inputs and all trained weights while moving embedding lookup onto ANE. 196/196 reference decisions pass in Python and Swift; maximum probability error 0.002336. Matched median latency is 0.970 ms versus 0.915 ms for the unchanged default, so this variant is opt-in.

README.md CHANGED
@@ -177,6 +177,48 @@ assignments, individual timings, hashes, and the protocol;
177
  Reproduce with `uv run --frozen python profile-coreml.py` in the
178
  [Mobius conversion directory](https://github.com/FluidInference/mobius/tree/codex/cua-s1-forms/models/computer-use/cua-s1-forms/coreml).
179
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
180
  ## Application responsibilities
181
 
182
  The application must extract document entities, describe UI elements, build
 
177
  Reproduce with `uv run --frozen python profile-coreml.py` in the
178
  [Mobius conversion directory](https://github.com/FluidInference/mobius/tree/codex/cua-s1-forms/models/computer-use/cua-s1-forms/coreml).
179
 
180
+ ## Optional higher-ANE variant
181
+
182
+ The `ane-gather/` directory contains an alternative portable package and compiled
183
+ bundle with the **same int32 inputs and float32 outputs** and all trained weights.
184
+ The variant uses shared float16 mask inputs and unsigned 16-bit embedding indices
185
+ to eliminate negative-index correction and place the gathers on ANE. Valid byte
186
+ IDs 0–256 remain exact. It is **1,509,491 bytes** as a portable package.
187
+
188
+ On this M5 Pro, the scheduler plan is **162 ANE operations and 3 CPU input casts
189
+ (98.2% ANE)** for both `CPU_AND_NE` and `ALL`. The default model has 149 ANE and
190
+ 24 CPU operations (86.1%) under `CPU_AND_NE`. Counts are not runtime or energy
191
+ shares, and host byte encoding still runs outside the model.
192
+
193
+ The optional variant passes **196/196 decisions** against upstream on `ALL` and
194
+ `CPU_AND_NE`, with maximum probability error **0.002336** under the unchanged
195
+ 0.005 tolerance. **28 Python regression tests** pass, including all byte-ID
196
+ boundaries, full option capacity, truncation, and reordered choices. The Swift
197
+ manager independently passes all 196 reference decisions, compiled-cache loading,
198
+ and concurrent/reordered requests; the native demo passes its three-form checks.
199
+
200
+ A matched same-process ABBA comparison uses three real inputs and 60 timed calls
201
+ per model after warmup:
202
+
203
+ | Artifact | CPU ops | ANE ops | Warm p50 | Warm p95 |
204
+ | --- | ---: | ---: | ---: | ---: |
205
+ | Root/default | 24 | 149 | 0.915 ms | 0.968 ms |
206
+ | `ane-gather/` | 3 | 162 | 0.970 ms | 0.988 ms |
207
+
208
+ Higher ANE placement is about **6% slower** in this local comparison, so the
209
+ root/default artifact remains unchanged. No energy or CPU-time saving is claimed.
210
+ The original input names, dtypes, shapes, and byte encoding still apply. Load
211
+ `ane-gather/cua_s1_forms_fp16_options32.mlpackage` with the existing Python or
212
+ Swift APIs, or pass its local path to the Swift demo's `--model` argument.
213
+
214
+ Reports: [parity](reports/ane-gather-verification.json),
215
+ [Swift validation](reports/swift-ane-validation.json),
216
+ [compute plans](reports/ane-gather-profile.json),
217
+ [fallbacks](reports/ane-gather-fallback.json), and
218
+ [matched comparison](reports/ane-comparison.json). Reproduce with
219
+ `uv run --frozen python convert-coreml.py --optimization ane-gather --output-dir build/ane-gather`
220
+ in the [Mobius conversion directory](https://github.com/FluidInference/mobius/tree/codex/cua-s1-forms/models/computer-use/cua-s1-forms/coreml#optional-higher-ane-variant).
221
+
222
  ## Application responsibilities
223
 
224
  The application must extract document entities, describe UI elements, build
ane-gather/conversion.json ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "model": "cua_s1_forms_fp16_options32.mlpackage",
3
+ "precision": "float16",
4
+ "optimization": "ane-gather",
5
+ "minimum_target": "iOS17/macOS14",
6
+ "limits": {
7
+ "context_bytes": 224,
8
+ "option_bytes": 96,
9
+ "max_options": 32
10
+ },
11
+ "model_config": {
12
+ "context_tokens": 224,
13
+ "encoder": "tinyx",
14
+ "heads": 4,
15
+ "hf_model": "Qwen/Qwen2.5-0.5B",
16
+ "layers": 2,
17
+ "option_tokens": 96,
18
+ "rank": 128,
19
+ "width": 128
20
+ },
21
+ "parameters": 706048,
22
+ "assets_lock_sha256": "8e65ad70af6bb814b571cdcfe828ba4bc339147da2d2211cbeac416163ef18ba",
23
+ "model_revision": "f54adbf447f4ca6ec259f529ee3f2e3e09f8cc71",
24
+ "source_revision": "83f142c4290a0f7d9ed545ae8532858c6e4f8145",
25
+ "trace_row": 0,
26
+ "trace_dataset_revision": "8273f34778b99ac2e12d9f6e7d57dad99ae20845",
27
+ "export_seconds": 0.6771400420111604,
28
+ "python": "3.11.11",
29
+ "torch": "2.7.0",
30
+ "coremltools": "9.0",
31
+ "package_files": {
32
+ "Data/com.apple.CoreML/model.mlmodel": "de18e313c3b625e35d008ed8b6b24108edc6df7bf2fae9533af03519eca11b63",
33
+ "Data/com.apple.CoreML/weights/weight.bin": "4da9259f798e44f5a1b50769ee1916fd3747c4d723dd9997b516c7fe238c7895",
34
+ "Manifest.json": "38f812a04eb2322080634ba788c61df362336168466ca67e5549058d346ac793"
35
+ }
36
+ }
ane-gather/cua_s1_forms_fp16_options32.mlmodelc/analytics/coremldata.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:526dccb87bdc036df1e8add0b50dd6540db534808fc2f8caa97cd897b4fc1fa3
3
+ size 243
ane-gather/cua_s1_forms_fp16_options32.mlmodelc/coremldata.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:0f2a8ed9fe8abcc39c7ee0575e2562d589d459683b92708fa9788b533be3038b
3
+ size 876
ane-gather/cua_s1_forms_fp16_options32.mlmodelc/model.mil ADDED
@@ -0,0 +1,404 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ program(1.0)
2
+ [buildInfo = dict<tensor<string, []>, tensor<string, []>>({{"coremlc-component-MIL", "3600.16.1"}, {"coremlc-version", "3600.25.2"}, {"coremltools-component-milinternal", ""}, {"coremltools-version", "9.0"}})]
3
+ {
4
+ func main<ios17>(tensor<int32, [1, 224]> context_ids, tensor<int32, [1, 32, 96]> option_ids, tensor<int32, [1, 32]> option_mask) {
5
+ tensor<string, []> mask_options_to_fp16_dtype_0 = const()[name = tensor<string, []>("mask_options_to_fp16_dtype_0"), val = tensor<string, []>("fp16")];
6
+ tensor<fp16, []> var_29_promoted_to_fp16 = const()[name = tensor<string, []>("op_29_promoted_to_fp16"), val = tensor<fp16, []>(0x0p+0)];
7
+ tensor<fp16, [1, 32]> option_mask_to_fp16 = cast(dtype = mask_options_to_fp16_dtype_0, x = option_mask)[name = tensor<string, []>("cast_68")];
8
+ tensor<bool, [1, 32]> option_mask_cast_fp16 = not_equal(x = option_mask_to_fp16, y = var_29_promoted_to_fp16)[name = tensor<string, []>("option_mask_cast_fp16")];
9
+ tensor<string, []> mask_context_ids_to_fp16_dtype_0 = const()[name = tensor<string, []>("mask_context_ids_to_fp16_dtype_0"), val = tensor<string, []>("fp16")];
10
+ tensor<fp16, []> var_31_promoted_to_fp16 = const()[name = tensor<string, []>("op_31_promoted_to_fp16"), val = tensor<fp16, []>(0x0p+0)];
11
+ tensor<fp16, [1, 224]> context_ids_to_fp16 = cast(dtype = mask_context_ids_to_fp16_dtype_0, x = context_ids)[name = tensor<string, []>("cast_67")];
12
+ tensor<bool, [1, 224]> context_mask_cast_fp16 = not_equal(x = context_ids_to_fp16, y = var_31_promoted_to_fp16)[name = tensor<string, []>("context_mask_cast_fp16")];
13
+ tensor<int32, [2]> var_42_begin_0 = const()[name = tensor<string, []>("op_42_begin_0"), val = tensor<int32, [2]>([0, 0])];
14
+ tensor<int32, [2]> var_42_end_0 = const()[name = tensor<string, []>("op_42_end_0"), val = tensor<int32, [2]>([1, 1])];
15
+ tensor<bool, [2]> var_42_end_mask_0 = const()[name = tensor<string, []>("op_42_end_mask_0"), val = tensor<bool, [2]>([true, false])];
16
+ tensor<fp16, [1, 1]> var_42_cast_fp16 = slice_by_index(begin = var_42_begin_0, end = var_42_end_0, end_mask = var_42_end_mask_0, x = context_ids_to_fp16)[name = tensor<string, []>("op_42_cast_fp16")];
17
+ tensor<fp16, []> fill_like_0_value_0_to_fp16 = const()[name = tensor<string, []>("fill_like_0_value_0_to_fp16"), val = tensor<fp16, []>(0x1p+0)];
18
+ tensor<fp16, [1, 1]> fill_like_0_cast_fp16 = fill_like(ref_tensor = var_42_cast_fp16, value = fill_like_0_value_0_to_fp16)[name = tensor<string, []>("fill_like_0_cast_fp16")];
19
+ tensor<int32, [2]> var_58_begin_0 = const()[name = tensor<string, []>("op_58_begin_0"), val = tensor<int32, [2]>([0, 1])];
20
+ tensor<int32, [2]> var_58_end_0 = const()[name = tensor<string, []>("op_58_end_0"), val = tensor<int32, [2]>([1, 224])];
21
+ tensor<bool, [2]> var_58_end_mask_0 = const()[name = tensor<string, []>("op_58_end_mask_0"), val = tensor<bool, [2]>([true, true])];
22
+ tensor<fp16, [1, 223]> var_58_cast_fp16 = slice_by_index(begin = var_58_begin_0, end = var_58_end_0, end_mask = var_58_end_mask_0, x = context_ids_to_fp16)[name = tensor<string, []>("op_58_cast_fp16")];
23
+ tensor<int32, []> var_60 = const()[name = tensor<string, []>("op_60"), val = tensor<int32, []>(1)];
24
+ tensor<bool, []> safe_context_ids_interleave_0 = const()[name = tensor<string, []>("safe_context_ids_interleave_0"), val = tensor<bool, []>(false)];
25
+ tensor<fp16, [1, 224]> safe_context_ids_cast_fp16 = concat(axis = var_60, interleave = safe_context_ids_interleave_0, values = (fill_like_0_cast_fp16, var_58_cast_fp16))[name = tensor<string, []>("safe_context_ids_cast_fp16")];
26
+ tensor<fp16, [257, 128]> model_embedding_weight_to_fp16 = const()[name = tensor<string, []>("model_embedding_weight_to_fp16"), val = tensor<fp16, [257, 128]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(64)))];
27
+ tensor<string, []> cast_0_dtype_0 = const()[name = tensor<string, []>("cast_0_dtype_0"), val = tensor<string, []>("uint16")];
28
+ tensor<uint16, [1, 224]> cast_0 = cast(dtype = cast_0_dtype_0, x = context_ids_to_fp16)[name = tensor<string, []>("cast_0")];
29
+ tensor<int32, []> gather_0_axis_0 = const()[name = tensor<string, []>("gather_0_axis_0"), val = tensor<int32, []>(0)];
30
+ tensor<int32, []> gather_0_batch_dims_0 = const()[name = tensor<string, []>("gather_0_batch_dims_0"), val = tensor<int32, []>(0)];
31
+ tensor<bool, []> gather_0_validate_indices_0 = const()[name = tensor<string, []>("gather_0_validate_indices_0"), val = tensor<bool, []>(false)];
32
+ tensor<fp16, [1, 224, 128]> gather_0 = gather(axis = gather_0_axis_0, batch_dims = gather_0_batch_dims_0, indices = cast_0, validate_indices = gather_0_validate_indices_0, x = model_embedding_weight_to_fp16)[name = tensor<string, []>("gather_0")];
33
+ tensor<fp16, [224, 128]> model_position_weight_to_fp16 = const()[name = tensor<string, []>("model_position_weight_to_fp16"), val = tensor<fp16, [224, 128]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(65920)))];
34
+ tensor<fp16, [1, 224, 128]> src_1_cast_fp16 = add(x = gather_0, y = model_position_weight_to_fp16)[name = tensor<string, []>("src_1_cast_fp16")];
35
+ tensor<fp16, []> var_81_promoted_to_fp16 = const()[name = tensor<string, []>("op_81_promoted_to_fp16"), val = tensor<fp16, []>(0x0p+0)];
36
+ tensor<bool, [1, 224]> mask_1_cast_fp16 = equal(x = safe_context_ids_cast_fp16, y = var_81_promoted_to_fp16)[name = tensor<string, []>("mask_1_cast_fp16")];
37
+ tensor<fp16, []> var_97_to_fp16 = const()[name = tensor<string, []>("op_97_to_fp16"), val = tensor<fp16, []>(-inf)];
38
+ tensor<fp16, [1, 224]> var_105_to_fp16 = const()[name = tensor<string, []>("op_105_to_fp16"), val = tensor<fp16, [1, 224]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(123328)))];
39
+ tensor<fp16, [1, 224]> key_padding_mask_1_cast_fp16 = select(a = var_97_to_fp16, b = var_105_to_fp16, cond = mask_1_cast_fp16)[name = tensor<string, []>("key_padding_mask_1_cast_fp16")];
40
+ tensor<int32, [1]> query_1_axes_0 = const()[name = tensor<string, []>("query_1_axes_0"), val = tensor<int32, [1]>([-1])];
41
+ tensor<fp16, [128]> model_encoder_layers_0_norm1_weight_to_fp16 = const()[name = tensor<string, []>("model_encoder_layers_0_norm1_weight_to_fp16"), val = tensor<fp16, [128]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(123840)))];
42
+ tensor<fp16, [128]> model_encoder_layers_0_norm1_bias_to_fp16 = const()[name = tensor<string, []>("model_encoder_layers_0_norm1_bias_to_fp16"), val = tensor<fp16, [128]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(124160)))];
43
+ tensor<fp16, []> var_84_to_fp16 = const()[name = tensor<string, []>("op_84_to_fp16"), val = tensor<fp16, []>(0x1.5p-17)];
44
+ tensor<fp16, [1, 224, 128]> query_1_cast_fp16 = layer_norm(axes = query_1_axes_0, beta = model_encoder_layers_0_norm1_bias_to_fp16, epsilon = var_84_to_fp16, gamma = model_encoder_layers_0_norm1_weight_to_fp16, x = src_1_cast_fp16)[name = tensor<string, []>("query_1_cast_fp16")];
45
+ tensor<int32, [3]> query_3_perm_0 = const()[name = tensor<string, []>("query_3_perm_0"), val = tensor<int32, [3]>([1, 0, 2])];
46
+ tensor<fp16, [384, 128]> model_encoder_layers_0_self_attn_in_proj_weight_to_fp16 = const()[name = tensor<string, []>("model_encoder_layers_0_self_attn_in_proj_weight_to_fp16"), val = tensor<fp16, [384, 128]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(124480)))];
47
+ tensor<fp16, [384]> model_encoder_layers_0_self_attn_in_proj_bias_to_fp16 = const()[name = tensor<string, []>("model_encoder_layers_0_self_attn_in_proj_bias_to_fp16"), val = tensor<fp16, [384]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(222848)))];
48
+ tensor<fp16, [224, 1, 128]> query_3_cast_fp16 = transpose(perm = query_3_perm_0, x = query_1_cast_fp16)[name = tensor<string, []>("transpose_24")];
49
+ tensor<fp16, [224, 1, 384]> linear_0_cast_fp16 = linear(bias = model_encoder_layers_0_self_attn_in_proj_bias_to_fp16, weight = model_encoder_layers_0_self_attn_in_proj_weight_to_fp16, x = query_3_cast_fp16)[name = tensor<string, []>("linear_0_cast_fp16")];
50
+ tensor<int32, [4]> concat_0 = const()[name = tensor<string, []>("concat_0"), val = tensor<int32, [4]>([224, 1, 3, 128])];
51
+ tensor<fp16, [224, 1, 3, 128]> var_139_cast_fp16 = reshape(shape = concat_0, x = linear_0_cast_fp16)[name = tensor<string, []>("op_139_cast_fp16")];
52
+ tensor<int32, [1]> var_140_axes_0 = const()[name = tensor<string, []>("op_140_axes_0"), val = tensor<int32, [1]>([0])];
53
+ tensor<fp16, [1, 224, 1, 3, 128]> var_140_cast_fp16 = expand_dims(axes = var_140_axes_0, x = var_139_cast_fp16)[name = tensor<string, []>("op_140_cast_fp16")];
54
+ tensor<int32, [5]> var_141_perm_0 = const()[name = tensor<string, []>("op_141_perm_0"), val = tensor<int32, [5]>([-2, 1, 2, 0, 4])];
55
+ tensor<int32, [1]> var_142_axes_0 = const()[name = tensor<string, []>("op_142_axes_0"), val = tensor<int32, [1]>([-2])];
56
+ tensor<fp16, [3, 224, 1, 1, 128]> var_141_cast_fp16 = transpose(perm = var_141_perm_0, x = var_140_cast_fp16)[name = tensor<string, []>("transpose_23")];
57
+ tensor<fp16, [3, 224, 1, 128]> var_142_cast_fp16 = squeeze(axes = var_142_axes_0, x = var_141_cast_fp16)[name = tensor<string, []>("op_142_cast_fp16")];
58
+ tensor<int32, [4]> q_1_begin_0 = const()[name = tensor<string, []>("q_1_begin_0"), val = tensor<int32, [4]>([0, 0, 0, 0])];
59
+ tensor<int32, [4]> q_1_end_0 = const()[name = tensor<string, []>("q_1_end_0"), val = tensor<int32, [4]>([1, 224, 1, 128])];
60
+ tensor<bool, [4]> q_1_end_mask_0 = const()[name = tensor<string, []>("q_1_end_mask_0"), val = tensor<bool, [4]>([false, true, true, true])];
61
+ tensor<bool, [4]> q_1_squeeze_mask_0 = const()[name = tensor<string, []>("q_1_squeeze_mask_0"), val = tensor<bool, [4]>([true, false, false, false])];
62
+ tensor<fp16, [224, 1, 128]> q_1_cast_fp16 = slice_by_index(begin = q_1_begin_0, end = q_1_end_0, end_mask = q_1_end_mask_0, squeeze_mask = q_1_squeeze_mask_0, x = var_142_cast_fp16)[name = tensor<string, []>("q_1_cast_fp16")];
63
+ tensor<int32, [4]> k_1_begin_0 = const()[name = tensor<string, []>("k_1_begin_0"), val = tensor<int32, [4]>([1, 0, 0, 0])];
64
+ tensor<int32, [4]> k_1_end_0 = const()[name = tensor<string, []>("k_1_end_0"), val = tensor<int32, [4]>([2, 224, 1, 128])];
65
+ tensor<bool, [4]> k_1_end_mask_0 = const()[name = tensor<string, []>("k_1_end_mask_0"), val = tensor<bool, [4]>([false, true, true, true])];
66
+ tensor<bool, [4]> k_1_squeeze_mask_0 = const()[name = tensor<string, []>("k_1_squeeze_mask_0"), val = tensor<bool, [4]>([true, false, false, false])];
67
+ tensor<fp16, [224, 1, 128]> k_1_cast_fp16 = slice_by_index(begin = k_1_begin_0, end = k_1_end_0, end_mask = k_1_end_mask_0, squeeze_mask = k_1_squeeze_mask_0, x = var_142_cast_fp16)[name = tensor<string, []>("k_1_cast_fp16")];
68
+ tensor<int32, [4]> v_1_begin_0 = const()[name = tensor<string, []>("v_1_begin_0"), val = tensor<int32, [4]>([2, 0, 0, 0])];
69
+ tensor<int32, [4]> v_1_end_0 = const()[name = tensor<string, []>("v_1_end_0"), val = tensor<int32, [4]>([3, 224, 1, 128])];
70
+ tensor<bool, [4]> v_1_end_mask_0 = const()[name = tensor<string, []>("v_1_end_mask_0"), val = tensor<bool, [4]>([false, true, true, true])];
71
+ tensor<bool, [4]> v_1_squeeze_mask_0 = const()[name = tensor<string, []>("v_1_squeeze_mask_0"), val = tensor<bool, [4]>([true, false, false, false])];
72
+ tensor<fp16, [224, 1, 128]> v_1_cast_fp16 = slice_by_index(begin = v_1_begin_0, end = v_1_end_0, end_mask = v_1_end_mask_0, squeeze_mask = v_1_squeeze_mask_0, x = var_142_cast_fp16)[name = tensor<string, []>("v_1_cast_fp16")];
73
+ tensor<int32, [3]> var_150 = const()[name = tensor<string, []>("op_150"), val = tensor<int32, [3]>([224, 4, 32])];
74
+ tensor<fp16, [224, 4, 32]> var_151_cast_fp16 = reshape(shape = var_150, x = q_1_cast_fp16)[name = tensor<string, []>("op_151_cast_fp16")];
75
+ tensor<int32, [3]> q_3_perm_0 = const()[name = tensor<string, []>("q_3_perm_0"), val = tensor<int32, [3]>([1, 0, 2])];
76
+ tensor<int32, [3]> var_157 = const()[name = tensor<string, []>("op_157"), val = tensor<int32, [3]>([224, 4, 32])];
77
+ tensor<fp16, [224, 4, 32]> var_158_cast_fp16 = reshape(shape = var_157, x = k_1_cast_fp16)[name = tensor<string, []>("op_158_cast_fp16")];
78
+ tensor<int32, [3]> k_3_perm_0 = const()[name = tensor<string, []>("k_3_perm_0"), val = tensor<int32, [3]>([1, 0, 2])];
79
+ tensor<int32, [3]> var_164 = const()[name = tensor<string, []>("op_164"), val = tensor<int32, [3]>([224, 4, 32])];
80
+ tensor<fp16, [224, 4, 32]> var_165_cast_fp16 = reshape(shape = var_164, x = v_1_cast_fp16)[name = tensor<string, []>("op_165_cast_fp16")];
81
+ tensor<int32, [3]> v_3_perm_0 = const()[name = tensor<string, []>("v_3_perm_0"), val = tensor<int32, [3]>([1, 0, 2])];
82
+ tensor<int32, [4]> var_168 = const()[name = tensor<string, []>("op_168"), val = tensor<int32, [4]>([1, 1, 1, 224])];
83
+ tensor<fp16, [1, 1, 1, 224]> var_169_cast_fp16 = reshape(shape = var_168, x = key_padding_mask_1_cast_fp16)[name = tensor<string, []>("op_169_cast_fp16")];
84
+ tensor<int32, [4]> var_171_reps_0 = const()[name = tensor<string, []>("op_171_reps_0"), val = tensor<int32, [4]>([1, 4, 1, 1])];
85
+ tensor<fp16, [1, 4, 1, 224]> var_171_cast_fp16 = tile(reps = var_171_reps_0, x = var_169_cast_fp16)[name = tensor<string, []>("op_171_cast_fp16")];
86
+ tensor<int32, [4]> var_179 = const()[name = tensor<string, []>("op_179"), val = tensor<int32, [4]>([1, 4, 224, 32])];
87
+ tensor<fp16, [4, 224, 32]> q_3_cast_fp16 = transpose(perm = q_3_perm_0, x = var_151_cast_fp16)[name = tensor<string, []>("transpose_22")];
88
+ tensor<fp16, [1, 4, 224, 32]> q_5_cast_fp16 = reshape(shape = var_179, x = q_3_cast_fp16)[name = tensor<string, []>("q_5_cast_fp16")];
89
+ tensor<int32, [4]> var_181 = const()[name = tensor<string, []>("op_181"), val = tensor<int32, [4]>([1, 4, 224, 32])];
90
+ tensor<fp16, [4, 224, 32]> k_3_cast_fp16 = transpose(perm = k_3_perm_0, x = var_158_cast_fp16)[name = tensor<string, []>("transpose_21")];
91
+ tensor<fp16, [1, 4, 224, 32]> k_5_cast_fp16 = reshape(shape = var_181, x = k_3_cast_fp16)[name = tensor<string, []>("k_5_cast_fp16")];
92
+ tensor<int32, [4]> var_183 = const()[name = tensor<string, []>("op_183"), val = tensor<int32, [4]>([1, 4, 224, 32])];
93
+ tensor<fp16, [4, 224, 32]> v_3_cast_fp16 = transpose(perm = v_3_perm_0, x = var_165_cast_fp16)[name = tensor<string, []>("transpose_20")];
94
+ tensor<fp16, [1, 4, 224, 32]> v_5_cast_fp16 = reshape(shape = var_183, x = v_3_cast_fp16)[name = tensor<string, []>("v_5_cast_fp16")];
95
+ tensor<fp16, []> mul_1_y_0_to_fp16 = const()[name = tensor<string, []>("mul_1_y_0_to_fp16"), val = tensor<fp16, []>(0x1.6ap-3)];
96
+ tensor<fp16, [1, 4, 224, 32]> mul_1_cast_fp16 = mul(x = q_5_cast_fp16, y = mul_1_y_0_to_fp16)[name = tensor<string, []>("mul_1_cast_fp16")];
97
+ tensor<bool, []> matmul_0_transpose_y_0 = const()[name = tensor<string, []>("matmul_0_transpose_y_0"), val = tensor<bool, []>(true)];
98
+ tensor<bool, []> matmul_0_transpose_x_0 = const()[name = tensor<string, []>("matmul_0_transpose_x_0"), val = tensor<bool, []>(false)];
99
+ tensor<fp16, [1, 4, 224, 224]> matmul_0_cast_fp16 = matmul(transpose_x = matmul_0_transpose_x_0, transpose_y = matmul_0_transpose_y_0, x = mul_1_cast_fp16, y = k_5_cast_fp16)[name = tensor<string, []>("matmul_0_cast_fp16")];
100
+ tensor<fp16, [1, 4, 224, 224]> add_0_cast_fp16 = add(x = matmul_0_cast_fp16, y = var_171_cast_fp16)[name = tensor<string, []>("add_0_cast_fp16")];
101
+ tensor<int32, []> softmax_0_axis_0 = const()[name = tensor<string, []>("softmax_0_axis_0"), val = tensor<int32, []>(-1)];
102
+ tensor<fp16, [1, 4, 224, 224]> softmax_0_cast_fp16 = softmax(axis = softmax_0_axis_0, x = add_0_cast_fp16)[name = tensor<string, []>("softmax_0_cast_fp16")];
103
+ tensor<bool, []> attn_output_1_transpose_x_0 = const()[name = tensor<string, []>("attn_output_1_transpose_x_0"), val = tensor<bool, []>(false)];
104
+ tensor<bool, []> attn_output_1_transpose_y_0 = const()[name = tensor<string, []>("attn_output_1_transpose_y_0"), val = tensor<bool, []>(false)];
105
+ tensor<fp16, [1, 4, 224, 32]> attn_output_1_cast_fp16 = matmul(transpose_x = attn_output_1_transpose_x_0, transpose_y = attn_output_1_transpose_y_0, x = softmax_0_cast_fp16, y = v_5_cast_fp16)[name = tensor<string, []>("attn_output_1_cast_fp16")];
106
+ tensor<int32, [4]> var_186 = const()[name = tensor<string, []>("op_186"), val = tensor<int32, [4]>([2, 0, 1, 3])];
107
+ tensor<int32, [2]> var_191 = const()[name = tensor<string, []>("op_191"), val = tensor<int32, [2]>([224, 128])];
108
+ tensor<fp16, [224, 1, 4, 32]> var_187_cast_fp16 = transpose(perm = var_186, x = attn_output_1_cast_fp16)[name = tensor<string, []>("transpose_19")];
109
+ tensor<fp16, [224, 128]> attn_output_3_cast_fp16 = reshape(shape = var_191, x = var_187_cast_fp16)[name = tensor<string, []>("attn_output_3_cast_fp16")];
110
+ tensor<fp16, [128, 128]> model_encoder_layers_0_self_attn_out_proj_weight_to_fp16 = const()[name = tensor<string, []>("model_encoder_layers_0_self_attn_out_proj_weight_to_fp16"), val = tensor<fp16, [128, 128]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(223680)))];
111
+ tensor<fp16, [128]> model_encoder_layers_0_self_attn_out_proj_bias_to_fp16 = const()[name = tensor<string, []>("model_encoder_layers_0_self_attn_out_proj_bias_to_fp16"), val = tensor<fp16, [128]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(256512)))];
112
+ tensor<fp16, [224, 128]> linear_1_cast_fp16 = linear(bias = model_encoder_layers_0_self_attn_out_proj_bias_to_fp16, weight = model_encoder_layers_0_self_attn_out_proj_weight_to_fp16, x = attn_output_3_cast_fp16)[name = tensor<string, []>("linear_1_cast_fp16")];
113
+ tensor<int32, [3]> var_195 = const()[name = tensor<string, []>("op_195"), val = tensor<int32, [3]>([224, 1, 128])];
114
+ tensor<fp16, [224, 1, 128]> attn_output_7_cast_fp16 = reshape(shape = var_195, x = linear_1_cast_fp16)[name = tensor<string, []>("attn_output_7_cast_fp16")];
115
+ tensor<int32, [3]> input_3_perm_0 = const()[name = tensor<string, []>("input_3_perm_0"), val = tensor<int32, [3]>([1, 0, 2])];
116
+ tensor<fp16, [1, 224, 128]> input_3_cast_fp16 = transpose(perm = input_3_perm_0, x = attn_output_7_cast_fp16)[name = tensor<string, []>("transpose_18")];
117
+ tensor<fp16, [1, 224, 128]> input_5_cast_fp16 = add(x = src_1_cast_fp16, y = input_3_cast_fp16)[name = tensor<string, []>("input_5_cast_fp16")];
118
+ tensor<int32, [1]> input_7_axes_0 = const()[name = tensor<string, []>("input_7_axes_0"), val = tensor<int32, [1]>([-1])];
119
+ tensor<fp16, [128]> model_encoder_layers_0_norm2_weight_to_fp16 = const()[name = tensor<string, []>("model_encoder_layers_0_norm2_weight_to_fp16"), val = tensor<fp16, [128]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(256832)))];
120
+ tensor<fp16, [128]> model_encoder_layers_0_norm2_bias_to_fp16 = const()[name = tensor<string, []>("model_encoder_layers_0_norm2_bias_to_fp16"), val = tensor<fp16, [128]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(257152)))];
121
+ tensor<fp16, [1, 224, 128]> input_7_cast_fp16 = layer_norm(axes = input_7_axes_0, beta = model_encoder_layers_0_norm2_bias_to_fp16, epsilon = var_84_to_fp16, gamma = model_encoder_layers_0_norm2_weight_to_fp16, x = input_5_cast_fp16)[name = tensor<string, []>("input_7_cast_fp16")];
122
+ tensor<fp16, [512, 128]> model_encoder_layers_0_linear1_weight_to_fp16 = const()[name = tensor<string, []>("model_encoder_layers_0_linear1_weight_to_fp16"), val = tensor<fp16, [512, 128]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(257472)))];
123
+ tensor<fp16, [512]> model_encoder_layers_0_linear1_bias_to_fp16 = const()[name = tensor<string, []>("model_encoder_layers_0_linear1_bias_to_fp16"), val = tensor<fp16, [512]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(388608)))];
124
+ tensor<fp16, [1, 224, 512]> linear_2_cast_fp16 = linear(bias = model_encoder_layers_0_linear1_bias_to_fp16, weight = model_encoder_layers_0_linear1_weight_to_fp16, x = input_7_cast_fp16)[name = tensor<string, []>("linear_2_cast_fp16")];
125
+ tensor<fp16, [1, 224, 512]> input_11_cast_fp16 = relu(x = linear_2_cast_fp16)[name = tensor<string, []>("input_11_cast_fp16")];
126
+ tensor<fp16, [128, 512]> model_encoder_layers_0_linear2_weight_to_fp16 = const()[name = tensor<string, []>("model_encoder_layers_0_linear2_weight_to_fp16"), val = tensor<fp16, [128, 512]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(389696)))];
127
+ tensor<fp16, [128]> model_encoder_layers_0_linear2_bias_to_fp16 = const()[name = tensor<string, []>("model_encoder_layers_0_linear2_bias_to_fp16"), val = tensor<fp16, [128]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(520832)))];
128
+ tensor<fp16, [1, 224, 128]> linear_3_cast_fp16 = linear(bias = model_encoder_layers_0_linear2_bias_to_fp16, weight = model_encoder_layers_0_linear2_weight_to_fp16, x = input_11_cast_fp16)[name = tensor<string, []>("linear_3_cast_fp16")];
129
+ tensor<fp16, [1, 224, 128]> input_17_cast_fp16 = add(x = input_5_cast_fp16, y = linear_3_cast_fp16)[name = tensor<string, []>("input_17_cast_fp16")];
130
+ tensor<int32, [1]> query_5_axes_0 = const()[name = tensor<string, []>("query_5_axes_0"), val = tensor<int32, [1]>([-1])];
131
+ tensor<fp16, [128]> model_encoder_layers_1_norm1_weight_to_fp16 = const()[name = tensor<string, []>("model_encoder_layers_1_norm1_weight_to_fp16"), val = tensor<fp16, [128]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(521152)))];
132
+ tensor<fp16, [128]> model_encoder_layers_1_norm1_bias_to_fp16 = const()[name = tensor<string, []>("model_encoder_layers_1_norm1_bias_to_fp16"), val = tensor<fp16, [128]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(521472)))];
133
+ tensor<fp16, [1, 224, 128]> query_5_cast_fp16 = layer_norm(axes = query_5_axes_0, beta = model_encoder_layers_1_norm1_bias_to_fp16, epsilon = var_84_to_fp16, gamma = model_encoder_layers_1_norm1_weight_to_fp16, x = input_17_cast_fp16)[name = tensor<string, []>("query_5_cast_fp16")];
134
+ tensor<int32, [3]> query_7_perm_0 = const()[name = tensor<string, []>("query_7_perm_0"), val = tensor<int32, [3]>([1, 0, 2])];
135
+ tensor<fp16, [384, 128]> model_encoder_layers_1_self_attn_in_proj_weight_to_fp16 = const()[name = tensor<string, []>("model_encoder_layers_1_self_attn_in_proj_weight_to_fp16"), val = tensor<fp16, [384, 128]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(521792)))];
136
+ tensor<fp16, [384]> model_encoder_layers_1_self_attn_in_proj_bias_to_fp16 = const()[name = tensor<string, []>("model_encoder_layers_1_self_attn_in_proj_bias_to_fp16"), val = tensor<fp16, [384]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(620160)))];
137
+ tensor<fp16, [224, 1, 128]> query_7_cast_fp16 = transpose(perm = query_7_perm_0, x = query_5_cast_fp16)[name = tensor<string, []>("transpose_17")];
138
+ tensor<fp16, [224, 1, 384]> linear_4_cast_fp16 = linear(bias = model_encoder_layers_1_self_attn_in_proj_bias_to_fp16, weight = model_encoder_layers_1_self_attn_in_proj_weight_to_fp16, x = query_7_cast_fp16)[name = tensor<string, []>("linear_4_cast_fp16")];
139
+ tensor<int32, [4]> concat_2 = const()[name = tensor<string, []>("concat_2"), val = tensor<int32, [4]>([224, 1, 3, 128])];
140
+ tensor<fp16, [224, 1, 3, 128]> var_246_cast_fp16 = reshape(shape = concat_2, x = linear_4_cast_fp16)[name = tensor<string, []>("op_246_cast_fp16")];
141
+ tensor<int32, [1]> var_247_axes_0 = const()[name = tensor<string, []>("op_247_axes_0"), val = tensor<int32, [1]>([0])];
142
+ tensor<fp16, [1, 224, 1, 3, 128]> var_247_cast_fp16 = expand_dims(axes = var_247_axes_0, x = var_246_cast_fp16)[name = tensor<string, []>("op_247_cast_fp16")];
143
+ tensor<int32, [5]> var_248_perm_0 = const()[name = tensor<string, []>("op_248_perm_0"), val = tensor<int32, [5]>([-2, 1, 2, 0, 4])];
144
+ tensor<int32, [1]> var_249_axes_0 = const()[name = tensor<string, []>("op_249_axes_0"), val = tensor<int32, [1]>([-2])];
145
+ tensor<fp16, [3, 224, 1, 1, 128]> var_248_cast_fp16 = transpose(perm = var_248_perm_0, x = var_247_cast_fp16)[name = tensor<string, []>("transpose_16")];
146
+ tensor<fp16, [3, 224, 1, 128]> var_249_cast_fp16 = squeeze(axes = var_249_axes_0, x = var_248_cast_fp16)[name = tensor<string, []>("op_249_cast_fp16")];
147
+ tensor<int32, [4]> q_7_begin_0 = const()[name = tensor<string, []>("q_7_begin_0"), val = tensor<int32, [4]>([0, 0, 0, 0])];
148
+ tensor<int32, [4]> q_7_end_0 = const()[name = tensor<string, []>("q_7_end_0"), val = tensor<int32, [4]>([1, 224, 1, 128])];
149
+ tensor<bool, [4]> q_7_end_mask_0 = const()[name = tensor<string, []>("q_7_end_mask_0"), val = tensor<bool, [4]>([false, true, true, true])];
150
+ tensor<bool, [4]> q_7_squeeze_mask_0 = const()[name = tensor<string, []>("q_7_squeeze_mask_0"), val = tensor<bool, [4]>([true, false, false, false])];
151
+ tensor<fp16, [224, 1, 128]> q_7_cast_fp16 = slice_by_index(begin = q_7_begin_0, end = q_7_end_0, end_mask = q_7_end_mask_0, squeeze_mask = q_7_squeeze_mask_0, x = var_249_cast_fp16)[name = tensor<string, []>("q_7_cast_fp16")];
152
+ tensor<int32, [4]> k_7_begin_0 = const()[name = tensor<string, []>("k_7_begin_0"), val = tensor<int32, [4]>([1, 0, 0, 0])];
153
+ tensor<int32, [4]> k_7_end_0 = const()[name = tensor<string, []>("k_7_end_0"), val = tensor<int32, [4]>([2, 224, 1, 128])];
154
+ tensor<bool, [4]> k_7_end_mask_0 = const()[name = tensor<string, []>("k_7_end_mask_0"), val = tensor<bool, [4]>([false, true, true, true])];
155
+ tensor<bool, [4]> k_7_squeeze_mask_0 = const()[name = tensor<string, []>("k_7_squeeze_mask_0"), val = tensor<bool, [4]>([true, false, false, false])];
156
+ tensor<fp16, [224, 1, 128]> k_7_cast_fp16 = slice_by_index(begin = k_7_begin_0, end = k_7_end_0, end_mask = k_7_end_mask_0, squeeze_mask = k_7_squeeze_mask_0, x = var_249_cast_fp16)[name = tensor<string, []>("k_7_cast_fp16")];
157
+ tensor<int32, [4]> v_7_begin_0 = const()[name = tensor<string, []>("v_7_begin_0"), val = tensor<int32, [4]>([2, 0, 0, 0])];
158
+ tensor<int32, [4]> v_7_end_0 = const()[name = tensor<string, []>("v_7_end_0"), val = tensor<int32, [4]>([3, 224, 1, 128])];
159
+ tensor<bool, [4]> v_7_end_mask_0 = const()[name = tensor<string, []>("v_7_end_mask_0"), val = tensor<bool, [4]>([false, true, true, true])];
160
+ tensor<bool, [4]> v_7_squeeze_mask_0 = const()[name = tensor<string, []>("v_7_squeeze_mask_0"), val = tensor<bool, [4]>([true, false, false, false])];
161
+ tensor<fp16, [224, 1, 128]> v_7_cast_fp16 = slice_by_index(begin = v_7_begin_0, end = v_7_end_0, end_mask = v_7_end_mask_0, squeeze_mask = v_7_squeeze_mask_0, x = var_249_cast_fp16)[name = tensor<string, []>("v_7_cast_fp16")];
162
+ tensor<int32, [3]> var_257 = const()[name = tensor<string, []>("op_257"), val = tensor<int32, [3]>([224, 4, 32])];
163
+ tensor<fp16, [224, 4, 32]> var_258_cast_fp16 = reshape(shape = var_257, x = q_7_cast_fp16)[name = tensor<string, []>("op_258_cast_fp16")];
164
+ tensor<int32, [3]> q_9_perm_0 = const()[name = tensor<string, []>("q_9_perm_0"), val = tensor<int32, [3]>([1, 0, 2])];
165
+ tensor<int32, [3]> var_264 = const()[name = tensor<string, []>("op_264"), val = tensor<int32, [3]>([224, 4, 32])];
166
+ tensor<fp16, [224, 4, 32]> var_265_cast_fp16 = reshape(shape = var_264, x = k_7_cast_fp16)[name = tensor<string, []>("op_265_cast_fp16")];
167
+ tensor<int32, [3]> k_9_perm_0 = const()[name = tensor<string, []>("k_9_perm_0"), val = tensor<int32, [3]>([1, 0, 2])];
168
+ tensor<int32, [3]> var_271 = const()[name = tensor<string, []>("op_271"), val = tensor<int32, [3]>([224, 4, 32])];
169
+ tensor<fp16, [224, 4, 32]> var_272_cast_fp16 = reshape(shape = var_271, x = v_7_cast_fp16)[name = tensor<string, []>("op_272_cast_fp16")];
170
+ tensor<int32, [3]> v_9_perm_0 = const()[name = tensor<string, []>("v_9_perm_0"), val = tensor<int32, [3]>([1, 0, 2])];
171
+ tensor<int32, [4]> var_286 = const()[name = tensor<string, []>("op_286"), val = tensor<int32, [4]>([1, 4, 224, 32])];
172
+ tensor<fp16, [4, 224, 32]> q_9_cast_fp16 = transpose(perm = q_9_perm_0, x = var_258_cast_fp16)[name = tensor<string, []>("transpose_15")];
173
+ tensor<fp16, [1, 4, 224, 32]> q_11_cast_fp16 = reshape(shape = var_286, x = q_9_cast_fp16)[name = tensor<string, []>("q_11_cast_fp16")];
174
+ tensor<int32, [4]> var_288 = const()[name = tensor<string, []>("op_288"), val = tensor<int32, [4]>([1, 4, 224, 32])];
175
+ tensor<fp16, [4, 224, 32]> k_9_cast_fp16 = transpose(perm = k_9_perm_0, x = var_265_cast_fp16)[name = tensor<string, []>("transpose_14")];
176
+ tensor<fp16, [1, 4, 224, 32]> k_11_cast_fp16 = reshape(shape = var_288, x = k_9_cast_fp16)[name = tensor<string, []>("k_11_cast_fp16")];
177
+ tensor<int32, [4]> var_290 = const()[name = tensor<string, []>("op_290"), val = tensor<int32, [4]>([1, 4, 224, 32])];
178
+ tensor<fp16, [4, 224, 32]> v_9_cast_fp16 = transpose(perm = v_9_perm_0, x = var_272_cast_fp16)[name = tensor<string, []>("transpose_13")];
179
+ tensor<fp16, [1, 4, 224, 32]> v_11_cast_fp16 = reshape(shape = var_290, x = v_9_cast_fp16)[name = tensor<string, []>("v_11_cast_fp16")];
180
+ tensor<fp16, []> mul_3_y_0_to_fp16 = const()[name = tensor<string, []>("mul_3_y_0_to_fp16"), val = tensor<fp16, []>(0x1.6ap-3)];
181
+ tensor<fp16, [1, 4, 224, 32]> mul_3_cast_fp16 = mul(x = q_11_cast_fp16, y = mul_3_y_0_to_fp16)[name = tensor<string, []>("mul_3_cast_fp16")];
182
+ tensor<bool, []> matmul_1_transpose_y_0 = const()[name = tensor<string, []>("matmul_1_transpose_y_0"), val = tensor<bool, []>(true)];
183
+ tensor<bool, []> matmul_1_transpose_x_0 = const()[name = tensor<string, []>("matmul_1_transpose_x_0"), val = tensor<bool, []>(false)];
184
+ tensor<fp16, [1, 4, 224, 224]> matmul_1_cast_fp16 = matmul(transpose_x = matmul_1_transpose_x_0, transpose_y = matmul_1_transpose_y_0, x = mul_3_cast_fp16, y = k_11_cast_fp16)[name = tensor<string, []>("matmul_1_cast_fp16")];
185
+ tensor<fp16, [1, 4, 224, 224]> add_1_cast_fp16 = add(x = matmul_1_cast_fp16, y = var_171_cast_fp16)[name = tensor<string, []>("add_1_cast_fp16")];
186
+ tensor<int32, []> softmax_1_axis_0 = const()[name = tensor<string, []>("softmax_1_axis_0"), val = tensor<int32, []>(-1)];
187
+ tensor<fp16, [1, 4, 224, 224]> softmax_1_cast_fp16 = softmax(axis = softmax_1_axis_0, x = add_1_cast_fp16)[name = tensor<string, []>("softmax_1_cast_fp16")];
188
+ tensor<bool, []> attn_output_9_transpose_x_0 = const()[name = tensor<string, []>("attn_output_9_transpose_x_0"), val = tensor<bool, []>(false)];
189
+ tensor<bool, []> attn_output_9_transpose_y_0 = const()[name = tensor<string, []>("attn_output_9_transpose_y_0"), val = tensor<bool, []>(false)];
190
+ tensor<fp16, [1, 4, 224, 32]> attn_output_9_cast_fp16 = matmul(transpose_x = attn_output_9_transpose_x_0, transpose_y = attn_output_9_transpose_y_0, x = softmax_1_cast_fp16, y = v_11_cast_fp16)[name = tensor<string, []>("attn_output_9_cast_fp16")];
191
+ tensor<int32, [4]> var_293 = const()[name = tensor<string, []>("op_293"), val = tensor<int32, [4]>([2, 0, 1, 3])];
192
+ tensor<int32, [2]> var_298 = const()[name = tensor<string, []>("op_298"), val = tensor<int32, [2]>([224, 128])];
193
+ tensor<fp16, [224, 1, 4, 32]> var_294_cast_fp16 = transpose(perm = var_293, x = attn_output_9_cast_fp16)[name = tensor<string, []>("transpose_12")];
194
+ tensor<fp16, [224, 128]> attn_output_11_cast_fp16 = reshape(shape = var_298, x = var_294_cast_fp16)[name = tensor<string, []>("attn_output_11_cast_fp16")];
195
+ tensor<fp16, [128, 128]> model_encoder_layers_1_self_attn_out_proj_weight_to_fp16 = const()[name = tensor<string, []>("model_encoder_layers_1_self_attn_out_proj_weight_to_fp16"), val = tensor<fp16, [128, 128]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(620992)))];
196
+ tensor<fp16, [128]> model_encoder_layers_1_self_attn_out_proj_bias_to_fp16 = const()[name = tensor<string, []>("model_encoder_layers_1_self_attn_out_proj_bias_to_fp16"), val = tensor<fp16, [128]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(653824)))];
197
+ tensor<fp16, [224, 128]> linear_5_cast_fp16 = linear(bias = model_encoder_layers_1_self_attn_out_proj_bias_to_fp16, weight = model_encoder_layers_1_self_attn_out_proj_weight_to_fp16, x = attn_output_11_cast_fp16)[name = tensor<string, []>("linear_5_cast_fp16")];
198
+ tensor<int32, [3]> var_302 = const()[name = tensor<string, []>("op_302"), val = tensor<int32, [3]>([224, 1, 128])];
199
+ tensor<fp16, [224, 1, 128]> attn_output_15_cast_fp16 = reshape(shape = var_302, x = linear_5_cast_fp16)[name = tensor<string, []>("attn_output_15_cast_fp16")];
200
+ tensor<int32, [3]> input_19_perm_0 = const()[name = tensor<string, []>("input_19_perm_0"), val = tensor<int32, [3]>([1, 0, 2])];
201
+ tensor<fp16, [1, 224, 128]> input_19_cast_fp16 = transpose(perm = input_19_perm_0, x = attn_output_15_cast_fp16)[name = tensor<string, []>("transpose_11")];
202
+ tensor<fp16, [1, 224, 128]> input_21_cast_fp16 = add(x = input_17_cast_fp16, y = input_19_cast_fp16)[name = tensor<string, []>("input_21_cast_fp16")];
203
+ tensor<int32, [1]> input_23_axes_0 = const()[name = tensor<string, []>("input_23_axes_0"), val = tensor<int32, [1]>([-1])];
204
+ tensor<fp16, [128]> model_encoder_layers_1_norm2_weight_to_fp16 = const()[name = tensor<string, []>("model_encoder_layers_1_norm2_weight_to_fp16"), val = tensor<fp16, [128]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(654144)))];
205
+ tensor<fp16, [128]> model_encoder_layers_1_norm2_bias_to_fp16 = const()[name = tensor<string, []>("model_encoder_layers_1_norm2_bias_to_fp16"), val = tensor<fp16, [128]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(654464)))];
206
+ tensor<fp16, [1, 224, 128]> input_23_cast_fp16 = layer_norm(axes = input_23_axes_0, beta = model_encoder_layers_1_norm2_bias_to_fp16, epsilon = var_84_to_fp16, gamma = model_encoder_layers_1_norm2_weight_to_fp16, x = input_21_cast_fp16)[name = tensor<string, []>("input_23_cast_fp16")];
207
+ tensor<fp16, [512, 128]> model_encoder_layers_1_linear1_weight_to_fp16 = const()[name = tensor<string, []>("model_encoder_layers_1_linear1_weight_to_fp16"), val = tensor<fp16, [512, 128]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(654784)))];
208
+ tensor<fp16, [512]> model_encoder_layers_1_linear1_bias_to_fp16 = const()[name = tensor<string, []>("model_encoder_layers_1_linear1_bias_to_fp16"), val = tensor<fp16, [512]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(785920)))];
209
+ tensor<fp16, [1, 224, 512]> linear_6_cast_fp16 = linear(bias = model_encoder_layers_1_linear1_bias_to_fp16, weight = model_encoder_layers_1_linear1_weight_to_fp16, x = input_23_cast_fp16)[name = tensor<string, []>("linear_6_cast_fp16")];
210
+ tensor<fp16, [1, 224, 512]> input_27_cast_fp16 = relu(x = linear_6_cast_fp16)[name = tensor<string, []>("input_27_cast_fp16")];
211
+ tensor<fp16, [128, 512]> model_encoder_layers_1_linear2_weight_to_fp16 = const()[name = tensor<string, []>("model_encoder_layers_1_linear2_weight_to_fp16"), val = tensor<fp16, [128, 512]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(787008)))];
212
+ tensor<fp16, [128]> model_encoder_layers_1_linear2_bias_to_fp16 = const()[name = tensor<string, []>("model_encoder_layers_1_linear2_bias_to_fp16"), val = tensor<fp16, [128]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(918144)))];
213
+ tensor<fp16, [1, 224, 128]> linear_7_cast_fp16 = linear(bias = model_encoder_layers_1_linear2_bias_to_fp16, weight = model_encoder_layers_1_linear2_weight_to_fp16, x = input_27_cast_fp16)[name = tensor<string, []>("linear_7_cast_fp16")];
214
+ tensor<fp16, [1, 224, 128]> context_cast_fp16 = add(x = input_21_cast_fp16, y = linear_7_cast_fp16)[name = tensor<string, []>("context_cast_fp16")];
215
+ tensor<int32, [2]> var_340 = const()[name = tensor<string, []>("op_340"), val = tensor<int32, [2]>([32, 96])];
216
+ tensor<string, []> mask_option_ids_to_fp16_dtype_0 = const()[name = tensor<string, []>("mask_option_ids_to_fp16_dtype_0"), val = tensor<string, []>("fp16")];
217
+ tensor<fp16, [1, 32, 96]> option_ids_to_fp16 = cast(dtype = mask_option_ids_to_fp16_dtype_0, x = option_ids)[name = tensor<string, []>("cast_63")];
218
+ tensor<fp16, [32, 96]> mask_flat_ids_cast_fp16 = reshape(shape = var_340, x = option_ids_to_fp16)[name = tensor<string, []>("mask_flat_ids_cast_fp16")];
219
+ tensor<fp16, []> var_342_promoted_to_fp16 = const()[name = tensor<string, []>("op_342_promoted_to_fp16"), val = tensor<fp16, []>(0x0p+0)];
220
+ tensor<bool, [32, 96]> flat_mask_cast_fp16 = not_equal(x = mask_flat_ids_cast_fp16, y = var_342_promoted_to_fp16)[name = tensor<string, []>("flat_mask_cast_fp16")];
221
+ tensor<int32, [2]> var_353_begin_0 = const()[name = tensor<string, []>("op_353_begin_0"), val = tensor<int32, [2]>([0, 0])];
222
+ tensor<int32, [2]> var_353_end_0 = const()[name = tensor<string, []>("op_353_end_0"), val = tensor<int32, [2]>([32, 1])];
223
+ tensor<bool, [2]> var_353_end_mask_0 = const()[name = tensor<string, []>("op_353_end_mask_0"), val = tensor<bool, [2]>([true, false])];
224
+ tensor<fp16, [32, 1]> var_353_cast_fp16 = slice_by_index(begin = var_353_begin_0, end = var_353_end_0, end_mask = var_353_end_mask_0, x = mask_flat_ids_cast_fp16)[name = tensor<string, []>("op_353_cast_fp16")];
225
+ tensor<fp16, []> fill_like_1_value_0_to_fp16 = const()[name = tensor<string, []>("fill_like_1_value_0_to_fp16"), val = tensor<fp16, []>(0x1p+0)];
226
+ tensor<fp16, [32, 1]> fill_like_1_cast_fp16 = fill_like(ref_tensor = var_353_cast_fp16, value = fill_like_1_value_0_to_fp16)[name = tensor<string, []>("fill_like_1_cast_fp16")];
227
+ tensor<int32, [2]> var_369_begin_0 = const()[name = tensor<string, []>("op_369_begin_0"), val = tensor<int32, [2]>([0, 1])];
228
+ tensor<int32, [2]> var_369_end_0 = const()[name = tensor<string, []>("op_369_end_0"), val = tensor<int32, [2]>([32, 96])];
229
+ tensor<bool, [2]> var_369_end_mask_0 = const()[name = tensor<string, []>("op_369_end_mask_0"), val = tensor<bool, [2]>([true, true])];
230
+ tensor<fp16, [32, 95]> var_369_cast_fp16 = slice_by_index(begin = var_369_begin_0, end = var_369_end_0, end_mask = var_369_end_mask_0, x = mask_flat_ids_cast_fp16)[name = tensor<string, []>("op_369_cast_fp16")];
231
+ tensor<int32, []> var_371 = const()[name = tensor<string, []>("op_371"), val = tensor<int32, []>(1)];
232
+ tensor<bool, []> safe_ids_interleave_0 = const()[name = tensor<string, []>("safe_ids_interleave_0"), val = tensor<bool, []>(false)];
233
+ tensor<fp16, [32, 96]> safe_ids_cast_fp16 = concat(axis = var_371, interleave = safe_ids_interleave_0, values = (fill_like_1_cast_fp16, var_369_cast_fp16))[name = tensor<string, []>("safe_ids_cast_fp16")];
234
+ tensor<int32, [2]> reshape_0_shape_0 = const()[name = tensor<string, []>("reshape_0_shape_0"), val = tensor<int32, [2]>([32, 96])];
235
+ tensor<fp16, [32, 96]> reshape_0 = reshape(shape = reshape_0_shape_0, x = option_ids_to_fp16)[name = tensor<string, []>("reshape_0")];
236
+ tensor<string, []> cast_1_dtype_0 = const()[name = tensor<string, []>("cast_1_dtype_0"), val = tensor<string, []>("uint16")];
237
+ tensor<uint16, [32, 96]> cast_1 = cast(dtype = cast_1_dtype_0, x = reshape_0)[name = tensor<string, []>("cast_1")];
238
+ tensor<int32, []> gather_1_axis_0 = const()[name = tensor<string, []>("gather_1_axis_0"), val = tensor<int32, []>(0)];
239
+ tensor<int32, []> gather_1_batch_dims_0 = const()[name = tensor<string, []>("gather_1_batch_dims_0"), val = tensor<int32, []>(0)];
240
+ tensor<bool, []> gather_1_validate_indices_0 = const()[name = tensor<string, []>("gather_1_validate_indices_0"), val = tensor<bool, []>(false)];
241
+ tensor<fp16, [32, 96, 128]> gather_1 = gather(axis = gather_1_axis_0, batch_dims = gather_1_batch_dims_0, indices = cast_1, validate_indices = gather_1_validate_indices_0, x = model_embedding_weight_to_fp16)[name = tensor<string, []>("gather_1")];
242
+ tensor<fp16, [96, 128]> var_389_to_fp16 = const()[name = tensor<string, []>("op_389_to_fp16"), val = tensor<fp16, [96, 128]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(918464)))];
243
+ tensor<fp16, [32, 96, 128]> src_cast_fp16 = add(x = gather_1, y = var_389_to_fp16)[name = tensor<string, []>("src_cast_fp16")];
244
+ tensor<fp16, []> var_392_promoted_to_fp16 = const()[name = tensor<string, []>("op_392_promoted_to_fp16"), val = tensor<fp16, []>(0x0p+0)];
245
+ tensor<bool, [32, 96]> mask_cast_fp16 = equal(x = safe_ids_cast_fp16, y = var_392_promoted_to_fp16)[name = tensor<string, []>("mask_cast_fp16")];
246
+ tensor<fp16, []> var_408_to_fp16 = const()[name = tensor<string, []>("op_408_to_fp16"), val = tensor<fp16, []>(-inf)];
247
+ tensor<fp16, [32, 96]> var_414_to_fp16 = const()[name = tensor<string, []>("op_414_to_fp16"), val = tensor<fp16, [32, 96]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(943104)))];
248
+ tensor<fp16, [32, 96]> key_padding_mask_7_cast_fp16 = select(a = var_408_to_fp16, b = var_414_to_fp16, cond = mask_cast_fp16)[name = tensor<string, []>("key_padding_mask_7_cast_fp16")];
249
+ tensor<int32, [1]> query_9_axes_0 = const()[name = tensor<string, []>("query_9_axes_0"), val = tensor<int32, [1]>([-1])];
250
+ tensor<fp16, [128]> model_option_encoder_layers_0_norm1_weight_to_fp16 = const()[name = tensor<string, []>("model_option_encoder_layers_0_norm1_weight_to_fp16"), val = tensor<fp16, [128]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(949312)))];
251
+ tensor<fp16, [128]> model_option_encoder_layers_0_norm1_bias_to_fp16 = const()[name = tensor<string, []>("model_option_encoder_layers_0_norm1_bias_to_fp16"), val = tensor<fp16, [128]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(949632)))];
252
+ tensor<fp16, []> var_395_to_fp16 = const()[name = tensor<string, []>("op_395_to_fp16"), val = tensor<fp16, []>(0x1.5p-17)];
253
+ tensor<fp16, [32, 96, 128]> query_9_cast_fp16 = layer_norm(axes = query_9_axes_0, beta = model_option_encoder_layers_0_norm1_bias_to_fp16, epsilon = var_395_to_fp16, gamma = model_option_encoder_layers_0_norm1_weight_to_fp16, x = src_cast_fp16)[name = tensor<string, []>("query_9_cast_fp16")];
254
+ tensor<int32, [3]> query_11_perm_0 = const()[name = tensor<string, []>("query_11_perm_0"), val = tensor<int32, [3]>([1, 0, 2])];
255
+ tensor<fp16, [384, 128]> model_option_encoder_layers_0_self_attn_in_proj_weight_to_fp16 = const()[name = tensor<string, []>("model_option_encoder_layers_0_self_attn_in_proj_weight_to_fp16"), val = tensor<fp16, [384, 128]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(949952)))];
256
+ tensor<fp16, [384]> model_option_encoder_layers_0_self_attn_in_proj_bias_to_fp16 = const()[name = tensor<string, []>("model_option_encoder_layers_0_self_attn_in_proj_bias_to_fp16"), val = tensor<fp16, [384]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(1048320)))];
257
+ tensor<fp16, [96, 32, 128]> query_11_cast_fp16 = transpose(perm = query_11_perm_0, x = query_9_cast_fp16)[name = tensor<string, []>("transpose_10")];
258
+ tensor<fp16, [96, 32, 384]> linear_8_cast_fp16 = linear(bias = model_option_encoder_layers_0_self_attn_in_proj_bias_to_fp16, weight = model_option_encoder_layers_0_self_attn_in_proj_weight_to_fp16, x = query_11_cast_fp16)[name = tensor<string, []>("linear_8_cast_fp16")];
259
+ tensor<int32, [4]> concat_4 = const()[name = tensor<string, []>("concat_4"), val = tensor<int32, [4]>([96, 32, 3, 128])];
260
+ tensor<fp16, [96, 32, 3, 128]> var_448_cast_fp16 = reshape(shape = concat_4, x = linear_8_cast_fp16)[name = tensor<string, []>("op_448_cast_fp16")];
261
+ tensor<int32, [1]> var_449_axes_0 = const()[name = tensor<string, []>("op_449_axes_0"), val = tensor<int32, [1]>([0])];
262
+ tensor<fp16, [1, 96, 32, 3, 128]> var_449_cast_fp16 = expand_dims(axes = var_449_axes_0, x = var_448_cast_fp16)[name = tensor<string, []>("op_449_cast_fp16")];
263
+ tensor<int32, [5]> var_450_perm_0 = const()[name = tensor<string, []>("op_450_perm_0"), val = tensor<int32, [5]>([-2, 1, 2, 0, 4])];
264
+ tensor<int32, [1]> var_451_axes_0 = const()[name = tensor<string, []>("op_451_axes_0"), val = tensor<int32, [1]>([-2])];
265
+ tensor<fp16, [3, 96, 32, 1, 128]> var_450_cast_fp16 = transpose(perm = var_450_perm_0, x = var_449_cast_fp16)[name = tensor<string, []>("transpose_9")];
266
+ tensor<fp16, [3, 96, 32, 128]> var_451_cast_fp16 = squeeze(axes = var_451_axes_0, x = var_450_cast_fp16)[name = tensor<string, []>("op_451_cast_fp16")];
267
+ tensor<int32, [4]> q_13_begin_0 = const()[name = tensor<string, []>("q_13_begin_0"), val = tensor<int32, [4]>([0, 0, 0, 0])];
268
+ tensor<int32, [4]> q_13_end_0 = const()[name = tensor<string, []>("q_13_end_0"), val = tensor<int32, [4]>([1, 96, 32, 128])];
269
+ tensor<bool, [4]> q_13_end_mask_0 = const()[name = tensor<string, []>("q_13_end_mask_0"), val = tensor<bool, [4]>([false, true, true, true])];
270
+ tensor<bool, [4]> q_13_squeeze_mask_0 = const()[name = tensor<string, []>("q_13_squeeze_mask_0"), val = tensor<bool, [4]>([true, false, false, false])];
271
+ tensor<fp16, [96, 32, 128]> q_13_cast_fp16 = slice_by_index(begin = q_13_begin_0, end = q_13_end_0, end_mask = q_13_end_mask_0, squeeze_mask = q_13_squeeze_mask_0, x = var_451_cast_fp16)[name = tensor<string, []>("q_13_cast_fp16")];
272
+ tensor<int32, [4]> k_13_begin_0 = const()[name = tensor<string, []>("k_13_begin_0"), val = tensor<int32, [4]>([1, 0, 0, 0])];
273
+ tensor<int32, [4]> k_13_end_0 = const()[name = tensor<string, []>("k_13_end_0"), val = tensor<int32, [4]>([2, 96, 32, 128])];
274
+ tensor<bool, [4]> k_13_end_mask_0 = const()[name = tensor<string, []>("k_13_end_mask_0"), val = tensor<bool, [4]>([false, true, true, true])];
275
+ tensor<bool, [4]> k_13_squeeze_mask_0 = const()[name = tensor<string, []>("k_13_squeeze_mask_0"), val = tensor<bool, [4]>([true, false, false, false])];
276
+ tensor<fp16, [96, 32, 128]> k_13_cast_fp16 = slice_by_index(begin = k_13_begin_0, end = k_13_end_0, end_mask = k_13_end_mask_0, squeeze_mask = k_13_squeeze_mask_0, x = var_451_cast_fp16)[name = tensor<string, []>("k_13_cast_fp16")];
277
+ tensor<int32, [4]> v_13_begin_0 = const()[name = tensor<string, []>("v_13_begin_0"), val = tensor<int32, [4]>([2, 0, 0, 0])];
278
+ tensor<int32, [4]> v_13_end_0 = const()[name = tensor<string, []>("v_13_end_0"), val = tensor<int32, [4]>([3, 96, 32, 128])];
279
+ tensor<bool, [4]> v_13_end_mask_0 = const()[name = tensor<string, []>("v_13_end_mask_0"), val = tensor<bool, [4]>([false, true, true, true])];
280
+ tensor<bool, [4]> v_13_squeeze_mask_0 = const()[name = tensor<string, []>("v_13_squeeze_mask_0"), val = tensor<bool, [4]>([true, false, false, false])];
281
+ tensor<fp16, [96, 32, 128]> v_13_cast_fp16 = slice_by_index(begin = v_13_begin_0, end = v_13_end_0, end_mask = v_13_end_mask_0, squeeze_mask = v_13_squeeze_mask_0, x = var_451_cast_fp16)[name = tensor<string, []>("v_13_cast_fp16")];
282
+ tensor<int32, [3]> var_459 = const()[name = tensor<string, []>("op_459"), val = tensor<int32, [3]>([96, 128, 32])];
283
+ tensor<fp16, [96, 128, 32]> var_460_cast_fp16 = reshape(shape = var_459, x = q_13_cast_fp16)[name = tensor<string, []>("op_460_cast_fp16")];
284
+ tensor<int32, [3]> q_15_perm_0 = const()[name = tensor<string, []>("q_15_perm_0"), val = tensor<int32, [3]>([1, 0, 2])];
285
+ tensor<int32, [3]> var_466 = const()[name = tensor<string, []>("op_466"), val = tensor<int32, [3]>([96, 128, 32])];
286
+ tensor<fp16, [96, 128, 32]> var_467_cast_fp16 = reshape(shape = var_466, x = k_13_cast_fp16)[name = tensor<string, []>("op_467_cast_fp16")];
287
+ tensor<int32, [3]> k_15_perm_0 = const()[name = tensor<string, []>("k_15_perm_0"), val = tensor<int32, [3]>([1, 0, 2])];
288
+ tensor<int32, [3]> var_473 = const()[name = tensor<string, []>("op_473"), val = tensor<int32, [3]>([96, 128, 32])];
289
+ tensor<fp16, [96, 128, 32]> var_474_cast_fp16 = reshape(shape = var_473, x = v_13_cast_fp16)[name = tensor<string, []>("op_474_cast_fp16")];
290
+ tensor<int32, [3]> v_15_perm_0 = const()[name = tensor<string, []>("v_15_perm_0"), val = tensor<int32, [3]>([1, 0, 2])];
291
+ tensor<int32, [4]> var_477 = const()[name = tensor<string, []>("op_477"), val = tensor<int32, [4]>([32, 1, 1, 96])];
292
+ tensor<fp16, [32, 1, 1, 96]> var_478_cast_fp16 = reshape(shape = var_477, x = key_padding_mask_7_cast_fp16)[name = tensor<string, []>("op_478_cast_fp16")];
293
+ tensor<int32, [4]> var_480_reps_0 = const()[name = tensor<string, []>("op_480_reps_0"), val = tensor<int32, [4]>([1, 4, 1, 1])];
294
+ tensor<fp16, [32, 4, 1, 96]> var_480_cast_fp16 = tile(reps = var_480_reps_0, x = var_478_cast_fp16)[name = tensor<string, []>("op_480_cast_fp16")];
295
+ tensor<int32, [4]> var_488 = const()[name = tensor<string, []>("op_488"), val = tensor<int32, [4]>([32, 4, 96, 32])];
296
+ tensor<fp16, [128, 96, 32]> q_15_cast_fp16 = transpose(perm = q_15_perm_0, x = var_460_cast_fp16)[name = tensor<string, []>("transpose_8")];
297
+ tensor<fp16, [32, 4, 96, 32]> q_cast_fp16 = reshape(shape = var_488, x = q_15_cast_fp16)[name = tensor<string, []>("q_cast_fp16")];
298
+ tensor<int32, [4]> var_490 = const()[name = tensor<string, []>("op_490"), val = tensor<int32, [4]>([32, 4, 96, 32])];
299
+ tensor<fp16, [128, 96, 32]> k_15_cast_fp16 = transpose(perm = k_15_perm_0, x = var_467_cast_fp16)[name = tensor<string, []>("transpose_7")];
300
+ tensor<fp16, [32, 4, 96, 32]> k_cast_fp16 = reshape(shape = var_490, x = k_15_cast_fp16)[name = tensor<string, []>("k_cast_fp16")];
301
+ tensor<int32, [4]> var_492 = const()[name = tensor<string, []>("op_492"), val = tensor<int32, [4]>([32, 4, 96, 32])];
302
+ tensor<fp16, [128, 96, 32]> v_15_cast_fp16 = transpose(perm = v_15_perm_0, x = var_474_cast_fp16)[name = tensor<string, []>("transpose_6")];
303
+ tensor<fp16, [32, 4, 96, 32]> v_cast_fp16 = reshape(shape = var_492, x = v_15_cast_fp16)[name = tensor<string, []>("v_cast_fp16")];
304
+ tensor<fp16, []> mul_5_y_0_to_fp16 = const()[name = tensor<string, []>("mul_5_y_0_to_fp16"), val = tensor<fp16, []>(0x1.6ap-3)];
305
+ tensor<fp16, [32, 4, 96, 32]> mul_5_cast_fp16 = mul(x = q_cast_fp16, y = mul_5_y_0_to_fp16)[name = tensor<string, []>("mul_5_cast_fp16")];
306
+ tensor<bool, []> matmul_2_transpose_y_0 = const()[name = tensor<string, []>("matmul_2_transpose_y_0"), val = tensor<bool, []>(true)];
307
+ tensor<bool, []> matmul_2_transpose_x_0 = const()[name = tensor<string, []>("matmul_2_transpose_x_0"), val = tensor<bool, []>(false)];
308
+ tensor<fp16, [32, 4, 96, 96]> matmul_2_cast_fp16 = matmul(transpose_x = matmul_2_transpose_x_0, transpose_y = matmul_2_transpose_y_0, x = mul_5_cast_fp16, y = k_cast_fp16)[name = tensor<string, []>("matmul_2_cast_fp16")];
309
+ tensor<fp16, [32, 4, 96, 96]> add_2_cast_fp16 = add(x = matmul_2_cast_fp16, y = var_480_cast_fp16)[name = tensor<string, []>("add_2_cast_fp16")];
310
+ tensor<int32, []> softmax_2_axis_0 = const()[name = tensor<string, []>("softmax_2_axis_0"), val = tensor<int32, []>(-1)];
311
+ tensor<fp16, [32, 4, 96, 96]> softmax_2_cast_fp16 = softmax(axis = softmax_2_axis_0, x = add_2_cast_fp16)[name = tensor<string, []>("softmax_2_cast_fp16")];
312
+ tensor<bool, []> attn_output_17_transpose_x_0 = const()[name = tensor<string, []>("attn_output_17_transpose_x_0"), val = tensor<bool, []>(false)];
313
+ tensor<bool, []> attn_output_17_transpose_y_0 = const()[name = tensor<string, []>("attn_output_17_transpose_y_0"), val = tensor<bool, []>(false)];
314
+ tensor<fp16, [32, 4, 96, 32]> attn_output_17_cast_fp16 = matmul(transpose_x = attn_output_17_transpose_x_0, transpose_y = attn_output_17_transpose_y_0, x = softmax_2_cast_fp16, y = v_cast_fp16)[name = tensor<string, []>("attn_output_17_cast_fp16")];
315
+ tensor<int32, [4]> var_495 = const()[name = tensor<string, []>("op_495"), val = tensor<int32, [4]>([2, 0, 1, 3])];
316
+ tensor<int32, [2]> var_500 = const()[name = tensor<string, []>("op_500"), val = tensor<int32, [2]>([3072, 128])];
317
+ tensor<fp16, [96, 32, 4, 32]> var_496_cast_fp16 = transpose(perm = var_495, x = attn_output_17_cast_fp16)[name = tensor<string, []>("transpose_5")];
318
+ tensor<fp16, [3072, 128]> attn_output_19_cast_fp16 = reshape(shape = var_500, x = var_496_cast_fp16)[name = tensor<string, []>("attn_output_19_cast_fp16")];
319
+ tensor<fp16, [128, 128]> model_option_encoder_layers_0_self_attn_out_proj_weight_to_fp16 = const()[name = tensor<string, []>("model_option_encoder_layers_0_self_attn_out_proj_weight_to_fp16"), val = tensor<fp16, [128, 128]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(1049152)))];
320
+ tensor<fp16, [128]> model_option_encoder_layers_0_self_attn_out_proj_bias_to_fp16 = const()[name = tensor<string, []>("model_option_encoder_layers_0_self_attn_out_proj_bias_to_fp16"), val = tensor<fp16, [128]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(1081984)))];
321
+ tensor<fp16, [3072, 128]> linear_9_cast_fp16 = linear(bias = model_option_encoder_layers_0_self_attn_out_proj_bias_to_fp16, weight = model_option_encoder_layers_0_self_attn_out_proj_weight_to_fp16, x = attn_output_19_cast_fp16)[name = tensor<string, []>("linear_9_cast_fp16")];
322
+ tensor<int32, [3]> var_504 = const()[name = tensor<string, []>("op_504"), val = tensor<int32, [3]>([96, 32, 128])];
323
+ tensor<fp16, [96, 32, 128]> attn_output_cast_fp16 = reshape(shape = var_504, x = linear_9_cast_fp16)[name = tensor<string, []>("attn_output_cast_fp16")];
324
+ tensor<int32, [3]> input_35_perm_0 = const()[name = tensor<string, []>("input_35_perm_0"), val = tensor<int32, [3]>([1, 0, 2])];
325
+ tensor<fp16, [32, 96, 128]> input_35_cast_fp16 = transpose(perm = input_35_perm_0, x = attn_output_cast_fp16)[name = tensor<string, []>("transpose_4")];
326
+ tensor<fp16, [32, 96, 128]> input_37_cast_fp16 = add(x = src_cast_fp16, y = input_35_cast_fp16)[name = tensor<string, []>("input_37_cast_fp16")];
327
+ tensor<int32, [1]> input_39_axes_0 = const()[name = tensor<string, []>("input_39_axes_0"), val = tensor<int32, [1]>([-1])];
328
+ tensor<fp16, [128]> model_option_encoder_layers_0_norm2_weight_to_fp16 = const()[name = tensor<string, []>("model_option_encoder_layers_0_norm2_weight_to_fp16"), val = tensor<fp16, [128]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(1082304)))];
329
+ tensor<fp16, [128]> model_option_encoder_layers_0_norm2_bias_to_fp16 = const()[name = tensor<string, []>("model_option_encoder_layers_0_norm2_bias_to_fp16"), val = tensor<fp16, [128]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(1082624)))];
330
+ tensor<fp16, [32, 96, 128]> input_39_cast_fp16 = layer_norm(axes = input_39_axes_0, beta = model_option_encoder_layers_0_norm2_bias_to_fp16, epsilon = var_395_to_fp16, gamma = model_option_encoder_layers_0_norm2_weight_to_fp16, x = input_37_cast_fp16)[name = tensor<string, []>("input_39_cast_fp16")];
331
+ tensor<fp16, [512, 128]> model_option_encoder_layers_0_linear1_weight_to_fp16 = const()[name = tensor<string, []>("model_option_encoder_layers_0_linear1_weight_to_fp16"), val = tensor<fp16, [512, 128]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(1082944)))];
332
+ tensor<fp16, [512]> model_option_encoder_layers_0_linear1_bias_to_fp16 = const()[name = tensor<string, []>("model_option_encoder_layers_0_linear1_bias_to_fp16"), val = tensor<fp16, [512]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(1214080)))];
333
+ tensor<fp16, [32, 96, 512]> linear_10_cast_fp16 = linear(bias = model_option_encoder_layers_0_linear1_bias_to_fp16, weight = model_option_encoder_layers_0_linear1_weight_to_fp16, x = input_39_cast_fp16)[name = tensor<string, []>("linear_10_cast_fp16")];
334
+ tensor<fp16, [32, 96, 512]> input_43_cast_fp16 = relu(x = linear_10_cast_fp16)[name = tensor<string, []>("input_43_cast_fp16")];
335
+ tensor<fp16, [128, 512]> model_option_encoder_layers_0_linear2_weight_to_fp16 = const()[name = tensor<string, []>("model_option_encoder_layers_0_linear2_weight_to_fp16"), val = tensor<fp16, [128, 512]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(1215168)))];
336
+ tensor<fp16, [128]> model_option_encoder_layers_0_linear2_bias_to_fp16 = const()[name = tensor<string, []>("model_option_encoder_layers_0_linear2_bias_to_fp16"), val = tensor<fp16, [128]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(1346304)))];
337
+ tensor<fp16, [32, 96, 128]> linear_11_cast_fp16 = linear(bias = model_option_encoder_layers_0_linear2_bias_to_fp16, weight = model_option_encoder_layers_0_linear2_weight_to_fp16, x = input_43_cast_fp16)[name = tensor<string, []>("linear_11_cast_fp16")];
338
+ tensor<fp16, [32, 96, 128]> hidden_cast_fp16 = add(x = input_37_cast_fp16, y = linear_11_cast_fp16)[name = tensor<string, []>("hidden_cast_fp16")];
339
+ tensor<int32, [1]> var_524_axes_0 = const()[name = tensor<string, []>("op_524_axes_0"), val = tensor<int32, [1]>([-1])];
340
+ tensor<bool, [32, 96, 1]> var_524 = expand_dims(axes = var_524_axes_0, x = flat_mask_cast_fp16)[name = tensor<string, []>("op_524")];
341
+ tensor<string, []> weights_to_fp16_dtype_0 = const()[name = tensor<string, []>("weights_to_fp16_dtype_0"), val = tensor<string, []>("fp16")];
342
+ tensor<fp16, [32, 96, 1]> var_524_to_fp16 = cast(dtype = weights_to_fp16_dtype_0, x = var_524)[name = tensor<string, []>("cast_59")];
343
+ tensor<fp16, [32, 96, 128]> var_530_cast_fp16 = mul(x = hidden_cast_fp16, y = var_524_to_fp16)[name = tensor<string, []>("op_530_cast_fp16")];
344
+ tensor<int32, [1]> var_535_axes_0 = const()[name = tensor<string, []>("op_535_axes_0"), val = tensor<int32, [1]>([1])];
345
+ tensor<bool, []> var_535_keep_dims_0 = const()[name = tensor<string, []>("op_535_keep_dims_0"), val = tensor<bool, []>(false)];
346
+ tensor<fp16, [32, 128]> var_535_cast_fp16 = reduce_sum(axes = var_535_axes_0, keep_dims = var_535_keep_dims_0, x = var_530_cast_fp16)[name = tensor<string, []>("op_535_cast_fp16")];
347
+ tensor<int32, [1]> var_540_axes_0 = const()[name = tensor<string, []>("op_540_axes_0"), val = tensor<int32, [1]>([1])];
348
+ tensor<bool, []> var_540_keep_dims_0 = const()[name = tensor<string, []>("op_540_keep_dims_0"), val = tensor<bool, []>(false)];
349
+ tensor<fp16, [32, 1]> var_540_cast_fp16 = reduce_sum(axes = var_540_axes_0, keep_dims = var_540_keep_dims_0, x = var_524_to_fp16)[name = tensor<string, []>("op_540_cast_fp16")];
350
+ tensor<fp16, []> var_541_to_fp16 = const()[name = tensor<string, []>("op_541_to_fp16"), val = tensor<fp16, []>(0x1p+0)];
351
+ tensor<fp16, [32, 1]> var_542_cast_fp16 = maximum(x = var_540_cast_fp16, y = var_541_to_fp16)[name = tensor<string, []>("op_542_cast_fp16")];
352
+ tensor<fp16, [32, 128]> pooled_cast_fp16 = real_div(x = var_535_cast_fp16, y = var_542_cast_fp16)[name = tensor<string, []>("pooled_cast_fp16")];
353
+ tensor<int32, [3]> var_545 = const()[name = tensor<string, []>("op_545"), val = tensor<int32, [3]>([1, 32, -1])];
354
+ tensor<fp16, [1, 32, 128]> options_cast_fp16 = reshape(shape = var_545, x = pooled_cast_fp16)[name = tensor<string, []>("options_cast_fp16")];
355
+ tensor<int32, []> var_548 = const()[name = tensor<string, []>("op_548"), val = tensor<int32, []>(-1)];
356
+ tensor<int32, [1]> input_axes_0 = const()[name = tensor<string, []>("input_axes_0"), val = tensor<int32, [1]>([-1])];
357
+ tensor<fp16, [128]> model_head_context_norm_weight_to_fp16 = const()[name = tensor<string, []>("model_head_context_norm_weight_to_fp16"), val = tensor<fp16, [128]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(1346624)))];
358
+ tensor<fp16, [128]> model_head_context_norm_bias_to_fp16 = const()[name = tensor<string, []>("model_head_context_norm_bias_to_fp16"), val = tensor<fp16, [128]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(1346944)))];
359
+ tensor<fp16, []> var_556_to_fp16 = const()[name = tensor<string, []>("op_556_to_fp16"), val = tensor<fp16, []>(0x1.5p-17)];
360
+ tensor<fp16, [1, 224, 128]> input_cast_fp16 = layer_norm(axes = input_axes_0, beta = model_head_context_norm_bias_to_fp16, epsilon = var_556_to_fp16, gamma = model_head_context_norm_weight_to_fp16, x = context_cast_fp16)[name = tensor<string, []>("input_cast_fp16")];
361
+ tensor<int32, [1]> input_53_axes_0 = const()[name = tensor<string, []>("input_53_axes_0"), val = tensor<int32, [1]>([-1])];
362
+ tensor<fp16, [128]> model_head_option_norm_weight_to_fp16 = const()[name = tensor<string, []>("model_head_option_norm_weight_to_fp16"), val = tensor<fp16, [128]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(1347264)))];
363
+ tensor<fp16, [128]> model_head_option_norm_bias_to_fp16 = const()[name = tensor<string, []>("model_head_option_norm_bias_to_fp16"), val = tensor<fp16, [128]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(1347584)))];
364
+ tensor<fp16, [1, 32, 128]> input_53_cast_fp16 = layer_norm(axes = input_53_axes_0, beta = model_head_option_norm_bias_to_fp16, epsilon = var_556_to_fp16, gamma = model_head_option_norm_weight_to_fp16, x = options_cast_fp16)[name = tensor<string, []>("input_53_cast_fp16")];
365
+ tensor<fp16, [128, 128]> model_head_query_weight_to_fp16 = const()[name = tensor<string, []>("model_head_query_weight_to_fp16"), val = tensor<fp16, [128, 128]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(1347904)))];
366
+ tensor<fp16, [128]> linear_12_bias_0_to_fp16 = const()[name = tensor<string, []>("linear_12_bias_0_to_fp16"), val = tensor<fp16, [128]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(1380736)))];
367
+ tensor<fp16, [1, 32, 128]> linear_12_cast_fp16 = linear(bias = linear_12_bias_0_to_fp16, weight = model_head_query_weight_to_fp16, x = input_53_cast_fp16)[name = tensor<string, []>("linear_12_cast_fp16")];
368
+ tensor<fp16, [128, 128]> model_head_key_weight_to_fp16 = const()[name = tensor<string, []>("model_head_key_weight_to_fp16"), val = tensor<fp16, [128, 128]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(1381056)))];
369
+ tensor<fp16, [1, 224, 128]> linear_13_cast_fp16 = linear(bias = linear_12_bias_0_to_fp16, weight = model_head_key_weight_to_fp16, x = input_cast_fp16)[name = tensor<string, []>("linear_13_cast_fp16")];
370
+ tensor<fp16, [128, 128]> model_head_value_weight_to_fp16 = const()[name = tensor<string, []>("model_head_value_weight_to_fp16"), val = tensor<fp16, [128, 128]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(1413888)))];
371
+ tensor<fp16, [1, 224, 128]> linear_14_cast_fp16 = linear(bias = linear_12_bias_0_to_fp16, weight = model_head_value_weight_to_fp16, x = input_cast_fp16)[name = tensor<string, []>("linear_14_cast_fp16")];
372
+ tensor<bool, []> matmul_3_transpose_x_1 = const()[name = tensor<string, []>("matmul_3_transpose_x_1"), val = tensor<bool, []>(false)];
373
+ tensor<bool, []> matmul_3_transpose_y_1 = const()[name = tensor<string, []>("matmul_3_transpose_y_1"), val = tensor<bool, []>(true)];
374
+ tensor<fp16, [1, 32, 224]> matmul_3_cast_fp16 = matmul(transpose_x = matmul_3_transpose_x_1, transpose_y = matmul_3_transpose_y_1, x = linear_12_cast_fp16, y = linear_13_cast_fp16)[name = tensor<string, []>("matmul_3_cast_fp16")];
375
+ tensor<fp16, []> _inversed_scores_1_y_0_to_fp16 = const()[name = tensor<string, []>("_inversed_scores_1_y_0_to_fp16"), val = tensor<fp16, []>(0x1.6ap-4)];
376
+ tensor<fp16, [1, 32, 224]> _inversed_scores_1_cast_fp16 = mul(x = matmul_3_cast_fp16, y = _inversed_scores_1_y_0_to_fp16)[name = tensor<string, []>("_inversed_scores_1_cast_fp16")];
377
+ tensor<int32, [1]> var_587_axes_0 = const()[name = tensor<string, []>("op_587_axes_0"), val = tensor<int32, [1]>([1])];
378
+ tensor<bool, [1, 1, 224]> var_587 = expand_dims(axes = var_587_axes_0, x = context_mask_cast_fp16)[name = tensor<string, []>("op_587")];
379
+ tensor<bool, [1, 1, 224]> var_589 = logical_not(x = var_587)[name = tensor<string, []>("op_589")];
380
+ tensor<fp16, []> var_549_to_fp16 = const()[name = tensor<string, []>("op_549_to_fp16"), val = tensor<fp16, []>(-inf)];
381
+ tensor<fp16, [1, 32, 224]> scores_cast_fp16 = select(a = var_549_to_fp16, b = _inversed_scores_1_cast_fp16, cond = var_589)[name = tensor<string, []>("scores_cast_fp16")];
382
+ tensor<fp16, [1, 32, 224]> var_591_cast_fp16 = softmax(axis = var_548, x = scores_cast_fp16)[name = tensor<string, []>("op_591_cast_fp16")];
383
+ tensor<bool, []> matmul_4_transpose_x_0 = const()[name = tensor<string, []>("matmul_4_transpose_x_0"), val = tensor<bool, []>(false)];
384
+ tensor<bool, []> matmul_4_transpose_y_0 = const()[name = tensor<string, []>("matmul_4_transpose_y_0"), val = tensor<bool, []>(false)];
385
+ tensor<fp16, [1, 32, 128]> matmul_4_cast_fp16 = matmul(transpose_x = matmul_4_transpose_x_0, transpose_y = matmul_4_transpose_y_0, x = var_591_cast_fp16, y = linear_14_cast_fp16)[name = tensor<string, []>("matmul_4_cast_fp16")];
386
+ tensor<fp16, [1, 32, 128]> var_594_cast_fp16 = mul(x = linear_12_cast_fp16, y = matmul_4_cast_fp16)[name = tensor<string, []>("op_594_cast_fp16")];
387
+ tensor<int32, [1]> var_596_axes_0 = const()[name = tensor<string, []>("op_596_axes_0"), val = tensor<int32, [1]>([-1])];
388
+ tensor<bool, []> var_596_keep_dims_0 = const()[name = tensor<string, []>("op_596_keep_dims_0"), val = tensor<bool, []>(false)];
389
+ tensor<fp16, [1, 32]> var_596_cast_fp16 = reduce_sum(axes = var_596_axes_0, keep_dims = var_596_keep_dims_0, x = var_594_cast_fp16)[name = tensor<string, []>("op_596_cast_fp16")];
390
+ tensor<fp16, []> _inversed_logits_1_y_0_to_fp16 = const()[name = tensor<string, []>("_inversed_logits_1_y_0_to_fp16"), val = tensor<fp16, []>(0x1.6ap-4)];
391
+ tensor<fp16, [1, 32]> _inversed_logits_1_cast_fp16 = mul(x = var_596_cast_fp16, y = _inversed_logits_1_y_0_to_fp16)[name = tensor<string, []>("_inversed_logits_1_cast_fp16")];
392
+ tensor<bool, [1, 32]> var_599 = logical_not(x = option_mask_cast_fp16)[name = tensor<string, []>("op_599")];
393
+ tensor<fp16, [1, 32]> logits_3_cast_fp16 = select(a = var_549_to_fp16, b = _inversed_logits_1_cast_fp16, cond = var_599)[name = tensor<string, []>("logits_3_cast_fp16")];
394
+ tensor<fp16, []> var_607_value_0_to_fp16 = const()[name = tensor<string, []>("op_607_value_0_to_fp16"), val = tensor<fp16, []>(-0x1.388p+13)];
395
+ tensor<fp16, [1, 32]> var_607_cast_fp16 = fill_like(ref_tensor = logits_3_cast_fp16, value = var_607_value_0_to_fp16)[name = tensor<string, []>("op_607_cast_fp16")];
396
+ tensor<fp16, [1, 32]> logits_cast_fp16 = select(a = logits_3_cast_fp16, b = var_607_cast_fp16, cond = option_mask_cast_fp16)[name = tensor<string, []>("logits_cast_fp16")];
397
+ tensor<string, []> logits_cast_fp16_to_fp32_dtype_0 = const()[name = tensor<string, []>("logits_cast_fp16_to_fp32_dtype_0"), val = tensor<string, []>("fp32")];
398
+ tensor<int32, []> var_609 = const()[name = tensor<string, []>("op_609"), val = tensor<int32, []>(-1)];
399
+ tensor<fp16, [1, 32]> var_611_cast_fp16 = softmax(axis = var_609, x = logits_cast_fp16)[name = tensor<string, []>("op_611_cast_fp16")];
400
+ tensor<string, []> var_611_cast_fp16_to_fp32_dtype_0 = const()[name = tensor<string, []>("op_611_cast_fp16_to_fp32_dtype_0"), val = tensor<string, []>("fp32")];
401
+ tensor<fp32, [1, 32]> probabilities = cast(dtype = var_611_cast_fp16_to_fp32_dtype_0, x = var_611_cast_fp16)[name = tensor<string, []>("cast_57")];
402
+ tensor<fp32, [1, 32]> logits = cast(dtype = logits_cast_fp16_to_fp32_dtype_0, x = logits_cast_fp16)[name = tensor<string, []>("cast_58")];
403
+ } -> (logits, probabilities);
404
+ }
ane-gather/cua_s1_forms_fp16_options32.mlmodelc/weights/weight.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:4da9259f798e44f5a1b50769ee1916fd3747c4d723dd9997b516c7fe238c7895
3
+ size 1446720
ane-gather/cua_s1_forms_fp16_options32.mlpackage/Data/com.apple.CoreML/model.mlmodel ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:de18e313c3b625e35d008ed8b6b24108edc6df7bf2fae9533af03519eca11b63
3
+ size 62154
ane-gather/cua_s1_forms_fp16_options32.mlpackage/Data/com.apple.CoreML/weights/weight.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:4da9259f798e44f5a1b50769ee1916fd3747c4d723dd9997b516c7fe238c7895
3
+ size 1446720
ane-gather/cua_s1_forms_fp16_options32.mlpackage/Manifest.json ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "fileFormatVersion": "1.0.0",
3
+ "itemInfoEntries": {
4
+ "1CB24175-461C-4E33-BE2C-F580A319AEC8": {
5
+ "author": "com.apple.CoreML",
6
+ "description": "CoreML Model Weights",
7
+ "name": "weights",
8
+ "path": "com.apple.CoreML/weights"
9
+ },
10
+ "869A4EBA-1FCF-41FC-8DD9-70ECEF96023D": {
11
+ "author": "com.apple.CoreML",
12
+ "description": "CoreML Model Specification",
13
+ "name": "model.mlmodel",
14
+ "path": "com.apple.CoreML/model.mlmodel"
15
+ }
16
+ },
17
+ "rootModelIdentifier": "869A4EBA-1FCF-41FC-8DD9-70ECEF96023D"
18
+ }
checksums.json CHANGED
@@ -1,8 +1,16 @@
1
  {
2
  "LICENSE": "c0779290c1d4783169aa3dbfb55feb505e563ef8a004bbf55298ceffcfbda8d9",
3
  "NOTICES.md": "027c72741eaa695e60d7b6cebd3666372c81d443a96b673b72a897cf432ddfd0",
4
- "README.md": "577e94c34abc15806c34daccf78245f0c3a58226cbead66c4458c9c9d50128da",
5
  "UPSTREAM-THIRD-PARTY-NOTICES.md": "4091e69b45c8cc97e30a066fbbd56148dbef66ab716432c048d2333c9c464213",
 
 
 
 
 
 
 
 
6
  "assets.lock.json": "8e65ad70af6bb814b571cdcfe828ba4bc339147da2d2211cbeac416163ef18ba",
7
  "conversion.json": "ac94239751ceb7e19602eb7276940ff53446b1776d4900405af9be0382fe4a94",
8
  "cua_s1_forms_fp16_options32.mlmodelc/analytics/coremldata.bin": "a7a11d7772fb6879778e6223d0f3b16a6b2a44df20a7991bf9bcc24042d05542",
@@ -13,8 +21,13 @@
13
  "cua_s1_forms_fp16_options32.mlpackage/Data/com.apple.CoreML/weights/weight.bin": "4da9259f798e44f5a1b50769ee1916fd3747c4d723dd9997b516c7fe238c7895",
14
  "cua_s1_forms_fp16_options32.mlpackage/Manifest.json": "2bc0f5f62337b27fb6b0ecde248f1e3dc269e1ba4b65516aaeede2a60e293dcc",
15
  "preprocessing.py": "18c74ede43f95f91cd638c7e9631923a353e3a24d3b522ddb8b18b480f9c2846",
 
16
  "reports/ane-fallback.json": "2f52b0e11f7cfbea6a6be6942de8816d8fed0630ac384a28551d405648fcb4e0",
 
 
 
17
  "reports/ane-profile.json": "8f654717397a294acc793861676a1480c160bb3f7ab5be6ff67ebb6a4473b832",
 
18
  "reports/upstream-metrics.json": "7d6207e430504dc0baec96d8180cb03f8aadc5a6e016b53c4cf03a80baf169ab",
19
  "reports/verification.json": "9a5d22ec4b447f0710c12e03c69d7ed802158bb94e9a3c6b059731730ced9f30"
20
  }
 
1
  {
2
  "LICENSE": "c0779290c1d4783169aa3dbfb55feb505e563ef8a004bbf55298ceffcfbda8d9",
3
  "NOTICES.md": "027c72741eaa695e60d7b6cebd3666372c81d443a96b673b72a897cf432ddfd0",
4
+ "README.md": "004f8d5da9077491323b0fac968e5c452561ff2eea160fd802ef50b288e45934",
5
  "UPSTREAM-THIRD-PARTY-NOTICES.md": "4091e69b45c8cc97e30a066fbbd56148dbef66ab716432c048d2333c9c464213",
6
+ "ane-gather/conversion.json": "4d569a4020f1e9711da3f7fff0d11acef1812c4652414cf64728c77bc2bae4c4",
7
+ "ane-gather/cua_s1_forms_fp16_options32.mlmodelc/analytics/coremldata.bin": "526dccb87bdc036df1e8add0b50dd6540db534808fc2f8caa97cd897b4fc1fa3",
8
+ "ane-gather/cua_s1_forms_fp16_options32.mlmodelc/coremldata.bin": "0f2a8ed9fe8abcc39c7ee0575e2562d589d459683b92708fa9788b533be3038b",
9
+ "ane-gather/cua_s1_forms_fp16_options32.mlmodelc/model.mil": "578b5ef1e50c98d0577459a3a4c020f4fd83d7e465213d1263ddf1a021fef077",
10
+ "ane-gather/cua_s1_forms_fp16_options32.mlmodelc/weights/weight.bin": "4da9259f798e44f5a1b50769ee1916fd3747c4d723dd9997b516c7fe238c7895",
11
+ "ane-gather/cua_s1_forms_fp16_options32.mlpackage/Data/com.apple.CoreML/model.mlmodel": "de18e313c3b625e35d008ed8b6b24108edc6df7bf2fae9533af03519eca11b63",
12
+ "ane-gather/cua_s1_forms_fp16_options32.mlpackage/Data/com.apple.CoreML/weights/weight.bin": "4da9259f798e44f5a1b50769ee1916fd3747c4d723dd9997b516c7fe238c7895",
13
+ "ane-gather/cua_s1_forms_fp16_options32.mlpackage/Manifest.json": "38f812a04eb2322080634ba788c61df362336168466ca67e5549058d346ac793",
14
  "assets.lock.json": "8e65ad70af6bb814b571cdcfe828ba4bc339147da2d2211cbeac416163ef18ba",
15
  "conversion.json": "ac94239751ceb7e19602eb7276940ff53446b1776d4900405af9be0382fe4a94",
16
  "cua_s1_forms_fp16_options32.mlmodelc/analytics/coremldata.bin": "a7a11d7772fb6879778e6223d0f3b16a6b2a44df20a7991bf9bcc24042d05542",
 
21
  "cua_s1_forms_fp16_options32.mlpackage/Data/com.apple.CoreML/weights/weight.bin": "4da9259f798e44f5a1b50769ee1916fd3747c4d723dd9997b516c7fe238c7895",
22
  "cua_s1_forms_fp16_options32.mlpackage/Manifest.json": "2bc0f5f62337b27fb6b0ecde248f1e3dc269e1ba4b65516aaeede2a60e293dcc",
23
  "preprocessing.py": "18c74ede43f95f91cd638c7e9631923a353e3a24d3b522ddb8b18b480f9c2846",
24
+ "reports/ane-comparison.json": "14b29f87704c6e8bd5f9bd866ea825be3972fcea6cf3c4760e38dc8774f937b6",
25
  "reports/ane-fallback.json": "2f52b0e11f7cfbea6a6be6942de8816d8fed0630ac384a28551d405648fcb4e0",
26
+ "reports/ane-gather-fallback.json": "1e9bf8a336ae6d63ff2f07e32fed21b5e5ee4491a8a217b15deb3e1e3ac32988",
27
+ "reports/ane-gather-profile.json": "023c16760ca124176e399f1c692741f5220bc4cc391cd59bffffa291e2c332a6",
28
+ "reports/ane-gather-verification.json": "fa51fe0537dcd9cc8d1d75fc0be4747d887aa2e3af199ec08edd8f9400ce3318",
29
  "reports/ane-profile.json": "8f654717397a294acc793861676a1480c160bb3f7ab5be6ff67ebb6a4473b832",
30
+ "reports/swift-ane-validation.json": "ed323e6d6619fb7698d3546599d6450b745bc8cc6100c02e13f7ad4d59859a3a",
31
  "reports/upstream-metrics.json": "7d6207e430504dc0baec96d8180cb03f8aadc5a6e016b53c4cf03a80baf169ab",
32
  "reports/verification.json": "9a5d22ec4b447f0710c12e03c69d7ed802158bb94e9a3c6b059731730ced9f30"
33
  }
reports/ane-comparison.json ADDED
@@ -0,0 +1,784 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "created_utc": "2026-09-19T20:07:16.396741+00:00",
3
+ "purpose": "Matched warm model-call comparison, not a power or utilization measurement",
4
+ "environment": {
5
+ "chip": "Apple M5 Pro",
6
+ "macos": "27.0",
7
+ "os_build": "26A428",
8
+ "python": "3.11.11",
9
+ "coremltools": "9.0"
10
+ },
11
+ "protocol": {
12
+ "compute_units": "CPU_AND_NE",
13
+ "rows": [
14
+ 0,
15
+ 68,
16
+ 130
17
+ ],
18
+ "schedule": [
19
+ "baseline",
20
+ "candidate",
21
+ "candidate",
22
+ "baseline"
23
+ ],
24
+ "warmup_passes_per_block": 2,
25
+ "timed_passes_per_block": 10,
26
+ "timing_scope": "Synchronous Python predict with pre-encoded inputs; validation outside timer",
27
+ "model_loading": "Both models resident in one process; loads excluded and system caches retained"
28
+ },
29
+ "dataset_revision": "8273f34778b99ac2e12d9f6e7d57dad99ae20845",
30
+ "dataset_sha256": "4f43b442e79ba2e2ce731e27e9b8e340c2b5dfcaffc92d8ff564c34f115ff1ca",
31
+ "package_files": {
32
+ "baseline": {
33
+ "Data/com.apple.CoreML/model.mlmodel": "70485fc18cbb21785df833cbddddc0b5b59acb00d22394b76e55307e2c135dd0",
34
+ "Data/com.apple.CoreML/weights/weight.bin": "4da9259f798e44f5a1b50769ee1916fd3747c4d723dd9997b516c7fe238c7895",
35
+ "Manifest.json": "2bc0f5f62337b27fb6b0ecde248f1e3dc269e1ba4b65516aaeede2a60e293dcc"
36
+ },
37
+ "candidate": {
38
+ "Data/com.apple.CoreML/model.mlmodel": "de18e313c3b625e35d008ed8b6b24108edc6df7bf2fae9533af03519eca11b63",
39
+ "Data/com.apple.CoreML/weights/weight.bin": "4da9259f798e44f5a1b50769ee1916fd3747c4d723dd9997b516c7fe238c7895",
40
+ "Manifest.json": "38f812a04eb2322080634ba788c61df362336168466ca67e5549058d346ac793"
41
+ }
42
+ },
43
+ "summary": {
44
+ "baseline": {
45
+ "count": 60,
46
+ "median_ms": 0.9150624828180298,
47
+ "p95_ms": 0.9682062489446251,
48
+ "min_ms": 0.88170898379758,
49
+ "max_ms": 1.0281660070177168
50
+ },
51
+ "candidate": {
52
+ "count": 60,
53
+ "median_ms": 0.9703329997137189,
54
+ "p95_ms": 0.9877315780613571,
55
+ "min_ms": 0.9434169915039092,
56
+ "max_ms": 1.0195420181844383
57
+ }
58
+ },
59
+ "candidate_over_baseline_median": 1.0604008118937165,
60
+ "correct_timed_predictions": 120,
61
+ "calls": [
62
+ {
63
+ "model": "baseline",
64
+ "block": 0,
65
+ "row": 0,
66
+ "milliseconds": 0.919707992579788
67
+ },
68
+ {
69
+ "model": "baseline",
70
+ "block": 0,
71
+ "row": 68,
72
+ "milliseconds": 0.9307919826824218
73
+ },
74
+ {
75
+ "model": "baseline",
76
+ "block": 0,
77
+ "row": 130,
78
+ "milliseconds": 0.9576249867677689
79
+ },
80
+ {
81
+ "model": "baseline",
82
+ "block": 0,
83
+ "row": 0,
84
+ "milliseconds": 0.9234579920303077
85
+ },
86
+ {
87
+ "model": "baseline",
88
+ "block": 0,
89
+ "row": 68,
90
+ "milliseconds": 0.9247499983757734
91
+ },
92
+ {
93
+ "model": "baseline",
94
+ "block": 0,
95
+ "row": 130,
96
+ "milliseconds": 0.9314999915659428
97
+ },
98
+ {
99
+ "model": "baseline",
100
+ "block": 0,
101
+ "row": 0,
102
+ "milliseconds": 0.9133330022450536
103
+ },
104
+ {
105
+ "model": "baseline",
106
+ "block": 0,
107
+ "row": 68,
108
+ "milliseconds": 0.9190000128000975
109
+ },
110
+ {
111
+ "model": "baseline",
112
+ "block": 0,
113
+ "row": 130,
114
+ "milliseconds": 0.9215839963871986
115
+ },
116
+ {
117
+ "model": "baseline",
118
+ "block": 0,
119
+ "row": 0,
120
+ "milliseconds": 0.9041670127771795
121
+ },
122
+ {
123
+ "model": "baseline",
124
+ "block": 0,
125
+ "row": 68,
126
+ "milliseconds": 0.9001670114230365
127
+ },
128
+ {
129
+ "model": "baseline",
130
+ "block": 0,
131
+ "row": 130,
132
+ "milliseconds": 0.9362080018036067
133
+ },
134
+ {
135
+ "model": "baseline",
136
+ "block": 0,
137
+ "row": 0,
138
+ "milliseconds": 1.0092500015161932
139
+ },
140
+ {
141
+ "model": "baseline",
142
+ "block": 0,
143
+ "row": 68,
144
+ "milliseconds": 0.9958750160876662
145
+ },
146
+ {
147
+ "model": "baseline",
148
+ "block": 0,
149
+ "row": 130,
150
+ "milliseconds": 1.0281660070177168
151
+ },
152
+ {
153
+ "model": "baseline",
154
+ "block": 0,
155
+ "row": 0,
156
+ "milliseconds": 0.96674999804236
157
+ },
158
+ {
159
+ "model": "baseline",
160
+ "block": 0,
161
+ "row": 68,
162
+ "milliseconds": 0.9511670214124024
163
+ },
164
+ {
165
+ "model": "baseline",
166
+ "block": 0,
167
+ "row": 130,
168
+ "milliseconds": 0.9152919810730964
169
+ },
170
+ {
171
+ "model": "baseline",
172
+ "block": 0,
173
+ "row": 0,
174
+ "milliseconds": 0.9129999962169677
175
+ },
176
+ {
177
+ "model": "baseline",
178
+ "block": 0,
179
+ "row": 68,
180
+ "milliseconds": 0.9089170198421925
181
+ },
182
+ {
183
+ "model": "baseline",
184
+ "block": 0,
185
+ "row": 130,
186
+ "milliseconds": 0.9163749928120524
187
+ },
188
+ {
189
+ "model": "baseline",
190
+ "block": 0,
191
+ "row": 0,
192
+ "milliseconds": 0.9026250045280904
193
+ },
194
+ {
195
+ "model": "baseline",
196
+ "block": 0,
197
+ "row": 68,
198
+ "milliseconds": 0.9094580018427223
199
+ },
200
+ {
201
+ "model": "baseline",
202
+ "block": 0,
203
+ "row": 130,
204
+ "milliseconds": 0.9331250039394945
205
+ },
206
+ {
207
+ "model": "baseline",
208
+ "block": 0,
209
+ "row": 0,
210
+ "milliseconds": 0.9327089937869459
211
+ },
212
+ {
213
+ "model": "baseline",
214
+ "block": 0,
215
+ "row": 68,
216
+ "milliseconds": 0.9123749914579093
217
+ },
218
+ {
219
+ "model": "baseline",
220
+ "block": 0,
221
+ "row": 130,
222
+ "milliseconds": 0.9423340088687837
223
+ },
224
+ {
225
+ "model": "baseline",
226
+ "block": 0,
227
+ "row": 0,
228
+ "milliseconds": 0.9080420131795108
229
+ },
230
+ {
231
+ "model": "baseline",
232
+ "block": 0,
233
+ "row": 68,
234
+ "milliseconds": 0.9152499842457473
235
+ },
236
+ {
237
+ "model": "baseline",
238
+ "block": 0,
239
+ "row": 130,
240
+ "milliseconds": 0.9090829989872873
241
+ },
242
+ {
243
+ "model": "candidate",
244
+ "block": 1,
245
+ "row": 0,
246
+ "milliseconds": 0.9569999820087105
247
+ },
248
+ {
249
+ "model": "candidate",
250
+ "block": 1,
251
+ "row": 68,
252
+ "milliseconds": 0.9605420054867864
253
+ },
254
+ {
255
+ "model": "candidate",
256
+ "block": 1,
257
+ "row": 130,
258
+ "milliseconds": 0.971125002251938
259
+ },
260
+ {
261
+ "model": "candidate",
262
+ "block": 1,
263
+ "row": 0,
264
+ "milliseconds": 0.9833329822868109
265
+ },
266
+ {
267
+ "model": "candidate",
268
+ "block": 1,
269
+ "row": 68,
270
+ "milliseconds": 0.9731249883770943
271
+ },
272
+ {
273
+ "model": "candidate",
274
+ "block": 1,
275
+ "row": 130,
276
+ "milliseconds": 0.9744580020196736
277
+ },
278
+ {
279
+ "model": "candidate",
280
+ "block": 1,
281
+ "row": 0,
282
+ "milliseconds": 0.9531670075375587
283
+ },
284
+ {
285
+ "model": "candidate",
286
+ "block": 1,
287
+ "row": 68,
288
+ "milliseconds": 0.960625009611249
289
+ },
290
+ {
291
+ "model": "candidate",
292
+ "block": 1,
293
+ "row": 130,
294
+ "milliseconds": 0.9434169915039092
295
+ },
296
+ {
297
+ "model": "candidate",
298
+ "block": 1,
299
+ "row": 0,
300
+ "milliseconds": 0.965375016676262
301
+ },
302
+ {
303
+ "model": "candidate",
304
+ "block": 1,
305
+ "row": 68,
306
+ "milliseconds": 0.9999169851653278
307
+ },
308
+ {
309
+ "model": "candidate",
310
+ "block": 1,
311
+ "row": 130,
312
+ "milliseconds": 0.9775409998837858
313
+ },
314
+ {
315
+ "model": "candidate",
316
+ "block": 1,
317
+ "row": 0,
318
+ "milliseconds": 0.983749981969595
319
+ },
320
+ {
321
+ "model": "candidate",
322
+ "block": 1,
323
+ "row": 68,
324
+ "milliseconds": 0.9759170061443001
325
+ },
326
+ {
327
+ "model": "candidate",
328
+ "block": 1,
329
+ "row": 130,
330
+ "milliseconds": 0.979083008132875
331
+ },
332
+ {
333
+ "model": "candidate",
334
+ "block": 1,
335
+ "row": 0,
336
+ "milliseconds": 0.9849590132944286
337
+ },
338
+ {
339
+ "model": "candidate",
340
+ "block": 1,
341
+ "row": 68,
342
+ "milliseconds": 0.9607080137357116
343
+ },
344
+ {
345
+ "model": "candidate",
346
+ "block": 1,
347
+ "row": 130,
348
+ "milliseconds": 0.9490000084042549
349
+ },
350
+ {
351
+ "model": "candidate",
352
+ "block": 1,
353
+ "row": 0,
354
+ "milliseconds": 0.9506659989710897
355
+ },
356
+ {
357
+ "model": "candidate",
358
+ "block": 1,
359
+ "row": 68,
360
+ "milliseconds": 0.9708750003483146
361
+ },
362
+ {
363
+ "model": "candidate",
364
+ "block": 1,
365
+ "row": 130,
366
+ "milliseconds": 0.9733340120874345
367
+ },
368
+ {
369
+ "model": "candidate",
370
+ "block": 1,
371
+ "row": 0,
372
+ "milliseconds": 0.9872919763438404
373
+ },
374
+ {
375
+ "model": "candidate",
376
+ "block": 1,
377
+ "row": 68,
378
+ "milliseconds": 0.970749999396503
379
+ },
380
+ {
381
+ "model": "candidate",
382
+ "block": 1,
383
+ "row": 130,
384
+ "milliseconds": 0.9687079873401672
385
+ },
386
+ {
387
+ "model": "candidate",
388
+ "block": 1,
389
+ "row": 0,
390
+ "milliseconds": 0.977249990683049
391
+ },
392
+ {
393
+ "model": "candidate",
394
+ "block": 1,
395
+ "row": 68,
396
+ "milliseconds": 0.9785419970285147
397
+ },
398
+ {
399
+ "model": "candidate",
400
+ "block": 1,
401
+ "row": 130,
402
+ "milliseconds": 0.9744160051923245
403
+ },
404
+ {
405
+ "model": "candidate",
406
+ "block": 1,
407
+ "row": 0,
408
+ "milliseconds": 0.9864169987849891
409
+ },
410
+ {
411
+ "model": "candidate",
412
+ "block": 1,
413
+ "row": 68,
414
+ "milliseconds": 0.982333003776148
415
+ },
416
+ {
417
+ "model": "candidate",
418
+ "block": 1,
419
+ "row": 130,
420
+ "milliseconds": 0.9689999860711396
421
+ },
422
+ {
423
+ "model": "candidate",
424
+ "block": 2,
425
+ "row": 0,
426
+ "milliseconds": 0.9796250087674707
427
+ },
428
+ {
429
+ "model": "candidate",
430
+ "block": 2,
431
+ "row": 68,
432
+ "milliseconds": 0.9837090037763119
433
+ },
434
+ {
435
+ "model": "candidate",
436
+ "block": 2,
437
+ "row": 130,
438
+ "milliseconds": 0.9523750049993396
439
+ },
440
+ {
441
+ "model": "candidate",
442
+ "block": 2,
443
+ "row": 0,
444
+ "milliseconds": 0.9744999988470227
445
+ },
446
+ {
447
+ "model": "candidate",
448
+ "block": 2,
449
+ "row": 68,
450
+ "milliseconds": 0.9580420155543834
451
+ },
452
+ {
453
+ "model": "candidate",
454
+ "block": 2,
455
+ "row": 130,
456
+ "milliseconds": 0.9489580115769058
457
+ },
458
+ {
459
+ "model": "candidate",
460
+ "block": 2,
461
+ "row": 0,
462
+ "milliseconds": 0.9510410018265247
463
+ },
464
+ {
465
+ "model": "candidate",
466
+ "block": 2,
467
+ "row": 68,
468
+ "milliseconds": 0.9449580102227628
469
+ },
470
+ {
471
+ "model": "candidate",
472
+ "block": 2,
473
+ "row": 130,
474
+ "milliseconds": 0.9497080172877759
475
+ },
476
+ {
477
+ "model": "candidate",
478
+ "block": 2,
479
+ "row": 0,
480
+ "milliseconds": 0.9529579838272184
481
+ },
482
+ {
483
+ "model": "candidate",
484
+ "block": 2,
485
+ "row": 68,
486
+ "milliseconds": 0.9495420090388507
487
+ },
488
+ {
489
+ "model": "candidate",
490
+ "block": 2,
491
+ "row": 130,
492
+ "milliseconds": 0.9463340102229267
493
+ },
494
+ {
495
+ "model": "candidate",
496
+ "block": 2,
497
+ "row": 0,
498
+ "milliseconds": 0.9437499975319952
499
+ },
500
+ {
501
+ "model": "candidate",
502
+ "block": 2,
503
+ "row": 68,
504
+ "milliseconds": 0.9775829967111349
505
+ },
506
+ {
507
+ "model": "candidate",
508
+ "block": 2,
509
+ "row": 130,
510
+ "milliseconds": 0.9694590116851032
511
+ },
512
+ {
513
+ "model": "candidate",
514
+ "block": 2,
515
+ "row": 0,
516
+ "milliseconds": 0.996084010694176
517
+ },
518
+ {
519
+ "model": "candidate",
520
+ "block": 2,
521
+ "row": 68,
522
+ "milliseconds": 1.0195420181844383
523
+ },
524
+ {
525
+ "model": "candidate",
526
+ "block": 2,
527
+ "row": 130,
528
+ "milliseconds": 0.9871670044958591
529
+ },
530
+ {
531
+ "model": "candidate",
532
+ "block": 2,
533
+ "row": 0,
534
+ "milliseconds": 0.9699160000309348
535
+ },
536
+ {
537
+ "model": "candidate",
538
+ "block": 2,
539
+ "row": 68,
540
+ "milliseconds": 0.9592499991413206
541
+ },
542
+ {
543
+ "model": "candidate",
544
+ "block": 2,
545
+ "row": 130,
546
+ "milliseconds": 0.9731660247780383
547
+ },
548
+ {
549
+ "model": "candidate",
550
+ "block": 2,
551
+ "row": 0,
552
+ "milliseconds": 0.9729999874252826
553
+ },
554
+ {
555
+ "model": "candidate",
556
+ "block": 2,
557
+ "row": 68,
558
+ "milliseconds": 0.9556250006426126
559
+ },
560
+ {
561
+ "model": "candidate",
562
+ "block": 2,
563
+ "row": 130,
564
+ "milliseconds": 0.9530829847790301
565
+ },
566
+ {
567
+ "model": "candidate",
568
+ "block": 2,
569
+ "row": 0,
570
+ "milliseconds": 0.9495830163359642
571
+ },
572
+ {
573
+ "model": "candidate",
574
+ "block": 2,
575
+ "row": 68,
576
+ "milliseconds": 0.9697090135887265
577
+ },
578
+ {
579
+ "model": "candidate",
580
+ "block": 2,
581
+ "row": 130,
582
+ "milliseconds": 0.9829580085352063
583
+ },
584
+ {
585
+ "model": "candidate",
586
+ "block": 2,
587
+ "row": 0,
588
+ "milliseconds": 0.9604159859009087
589
+ },
590
+ {
591
+ "model": "candidate",
592
+ "block": 2,
593
+ "row": 68,
594
+ "milliseconds": 0.9743330010678619
595
+ },
596
+ {
597
+ "model": "candidate",
598
+ "block": 2,
599
+ "row": 130,
600
+ "milliseconds": 0.9570419788360596
601
+ },
602
+ {
603
+ "model": "baseline",
604
+ "block": 3,
605
+ "row": 0,
606
+ "milliseconds": 0.927665998460725
607
+ },
608
+ {
609
+ "model": "baseline",
610
+ "block": 3,
611
+ "row": 68,
612
+ "milliseconds": 0.9297500073444098
613
+ },
614
+ {
615
+ "model": "baseline",
616
+ "block": 3,
617
+ "row": 130,
618
+ "milliseconds": 0.9148749813903123
619
+ },
620
+ {
621
+ "model": "baseline",
622
+ "block": 3,
623
+ "row": 0,
624
+ "milliseconds": 0.8912909834180027
625
+ },
626
+ {
627
+ "model": "baseline",
628
+ "block": 3,
629
+ "row": 68,
630
+ "milliseconds": 0.88170898379758
631
+ },
632
+ {
633
+ "model": "baseline",
634
+ "block": 3,
635
+ "row": 130,
636
+ "milliseconds": 0.9040829900186509
637
+ },
638
+ {
639
+ "model": "baseline",
640
+ "block": 3,
641
+ "row": 0,
642
+ "milliseconds": 0.8952920034062117
643
+ },
644
+ {
645
+ "model": "baseline",
646
+ "block": 3,
647
+ "row": 68,
648
+ "milliseconds": 0.9061660093721002
649
+ },
650
+ {
651
+ "model": "baseline",
652
+ "block": 3,
653
+ "row": 130,
654
+ "milliseconds": 0.9120829927269369
655
+ },
656
+ {
657
+ "model": "baseline",
658
+ "block": 3,
659
+ "row": 0,
660
+ "milliseconds": 0.9074159897863865
661
+ },
662
+ {
663
+ "model": "baseline",
664
+ "block": 3,
665
+ "row": 68,
666
+ "milliseconds": 0.9095839923247695
667
+ },
668
+ {
669
+ "model": "baseline",
670
+ "block": 3,
671
+ "row": 130,
672
+ "milliseconds": 0.883542001247406
673
+ },
674
+ {
675
+ "model": "baseline",
676
+ "block": 3,
677
+ "row": 0,
678
+ "milliseconds": 0.8904590213205665
679
+ },
680
+ {
681
+ "model": "baseline",
682
+ "block": 3,
683
+ "row": 68,
684
+ "milliseconds": 0.8850830199662596
685
+ },
686
+ {
687
+ "model": "baseline",
688
+ "block": 3,
689
+ "row": 130,
690
+ "milliseconds": 0.8904580026865005
691
+ },
692
+ {
693
+ "model": "baseline",
694
+ "block": 3,
695
+ "row": 0,
696
+ "milliseconds": 0.9044160251505673
697
+ },
698
+ {
699
+ "model": "baseline",
700
+ "block": 3,
701
+ "row": 68,
702
+ "milliseconds": 0.9244170214515179
703
+ },
704
+ {
705
+ "model": "baseline",
706
+ "block": 3,
707
+ "row": 130,
708
+ "milliseconds": 0.9261659870389849
709
+ },
710
+ {
711
+ "model": "baseline",
712
+ "block": 3,
713
+ "row": 0,
714
+ "milliseconds": 0.9326669969595969
715
+ },
716
+ {
717
+ "model": "baseline",
718
+ "block": 3,
719
+ "row": 68,
720
+ "milliseconds": 0.9306249849032611
721
+ },
722
+ {
723
+ "model": "baseline",
724
+ "block": 3,
725
+ "row": 130,
726
+ "milliseconds": 0.8886670111678541
727
+ },
728
+ {
729
+ "model": "baseline",
730
+ "block": 3,
731
+ "row": 0,
732
+ "milliseconds": 0.8824579999782145
733
+ },
734
+ {
735
+ "model": "baseline",
736
+ "block": 3,
737
+ "row": 68,
738
+ "milliseconds": 0.8989160123746842
739
+ },
740
+ {
741
+ "model": "baseline",
742
+ "block": 3,
743
+ "row": 130,
744
+ "milliseconds": 0.8977499965112656
745
+ },
746
+ {
747
+ "model": "baseline",
748
+ "block": 3,
749
+ "row": 0,
750
+ "milliseconds": 0.8965420129243284
751
+ },
752
+ {
753
+ "model": "baseline",
754
+ "block": 3,
755
+ "row": 68,
756
+ "milliseconds": 0.9054580004885793
757
+ },
758
+ {
759
+ "model": "baseline",
760
+ "block": 3,
761
+ "row": 130,
762
+ "milliseconds": 0.93029101844877
763
+ },
764
+ {
765
+ "model": "baseline",
766
+ "block": 3,
767
+ "row": 0,
768
+ "milliseconds": 0.9197920153383166
769
+ },
770
+ {
771
+ "model": "baseline",
772
+ "block": 3,
773
+ "row": 68,
774
+ "milliseconds": 0.9319579985458404
775
+ },
776
+ {
777
+ "model": "baseline",
778
+ "block": 3,
779
+ "row": 130,
780
+ "milliseconds": 0.9407080069649965
781
+ }
782
+ ],
783
+ "script_sha256": "4633df7ad5f90d6aed37d5ef4f7a2d2231fdadd272ef1aa3057c237b2f937df8"
784
+ }
reports/ane-gather-fallback.json ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "hardware": {
3
+ "device": "arm64",
4
+ "chip": "Apple M5 Pro",
5
+ "ram": "24GB",
6
+ "os_version": "macOS 27.0",
7
+ "timestamp": "2026-09-19T20:08:52.988799+00:00"
8
+ },
9
+ "models": [
10
+ {
11
+ "model_path": "build/ane-gather/cua_s1_forms_fp16_options32.mlmodelc",
12
+ "model_name": "cua_s1_forms_fp16_options32",
13
+ "fallback": {
14
+ "compute_units": "cpu_and_neural_engine",
15
+ "total_ops": 165,
16
+ "ane_ops": 162,
17
+ "gpu_ops": 0,
18
+ "cpu_ops": 3,
19
+ "ane_percent": 98.2,
20
+ "reasons": [
21
+ {
22
+ "reason": "Unsupported tensor data type: int32",
23
+ "count": 3,
24
+ "estimated_cpu_runtime_ms": 0.003,
25
+ "op_types": {
26
+ "ios17.cast": 3
27
+ },
28
+ "ops": [
29
+ "option_mask_to_fp16",
30
+ "context_ids_to_fp16",
31
+ "option_ids_to_fp16"
32
+ ]
33
+ }
34
+ ]
35
+ }
36
+ }
37
+ ]
38
+ }
reports/ane-gather-profile.json ADDED
The diff for this file is too large to render. See raw diff
 
reports/ane-gather-verification.json ADDED
@@ -0,0 +1,3314 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "purpose": "Local conversion parity on the upstream demo; not a generalization or live GUI benchmark",
3
+ "created_utc": "2026-09-19T20:05:25.654377+00:00",
4
+ "model_revision": "f54adbf447f4ca6ec259f529ee3f2e3e09f8cc71",
5
+ "source_revision": "83f142c4290a0f7d9ed545ae8532858c6e4f8145",
6
+ "dataset_revision": "8273f34778b99ac2e12d9f6e7d57dad99ae20845",
7
+ "dataset_file": "demo.jsonl",
8
+ "dataset_sha256": "4f43b442e79ba2e2ce731e27e9b8e340c2b5dfcaffc92d8ff564c34f115ff1ca",
9
+ "conversion": {
10
+ "model": "cua_s1_forms_fp16_options32.mlpackage",
11
+ "precision": "float16",
12
+ "optimization": "ane-gather",
13
+ "minimum_target": "iOS17/macOS14",
14
+ "limits": {
15
+ "context_bytes": 224,
16
+ "option_bytes": 96,
17
+ "max_options": 32
18
+ },
19
+ "model_config": {
20
+ "context_tokens": 224,
21
+ "encoder": "tinyx",
22
+ "heads": 4,
23
+ "hf_model": "Qwen/Qwen2.5-0.5B",
24
+ "layers": 2,
25
+ "option_tokens": 96,
26
+ "rank": 128,
27
+ "width": 128
28
+ },
29
+ "parameters": 706048,
30
+ "assets_lock_sha256": "8e65ad70af6bb814b571cdcfe828ba4bc339147da2d2211cbeac416163ef18ba",
31
+ "model_revision": "f54adbf447f4ca6ec259f529ee3f2e3e09f8cc71",
32
+ "source_revision": "83f142c4290a0f7d9ed545ae8532858c6e4f8145",
33
+ "trace_row": 0,
34
+ "trace_dataset_revision": "8273f34778b99ac2e12d9f6e7d57dad99ae20845",
35
+ "export_seconds": 0.6771400420111604,
36
+ "python": "3.11.11",
37
+ "torch": "2.7.0",
38
+ "coremltools": "9.0",
39
+ "package_files": {
40
+ "Data/com.apple.CoreML/model.mlmodel": "de18e313c3b625e35d008ed8b6b24108edc6df7bf2fae9533af03519eca11b63",
41
+ "Data/com.apple.CoreML/weights/weight.bin": "4da9259f798e44f5a1b50769ee1916fd3747c4d723dd9997b516c7fe238c7895",
42
+ "Manifest.json": "38f812a04eb2322080634ba788c61df362336168466ca67e5549058d346ac793"
43
+ }
44
+ },
45
+ "environment": {
46
+ "machine": "Apple M5 Pro",
47
+ "os": "27.0",
48
+ "python": "3.11.11",
49
+ "torch": "2.7.0",
50
+ "coremltools": "9.0",
51
+ "torch_cpu_threads": 2
52
+ },
53
+ "rows": 196,
54
+ "upstream": {
55
+ "correct": 196,
56
+ "accuracy": 1.0,
57
+ "inference_latency_ms": {
58
+ "count": 196,
59
+ "median_ms": 2.46754199906718,
60
+ "p95_ms": 3.106593489064835,
61
+ "min_ms": 1.7850839940365404,
62
+ "max_ms": 3.8927909918129444
63
+ }
64
+ },
65
+ "export_adapter_fp32": {
66
+ "argmax_agreement": 196,
67
+ "max_abs_probability_error": 1.1324882507324219e-06
68
+ },
69
+ "host_preprocessing_latency_ms": {
70
+ "count": 196,
71
+ "median_ms": 0.03879200085066259,
72
+ "p95_ms": 0.050938004278577864,
73
+ "min_ms": 0.026541994884610176,
74
+ "max_ms": 0.06945800851099193
75
+ },
76
+ "thresholds": {
77
+ "argmax_agreement": 1.0,
78
+ "max_abs_probability_error": 0.005,
79
+ "export_adapter_max_abs_probability_error": 0.0001,
80
+ "allow_accuracy_loss": false
81
+ },
82
+ "backends": {
83
+ "ALL": {
84
+ "passed": true,
85
+ "correct": 196,
86
+ "accuracy": 1.0,
87
+ "argmax_agreement": 196,
88
+ "max_abs_probability_error": 0.00233614444732666,
89
+ "mean_row_max_abs_probability_error": 2.934475840582507e-05,
90
+ "max_abs_logit_error": 0.07230281829833984,
91
+ "load_seconds": 0.6175256659917068,
92
+ "warm_inference_latency_ms": {
93
+ "count": 196,
94
+ "median_ms": 0.9540419996483251,
95
+ "p95_ms": 1.0018329994636588,
96
+ "min_ms": 0.9285419946536422,
97
+ "max_ms": 1.5723749820608646
98
+ },
99
+ "reversed_option_order": {
100
+ "rows": 6,
101
+ "max_abs_probability_error": 3.1828880310058594e-05
102
+ },
103
+ "per_action": {
104
+ "fill": {
105
+ "rows": 36,
106
+ "correct": 36
107
+ },
108
+ "skip": {
109
+ "rows": 150,
110
+ "correct": 150
111
+ },
112
+ "check": {
113
+ "rows": 4,
114
+ "correct": 4
115
+ },
116
+ "click": {
117
+ "rows": 6,
118
+ "correct": 6
119
+ }
120
+ },
121
+ "decisions": [
122
+ {
123
+ "row": 0,
124
+ "label": 22,
125
+ "upstream": 22,
126
+ "coreml": 22,
127
+ "max_abs_probability_error": 3.1828880310058594e-05,
128
+ "max_abs_logit_error": 0.03086566925048828
129
+ },
130
+ {
131
+ "row": 1,
132
+ "label": 23,
133
+ "upstream": 23,
134
+ "coreml": 23,
135
+ "max_abs_probability_error": 3.814697265625e-05,
136
+ "max_abs_logit_error": 0.020841598510742188
137
+ },
138
+ {
139
+ "row": 2,
140
+ "label": 2,
141
+ "upstream": 2,
142
+ "coreml": 2,
143
+ "max_abs_probability_error": 1.1920928955078125e-07,
144
+ "max_abs_logit_error": 0.024377822875976562
145
+ },
146
+ {
147
+ "row": 3,
148
+ "label": 5,
149
+ "upstream": 5,
150
+ "coreml": 5,
151
+ "max_abs_probability_error": 3.218650817871094e-05,
152
+ "max_abs_logit_error": 0.030775785446166992
153
+ },
154
+ {
155
+ "row": 4,
156
+ "label": 4,
157
+ "upstream": 4,
158
+ "coreml": 4,
159
+ "max_abs_probability_error": 2.944469451904297e-05,
160
+ "max_abs_logit_error": 0.03573417663574219
161
+ },
162
+ {
163
+ "row": 5,
164
+ "label": 6,
165
+ "upstream": 6,
166
+ "coreml": 6,
167
+ "max_abs_probability_error": 1.2636184692382812e-05,
168
+ "max_abs_logit_error": 0.026729822158813477
169
+ },
170
+ {
171
+ "row": 6,
172
+ "label": 7,
173
+ "upstream": 7,
174
+ "coreml": 7,
175
+ "max_abs_probability_error": 2.3365020751953125e-05,
176
+ "max_abs_logit_error": 0.023685455322265625
177
+ },
178
+ {
179
+ "row": 7,
180
+ "label": 8,
181
+ "upstream": 8,
182
+ "coreml": 8,
183
+ "max_abs_probability_error": 0.00014638900756835938,
184
+ "max_abs_logit_error": 0.04038810729980469
185
+ },
186
+ {
187
+ "row": 8,
188
+ "label": 9,
189
+ "upstream": 9,
190
+ "coreml": 9,
191
+ "max_abs_probability_error": 1.1920928955078125e-06,
192
+ "max_abs_logit_error": 0.02460002899169922
193
+ },
194
+ {
195
+ "row": 9,
196
+ "label": 10,
197
+ "upstream": 10,
198
+ "coreml": 10,
199
+ "max_abs_probability_error": 2.1457672119140625e-05,
200
+ "max_abs_logit_error": 0.018064022064208984
201
+ },
202
+ {
203
+ "row": 10,
204
+ "label": 11,
205
+ "upstream": 11,
206
+ "coreml": 11,
207
+ "max_abs_probability_error": 5.960464477539062e-07,
208
+ "max_abs_logit_error": 0.047691673040390015
209
+ },
210
+ {
211
+ "row": 11,
212
+ "label": 13,
213
+ "upstream": 13,
214
+ "coreml": 13,
215
+ "max_abs_probability_error": 3.2186508178710938e-06,
216
+ "max_abs_logit_error": 0.03340768814086914
217
+ },
218
+ {
219
+ "row": 12,
220
+ "label": 15,
221
+ "upstream": 15,
222
+ "coreml": 15,
223
+ "max_abs_probability_error": 2.384185791015625e-06,
224
+ "max_abs_logit_error": 0.053191184997558594
225
+ },
226
+ {
227
+ "row": 13,
228
+ "label": 16,
229
+ "upstream": 16,
230
+ "coreml": 16,
231
+ "max_abs_probability_error": 0.0005360841751098633,
232
+ "max_abs_logit_error": 0.03362560272216797
233
+ },
234
+ {
235
+ "row": 14,
236
+ "label": 26,
237
+ "upstream": 26,
238
+ "coreml": 26,
239
+ "max_abs_probability_error": 1.8596649169921875e-05,
240
+ "max_abs_logit_error": 0.024669170379638672
241
+ },
242
+ {
243
+ "row": 15,
244
+ "label": 24,
245
+ "upstream": 24,
246
+ "coreml": 24,
247
+ "max_abs_probability_error": 1.6689300537109375e-05,
248
+ "max_abs_logit_error": 0.034501075744628906
249
+ },
250
+ {
251
+ "row": 16,
252
+ "label": 26,
253
+ "upstream": 26,
254
+ "coreml": 26,
255
+ "max_abs_probability_error": 1.440092489701783e-08,
256
+ "max_abs_logit_error": 0.033290743827819824
257
+ },
258
+ {
259
+ "row": 17,
260
+ "label": 25,
261
+ "upstream": 25,
262
+ "coreml": 25,
263
+ "max_abs_probability_error": 1.1920928955078125e-07,
264
+ "max_abs_logit_error": 0.03323173522949219
265
+ },
266
+ {
267
+ "row": 18,
268
+ "label": 26,
269
+ "upstream": 26,
270
+ "coreml": 26,
271
+ "max_abs_probability_error": 8.430758313693332e-09,
272
+ "max_abs_logit_error": 0.022179126739501953
273
+ },
274
+ {
275
+ "row": 19,
276
+ "label": 26,
277
+ "upstream": 26,
278
+ "coreml": 26,
279
+ "max_abs_probability_error": 3.0266471551243512e-09,
280
+ "max_abs_logit_error": 0.029880523681640625
281
+ },
282
+ {
283
+ "row": 20,
284
+ "label": 26,
285
+ "upstream": 26,
286
+ "coreml": 26,
287
+ "max_abs_probability_error": 2.4500966588902884e-08,
288
+ "max_abs_logit_error": 0.031145095825195312
289
+ },
290
+ {
291
+ "row": 21,
292
+ "label": 26,
293
+ "upstream": 26,
294
+ "coreml": 26,
295
+ "max_abs_probability_error": 1.647379281599637e-11,
296
+ "max_abs_logit_error": 0.03861522674560547
297
+ },
298
+ {
299
+ "row": 22,
300
+ "label": 26,
301
+ "upstream": 26,
302
+ "coreml": 26,
303
+ "max_abs_probability_error": 7.152557373046875e-07,
304
+ "max_abs_logit_error": 0.027164459228515625
305
+ },
306
+ {
307
+ "row": 23,
308
+ "label": 26,
309
+ "upstream": 26,
310
+ "coreml": 26,
311
+ "max_abs_probability_error": 5.960464477539062e-07,
312
+ "max_abs_logit_error": 0.058716535568237305
313
+ },
314
+ {
315
+ "row": 24,
316
+ "label": 26,
317
+ "upstream": 26,
318
+ "coreml": 26,
319
+ "max_abs_probability_error": 2.5055844551924444e-11,
320
+ "max_abs_logit_error": 0.035381317138671875
321
+ },
322
+ {
323
+ "row": 25,
324
+ "label": 26,
325
+ "upstream": 26,
326
+ "coreml": 26,
327
+ "max_abs_probability_error": 6.995705792434137e-09,
328
+ "max_abs_logit_error": 0.04862499237060547
329
+ },
330
+ {
331
+ "row": 26,
332
+ "label": 26,
333
+ "upstream": 26,
334
+ "coreml": 26,
335
+ "max_abs_probability_error": 6.470584068551943e-10,
336
+ "max_abs_logit_error": 0.029034733772277832
337
+ },
338
+ {
339
+ "row": 27,
340
+ "label": 26,
341
+ "upstream": 26,
342
+ "coreml": 26,
343
+ "max_abs_probability_error": 6.973024935241767e-11,
344
+ "max_abs_logit_error": 0.03808116912841797
345
+ },
346
+ {
347
+ "row": 28,
348
+ "label": 26,
349
+ "upstream": 26,
350
+ "coreml": 26,
351
+ "max_abs_probability_error": 5.994321927715873e-09,
352
+ "max_abs_logit_error": 0.03319191932678223
353
+ },
354
+ {
355
+ "row": 29,
356
+ "label": 26,
357
+ "upstream": 26,
358
+ "coreml": 26,
359
+ "max_abs_probability_error": 2.4426039316183257e-11,
360
+ "max_abs_logit_error": 0.030045509338378906
361
+ },
362
+ {
363
+ "row": 30,
364
+ "label": 26,
365
+ "upstream": 26,
366
+ "coreml": 26,
367
+ "max_abs_probability_error": 2.384185791015625e-07,
368
+ "max_abs_logit_error": 0.026231765747070312
369
+ },
370
+ {
371
+ "row": 31,
372
+ "label": 26,
373
+ "upstream": 26,
374
+ "coreml": 26,
375
+ "max_abs_probability_error": 7.78299757975276e-10,
376
+ "max_abs_logit_error": 0.033112093806266785
377
+ },
378
+ {
379
+ "row": 32,
380
+ "label": 26,
381
+ "upstream": 26,
382
+ "coreml": 26,
383
+ "max_abs_probability_error": 6.185003176284454e-09,
384
+ "max_abs_logit_error": 0.022128582000732422
385
+ },
386
+ {
387
+ "row": 33,
388
+ "label": 26,
389
+ "upstream": 26,
390
+ "coreml": 26,
391
+ "max_abs_probability_error": 3.4556297823229443e-09,
392
+ "max_abs_logit_error": 0.038306236267089844
393
+ },
394
+ {
395
+ "row": 34,
396
+ "label": 26,
397
+ "upstream": 26,
398
+ "coreml": 26,
399
+ "max_abs_probability_error": 0.0004820823669433594,
400
+ "max_abs_logit_error": 0.032683372497558594
401
+ },
402
+ {
403
+ "row": 35,
404
+ "label": 26,
405
+ "upstream": 26,
406
+ "coreml": 26,
407
+ "max_abs_probability_error": 1.462750809366753e-09,
408
+ "max_abs_logit_error": 0.029730796813964844
409
+ },
410
+ {
411
+ "row": 36,
412
+ "label": 26,
413
+ "upstream": 26,
414
+ "coreml": 26,
415
+ "max_abs_probability_error": 2.7510341227277024e-10,
416
+ "max_abs_logit_error": 0.02333354949951172
417
+ },
418
+ {
419
+ "row": 37,
420
+ "label": 26,
421
+ "upstream": 26,
422
+ "coreml": 26,
423
+ "max_abs_probability_error": 2.657592190757896e-08,
424
+ "max_abs_logit_error": 0.022855758666992188
425
+ },
426
+ {
427
+ "row": 38,
428
+ "label": 26,
429
+ "upstream": 26,
430
+ "coreml": 26,
431
+ "max_abs_probability_error": 9.552543478452691e-11,
432
+ "max_abs_logit_error": 0.023164749145507812
433
+ },
434
+ {
435
+ "row": 39,
436
+ "label": 26,
437
+ "upstream": 26,
438
+ "coreml": 26,
439
+ "max_abs_probability_error": 4.04716482549361e-10,
440
+ "max_abs_logit_error": 0.02880859375
441
+ },
442
+ {
443
+ "row": 40,
444
+ "label": 26,
445
+ "upstream": 26,
446
+ "coreml": 26,
447
+ "max_abs_probability_error": 0.00021719932556152344,
448
+ "max_abs_logit_error": 0.04735088348388672
449
+ },
450
+ {
451
+ "row": 41,
452
+ "label": 26,
453
+ "upstream": 26,
454
+ "coreml": 26,
455
+ "max_abs_probability_error": 6.146233744175333e-09,
456
+ "max_abs_logit_error": 0.03671276569366455
457
+ },
458
+ {
459
+ "row": 42,
460
+ "label": 26,
461
+ "upstream": 26,
462
+ "coreml": 26,
463
+ "max_abs_probability_error": 1.8819494851385343e-09,
464
+ "max_abs_logit_error": 0.023815155029296875
465
+ },
466
+ {
467
+ "row": 43,
468
+ "label": 26,
469
+ "upstream": 26,
470
+ "coreml": 26,
471
+ "max_abs_probability_error": 7.152557373046875e-07,
472
+ "max_abs_logit_error": 0.02039623260498047
473
+ },
474
+ {
475
+ "row": 44,
476
+ "label": 26,
477
+ "upstream": 26,
478
+ "coreml": 26,
479
+ "max_abs_probability_error": 1.780525865635596e-10,
480
+ "max_abs_logit_error": 0.022927284240722656
481
+ },
482
+ {
483
+ "row": 45,
484
+ "label": 26,
485
+ "upstream": 26,
486
+ "coreml": 26,
487
+ "max_abs_probability_error": 3.414331317674879e-11,
488
+ "max_abs_logit_error": 0.030417919158935547
489
+ },
490
+ {
491
+ "row": 46,
492
+ "label": 26,
493
+ "upstream": 26,
494
+ "coreml": 26,
495
+ "max_abs_probability_error": 5.599257724142603e-10,
496
+ "max_abs_logit_error": 0.025608062744140625
497
+ },
498
+ {
499
+ "row": 47,
500
+ "label": 26,
501
+ "upstream": 26,
502
+ "coreml": 26,
503
+ "max_abs_probability_error": 5.212314607705437e-11,
504
+ "max_abs_logit_error": 0.022733211517333984
505
+ },
506
+ {
507
+ "row": 48,
508
+ "label": 26,
509
+ "upstream": 26,
510
+ "coreml": 26,
511
+ "max_abs_probability_error": 1.8596649169921875e-05,
512
+ "max_abs_logit_error": 0.024669170379638672
513
+ },
514
+ {
515
+ "row": 49,
516
+ "label": 26,
517
+ "upstream": 26,
518
+ "coreml": 26,
519
+ "max_abs_probability_error": 1.932842080831776e-10,
520
+ "max_abs_logit_error": 0.030317306518554688
521
+ },
522
+ {
523
+ "row": 50,
524
+ "label": 26,
525
+ "upstream": 26,
526
+ "coreml": 26,
527
+ "max_abs_probability_error": 1.440092489701783e-08,
528
+ "max_abs_logit_error": 0.033290743827819824
529
+ },
530
+ {
531
+ "row": 51,
532
+ "label": 25,
533
+ "upstream": 25,
534
+ "coreml": 25,
535
+ "max_abs_probability_error": 1.1920928955078125e-07,
536
+ "max_abs_logit_error": 0.03323173522949219
537
+ },
538
+ {
539
+ "row": 52,
540
+ "label": 26,
541
+ "upstream": 26,
542
+ "coreml": 26,
543
+ "max_abs_probability_error": 8.430758313693332e-09,
544
+ "max_abs_logit_error": 0.022179126739501953
545
+ },
546
+ {
547
+ "row": 53,
548
+ "label": 26,
549
+ "upstream": 26,
550
+ "coreml": 26,
551
+ "max_abs_probability_error": 3.0266471551243512e-09,
552
+ "max_abs_logit_error": 0.029880523681640625
553
+ },
554
+ {
555
+ "row": 54,
556
+ "label": 26,
557
+ "upstream": 26,
558
+ "coreml": 26,
559
+ "max_abs_probability_error": 2.4500966588902884e-08,
560
+ "max_abs_logit_error": 0.031145095825195312
561
+ },
562
+ {
563
+ "row": 55,
564
+ "label": 26,
565
+ "upstream": 26,
566
+ "coreml": 26,
567
+ "max_abs_probability_error": 1.647379281599637e-11,
568
+ "max_abs_logit_error": 0.03861522674560547
569
+ },
570
+ {
571
+ "row": 56,
572
+ "label": 26,
573
+ "upstream": 26,
574
+ "coreml": 26,
575
+ "max_abs_probability_error": 7.152557373046875e-07,
576
+ "max_abs_logit_error": 0.027164459228515625
577
+ },
578
+ {
579
+ "row": 57,
580
+ "label": 26,
581
+ "upstream": 26,
582
+ "coreml": 26,
583
+ "max_abs_probability_error": 5.960464477539062e-07,
584
+ "max_abs_logit_error": 0.058716535568237305
585
+ },
586
+ {
587
+ "row": 58,
588
+ "label": 26,
589
+ "upstream": 26,
590
+ "coreml": 26,
591
+ "max_abs_probability_error": 2.5055844551924444e-11,
592
+ "max_abs_logit_error": 0.035381317138671875
593
+ },
594
+ {
595
+ "row": 59,
596
+ "label": 26,
597
+ "upstream": 26,
598
+ "coreml": 26,
599
+ "max_abs_probability_error": 6.995705792434137e-09,
600
+ "max_abs_logit_error": 0.04862499237060547
601
+ },
602
+ {
603
+ "row": 60,
604
+ "label": 26,
605
+ "upstream": 26,
606
+ "coreml": 26,
607
+ "max_abs_probability_error": 6.470584068551943e-10,
608
+ "max_abs_logit_error": 0.029034733772277832
609
+ },
610
+ {
611
+ "row": 61,
612
+ "label": 26,
613
+ "upstream": 26,
614
+ "coreml": 26,
615
+ "max_abs_probability_error": 6.973024935241767e-11,
616
+ "max_abs_logit_error": 0.03808116912841797
617
+ },
618
+ {
619
+ "row": 62,
620
+ "label": 26,
621
+ "upstream": 26,
622
+ "coreml": 26,
623
+ "max_abs_probability_error": 5.994321927715873e-09,
624
+ "max_abs_logit_error": 0.03319191932678223
625
+ },
626
+ {
627
+ "row": 63,
628
+ "label": 26,
629
+ "upstream": 26,
630
+ "coreml": 26,
631
+ "max_abs_probability_error": 2.4426039316183257e-11,
632
+ "max_abs_logit_error": 0.030045509338378906
633
+ },
634
+ {
635
+ "row": 64,
636
+ "label": 26,
637
+ "upstream": 26,
638
+ "coreml": 26,
639
+ "max_abs_probability_error": 2.384185791015625e-07,
640
+ "max_abs_logit_error": 0.026231765747070312
641
+ },
642
+ {
643
+ "row": 65,
644
+ "label": 26,
645
+ "upstream": 26,
646
+ "coreml": 26,
647
+ "max_abs_probability_error": 7.78299757975276e-10,
648
+ "max_abs_logit_error": 0.033112093806266785
649
+ },
650
+ {
651
+ "row": 66,
652
+ "label": 26,
653
+ "upstream": 26,
654
+ "coreml": 26,
655
+ "max_abs_probability_error": 6.185003176284454e-09,
656
+ "max_abs_logit_error": 0.022128582000732422
657
+ },
658
+ {
659
+ "row": 67,
660
+ "label": 26,
661
+ "upstream": 26,
662
+ "coreml": 26,
663
+ "max_abs_probability_error": 3.4556297823229443e-09,
664
+ "max_abs_logit_error": 0.038306236267089844
665
+ },
666
+ {
667
+ "row": 68,
668
+ "label": 0,
669
+ "upstream": 0,
670
+ "coreml": 0,
671
+ "max_abs_probability_error": 3.147125244140625e-05,
672
+ "max_abs_logit_error": 0.03265953063964844
673
+ },
674
+ {
675
+ "row": 69,
676
+ "label": 1,
677
+ "upstream": 1,
678
+ "coreml": 1,
679
+ "max_abs_probability_error": 5.030632019042969e-05,
680
+ "max_abs_logit_error": 0.038794517517089844
681
+ },
682
+ {
683
+ "row": 70,
684
+ "label": 2,
685
+ "upstream": 2,
686
+ "coreml": 2,
687
+ "max_abs_probability_error": 1.7881393432617188e-06,
688
+ "max_abs_logit_error": 0.040470123291015625
689
+ },
690
+ {
691
+ "row": 71,
692
+ "label": 3,
693
+ "upstream": 3,
694
+ "coreml": 3,
695
+ "max_abs_probability_error": 5.2928924560546875e-05,
696
+ "max_abs_logit_error": 0.040035247802734375
697
+ },
698
+ {
699
+ "row": 72,
700
+ "label": 5,
701
+ "upstream": 5,
702
+ "coreml": 5,
703
+ "max_abs_probability_error": 4.649162292480469e-06,
704
+ "max_abs_logit_error": 0.042186737060546875
705
+ },
706
+ {
707
+ "row": 73,
708
+ "label": 6,
709
+ "upstream": 6,
710
+ "coreml": 6,
711
+ "max_abs_probability_error": 2.1576881408691406e-05,
712
+ "max_abs_logit_error": 0.033161163330078125
713
+ },
714
+ {
715
+ "row": 74,
716
+ "label": 7,
717
+ "upstream": 7,
718
+ "coreml": 7,
719
+ "max_abs_probability_error": 4.470348358154297e-05,
720
+ "max_abs_logit_error": 0.0293731689453125
721
+ },
722
+ {
723
+ "row": 75,
724
+ "label": 8,
725
+ "upstream": 8,
726
+ "coreml": 8,
727
+ "max_abs_probability_error": 1.1563301086425781e-05,
728
+ "max_abs_logit_error": 0.03249359130859375
729
+ },
730
+ {
731
+ "row": 76,
732
+ "label": 9,
733
+ "upstream": 9,
734
+ "coreml": 9,
735
+ "max_abs_probability_error": 2.86102294921875e-06,
736
+ "max_abs_logit_error": 0.03498554229736328
737
+ },
738
+ {
739
+ "row": 77,
740
+ "label": 13,
741
+ "upstream": 13,
742
+ "coreml": 13,
743
+ "max_abs_probability_error": 0.0003635883331298828,
744
+ "max_abs_logit_error": 0.023473739624023438
745
+ },
746
+ {
747
+ "row": 78,
748
+ "label": 20,
749
+ "upstream": 20,
750
+ "coreml": 20,
751
+ "max_abs_probability_error": 9.5367431640625e-07,
752
+ "max_abs_logit_error": 0.034421443939208984
753
+ },
754
+ {
755
+ "row": 79,
756
+ "label": 18,
757
+ "upstream": 18,
758
+ "coreml": 18,
759
+ "max_abs_probability_error": 0.0003609657287597656,
760
+ "max_abs_logit_error": 0.03937721252441406
761
+ },
762
+ {
763
+ "row": 80,
764
+ "label": 18,
765
+ "upstream": 18,
766
+ "coreml": 18,
767
+ "max_abs_probability_error": 2.384185791015625e-07,
768
+ "max_abs_logit_error": 0.03752422332763672
769
+ },
770
+ {
771
+ "row": 81,
772
+ "label": 20,
773
+ "upstream": 20,
774
+ "coreml": 20,
775
+ "max_abs_probability_error": 1.7881393432617188e-06,
776
+ "max_abs_logit_error": 0.025417327880859375
777
+ },
778
+ {
779
+ "row": 82,
780
+ "label": 19,
781
+ "upstream": 19,
782
+ "coreml": 19,
783
+ "max_abs_probability_error": 2.384185791015625e-07,
784
+ "max_abs_logit_error": 0.04453086853027344
785
+ },
786
+ {
787
+ "row": 83,
788
+ "label": 20,
789
+ "upstream": 20,
790
+ "coreml": 20,
791
+ "max_abs_probability_error": 5.0942090545902374e-09,
792
+ "max_abs_logit_error": 0.023950576782226562
793
+ },
794
+ {
795
+ "row": 84,
796
+ "label": 20,
797
+ "upstream": 20,
798
+ "coreml": 20,
799
+ "max_abs_probability_error": 2.384185791015625e-07,
800
+ "max_abs_logit_error": 0.022706031799316406
801
+ },
802
+ {
803
+ "row": 85,
804
+ "label": 20,
805
+ "upstream": 20,
806
+ "coreml": 20,
807
+ "max_abs_probability_error": 3.5405053888659666e-10,
808
+ "max_abs_logit_error": 0.035375118255615234
809
+ },
810
+ {
811
+ "row": 86,
812
+ "label": 20,
813
+ "upstream": 20,
814
+ "coreml": 20,
815
+ "max_abs_probability_error": 4.76837158203125e-07,
816
+ "max_abs_logit_error": 0.03717994689941406
817
+ },
818
+ {
819
+ "row": 87,
820
+ "label": 20,
821
+ "upstream": 20,
822
+ "coreml": 20,
823
+ "max_abs_probability_error": 1.1920928955078125e-07,
824
+ "max_abs_logit_error": 0.04058122634887695
825
+ },
826
+ {
827
+ "row": 88,
828
+ "label": 20,
829
+ "upstream": 20,
830
+ "coreml": 20,
831
+ "max_abs_probability_error": 1.3188037328859537e-09,
832
+ "max_abs_logit_error": 0.032048702239990234
833
+ },
834
+ {
835
+ "row": 89,
836
+ "label": 20,
837
+ "upstream": 20,
838
+ "coreml": 20,
839
+ "max_abs_probability_error": 1.9970605169561395e-09,
840
+ "max_abs_logit_error": 0.030427932739257812
841
+ },
842
+ {
843
+ "row": 90,
844
+ "label": 20,
845
+ "upstream": 20,
846
+ "coreml": 20,
847
+ "max_abs_probability_error": 1.7617375336342889e-09,
848
+ "max_abs_logit_error": 0.0281219482421875
849
+ },
850
+ {
851
+ "row": 91,
852
+ "label": 20,
853
+ "upstream": 20,
854
+ "coreml": 20,
855
+ "max_abs_probability_error": 1.612549260787688e-10,
856
+ "max_abs_logit_error": 0.030226707458496094
857
+ },
858
+ {
859
+ "row": 92,
860
+ "label": 20,
861
+ "upstream": 20,
862
+ "coreml": 20,
863
+ "max_abs_probability_error": 6.506330630512425e-12,
864
+ "max_abs_logit_error": 0.04007530212402344
865
+ },
866
+ {
867
+ "row": 93,
868
+ "label": 20,
869
+ "upstream": 20,
870
+ "coreml": 20,
871
+ "max_abs_probability_error": 1.5150824594911683e-08,
872
+ "max_abs_logit_error": 0.02728891372680664
873
+ },
874
+ {
875
+ "row": 94,
876
+ "label": 20,
877
+ "upstream": 20,
878
+ "coreml": 20,
879
+ "max_abs_probability_error": 1.3666674458789885e-09,
880
+ "max_abs_logit_error": 0.0217437744140625
881
+ },
882
+ {
883
+ "row": 95,
884
+ "label": 20,
885
+ "upstream": 20,
886
+ "coreml": 20,
887
+ "max_abs_probability_error": 3.969476136678196e-10,
888
+ "max_abs_logit_error": 0.03214454650878906
889
+ },
890
+ {
891
+ "row": 96,
892
+ "label": 20,
893
+ "upstream": 20,
894
+ "coreml": 20,
895
+ "max_abs_probability_error": 2.657726538846106e-10,
896
+ "max_abs_logit_error": 0.03669023513793945
897
+ },
898
+ {
899
+ "row": 97,
900
+ "label": 20,
901
+ "upstream": 20,
902
+ "coreml": 20,
903
+ "max_abs_probability_error": 1.9073486328125e-06,
904
+ "max_abs_logit_error": 0.019012451171875
905
+ },
906
+ {
907
+ "row": 98,
908
+ "label": 20,
909
+ "upstream": 20,
910
+ "coreml": 20,
911
+ "max_abs_probability_error": 2.384185791015625e-07,
912
+ "max_abs_logit_error": 0.026651382446289062
913
+ },
914
+ {
915
+ "row": 99,
916
+ "label": 20,
917
+ "upstream": 20,
918
+ "coreml": 20,
919
+ "max_abs_probability_error": 2.1457672119140625e-06,
920
+ "max_abs_logit_error": 0.04161381721496582
921
+ },
922
+ {
923
+ "row": 100,
924
+ "label": 20,
925
+ "upstream": 20,
926
+ "coreml": 20,
927
+ "max_abs_probability_error": 9.5367431640625e-07,
928
+ "max_abs_logit_error": 0.04680633544921875
929
+ },
930
+ {
931
+ "row": 101,
932
+ "label": 20,
933
+ "upstream": 20,
934
+ "coreml": 20,
935
+ "max_abs_probability_error": 1.789079107084035e-08,
936
+ "max_abs_logit_error": 0.029542922973632812
937
+ },
938
+ {
939
+ "row": 102,
940
+ "label": 20,
941
+ "upstream": 20,
942
+ "coreml": 20,
943
+ "max_abs_probability_error": 2.5862225694339713e-09,
944
+ "max_abs_logit_error": 0.023795127868652344
945
+ },
946
+ {
947
+ "row": 103,
948
+ "label": 20,
949
+ "upstream": 20,
950
+ "coreml": 20,
951
+ "max_abs_probability_error": 0.00024586915969848633,
952
+ "max_abs_logit_error": 0.030111312866210938
953
+ },
954
+ {
955
+ "row": 104,
956
+ "label": 20,
957
+ "upstream": 20,
958
+ "coreml": 20,
959
+ "max_abs_probability_error": 5.841255187988281e-06,
960
+ "max_abs_logit_error": 0.03126239776611328
961
+ },
962
+ {
963
+ "row": 105,
964
+ "label": 20,
965
+ "upstream": 20,
966
+ "coreml": 20,
967
+ "max_abs_probability_error": 4.928799035575082e-10,
968
+ "max_abs_logit_error": 0.026149272918701172
969
+ },
970
+ {
971
+ "row": 106,
972
+ "label": 20,
973
+ "upstream": 20,
974
+ "coreml": 20,
975
+ "max_abs_probability_error": 2.4136979082101107e-09,
976
+ "max_abs_logit_error": 0.024585723876953125
977
+ },
978
+ {
979
+ "row": 107,
980
+ "label": 20,
981
+ "upstream": 20,
982
+ "coreml": 20,
983
+ "max_abs_probability_error": 6.302839361538304e-10,
984
+ "max_abs_logit_error": 0.024765491485595703
985
+ },
986
+ {
987
+ "row": 108,
988
+ "label": 20,
989
+ "upstream": 20,
990
+ "coreml": 20,
991
+ "max_abs_probability_error": 1.1920928955078125e-07,
992
+ "max_abs_logit_error": 0.03492164611816406
993
+ },
994
+ {
995
+ "row": 109,
996
+ "label": 20,
997
+ "upstream": 20,
998
+ "coreml": 20,
999
+ "max_abs_probability_error": 9.5367431640625e-07,
1000
+ "max_abs_logit_error": 0.034421443939208984
1001
+ },
1002
+ {
1003
+ "row": 110,
1004
+ "label": 20,
1005
+ "upstream": 20,
1006
+ "coreml": 20,
1007
+ "max_abs_probability_error": 9.5367431640625e-07,
1008
+ "max_abs_logit_error": 0.0320439338684082
1009
+ },
1010
+ {
1011
+ "row": 111,
1012
+ "label": 20,
1013
+ "upstream": 20,
1014
+ "coreml": 20,
1015
+ "max_abs_probability_error": 1.811981201171875e-05,
1016
+ "max_abs_logit_error": 0.032814979553222656
1017
+ },
1018
+ {
1019
+ "row": 112,
1020
+ "label": 20,
1021
+ "upstream": 20,
1022
+ "coreml": 20,
1023
+ "max_abs_probability_error": 1.7881393432617188e-06,
1024
+ "max_abs_logit_error": 0.025417327880859375
1025
+ },
1026
+ {
1027
+ "row": 113,
1028
+ "label": 19,
1029
+ "upstream": 19,
1030
+ "coreml": 19,
1031
+ "max_abs_probability_error": 2.384185791015625e-07,
1032
+ "max_abs_logit_error": 0.04453086853027344
1033
+ },
1034
+ {
1035
+ "row": 114,
1036
+ "label": 20,
1037
+ "upstream": 20,
1038
+ "coreml": 20,
1039
+ "max_abs_probability_error": 5.0942090545902374e-09,
1040
+ "max_abs_logit_error": 0.023950576782226562
1041
+ },
1042
+ {
1043
+ "row": 115,
1044
+ "label": 20,
1045
+ "upstream": 20,
1046
+ "coreml": 20,
1047
+ "max_abs_probability_error": 2.384185791015625e-07,
1048
+ "max_abs_logit_error": 0.022706031799316406
1049
+ },
1050
+ {
1051
+ "row": 116,
1052
+ "label": 20,
1053
+ "upstream": 20,
1054
+ "coreml": 20,
1055
+ "max_abs_probability_error": 3.5405053888659666e-10,
1056
+ "max_abs_logit_error": 0.035375118255615234
1057
+ },
1058
+ {
1059
+ "row": 117,
1060
+ "label": 20,
1061
+ "upstream": 20,
1062
+ "coreml": 20,
1063
+ "max_abs_probability_error": 4.76837158203125e-07,
1064
+ "max_abs_logit_error": 0.03717994689941406
1065
+ },
1066
+ {
1067
+ "row": 118,
1068
+ "label": 20,
1069
+ "upstream": 20,
1070
+ "coreml": 20,
1071
+ "max_abs_probability_error": 1.1920928955078125e-07,
1072
+ "max_abs_logit_error": 0.04058122634887695
1073
+ },
1074
+ {
1075
+ "row": 119,
1076
+ "label": 20,
1077
+ "upstream": 20,
1078
+ "coreml": 20,
1079
+ "max_abs_probability_error": 1.3188037328859537e-09,
1080
+ "max_abs_logit_error": 0.032048702239990234
1081
+ },
1082
+ {
1083
+ "row": 120,
1084
+ "label": 20,
1085
+ "upstream": 20,
1086
+ "coreml": 20,
1087
+ "max_abs_probability_error": 1.9970605169561395e-09,
1088
+ "max_abs_logit_error": 0.030427932739257812
1089
+ },
1090
+ {
1091
+ "row": 121,
1092
+ "label": 20,
1093
+ "upstream": 20,
1094
+ "coreml": 20,
1095
+ "max_abs_probability_error": 1.7617375336342889e-09,
1096
+ "max_abs_logit_error": 0.0281219482421875
1097
+ },
1098
+ {
1099
+ "row": 122,
1100
+ "label": 20,
1101
+ "upstream": 20,
1102
+ "coreml": 20,
1103
+ "max_abs_probability_error": 1.612549260787688e-10,
1104
+ "max_abs_logit_error": 0.030226707458496094
1105
+ },
1106
+ {
1107
+ "row": 123,
1108
+ "label": 20,
1109
+ "upstream": 20,
1110
+ "coreml": 20,
1111
+ "max_abs_probability_error": 6.506330630512425e-12,
1112
+ "max_abs_logit_error": 0.04007530212402344
1113
+ },
1114
+ {
1115
+ "row": 124,
1116
+ "label": 20,
1117
+ "upstream": 20,
1118
+ "coreml": 20,
1119
+ "max_abs_probability_error": 1.5150824594911683e-08,
1120
+ "max_abs_logit_error": 0.02728891372680664
1121
+ },
1122
+ {
1123
+ "row": 125,
1124
+ "label": 20,
1125
+ "upstream": 20,
1126
+ "coreml": 20,
1127
+ "max_abs_probability_error": 1.3666674458789885e-09,
1128
+ "max_abs_logit_error": 0.0217437744140625
1129
+ },
1130
+ {
1131
+ "row": 126,
1132
+ "label": 20,
1133
+ "upstream": 20,
1134
+ "coreml": 20,
1135
+ "max_abs_probability_error": 3.969476136678196e-10,
1136
+ "max_abs_logit_error": 0.03214454650878906
1137
+ },
1138
+ {
1139
+ "row": 127,
1140
+ "label": 20,
1141
+ "upstream": 20,
1142
+ "coreml": 20,
1143
+ "max_abs_probability_error": 2.657726538846106e-10,
1144
+ "max_abs_logit_error": 0.03669023513793945
1145
+ },
1146
+ {
1147
+ "row": 128,
1148
+ "label": 20,
1149
+ "upstream": 20,
1150
+ "coreml": 20,
1151
+ "max_abs_probability_error": 1.9073486328125e-06,
1152
+ "max_abs_logit_error": 0.019012451171875
1153
+ },
1154
+ {
1155
+ "row": 129,
1156
+ "label": 20,
1157
+ "upstream": 20,
1158
+ "coreml": 20,
1159
+ "max_abs_probability_error": 2.384185791015625e-07,
1160
+ "max_abs_logit_error": 0.026651382446289062
1161
+ },
1162
+ {
1163
+ "row": 130,
1164
+ "label": 1,
1165
+ "upstream": 1,
1166
+ "coreml": 1,
1167
+ "max_abs_probability_error": 3.170967102050781e-05,
1168
+ "max_abs_logit_error": 0.071075439453125
1169
+ },
1170
+ {
1171
+ "row": 131,
1172
+ "label": 2,
1173
+ "upstream": 2,
1174
+ "coreml": 2,
1175
+ "max_abs_probability_error": 8.344650268554688e-07,
1176
+ "max_abs_logit_error": 0.051357269287109375
1177
+ },
1178
+ {
1179
+ "row": 132,
1180
+ "label": 3,
1181
+ "upstream": 3,
1182
+ "coreml": 3,
1183
+ "max_abs_probability_error": 2.7894973754882812e-05,
1184
+ "max_abs_logit_error": 0.033801641315221786
1185
+ },
1186
+ {
1187
+ "row": 133,
1188
+ "label": 4,
1189
+ "upstream": 4,
1190
+ "coreml": 4,
1191
+ "max_abs_probability_error": 1.0967254638671875e-05,
1192
+ "max_abs_logit_error": 0.039325714111328125
1193
+ },
1194
+ {
1195
+ "row": 134,
1196
+ "label": 5,
1197
+ "upstream": 5,
1198
+ "coreml": 5,
1199
+ "max_abs_probability_error": 6.258487701416016e-05,
1200
+ "max_abs_logit_error": 0.033056676387786865
1201
+ },
1202
+ {
1203
+ "row": 135,
1204
+ "label": 6,
1205
+ "upstream": 6,
1206
+ "coreml": 6,
1207
+ "max_abs_probability_error": 1.2993812561035156e-05,
1208
+ "max_abs_logit_error": 0.02561807632446289
1209
+ },
1210
+ {
1211
+ "row": 136,
1212
+ "label": 7,
1213
+ "upstream": 7,
1214
+ "coreml": 7,
1215
+ "max_abs_probability_error": 6.198883056640625e-06,
1216
+ "max_abs_logit_error": 0.03448677062988281
1217
+ },
1218
+ {
1219
+ "row": 137,
1220
+ "label": 8,
1221
+ "upstream": 8,
1222
+ "coreml": 8,
1223
+ "max_abs_probability_error": 0.00233614444732666,
1224
+ "max_abs_logit_error": 0.04230833053588867
1225
+ },
1226
+ {
1227
+ "row": 138,
1228
+ "label": 9,
1229
+ "upstream": 9,
1230
+ "coreml": 9,
1231
+ "max_abs_probability_error": 0.00022917985916137695,
1232
+ "max_abs_logit_error": 0.05339241027832031
1233
+ },
1234
+ {
1235
+ "row": 139,
1236
+ "label": 10,
1237
+ "upstream": 10,
1238
+ "coreml": 10,
1239
+ "max_abs_probability_error": 4.851818084716797e-05,
1240
+ "max_abs_logit_error": 0.032756805419921875
1241
+ },
1242
+ {
1243
+ "row": 140,
1244
+ "label": 11,
1245
+ "upstream": 11,
1246
+ "coreml": 11,
1247
+ "max_abs_probability_error": 3.0994415283203125e-06,
1248
+ "max_abs_logit_error": 0.029809951782226562
1249
+ },
1250
+ {
1251
+ "row": 141,
1252
+ "label": 12,
1253
+ "upstream": 12,
1254
+ "coreml": 12,
1255
+ "max_abs_probability_error": 9.34600830078125e-05,
1256
+ "max_abs_logit_error": 0.026587963104248047
1257
+ },
1258
+ {
1259
+ "row": 142,
1260
+ "label": 18,
1261
+ "upstream": 18,
1262
+ "coreml": 18,
1263
+ "max_abs_probability_error": 1.9073486328125e-06,
1264
+ "max_abs_logit_error": 0.03671073913574219
1265
+ },
1266
+ {
1267
+ "row": 143,
1268
+ "label": 16,
1269
+ "upstream": 16,
1270
+ "coreml": 16,
1271
+ "max_abs_probability_error": 7.152557373046875e-07,
1272
+ "max_abs_logit_error": 0.05281543731689453
1273
+ },
1274
+ {
1275
+ "row": 144,
1276
+ "label": 18,
1277
+ "upstream": 18,
1278
+ "coreml": 18,
1279
+ "max_abs_probability_error": 1.1920928955078125e-06,
1280
+ "max_abs_logit_error": 0.04511451721191406
1281
+ },
1282
+ {
1283
+ "row": 145,
1284
+ "label": 18,
1285
+ "upstream": 18,
1286
+ "coreml": 18,
1287
+ "max_abs_probability_error": 3.6954879760742188e-06,
1288
+ "max_abs_logit_error": 0.07230281829833984
1289
+ },
1290
+ {
1291
+ "row": 146,
1292
+ "label": 17,
1293
+ "upstream": 17,
1294
+ "coreml": 17,
1295
+ "max_abs_probability_error": 1.1920928955078125e-07,
1296
+ "max_abs_logit_error": 0.03114461898803711
1297
+ },
1298
+ {
1299
+ "row": 147,
1300
+ "label": 18,
1301
+ "upstream": 18,
1302
+ "coreml": 18,
1303
+ "max_abs_probability_error": 8.429776876539563e-09,
1304
+ "max_abs_logit_error": 0.020772457122802734
1305
+ },
1306
+ {
1307
+ "row": 148,
1308
+ "label": 18,
1309
+ "upstream": 18,
1310
+ "coreml": 18,
1311
+ "max_abs_probability_error": 9.215698426601193e-09,
1312
+ "max_abs_logit_error": 0.03475606441497803
1313
+ },
1314
+ {
1315
+ "row": 149,
1316
+ "label": 18,
1317
+ "upstream": 18,
1318
+ "coreml": 18,
1319
+ "max_abs_probability_error": 3.84208304060607e-10,
1320
+ "max_abs_logit_error": 0.020298004150390625
1321
+ },
1322
+ {
1323
+ "row": 150,
1324
+ "label": 18,
1325
+ "upstream": 18,
1326
+ "coreml": 18,
1327
+ "max_abs_probability_error": 7.947568818333917e-12,
1328
+ "max_abs_logit_error": 0.04283332824707031
1329
+ },
1330
+ {
1331
+ "row": 151,
1332
+ "label": 18,
1333
+ "upstream": 18,
1334
+ "coreml": 18,
1335
+ "max_abs_probability_error": 5.291168614363073e-10,
1336
+ "max_abs_logit_error": 0.028450965881347656
1337
+ },
1338
+ {
1339
+ "row": 152,
1340
+ "label": 18,
1341
+ "upstream": 18,
1342
+ "coreml": 18,
1343
+ "max_abs_probability_error": 7.924417788629512e-10,
1344
+ "max_abs_logit_error": 0.02250051498413086
1345
+ },
1346
+ {
1347
+ "row": 153,
1348
+ "label": 18,
1349
+ "upstream": 18,
1350
+ "coreml": 18,
1351
+ "max_abs_probability_error": 1.837478791344438e-08,
1352
+ "max_abs_logit_error": 0.06335592269897461
1353
+ },
1354
+ {
1355
+ "row": 154,
1356
+ "label": 18,
1357
+ "upstream": 18,
1358
+ "coreml": 18,
1359
+ "max_abs_probability_error": 3.3051329034750054e-11,
1360
+ "max_abs_logit_error": 0.02735137939453125
1361
+ },
1362
+ {
1363
+ "row": 155,
1364
+ "label": 18,
1365
+ "upstream": 18,
1366
+ "coreml": 18,
1367
+ "max_abs_probability_error": 1.650468511860126e-10,
1368
+ "max_abs_logit_error": 0.015047073364257812
1369
+ },
1370
+ {
1371
+ "row": 156,
1372
+ "label": 18,
1373
+ "upstream": 18,
1374
+ "coreml": 18,
1375
+ "max_abs_probability_error": 6.181078218703284e-12,
1376
+ "max_abs_logit_error": 0.04868888854980469
1377
+ },
1378
+ {
1379
+ "row": 157,
1380
+ "label": 18,
1381
+ "upstream": 18,
1382
+ "coreml": 18,
1383
+ "max_abs_probability_error": 1.6455586893115992e-10,
1384
+ "max_abs_logit_error": 0.026497364044189453
1385
+ },
1386
+ {
1387
+ "row": 158,
1388
+ "label": 18,
1389
+ "upstream": 18,
1390
+ "coreml": 18,
1391
+ "max_abs_probability_error": 6.109900363426846e-10,
1392
+ "max_abs_logit_error": 0.022236347198486328
1393
+ },
1394
+ {
1395
+ "row": 159,
1396
+ "label": 18,
1397
+ "upstream": 18,
1398
+ "coreml": 18,
1399
+ "max_abs_probability_error": 6.693580800742893e-09,
1400
+ "max_abs_logit_error": 0.020044326782226562
1401
+ },
1402
+ {
1403
+ "row": 160,
1404
+ "label": 18,
1405
+ "upstream": 18,
1406
+ "coreml": 18,
1407
+ "max_abs_probability_error": 1.3718365998727222e-08,
1408
+ "max_abs_logit_error": 0.05533123016357422
1409
+ },
1410
+ {
1411
+ "row": 161,
1412
+ "label": 18,
1413
+ "upstream": 18,
1414
+ "coreml": 18,
1415
+ "max_abs_probability_error": 8.344650268554688e-07,
1416
+ "max_abs_logit_error": 0.0247042179107666
1417
+ },
1418
+ {
1419
+ "row": 162,
1420
+ "label": 18,
1421
+ "upstream": 18,
1422
+ "coreml": 18,
1423
+ "max_abs_probability_error": 1.042114572413766e-08,
1424
+ "max_abs_logit_error": 0.028873443603515625
1425
+ },
1426
+ {
1427
+ "row": 163,
1428
+ "label": 18,
1429
+ "upstream": 18,
1430
+ "coreml": 18,
1431
+ "max_abs_probability_error": 1.9131388140358752e-10,
1432
+ "max_abs_logit_error": 0.015494346618652344
1433
+ },
1434
+ {
1435
+ "row": 164,
1436
+ "label": 18,
1437
+ "upstream": 18,
1438
+ "coreml": 18,
1439
+ "max_abs_probability_error": 1.0254025184508464e-08,
1440
+ "max_abs_logit_error": 0.02497100830078125
1441
+ },
1442
+ {
1443
+ "row": 165,
1444
+ "label": 18,
1445
+ "upstream": 18,
1446
+ "coreml": 18,
1447
+ "max_abs_probability_error": 5.15840287151903e-11,
1448
+ "max_abs_logit_error": 0.02679443359375
1449
+ },
1450
+ {
1451
+ "row": 166,
1452
+ "label": 18,
1453
+ "upstream": 18,
1454
+ "coreml": 18,
1455
+ "max_abs_probability_error": 2.6797479790729994e-09,
1456
+ "max_abs_logit_error": 0.028203964233398438
1457
+ },
1458
+ {
1459
+ "row": 167,
1460
+ "label": 18,
1461
+ "upstream": 18,
1462
+ "coreml": 18,
1463
+ "max_abs_probability_error": 7.54509399403247e-10,
1464
+ "max_abs_logit_error": 0.03371429443359375
1465
+ },
1466
+ {
1467
+ "row": 168,
1468
+ "label": 18,
1469
+ "upstream": 18,
1470
+ "coreml": 18,
1471
+ "max_abs_probability_error": 8.344650268554688e-07,
1472
+ "max_abs_logit_error": 0.028280355036258698
1473
+ },
1474
+ {
1475
+ "row": 169,
1476
+ "label": 18,
1477
+ "upstream": 18,
1478
+ "coreml": 18,
1479
+ "max_abs_probability_error": 2.4169340140378637e-11,
1480
+ "max_abs_logit_error": 0.038245439529418945
1481
+ },
1482
+ {
1483
+ "row": 170,
1484
+ "label": 18,
1485
+ "upstream": 18,
1486
+ "coreml": 18,
1487
+ "max_abs_probability_error": 3.0329603412093675e-11,
1488
+ "max_abs_logit_error": 0.030043363571166992
1489
+ },
1490
+ {
1491
+ "row": 171,
1492
+ "label": 18,
1493
+ "upstream": 18,
1494
+ "coreml": 18,
1495
+ "max_abs_probability_error": 1.7881393432617188e-06,
1496
+ "max_abs_logit_error": 0.02963542938232422
1497
+ },
1498
+ {
1499
+ "row": 172,
1500
+ "label": 18,
1501
+ "upstream": 18,
1502
+ "coreml": 18,
1503
+ "max_abs_probability_error": 4.66337235494052e-09,
1504
+ "max_abs_logit_error": 0.03510093688964844
1505
+ },
1506
+ {
1507
+ "row": 173,
1508
+ "label": 18,
1509
+ "upstream": 18,
1510
+ "coreml": 18,
1511
+ "max_abs_probability_error": 1.2885730260592254e-09,
1512
+ "max_abs_logit_error": 0.04009199142456055
1513
+ },
1514
+ {
1515
+ "row": 174,
1516
+ "label": 18,
1517
+ "upstream": 18,
1518
+ "coreml": 18,
1519
+ "max_abs_probability_error": 1.1279766010119374e-09,
1520
+ "max_abs_logit_error": 0.031810760498046875
1521
+ },
1522
+ {
1523
+ "row": 175,
1524
+ "label": 18,
1525
+ "upstream": 18,
1526
+ "coreml": 18,
1527
+ "max_abs_probability_error": 1.9073486328125e-06,
1528
+ "max_abs_logit_error": 0.03671073913574219
1529
+ },
1530
+ {
1531
+ "row": 176,
1532
+ "label": 18,
1533
+ "upstream": 18,
1534
+ "coreml": 18,
1535
+ "max_abs_probability_error": 1.0728836059570312e-06,
1536
+ "max_abs_logit_error": 0.05123615264892578
1537
+ },
1538
+ {
1539
+ "row": 177,
1540
+ "label": 18,
1541
+ "upstream": 18,
1542
+ "coreml": 18,
1543
+ "max_abs_probability_error": 1.2799782567185503e-08,
1544
+ "max_abs_logit_error": 0.03157186508178711
1545
+ },
1546
+ {
1547
+ "row": 178,
1548
+ "label": 18,
1549
+ "upstream": 18,
1550
+ "coreml": 18,
1551
+ "max_abs_probability_error": 3.6954879760742188e-06,
1552
+ "max_abs_logit_error": 0.07230281829833984
1553
+ },
1554
+ {
1555
+ "row": 179,
1556
+ "label": 17,
1557
+ "upstream": 17,
1558
+ "coreml": 17,
1559
+ "max_abs_probability_error": 1.1920928955078125e-07,
1560
+ "max_abs_logit_error": 0.03114461898803711
1561
+ },
1562
+ {
1563
+ "row": 180,
1564
+ "label": 18,
1565
+ "upstream": 18,
1566
+ "coreml": 18,
1567
+ "max_abs_probability_error": 8.429776876539563e-09,
1568
+ "max_abs_logit_error": 0.020772457122802734
1569
+ },
1570
+ {
1571
+ "row": 181,
1572
+ "label": 18,
1573
+ "upstream": 18,
1574
+ "coreml": 18,
1575
+ "max_abs_probability_error": 9.215698426601193e-09,
1576
+ "max_abs_logit_error": 0.03475606441497803
1577
+ },
1578
+ {
1579
+ "row": 182,
1580
+ "label": 18,
1581
+ "upstream": 18,
1582
+ "coreml": 18,
1583
+ "max_abs_probability_error": 3.84208304060607e-10,
1584
+ "max_abs_logit_error": 0.020298004150390625
1585
+ },
1586
+ {
1587
+ "row": 183,
1588
+ "label": 18,
1589
+ "upstream": 18,
1590
+ "coreml": 18,
1591
+ "max_abs_probability_error": 7.947568818333917e-12,
1592
+ "max_abs_logit_error": 0.04283332824707031
1593
+ },
1594
+ {
1595
+ "row": 184,
1596
+ "label": 18,
1597
+ "upstream": 18,
1598
+ "coreml": 18,
1599
+ "max_abs_probability_error": 5.291168614363073e-10,
1600
+ "max_abs_logit_error": 0.028450965881347656
1601
+ },
1602
+ {
1603
+ "row": 185,
1604
+ "label": 18,
1605
+ "upstream": 18,
1606
+ "coreml": 18,
1607
+ "max_abs_probability_error": 7.924417788629512e-10,
1608
+ "max_abs_logit_error": 0.02250051498413086
1609
+ },
1610
+ {
1611
+ "row": 186,
1612
+ "label": 18,
1613
+ "upstream": 18,
1614
+ "coreml": 18,
1615
+ "max_abs_probability_error": 1.837478791344438e-08,
1616
+ "max_abs_logit_error": 0.06335592269897461
1617
+ },
1618
+ {
1619
+ "row": 187,
1620
+ "label": 18,
1621
+ "upstream": 18,
1622
+ "coreml": 18,
1623
+ "max_abs_probability_error": 3.3051329034750054e-11,
1624
+ "max_abs_logit_error": 0.02735137939453125
1625
+ },
1626
+ {
1627
+ "row": 188,
1628
+ "label": 18,
1629
+ "upstream": 18,
1630
+ "coreml": 18,
1631
+ "max_abs_probability_error": 1.650468511860126e-10,
1632
+ "max_abs_logit_error": 0.015047073364257812
1633
+ },
1634
+ {
1635
+ "row": 189,
1636
+ "label": 18,
1637
+ "upstream": 18,
1638
+ "coreml": 18,
1639
+ "max_abs_probability_error": 6.181078218703284e-12,
1640
+ "max_abs_logit_error": 0.04868888854980469
1641
+ },
1642
+ {
1643
+ "row": 190,
1644
+ "label": 18,
1645
+ "upstream": 18,
1646
+ "coreml": 18,
1647
+ "max_abs_probability_error": 1.6455586893115992e-10,
1648
+ "max_abs_logit_error": 0.026497364044189453
1649
+ },
1650
+ {
1651
+ "row": 191,
1652
+ "label": 18,
1653
+ "upstream": 18,
1654
+ "coreml": 18,
1655
+ "max_abs_probability_error": 6.109900363426846e-10,
1656
+ "max_abs_logit_error": 0.022236347198486328
1657
+ },
1658
+ {
1659
+ "row": 192,
1660
+ "label": 18,
1661
+ "upstream": 18,
1662
+ "coreml": 18,
1663
+ "max_abs_probability_error": 6.693580800742893e-09,
1664
+ "max_abs_logit_error": 0.020044326782226562
1665
+ },
1666
+ {
1667
+ "row": 193,
1668
+ "label": 18,
1669
+ "upstream": 18,
1670
+ "coreml": 18,
1671
+ "max_abs_probability_error": 1.3718365998727222e-08,
1672
+ "max_abs_logit_error": 0.05533123016357422
1673
+ },
1674
+ {
1675
+ "row": 194,
1676
+ "label": 18,
1677
+ "upstream": 18,
1678
+ "coreml": 18,
1679
+ "max_abs_probability_error": 8.344650268554688e-07,
1680
+ "max_abs_logit_error": 0.0247042179107666
1681
+ },
1682
+ {
1683
+ "row": 195,
1684
+ "label": 18,
1685
+ "upstream": 18,
1686
+ "coreml": 18,
1687
+ "max_abs_probability_error": 1.042114572413766e-08,
1688
+ "max_abs_logit_error": 0.028873443603515625
1689
+ }
1690
+ ]
1691
+ },
1692
+ "CPU_AND_NE": {
1693
+ "passed": true,
1694
+ "correct": 196,
1695
+ "accuracy": 1.0,
1696
+ "argmax_agreement": 196,
1697
+ "max_abs_probability_error": 0.00233614444732666,
1698
+ "mean_row_max_abs_probability_error": 2.934475840582507e-05,
1699
+ "max_abs_logit_error": 0.07230281829833984,
1700
+ "load_seconds": 0.578353041986702,
1701
+ "warm_inference_latency_ms": {
1702
+ "count": 196,
1703
+ "median_ms": 0.9623960067983717,
1704
+ "p95_ms": 0.9909170039463788,
1705
+ "min_ms": 0.9270830196328461,
1706
+ "max_ms": 1.0197919909842312
1707
+ },
1708
+ "reversed_option_order": {
1709
+ "rows": 6,
1710
+ "max_abs_probability_error": 3.1828880310058594e-05
1711
+ },
1712
+ "per_action": {
1713
+ "fill": {
1714
+ "rows": 36,
1715
+ "correct": 36
1716
+ },
1717
+ "skip": {
1718
+ "rows": 150,
1719
+ "correct": 150
1720
+ },
1721
+ "check": {
1722
+ "rows": 4,
1723
+ "correct": 4
1724
+ },
1725
+ "click": {
1726
+ "rows": 6,
1727
+ "correct": 6
1728
+ }
1729
+ },
1730
+ "decisions": [
1731
+ {
1732
+ "row": 0,
1733
+ "label": 22,
1734
+ "upstream": 22,
1735
+ "coreml": 22,
1736
+ "max_abs_probability_error": 3.1828880310058594e-05,
1737
+ "max_abs_logit_error": 0.03086566925048828
1738
+ },
1739
+ {
1740
+ "row": 1,
1741
+ "label": 23,
1742
+ "upstream": 23,
1743
+ "coreml": 23,
1744
+ "max_abs_probability_error": 3.814697265625e-05,
1745
+ "max_abs_logit_error": 0.020841598510742188
1746
+ },
1747
+ {
1748
+ "row": 2,
1749
+ "label": 2,
1750
+ "upstream": 2,
1751
+ "coreml": 2,
1752
+ "max_abs_probability_error": 1.1920928955078125e-07,
1753
+ "max_abs_logit_error": 0.024377822875976562
1754
+ },
1755
+ {
1756
+ "row": 3,
1757
+ "label": 5,
1758
+ "upstream": 5,
1759
+ "coreml": 5,
1760
+ "max_abs_probability_error": 3.218650817871094e-05,
1761
+ "max_abs_logit_error": 0.030775785446166992
1762
+ },
1763
+ {
1764
+ "row": 4,
1765
+ "label": 4,
1766
+ "upstream": 4,
1767
+ "coreml": 4,
1768
+ "max_abs_probability_error": 2.944469451904297e-05,
1769
+ "max_abs_logit_error": 0.03573417663574219
1770
+ },
1771
+ {
1772
+ "row": 5,
1773
+ "label": 6,
1774
+ "upstream": 6,
1775
+ "coreml": 6,
1776
+ "max_abs_probability_error": 1.2636184692382812e-05,
1777
+ "max_abs_logit_error": 0.026729822158813477
1778
+ },
1779
+ {
1780
+ "row": 6,
1781
+ "label": 7,
1782
+ "upstream": 7,
1783
+ "coreml": 7,
1784
+ "max_abs_probability_error": 2.3365020751953125e-05,
1785
+ "max_abs_logit_error": 0.023685455322265625
1786
+ },
1787
+ {
1788
+ "row": 7,
1789
+ "label": 8,
1790
+ "upstream": 8,
1791
+ "coreml": 8,
1792
+ "max_abs_probability_error": 0.00014638900756835938,
1793
+ "max_abs_logit_error": 0.04038810729980469
1794
+ },
1795
+ {
1796
+ "row": 8,
1797
+ "label": 9,
1798
+ "upstream": 9,
1799
+ "coreml": 9,
1800
+ "max_abs_probability_error": 1.1920928955078125e-06,
1801
+ "max_abs_logit_error": 0.02460002899169922
1802
+ },
1803
+ {
1804
+ "row": 9,
1805
+ "label": 10,
1806
+ "upstream": 10,
1807
+ "coreml": 10,
1808
+ "max_abs_probability_error": 2.1457672119140625e-05,
1809
+ "max_abs_logit_error": 0.018064022064208984
1810
+ },
1811
+ {
1812
+ "row": 10,
1813
+ "label": 11,
1814
+ "upstream": 11,
1815
+ "coreml": 11,
1816
+ "max_abs_probability_error": 5.960464477539062e-07,
1817
+ "max_abs_logit_error": 0.047691673040390015
1818
+ },
1819
+ {
1820
+ "row": 11,
1821
+ "label": 13,
1822
+ "upstream": 13,
1823
+ "coreml": 13,
1824
+ "max_abs_probability_error": 3.2186508178710938e-06,
1825
+ "max_abs_logit_error": 0.03340768814086914
1826
+ },
1827
+ {
1828
+ "row": 12,
1829
+ "label": 15,
1830
+ "upstream": 15,
1831
+ "coreml": 15,
1832
+ "max_abs_probability_error": 2.384185791015625e-06,
1833
+ "max_abs_logit_error": 0.053191184997558594
1834
+ },
1835
+ {
1836
+ "row": 13,
1837
+ "label": 16,
1838
+ "upstream": 16,
1839
+ "coreml": 16,
1840
+ "max_abs_probability_error": 0.0005360841751098633,
1841
+ "max_abs_logit_error": 0.03362560272216797
1842
+ },
1843
+ {
1844
+ "row": 14,
1845
+ "label": 26,
1846
+ "upstream": 26,
1847
+ "coreml": 26,
1848
+ "max_abs_probability_error": 1.8596649169921875e-05,
1849
+ "max_abs_logit_error": 0.024669170379638672
1850
+ },
1851
+ {
1852
+ "row": 15,
1853
+ "label": 24,
1854
+ "upstream": 24,
1855
+ "coreml": 24,
1856
+ "max_abs_probability_error": 1.6689300537109375e-05,
1857
+ "max_abs_logit_error": 0.034501075744628906
1858
+ },
1859
+ {
1860
+ "row": 16,
1861
+ "label": 26,
1862
+ "upstream": 26,
1863
+ "coreml": 26,
1864
+ "max_abs_probability_error": 1.440092489701783e-08,
1865
+ "max_abs_logit_error": 0.033290743827819824
1866
+ },
1867
+ {
1868
+ "row": 17,
1869
+ "label": 25,
1870
+ "upstream": 25,
1871
+ "coreml": 25,
1872
+ "max_abs_probability_error": 1.1920928955078125e-07,
1873
+ "max_abs_logit_error": 0.03323173522949219
1874
+ },
1875
+ {
1876
+ "row": 18,
1877
+ "label": 26,
1878
+ "upstream": 26,
1879
+ "coreml": 26,
1880
+ "max_abs_probability_error": 8.430758313693332e-09,
1881
+ "max_abs_logit_error": 0.022179126739501953
1882
+ },
1883
+ {
1884
+ "row": 19,
1885
+ "label": 26,
1886
+ "upstream": 26,
1887
+ "coreml": 26,
1888
+ "max_abs_probability_error": 3.0266471551243512e-09,
1889
+ "max_abs_logit_error": 0.029880523681640625
1890
+ },
1891
+ {
1892
+ "row": 20,
1893
+ "label": 26,
1894
+ "upstream": 26,
1895
+ "coreml": 26,
1896
+ "max_abs_probability_error": 2.4500966588902884e-08,
1897
+ "max_abs_logit_error": 0.031145095825195312
1898
+ },
1899
+ {
1900
+ "row": 21,
1901
+ "label": 26,
1902
+ "upstream": 26,
1903
+ "coreml": 26,
1904
+ "max_abs_probability_error": 1.647379281599637e-11,
1905
+ "max_abs_logit_error": 0.03861522674560547
1906
+ },
1907
+ {
1908
+ "row": 22,
1909
+ "label": 26,
1910
+ "upstream": 26,
1911
+ "coreml": 26,
1912
+ "max_abs_probability_error": 7.152557373046875e-07,
1913
+ "max_abs_logit_error": 0.027164459228515625
1914
+ },
1915
+ {
1916
+ "row": 23,
1917
+ "label": 26,
1918
+ "upstream": 26,
1919
+ "coreml": 26,
1920
+ "max_abs_probability_error": 5.960464477539062e-07,
1921
+ "max_abs_logit_error": 0.058716535568237305
1922
+ },
1923
+ {
1924
+ "row": 24,
1925
+ "label": 26,
1926
+ "upstream": 26,
1927
+ "coreml": 26,
1928
+ "max_abs_probability_error": 2.5055844551924444e-11,
1929
+ "max_abs_logit_error": 0.035381317138671875
1930
+ },
1931
+ {
1932
+ "row": 25,
1933
+ "label": 26,
1934
+ "upstream": 26,
1935
+ "coreml": 26,
1936
+ "max_abs_probability_error": 6.995705792434137e-09,
1937
+ "max_abs_logit_error": 0.04862499237060547
1938
+ },
1939
+ {
1940
+ "row": 26,
1941
+ "label": 26,
1942
+ "upstream": 26,
1943
+ "coreml": 26,
1944
+ "max_abs_probability_error": 6.470584068551943e-10,
1945
+ "max_abs_logit_error": 0.029034733772277832
1946
+ },
1947
+ {
1948
+ "row": 27,
1949
+ "label": 26,
1950
+ "upstream": 26,
1951
+ "coreml": 26,
1952
+ "max_abs_probability_error": 6.973024935241767e-11,
1953
+ "max_abs_logit_error": 0.03808116912841797
1954
+ },
1955
+ {
1956
+ "row": 28,
1957
+ "label": 26,
1958
+ "upstream": 26,
1959
+ "coreml": 26,
1960
+ "max_abs_probability_error": 5.994321927715873e-09,
1961
+ "max_abs_logit_error": 0.03319191932678223
1962
+ },
1963
+ {
1964
+ "row": 29,
1965
+ "label": 26,
1966
+ "upstream": 26,
1967
+ "coreml": 26,
1968
+ "max_abs_probability_error": 2.4426039316183257e-11,
1969
+ "max_abs_logit_error": 0.030045509338378906
1970
+ },
1971
+ {
1972
+ "row": 30,
1973
+ "label": 26,
1974
+ "upstream": 26,
1975
+ "coreml": 26,
1976
+ "max_abs_probability_error": 2.384185791015625e-07,
1977
+ "max_abs_logit_error": 0.026231765747070312
1978
+ },
1979
+ {
1980
+ "row": 31,
1981
+ "label": 26,
1982
+ "upstream": 26,
1983
+ "coreml": 26,
1984
+ "max_abs_probability_error": 7.78299757975276e-10,
1985
+ "max_abs_logit_error": 0.033112093806266785
1986
+ },
1987
+ {
1988
+ "row": 32,
1989
+ "label": 26,
1990
+ "upstream": 26,
1991
+ "coreml": 26,
1992
+ "max_abs_probability_error": 6.185003176284454e-09,
1993
+ "max_abs_logit_error": 0.022128582000732422
1994
+ },
1995
+ {
1996
+ "row": 33,
1997
+ "label": 26,
1998
+ "upstream": 26,
1999
+ "coreml": 26,
2000
+ "max_abs_probability_error": 3.4556297823229443e-09,
2001
+ "max_abs_logit_error": 0.038306236267089844
2002
+ },
2003
+ {
2004
+ "row": 34,
2005
+ "label": 26,
2006
+ "upstream": 26,
2007
+ "coreml": 26,
2008
+ "max_abs_probability_error": 0.0004820823669433594,
2009
+ "max_abs_logit_error": 0.032683372497558594
2010
+ },
2011
+ {
2012
+ "row": 35,
2013
+ "label": 26,
2014
+ "upstream": 26,
2015
+ "coreml": 26,
2016
+ "max_abs_probability_error": 1.462750809366753e-09,
2017
+ "max_abs_logit_error": 0.029730796813964844
2018
+ },
2019
+ {
2020
+ "row": 36,
2021
+ "label": 26,
2022
+ "upstream": 26,
2023
+ "coreml": 26,
2024
+ "max_abs_probability_error": 2.7510341227277024e-10,
2025
+ "max_abs_logit_error": 0.02333354949951172
2026
+ },
2027
+ {
2028
+ "row": 37,
2029
+ "label": 26,
2030
+ "upstream": 26,
2031
+ "coreml": 26,
2032
+ "max_abs_probability_error": 2.657592190757896e-08,
2033
+ "max_abs_logit_error": 0.022855758666992188
2034
+ },
2035
+ {
2036
+ "row": 38,
2037
+ "label": 26,
2038
+ "upstream": 26,
2039
+ "coreml": 26,
2040
+ "max_abs_probability_error": 9.552543478452691e-11,
2041
+ "max_abs_logit_error": 0.023164749145507812
2042
+ },
2043
+ {
2044
+ "row": 39,
2045
+ "label": 26,
2046
+ "upstream": 26,
2047
+ "coreml": 26,
2048
+ "max_abs_probability_error": 4.04716482549361e-10,
2049
+ "max_abs_logit_error": 0.02880859375
2050
+ },
2051
+ {
2052
+ "row": 40,
2053
+ "label": 26,
2054
+ "upstream": 26,
2055
+ "coreml": 26,
2056
+ "max_abs_probability_error": 0.00021719932556152344,
2057
+ "max_abs_logit_error": 0.04735088348388672
2058
+ },
2059
+ {
2060
+ "row": 41,
2061
+ "label": 26,
2062
+ "upstream": 26,
2063
+ "coreml": 26,
2064
+ "max_abs_probability_error": 6.146233744175333e-09,
2065
+ "max_abs_logit_error": 0.03671276569366455
2066
+ },
2067
+ {
2068
+ "row": 42,
2069
+ "label": 26,
2070
+ "upstream": 26,
2071
+ "coreml": 26,
2072
+ "max_abs_probability_error": 1.8819494851385343e-09,
2073
+ "max_abs_logit_error": 0.023815155029296875
2074
+ },
2075
+ {
2076
+ "row": 43,
2077
+ "label": 26,
2078
+ "upstream": 26,
2079
+ "coreml": 26,
2080
+ "max_abs_probability_error": 7.152557373046875e-07,
2081
+ "max_abs_logit_error": 0.02039623260498047
2082
+ },
2083
+ {
2084
+ "row": 44,
2085
+ "label": 26,
2086
+ "upstream": 26,
2087
+ "coreml": 26,
2088
+ "max_abs_probability_error": 1.780525865635596e-10,
2089
+ "max_abs_logit_error": 0.022927284240722656
2090
+ },
2091
+ {
2092
+ "row": 45,
2093
+ "label": 26,
2094
+ "upstream": 26,
2095
+ "coreml": 26,
2096
+ "max_abs_probability_error": 3.414331317674879e-11,
2097
+ "max_abs_logit_error": 0.030417919158935547
2098
+ },
2099
+ {
2100
+ "row": 46,
2101
+ "label": 26,
2102
+ "upstream": 26,
2103
+ "coreml": 26,
2104
+ "max_abs_probability_error": 5.599257724142603e-10,
2105
+ "max_abs_logit_error": 0.025608062744140625
2106
+ },
2107
+ {
2108
+ "row": 47,
2109
+ "label": 26,
2110
+ "upstream": 26,
2111
+ "coreml": 26,
2112
+ "max_abs_probability_error": 5.212314607705437e-11,
2113
+ "max_abs_logit_error": 0.022733211517333984
2114
+ },
2115
+ {
2116
+ "row": 48,
2117
+ "label": 26,
2118
+ "upstream": 26,
2119
+ "coreml": 26,
2120
+ "max_abs_probability_error": 1.8596649169921875e-05,
2121
+ "max_abs_logit_error": 0.024669170379638672
2122
+ },
2123
+ {
2124
+ "row": 49,
2125
+ "label": 26,
2126
+ "upstream": 26,
2127
+ "coreml": 26,
2128
+ "max_abs_probability_error": 1.932842080831776e-10,
2129
+ "max_abs_logit_error": 0.030317306518554688
2130
+ },
2131
+ {
2132
+ "row": 50,
2133
+ "label": 26,
2134
+ "upstream": 26,
2135
+ "coreml": 26,
2136
+ "max_abs_probability_error": 1.440092489701783e-08,
2137
+ "max_abs_logit_error": 0.033290743827819824
2138
+ },
2139
+ {
2140
+ "row": 51,
2141
+ "label": 25,
2142
+ "upstream": 25,
2143
+ "coreml": 25,
2144
+ "max_abs_probability_error": 1.1920928955078125e-07,
2145
+ "max_abs_logit_error": 0.03323173522949219
2146
+ },
2147
+ {
2148
+ "row": 52,
2149
+ "label": 26,
2150
+ "upstream": 26,
2151
+ "coreml": 26,
2152
+ "max_abs_probability_error": 8.430758313693332e-09,
2153
+ "max_abs_logit_error": 0.022179126739501953
2154
+ },
2155
+ {
2156
+ "row": 53,
2157
+ "label": 26,
2158
+ "upstream": 26,
2159
+ "coreml": 26,
2160
+ "max_abs_probability_error": 3.0266471551243512e-09,
2161
+ "max_abs_logit_error": 0.029880523681640625
2162
+ },
2163
+ {
2164
+ "row": 54,
2165
+ "label": 26,
2166
+ "upstream": 26,
2167
+ "coreml": 26,
2168
+ "max_abs_probability_error": 2.4500966588902884e-08,
2169
+ "max_abs_logit_error": 0.031145095825195312
2170
+ },
2171
+ {
2172
+ "row": 55,
2173
+ "label": 26,
2174
+ "upstream": 26,
2175
+ "coreml": 26,
2176
+ "max_abs_probability_error": 1.647379281599637e-11,
2177
+ "max_abs_logit_error": 0.03861522674560547
2178
+ },
2179
+ {
2180
+ "row": 56,
2181
+ "label": 26,
2182
+ "upstream": 26,
2183
+ "coreml": 26,
2184
+ "max_abs_probability_error": 7.152557373046875e-07,
2185
+ "max_abs_logit_error": 0.027164459228515625
2186
+ },
2187
+ {
2188
+ "row": 57,
2189
+ "label": 26,
2190
+ "upstream": 26,
2191
+ "coreml": 26,
2192
+ "max_abs_probability_error": 5.960464477539062e-07,
2193
+ "max_abs_logit_error": 0.058716535568237305
2194
+ },
2195
+ {
2196
+ "row": 58,
2197
+ "label": 26,
2198
+ "upstream": 26,
2199
+ "coreml": 26,
2200
+ "max_abs_probability_error": 2.5055844551924444e-11,
2201
+ "max_abs_logit_error": 0.035381317138671875
2202
+ },
2203
+ {
2204
+ "row": 59,
2205
+ "label": 26,
2206
+ "upstream": 26,
2207
+ "coreml": 26,
2208
+ "max_abs_probability_error": 6.995705792434137e-09,
2209
+ "max_abs_logit_error": 0.04862499237060547
2210
+ },
2211
+ {
2212
+ "row": 60,
2213
+ "label": 26,
2214
+ "upstream": 26,
2215
+ "coreml": 26,
2216
+ "max_abs_probability_error": 6.470584068551943e-10,
2217
+ "max_abs_logit_error": 0.029034733772277832
2218
+ },
2219
+ {
2220
+ "row": 61,
2221
+ "label": 26,
2222
+ "upstream": 26,
2223
+ "coreml": 26,
2224
+ "max_abs_probability_error": 6.973024935241767e-11,
2225
+ "max_abs_logit_error": 0.03808116912841797
2226
+ },
2227
+ {
2228
+ "row": 62,
2229
+ "label": 26,
2230
+ "upstream": 26,
2231
+ "coreml": 26,
2232
+ "max_abs_probability_error": 5.994321927715873e-09,
2233
+ "max_abs_logit_error": 0.03319191932678223
2234
+ },
2235
+ {
2236
+ "row": 63,
2237
+ "label": 26,
2238
+ "upstream": 26,
2239
+ "coreml": 26,
2240
+ "max_abs_probability_error": 2.4426039316183257e-11,
2241
+ "max_abs_logit_error": 0.030045509338378906
2242
+ },
2243
+ {
2244
+ "row": 64,
2245
+ "label": 26,
2246
+ "upstream": 26,
2247
+ "coreml": 26,
2248
+ "max_abs_probability_error": 2.384185791015625e-07,
2249
+ "max_abs_logit_error": 0.026231765747070312
2250
+ },
2251
+ {
2252
+ "row": 65,
2253
+ "label": 26,
2254
+ "upstream": 26,
2255
+ "coreml": 26,
2256
+ "max_abs_probability_error": 7.78299757975276e-10,
2257
+ "max_abs_logit_error": 0.033112093806266785
2258
+ },
2259
+ {
2260
+ "row": 66,
2261
+ "label": 26,
2262
+ "upstream": 26,
2263
+ "coreml": 26,
2264
+ "max_abs_probability_error": 6.185003176284454e-09,
2265
+ "max_abs_logit_error": 0.022128582000732422
2266
+ },
2267
+ {
2268
+ "row": 67,
2269
+ "label": 26,
2270
+ "upstream": 26,
2271
+ "coreml": 26,
2272
+ "max_abs_probability_error": 3.4556297823229443e-09,
2273
+ "max_abs_logit_error": 0.038306236267089844
2274
+ },
2275
+ {
2276
+ "row": 68,
2277
+ "label": 0,
2278
+ "upstream": 0,
2279
+ "coreml": 0,
2280
+ "max_abs_probability_error": 3.147125244140625e-05,
2281
+ "max_abs_logit_error": 0.03265953063964844
2282
+ },
2283
+ {
2284
+ "row": 69,
2285
+ "label": 1,
2286
+ "upstream": 1,
2287
+ "coreml": 1,
2288
+ "max_abs_probability_error": 5.030632019042969e-05,
2289
+ "max_abs_logit_error": 0.038794517517089844
2290
+ },
2291
+ {
2292
+ "row": 70,
2293
+ "label": 2,
2294
+ "upstream": 2,
2295
+ "coreml": 2,
2296
+ "max_abs_probability_error": 1.7881393432617188e-06,
2297
+ "max_abs_logit_error": 0.040470123291015625
2298
+ },
2299
+ {
2300
+ "row": 71,
2301
+ "label": 3,
2302
+ "upstream": 3,
2303
+ "coreml": 3,
2304
+ "max_abs_probability_error": 5.2928924560546875e-05,
2305
+ "max_abs_logit_error": 0.040035247802734375
2306
+ },
2307
+ {
2308
+ "row": 72,
2309
+ "label": 5,
2310
+ "upstream": 5,
2311
+ "coreml": 5,
2312
+ "max_abs_probability_error": 4.649162292480469e-06,
2313
+ "max_abs_logit_error": 0.042186737060546875
2314
+ },
2315
+ {
2316
+ "row": 73,
2317
+ "label": 6,
2318
+ "upstream": 6,
2319
+ "coreml": 6,
2320
+ "max_abs_probability_error": 2.1576881408691406e-05,
2321
+ "max_abs_logit_error": 0.033161163330078125
2322
+ },
2323
+ {
2324
+ "row": 74,
2325
+ "label": 7,
2326
+ "upstream": 7,
2327
+ "coreml": 7,
2328
+ "max_abs_probability_error": 4.470348358154297e-05,
2329
+ "max_abs_logit_error": 0.0293731689453125
2330
+ },
2331
+ {
2332
+ "row": 75,
2333
+ "label": 8,
2334
+ "upstream": 8,
2335
+ "coreml": 8,
2336
+ "max_abs_probability_error": 1.1563301086425781e-05,
2337
+ "max_abs_logit_error": 0.03249359130859375
2338
+ },
2339
+ {
2340
+ "row": 76,
2341
+ "label": 9,
2342
+ "upstream": 9,
2343
+ "coreml": 9,
2344
+ "max_abs_probability_error": 2.86102294921875e-06,
2345
+ "max_abs_logit_error": 0.03498554229736328
2346
+ },
2347
+ {
2348
+ "row": 77,
2349
+ "label": 13,
2350
+ "upstream": 13,
2351
+ "coreml": 13,
2352
+ "max_abs_probability_error": 0.0003635883331298828,
2353
+ "max_abs_logit_error": 0.023473739624023438
2354
+ },
2355
+ {
2356
+ "row": 78,
2357
+ "label": 20,
2358
+ "upstream": 20,
2359
+ "coreml": 20,
2360
+ "max_abs_probability_error": 9.5367431640625e-07,
2361
+ "max_abs_logit_error": 0.034421443939208984
2362
+ },
2363
+ {
2364
+ "row": 79,
2365
+ "label": 18,
2366
+ "upstream": 18,
2367
+ "coreml": 18,
2368
+ "max_abs_probability_error": 0.0003609657287597656,
2369
+ "max_abs_logit_error": 0.03937721252441406
2370
+ },
2371
+ {
2372
+ "row": 80,
2373
+ "label": 18,
2374
+ "upstream": 18,
2375
+ "coreml": 18,
2376
+ "max_abs_probability_error": 2.384185791015625e-07,
2377
+ "max_abs_logit_error": 0.03752422332763672
2378
+ },
2379
+ {
2380
+ "row": 81,
2381
+ "label": 20,
2382
+ "upstream": 20,
2383
+ "coreml": 20,
2384
+ "max_abs_probability_error": 1.7881393432617188e-06,
2385
+ "max_abs_logit_error": 0.025417327880859375
2386
+ },
2387
+ {
2388
+ "row": 82,
2389
+ "label": 19,
2390
+ "upstream": 19,
2391
+ "coreml": 19,
2392
+ "max_abs_probability_error": 2.384185791015625e-07,
2393
+ "max_abs_logit_error": 0.04453086853027344
2394
+ },
2395
+ {
2396
+ "row": 83,
2397
+ "label": 20,
2398
+ "upstream": 20,
2399
+ "coreml": 20,
2400
+ "max_abs_probability_error": 5.0942090545902374e-09,
2401
+ "max_abs_logit_error": 0.023950576782226562
2402
+ },
2403
+ {
2404
+ "row": 84,
2405
+ "label": 20,
2406
+ "upstream": 20,
2407
+ "coreml": 20,
2408
+ "max_abs_probability_error": 2.384185791015625e-07,
2409
+ "max_abs_logit_error": 0.022706031799316406
2410
+ },
2411
+ {
2412
+ "row": 85,
2413
+ "label": 20,
2414
+ "upstream": 20,
2415
+ "coreml": 20,
2416
+ "max_abs_probability_error": 3.5405053888659666e-10,
2417
+ "max_abs_logit_error": 0.035375118255615234
2418
+ },
2419
+ {
2420
+ "row": 86,
2421
+ "label": 20,
2422
+ "upstream": 20,
2423
+ "coreml": 20,
2424
+ "max_abs_probability_error": 4.76837158203125e-07,
2425
+ "max_abs_logit_error": 0.03717994689941406
2426
+ },
2427
+ {
2428
+ "row": 87,
2429
+ "label": 20,
2430
+ "upstream": 20,
2431
+ "coreml": 20,
2432
+ "max_abs_probability_error": 1.1920928955078125e-07,
2433
+ "max_abs_logit_error": 0.04058122634887695
2434
+ },
2435
+ {
2436
+ "row": 88,
2437
+ "label": 20,
2438
+ "upstream": 20,
2439
+ "coreml": 20,
2440
+ "max_abs_probability_error": 1.3188037328859537e-09,
2441
+ "max_abs_logit_error": 0.032048702239990234
2442
+ },
2443
+ {
2444
+ "row": 89,
2445
+ "label": 20,
2446
+ "upstream": 20,
2447
+ "coreml": 20,
2448
+ "max_abs_probability_error": 1.9970605169561395e-09,
2449
+ "max_abs_logit_error": 0.030427932739257812
2450
+ },
2451
+ {
2452
+ "row": 90,
2453
+ "label": 20,
2454
+ "upstream": 20,
2455
+ "coreml": 20,
2456
+ "max_abs_probability_error": 1.7617375336342889e-09,
2457
+ "max_abs_logit_error": 0.0281219482421875
2458
+ },
2459
+ {
2460
+ "row": 91,
2461
+ "label": 20,
2462
+ "upstream": 20,
2463
+ "coreml": 20,
2464
+ "max_abs_probability_error": 1.612549260787688e-10,
2465
+ "max_abs_logit_error": 0.030226707458496094
2466
+ },
2467
+ {
2468
+ "row": 92,
2469
+ "label": 20,
2470
+ "upstream": 20,
2471
+ "coreml": 20,
2472
+ "max_abs_probability_error": 6.506330630512425e-12,
2473
+ "max_abs_logit_error": 0.04007530212402344
2474
+ },
2475
+ {
2476
+ "row": 93,
2477
+ "label": 20,
2478
+ "upstream": 20,
2479
+ "coreml": 20,
2480
+ "max_abs_probability_error": 1.5150824594911683e-08,
2481
+ "max_abs_logit_error": 0.02728891372680664
2482
+ },
2483
+ {
2484
+ "row": 94,
2485
+ "label": 20,
2486
+ "upstream": 20,
2487
+ "coreml": 20,
2488
+ "max_abs_probability_error": 1.3666674458789885e-09,
2489
+ "max_abs_logit_error": 0.0217437744140625
2490
+ },
2491
+ {
2492
+ "row": 95,
2493
+ "label": 20,
2494
+ "upstream": 20,
2495
+ "coreml": 20,
2496
+ "max_abs_probability_error": 3.969476136678196e-10,
2497
+ "max_abs_logit_error": 0.03214454650878906
2498
+ },
2499
+ {
2500
+ "row": 96,
2501
+ "label": 20,
2502
+ "upstream": 20,
2503
+ "coreml": 20,
2504
+ "max_abs_probability_error": 2.657726538846106e-10,
2505
+ "max_abs_logit_error": 0.03669023513793945
2506
+ },
2507
+ {
2508
+ "row": 97,
2509
+ "label": 20,
2510
+ "upstream": 20,
2511
+ "coreml": 20,
2512
+ "max_abs_probability_error": 1.9073486328125e-06,
2513
+ "max_abs_logit_error": 0.019012451171875
2514
+ },
2515
+ {
2516
+ "row": 98,
2517
+ "label": 20,
2518
+ "upstream": 20,
2519
+ "coreml": 20,
2520
+ "max_abs_probability_error": 2.384185791015625e-07,
2521
+ "max_abs_logit_error": 0.026651382446289062
2522
+ },
2523
+ {
2524
+ "row": 99,
2525
+ "label": 20,
2526
+ "upstream": 20,
2527
+ "coreml": 20,
2528
+ "max_abs_probability_error": 2.1457672119140625e-06,
2529
+ "max_abs_logit_error": 0.04161381721496582
2530
+ },
2531
+ {
2532
+ "row": 100,
2533
+ "label": 20,
2534
+ "upstream": 20,
2535
+ "coreml": 20,
2536
+ "max_abs_probability_error": 9.5367431640625e-07,
2537
+ "max_abs_logit_error": 0.04680633544921875
2538
+ },
2539
+ {
2540
+ "row": 101,
2541
+ "label": 20,
2542
+ "upstream": 20,
2543
+ "coreml": 20,
2544
+ "max_abs_probability_error": 1.789079107084035e-08,
2545
+ "max_abs_logit_error": 0.029542922973632812
2546
+ },
2547
+ {
2548
+ "row": 102,
2549
+ "label": 20,
2550
+ "upstream": 20,
2551
+ "coreml": 20,
2552
+ "max_abs_probability_error": 2.5862225694339713e-09,
2553
+ "max_abs_logit_error": 0.023795127868652344
2554
+ },
2555
+ {
2556
+ "row": 103,
2557
+ "label": 20,
2558
+ "upstream": 20,
2559
+ "coreml": 20,
2560
+ "max_abs_probability_error": 0.00024586915969848633,
2561
+ "max_abs_logit_error": 0.030111312866210938
2562
+ },
2563
+ {
2564
+ "row": 104,
2565
+ "label": 20,
2566
+ "upstream": 20,
2567
+ "coreml": 20,
2568
+ "max_abs_probability_error": 5.841255187988281e-06,
2569
+ "max_abs_logit_error": 0.03126239776611328
2570
+ },
2571
+ {
2572
+ "row": 105,
2573
+ "label": 20,
2574
+ "upstream": 20,
2575
+ "coreml": 20,
2576
+ "max_abs_probability_error": 4.928799035575082e-10,
2577
+ "max_abs_logit_error": 0.026149272918701172
2578
+ },
2579
+ {
2580
+ "row": 106,
2581
+ "label": 20,
2582
+ "upstream": 20,
2583
+ "coreml": 20,
2584
+ "max_abs_probability_error": 2.4136979082101107e-09,
2585
+ "max_abs_logit_error": 0.024585723876953125
2586
+ },
2587
+ {
2588
+ "row": 107,
2589
+ "label": 20,
2590
+ "upstream": 20,
2591
+ "coreml": 20,
2592
+ "max_abs_probability_error": 6.302839361538304e-10,
2593
+ "max_abs_logit_error": 0.024765491485595703
2594
+ },
2595
+ {
2596
+ "row": 108,
2597
+ "label": 20,
2598
+ "upstream": 20,
2599
+ "coreml": 20,
2600
+ "max_abs_probability_error": 1.1920928955078125e-07,
2601
+ "max_abs_logit_error": 0.03492164611816406
2602
+ },
2603
+ {
2604
+ "row": 109,
2605
+ "label": 20,
2606
+ "upstream": 20,
2607
+ "coreml": 20,
2608
+ "max_abs_probability_error": 9.5367431640625e-07,
2609
+ "max_abs_logit_error": 0.034421443939208984
2610
+ },
2611
+ {
2612
+ "row": 110,
2613
+ "label": 20,
2614
+ "upstream": 20,
2615
+ "coreml": 20,
2616
+ "max_abs_probability_error": 9.5367431640625e-07,
2617
+ "max_abs_logit_error": 0.0320439338684082
2618
+ },
2619
+ {
2620
+ "row": 111,
2621
+ "label": 20,
2622
+ "upstream": 20,
2623
+ "coreml": 20,
2624
+ "max_abs_probability_error": 1.811981201171875e-05,
2625
+ "max_abs_logit_error": 0.032814979553222656
2626
+ },
2627
+ {
2628
+ "row": 112,
2629
+ "label": 20,
2630
+ "upstream": 20,
2631
+ "coreml": 20,
2632
+ "max_abs_probability_error": 1.7881393432617188e-06,
2633
+ "max_abs_logit_error": 0.025417327880859375
2634
+ },
2635
+ {
2636
+ "row": 113,
2637
+ "label": 19,
2638
+ "upstream": 19,
2639
+ "coreml": 19,
2640
+ "max_abs_probability_error": 2.384185791015625e-07,
2641
+ "max_abs_logit_error": 0.04453086853027344
2642
+ },
2643
+ {
2644
+ "row": 114,
2645
+ "label": 20,
2646
+ "upstream": 20,
2647
+ "coreml": 20,
2648
+ "max_abs_probability_error": 5.0942090545902374e-09,
2649
+ "max_abs_logit_error": 0.023950576782226562
2650
+ },
2651
+ {
2652
+ "row": 115,
2653
+ "label": 20,
2654
+ "upstream": 20,
2655
+ "coreml": 20,
2656
+ "max_abs_probability_error": 2.384185791015625e-07,
2657
+ "max_abs_logit_error": 0.022706031799316406
2658
+ },
2659
+ {
2660
+ "row": 116,
2661
+ "label": 20,
2662
+ "upstream": 20,
2663
+ "coreml": 20,
2664
+ "max_abs_probability_error": 3.5405053888659666e-10,
2665
+ "max_abs_logit_error": 0.035375118255615234
2666
+ },
2667
+ {
2668
+ "row": 117,
2669
+ "label": 20,
2670
+ "upstream": 20,
2671
+ "coreml": 20,
2672
+ "max_abs_probability_error": 4.76837158203125e-07,
2673
+ "max_abs_logit_error": 0.03717994689941406
2674
+ },
2675
+ {
2676
+ "row": 118,
2677
+ "label": 20,
2678
+ "upstream": 20,
2679
+ "coreml": 20,
2680
+ "max_abs_probability_error": 1.1920928955078125e-07,
2681
+ "max_abs_logit_error": 0.04058122634887695
2682
+ },
2683
+ {
2684
+ "row": 119,
2685
+ "label": 20,
2686
+ "upstream": 20,
2687
+ "coreml": 20,
2688
+ "max_abs_probability_error": 1.3188037328859537e-09,
2689
+ "max_abs_logit_error": 0.032048702239990234
2690
+ },
2691
+ {
2692
+ "row": 120,
2693
+ "label": 20,
2694
+ "upstream": 20,
2695
+ "coreml": 20,
2696
+ "max_abs_probability_error": 1.9970605169561395e-09,
2697
+ "max_abs_logit_error": 0.030427932739257812
2698
+ },
2699
+ {
2700
+ "row": 121,
2701
+ "label": 20,
2702
+ "upstream": 20,
2703
+ "coreml": 20,
2704
+ "max_abs_probability_error": 1.7617375336342889e-09,
2705
+ "max_abs_logit_error": 0.0281219482421875
2706
+ },
2707
+ {
2708
+ "row": 122,
2709
+ "label": 20,
2710
+ "upstream": 20,
2711
+ "coreml": 20,
2712
+ "max_abs_probability_error": 1.612549260787688e-10,
2713
+ "max_abs_logit_error": 0.030226707458496094
2714
+ },
2715
+ {
2716
+ "row": 123,
2717
+ "label": 20,
2718
+ "upstream": 20,
2719
+ "coreml": 20,
2720
+ "max_abs_probability_error": 6.506330630512425e-12,
2721
+ "max_abs_logit_error": 0.04007530212402344
2722
+ },
2723
+ {
2724
+ "row": 124,
2725
+ "label": 20,
2726
+ "upstream": 20,
2727
+ "coreml": 20,
2728
+ "max_abs_probability_error": 1.5150824594911683e-08,
2729
+ "max_abs_logit_error": 0.02728891372680664
2730
+ },
2731
+ {
2732
+ "row": 125,
2733
+ "label": 20,
2734
+ "upstream": 20,
2735
+ "coreml": 20,
2736
+ "max_abs_probability_error": 1.3666674458789885e-09,
2737
+ "max_abs_logit_error": 0.0217437744140625
2738
+ },
2739
+ {
2740
+ "row": 126,
2741
+ "label": 20,
2742
+ "upstream": 20,
2743
+ "coreml": 20,
2744
+ "max_abs_probability_error": 3.969476136678196e-10,
2745
+ "max_abs_logit_error": 0.03214454650878906
2746
+ },
2747
+ {
2748
+ "row": 127,
2749
+ "label": 20,
2750
+ "upstream": 20,
2751
+ "coreml": 20,
2752
+ "max_abs_probability_error": 2.657726538846106e-10,
2753
+ "max_abs_logit_error": 0.03669023513793945
2754
+ },
2755
+ {
2756
+ "row": 128,
2757
+ "label": 20,
2758
+ "upstream": 20,
2759
+ "coreml": 20,
2760
+ "max_abs_probability_error": 1.9073486328125e-06,
2761
+ "max_abs_logit_error": 0.019012451171875
2762
+ },
2763
+ {
2764
+ "row": 129,
2765
+ "label": 20,
2766
+ "upstream": 20,
2767
+ "coreml": 20,
2768
+ "max_abs_probability_error": 2.384185791015625e-07,
2769
+ "max_abs_logit_error": 0.026651382446289062
2770
+ },
2771
+ {
2772
+ "row": 130,
2773
+ "label": 1,
2774
+ "upstream": 1,
2775
+ "coreml": 1,
2776
+ "max_abs_probability_error": 3.170967102050781e-05,
2777
+ "max_abs_logit_error": 0.071075439453125
2778
+ },
2779
+ {
2780
+ "row": 131,
2781
+ "label": 2,
2782
+ "upstream": 2,
2783
+ "coreml": 2,
2784
+ "max_abs_probability_error": 8.344650268554688e-07,
2785
+ "max_abs_logit_error": 0.051357269287109375
2786
+ },
2787
+ {
2788
+ "row": 132,
2789
+ "label": 3,
2790
+ "upstream": 3,
2791
+ "coreml": 3,
2792
+ "max_abs_probability_error": 2.7894973754882812e-05,
2793
+ "max_abs_logit_error": 0.033801641315221786
2794
+ },
2795
+ {
2796
+ "row": 133,
2797
+ "label": 4,
2798
+ "upstream": 4,
2799
+ "coreml": 4,
2800
+ "max_abs_probability_error": 1.0967254638671875e-05,
2801
+ "max_abs_logit_error": 0.039325714111328125
2802
+ },
2803
+ {
2804
+ "row": 134,
2805
+ "label": 5,
2806
+ "upstream": 5,
2807
+ "coreml": 5,
2808
+ "max_abs_probability_error": 6.258487701416016e-05,
2809
+ "max_abs_logit_error": 0.033056676387786865
2810
+ },
2811
+ {
2812
+ "row": 135,
2813
+ "label": 6,
2814
+ "upstream": 6,
2815
+ "coreml": 6,
2816
+ "max_abs_probability_error": 1.2993812561035156e-05,
2817
+ "max_abs_logit_error": 0.02561807632446289
2818
+ },
2819
+ {
2820
+ "row": 136,
2821
+ "label": 7,
2822
+ "upstream": 7,
2823
+ "coreml": 7,
2824
+ "max_abs_probability_error": 6.198883056640625e-06,
2825
+ "max_abs_logit_error": 0.03448677062988281
2826
+ },
2827
+ {
2828
+ "row": 137,
2829
+ "label": 8,
2830
+ "upstream": 8,
2831
+ "coreml": 8,
2832
+ "max_abs_probability_error": 0.00233614444732666,
2833
+ "max_abs_logit_error": 0.04230833053588867
2834
+ },
2835
+ {
2836
+ "row": 138,
2837
+ "label": 9,
2838
+ "upstream": 9,
2839
+ "coreml": 9,
2840
+ "max_abs_probability_error": 0.00022917985916137695,
2841
+ "max_abs_logit_error": 0.05339241027832031
2842
+ },
2843
+ {
2844
+ "row": 139,
2845
+ "label": 10,
2846
+ "upstream": 10,
2847
+ "coreml": 10,
2848
+ "max_abs_probability_error": 4.851818084716797e-05,
2849
+ "max_abs_logit_error": 0.032756805419921875
2850
+ },
2851
+ {
2852
+ "row": 140,
2853
+ "label": 11,
2854
+ "upstream": 11,
2855
+ "coreml": 11,
2856
+ "max_abs_probability_error": 3.0994415283203125e-06,
2857
+ "max_abs_logit_error": 0.029809951782226562
2858
+ },
2859
+ {
2860
+ "row": 141,
2861
+ "label": 12,
2862
+ "upstream": 12,
2863
+ "coreml": 12,
2864
+ "max_abs_probability_error": 9.34600830078125e-05,
2865
+ "max_abs_logit_error": 0.026587963104248047
2866
+ },
2867
+ {
2868
+ "row": 142,
2869
+ "label": 18,
2870
+ "upstream": 18,
2871
+ "coreml": 18,
2872
+ "max_abs_probability_error": 1.9073486328125e-06,
2873
+ "max_abs_logit_error": 0.03671073913574219
2874
+ },
2875
+ {
2876
+ "row": 143,
2877
+ "label": 16,
2878
+ "upstream": 16,
2879
+ "coreml": 16,
2880
+ "max_abs_probability_error": 7.152557373046875e-07,
2881
+ "max_abs_logit_error": 0.05281543731689453
2882
+ },
2883
+ {
2884
+ "row": 144,
2885
+ "label": 18,
2886
+ "upstream": 18,
2887
+ "coreml": 18,
2888
+ "max_abs_probability_error": 1.1920928955078125e-06,
2889
+ "max_abs_logit_error": 0.04511451721191406
2890
+ },
2891
+ {
2892
+ "row": 145,
2893
+ "label": 18,
2894
+ "upstream": 18,
2895
+ "coreml": 18,
2896
+ "max_abs_probability_error": 3.6954879760742188e-06,
2897
+ "max_abs_logit_error": 0.07230281829833984
2898
+ },
2899
+ {
2900
+ "row": 146,
2901
+ "label": 17,
2902
+ "upstream": 17,
2903
+ "coreml": 17,
2904
+ "max_abs_probability_error": 1.1920928955078125e-07,
2905
+ "max_abs_logit_error": 0.03114461898803711
2906
+ },
2907
+ {
2908
+ "row": 147,
2909
+ "label": 18,
2910
+ "upstream": 18,
2911
+ "coreml": 18,
2912
+ "max_abs_probability_error": 8.429776876539563e-09,
2913
+ "max_abs_logit_error": 0.020772457122802734
2914
+ },
2915
+ {
2916
+ "row": 148,
2917
+ "label": 18,
2918
+ "upstream": 18,
2919
+ "coreml": 18,
2920
+ "max_abs_probability_error": 9.215698426601193e-09,
2921
+ "max_abs_logit_error": 0.03475606441497803
2922
+ },
2923
+ {
2924
+ "row": 149,
2925
+ "label": 18,
2926
+ "upstream": 18,
2927
+ "coreml": 18,
2928
+ "max_abs_probability_error": 3.84208304060607e-10,
2929
+ "max_abs_logit_error": 0.020298004150390625
2930
+ },
2931
+ {
2932
+ "row": 150,
2933
+ "label": 18,
2934
+ "upstream": 18,
2935
+ "coreml": 18,
2936
+ "max_abs_probability_error": 7.947568818333917e-12,
2937
+ "max_abs_logit_error": 0.04283332824707031
2938
+ },
2939
+ {
2940
+ "row": 151,
2941
+ "label": 18,
2942
+ "upstream": 18,
2943
+ "coreml": 18,
2944
+ "max_abs_probability_error": 5.291168614363073e-10,
2945
+ "max_abs_logit_error": 0.028450965881347656
2946
+ },
2947
+ {
2948
+ "row": 152,
2949
+ "label": 18,
2950
+ "upstream": 18,
2951
+ "coreml": 18,
2952
+ "max_abs_probability_error": 7.924417788629512e-10,
2953
+ "max_abs_logit_error": 0.02250051498413086
2954
+ },
2955
+ {
2956
+ "row": 153,
2957
+ "label": 18,
2958
+ "upstream": 18,
2959
+ "coreml": 18,
2960
+ "max_abs_probability_error": 1.837478791344438e-08,
2961
+ "max_abs_logit_error": 0.06335592269897461
2962
+ },
2963
+ {
2964
+ "row": 154,
2965
+ "label": 18,
2966
+ "upstream": 18,
2967
+ "coreml": 18,
2968
+ "max_abs_probability_error": 3.3051329034750054e-11,
2969
+ "max_abs_logit_error": 0.02735137939453125
2970
+ },
2971
+ {
2972
+ "row": 155,
2973
+ "label": 18,
2974
+ "upstream": 18,
2975
+ "coreml": 18,
2976
+ "max_abs_probability_error": 1.650468511860126e-10,
2977
+ "max_abs_logit_error": 0.015047073364257812
2978
+ },
2979
+ {
2980
+ "row": 156,
2981
+ "label": 18,
2982
+ "upstream": 18,
2983
+ "coreml": 18,
2984
+ "max_abs_probability_error": 6.181078218703284e-12,
2985
+ "max_abs_logit_error": 0.04868888854980469
2986
+ },
2987
+ {
2988
+ "row": 157,
2989
+ "label": 18,
2990
+ "upstream": 18,
2991
+ "coreml": 18,
2992
+ "max_abs_probability_error": 1.6455586893115992e-10,
2993
+ "max_abs_logit_error": 0.026497364044189453
2994
+ },
2995
+ {
2996
+ "row": 158,
2997
+ "label": 18,
2998
+ "upstream": 18,
2999
+ "coreml": 18,
3000
+ "max_abs_probability_error": 6.109900363426846e-10,
3001
+ "max_abs_logit_error": 0.022236347198486328
3002
+ },
3003
+ {
3004
+ "row": 159,
3005
+ "label": 18,
3006
+ "upstream": 18,
3007
+ "coreml": 18,
3008
+ "max_abs_probability_error": 6.693580800742893e-09,
3009
+ "max_abs_logit_error": 0.020044326782226562
3010
+ },
3011
+ {
3012
+ "row": 160,
3013
+ "label": 18,
3014
+ "upstream": 18,
3015
+ "coreml": 18,
3016
+ "max_abs_probability_error": 1.3718365998727222e-08,
3017
+ "max_abs_logit_error": 0.05533123016357422
3018
+ },
3019
+ {
3020
+ "row": 161,
3021
+ "label": 18,
3022
+ "upstream": 18,
3023
+ "coreml": 18,
3024
+ "max_abs_probability_error": 8.344650268554688e-07,
3025
+ "max_abs_logit_error": 0.0247042179107666
3026
+ },
3027
+ {
3028
+ "row": 162,
3029
+ "label": 18,
3030
+ "upstream": 18,
3031
+ "coreml": 18,
3032
+ "max_abs_probability_error": 1.042114572413766e-08,
3033
+ "max_abs_logit_error": 0.028873443603515625
3034
+ },
3035
+ {
3036
+ "row": 163,
3037
+ "label": 18,
3038
+ "upstream": 18,
3039
+ "coreml": 18,
3040
+ "max_abs_probability_error": 1.9131388140358752e-10,
3041
+ "max_abs_logit_error": 0.015494346618652344
3042
+ },
3043
+ {
3044
+ "row": 164,
3045
+ "label": 18,
3046
+ "upstream": 18,
3047
+ "coreml": 18,
3048
+ "max_abs_probability_error": 1.0254025184508464e-08,
3049
+ "max_abs_logit_error": 0.02497100830078125
3050
+ },
3051
+ {
3052
+ "row": 165,
3053
+ "label": 18,
3054
+ "upstream": 18,
3055
+ "coreml": 18,
3056
+ "max_abs_probability_error": 5.15840287151903e-11,
3057
+ "max_abs_logit_error": 0.02679443359375
3058
+ },
3059
+ {
3060
+ "row": 166,
3061
+ "label": 18,
3062
+ "upstream": 18,
3063
+ "coreml": 18,
3064
+ "max_abs_probability_error": 2.6797479790729994e-09,
3065
+ "max_abs_logit_error": 0.028203964233398438
3066
+ },
3067
+ {
3068
+ "row": 167,
3069
+ "label": 18,
3070
+ "upstream": 18,
3071
+ "coreml": 18,
3072
+ "max_abs_probability_error": 7.54509399403247e-10,
3073
+ "max_abs_logit_error": 0.03371429443359375
3074
+ },
3075
+ {
3076
+ "row": 168,
3077
+ "label": 18,
3078
+ "upstream": 18,
3079
+ "coreml": 18,
3080
+ "max_abs_probability_error": 8.344650268554688e-07,
3081
+ "max_abs_logit_error": 0.028280355036258698
3082
+ },
3083
+ {
3084
+ "row": 169,
3085
+ "label": 18,
3086
+ "upstream": 18,
3087
+ "coreml": 18,
3088
+ "max_abs_probability_error": 2.4169340140378637e-11,
3089
+ "max_abs_logit_error": 0.038245439529418945
3090
+ },
3091
+ {
3092
+ "row": 170,
3093
+ "label": 18,
3094
+ "upstream": 18,
3095
+ "coreml": 18,
3096
+ "max_abs_probability_error": 3.0329603412093675e-11,
3097
+ "max_abs_logit_error": 0.030043363571166992
3098
+ },
3099
+ {
3100
+ "row": 171,
3101
+ "label": 18,
3102
+ "upstream": 18,
3103
+ "coreml": 18,
3104
+ "max_abs_probability_error": 1.7881393432617188e-06,
3105
+ "max_abs_logit_error": 0.02963542938232422
3106
+ },
3107
+ {
3108
+ "row": 172,
3109
+ "label": 18,
3110
+ "upstream": 18,
3111
+ "coreml": 18,
3112
+ "max_abs_probability_error": 4.66337235494052e-09,
3113
+ "max_abs_logit_error": 0.03510093688964844
3114
+ },
3115
+ {
3116
+ "row": 173,
3117
+ "label": 18,
3118
+ "upstream": 18,
3119
+ "coreml": 18,
3120
+ "max_abs_probability_error": 1.2885730260592254e-09,
3121
+ "max_abs_logit_error": 0.04009199142456055
3122
+ },
3123
+ {
3124
+ "row": 174,
3125
+ "label": 18,
3126
+ "upstream": 18,
3127
+ "coreml": 18,
3128
+ "max_abs_probability_error": 1.1279766010119374e-09,
3129
+ "max_abs_logit_error": 0.031810760498046875
3130
+ },
3131
+ {
3132
+ "row": 175,
3133
+ "label": 18,
3134
+ "upstream": 18,
3135
+ "coreml": 18,
3136
+ "max_abs_probability_error": 1.9073486328125e-06,
3137
+ "max_abs_logit_error": 0.03671073913574219
3138
+ },
3139
+ {
3140
+ "row": 176,
3141
+ "label": 18,
3142
+ "upstream": 18,
3143
+ "coreml": 18,
3144
+ "max_abs_probability_error": 1.0728836059570312e-06,
3145
+ "max_abs_logit_error": 0.05123615264892578
3146
+ },
3147
+ {
3148
+ "row": 177,
3149
+ "label": 18,
3150
+ "upstream": 18,
3151
+ "coreml": 18,
3152
+ "max_abs_probability_error": 1.2799782567185503e-08,
3153
+ "max_abs_logit_error": 0.03157186508178711
3154
+ },
3155
+ {
3156
+ "row": 178,
3157
+ "label": 18,
3158
+ "upstream": 18,
3159
+ "coreml": 18,
3160
+ "max_abs_probability_error": 3.6954879760742188e-06,
3161
+ "max_abs_logit_error": 0.07230281829833984
3162
+ },
3163
+ {
3164
+ "row": 179,
3165
+ "label": 17,
3166
+ "upstream": 17,
3167
+ "coreml": 17,
3168
+ "max_abs_probability_error": 1.1920928955078125e-07,
3169
+ "max_abs_logit_error": 0.03114461898803711
3170
+ },
3171
+ {
3172
+ "row": 180,
3173
+ "label": 18,
3174
+ "upstream": 18,
3175
+ "coreml": 18,
3176
+ "max_abs_probability_error": 8.429776876539563e-09,
3177
+ "max_abs_logit_error": 0.020772457122802734
3178
+ },
3179
+ {
3180
+ "row": 181,
3181
+ "label": 18,
3182
+ "upstream": 18,
3183
+ "coreml": 18,
3184
+ "max_abs_probability_error": 9.215698426601193e-09,
3185
+ "max_abs_logit_error": 0.03475606441497803
3186
+ },
3187
+ {
3188
+ "row": 182,
3189
+ "label": 18,
3190
+ "upstream": 18,
3191
+ "coreml": 18,
3192
+ "max_abs_probability_error": 3.84208304060607e-10,
3193
+ "max_abs_logit_error": 0.020298004150390625
3194
+ },
3195
+ {
3196
+ "row": 183,
3197
+ "label": 18,
3198
+ "upstream": 18,
3199
+ "coreml": 18,
3200
+ "max_abs_probability_error": 7.947568818333917e-12,
3201
+ "max_abs_logit_error": 0.04283332824707031
3202
+ },
3203
+ {
3204
+ "row": 184,
3205
+ "label": 18,
3206
+ "upstream": 18,
3207
+ "coreml": 18,
3208
+ "max_abs_probability_error": 5.291168614363073e-10,
3209
+ "max_abs_logit_error": 0.028450965881347656
3210
+ },
3211
+ {
3212
+ "row": 185,
3213
+ "label": 18,
3214
+ "upstream": 18,
3215
+ "coreml": 18,
3216
+ "max_abs_probability_error": 7.924417788629512e-10,
3217
+ "max_abs_logit_error": 0.02250051498413086
3218
+ },
3219
+ {
3220
+ "row": 186,
3221
+ "label": 18,
3222
+ "upstream": 18,
3223
+ "coreml": 18,
3224
+ "max_abs_probability_error": 1.837478791344438e-08,
3225
+ "max_abs_logit_error": 0.06335592269897461
3226
+ },
3227
+ {
3228
+ "row": 187,
3229
+ "label": 18,
3230
+ "upstream": 18,
3231
+ "coreml": 18,
3232
+ "max_abs_probability_error": 3.3051329034750054e-11,
3233
+ "max_abs_logit_error": 0.02735137939453125
3234
+ },
3235
+ {
3236
+ "row": 188,
3237
+ "label": 18,
3238
+ "upstream": 18,
3239
+ "coreml": 18,
3240
+ "max_abs_probability_error": 1.650468511860126e-10,
3241
+ "max_abs_logit_error": 0.015047073364257812
3242
+ },
3243
+ {
3244
+ "row": 189,
3245
+ "label": 18,
3246
+ "upstream": 18,
3247
+ "coreml": 18,
3248
+ "max_abs_probability_error": 6.181078218703284e-12,
3249
+ "max_abs_logit_error": 0.04868888854980469
3250
+ },
3251
+ {
3252
+ "row": 190,
3253
+ "label": 18,
3254
+ "upstream": 18,
3255
+ "coreml": 18,
3256
+ "max_abs_probability_error": 1.6455586893115992e-10,
3257
+ "max_abs_logit_error": 0.026497364044189453
3258
+ },
3259
+ {
3260
+ "row": 191,
3261
+ "label": 18,
3262
+ "upstream": 18,
3263
+ "coreml": 18,
3264
+ "max_abs_probability_error": 6.109900363426846e-10,
3265
+ "max_abs_logit_error": 0.022236347198486328
3266
+ },
3267
+ {
3268
+ "row": 192,
3269
+ "label": 18,
3270
+ "upstream": 18,
3271
+ "coreml": 18,
3272
+ "max_abs_probability_error": 6.693580800742893e-09,
3273
+ "max_abs_logit_error": 0.020044326782226562
3274
+ },
3275
+ {
3276
+ "row": 193,
3277
+ "label": 18,
3278
+ "upstream": 18,
3279
+ "coreml": 18,
3280
+ "max_abs_probability_error": 1.3718365998727222e-08,
3281
+ "max_abs_logit_error": 0.05533123016357422
3282
+ },
3283
+ {
3284
+ "row": 194,
3285
+ "label": 18,
3286
+ "upstream": 18,
3287
+ "coreml": 18,
3288
+ "max_abs_probability_error": 8.344650268554688e-07,
3289
+ "max_abs_logit_error": 0.0247042179107666
3290
+ },
3291
+ {
3292
+ "row": 195,
3293
+ "label": 18,
3294
+ "upstream": 18,
3295
+ "coreml": 18,
3296
+ "max_abs_probability_error": 1.042114572413766e-08,
3297
+ "max_abs_logit_error": 0.028873443603515625
3298
+ }
3299
+ ]
3300
+ }
3301
+ },
3302
+ "passed": true,
3303
+ "code_sha256": {
3304
+ "ane_gather.py": "c3379a3797041dcfed82eaaea3990771ec91f1dff7ec146b025988ad7a8c9aae",
3305
+ "assets.py": "f7a5bc931075237e00c73bf21fee3575be35531f934f23b5e22627d50a79f92f",
3306
+ "convert-coreml.py": "46fe0194df924033126286e601214b6789f5d667aae38c153cf4dbc1b0e629b0",
3307
+ "export-reference.py": "ff9eab4d6e4e72ffaf074d82610f41fbea1e802da7c0e987ce562a89eb561b99",
3308
+ "export_model.py": "c61da5d678c77030d1e9a78359626063ea31da46fb6434e49517fdeaa7800949",
3309
+ "preprocessing.py": "18c74ede43f95f91cd638c7e9631923a353e3a24d3b522ddb8b18b480f9c2846",
3310
+ "profile-coreml.py": "d5e1386f54fc6c482647120e593e7ffbbe4bbb277c2cc6d4949154660fe239fd",
3311
+ "score-report.py": "c78e45caa86fb59f9a56ef18cc6a35020ea6e281a6a23d23618f56da85a0d95e",
3312
+ "verify.py": "bc20ec9df47708e9b48e411076abe4eab7c18313f67e11334de2d9e3ecb3efa7"
3313
+ }
3314
+ }
reports/swift-ane-validation.json ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "byte_encoding_limits_and_rejection": "passed",
3
+ "concurrent_reversed_rows": 6,
4
+ "correct": 196,
5
+ "dataset_sha256": "4f43b442e79ba2e2ce731e27e9b8e340c2b5dfcaffc92d8ff564c34f115ff1ca",
6
+ "maximum_probability_error": 0.00233614444732666,
7
+ "model_path": "ane-gather/cua_s1_forms_fp16_options32.mlpackage",
8
+ "os": "Version 27.0 (Build 26A428)",
9
+ "purpose": "Standalone Swift validation against the real upstream demo; XCTest unavailable locally",
10
+ "rows": 196,
11
+ "shared_compiled_cache": "passed"
12
+ }