alexwengg commited on
Commit
c87b915
·
verified ·
1 Parent(s): 8fddcd5

Add CUA-S1-FORMS FP16 Core ML conversion and verified artifacts

Browse files

Add the 706,048-parameter CUA-S1-FORMS decision scorer as a portable FP16 Core ML package and compiled FluidAudio bundle, with encoding helper, pinned provenance, licenses, checksums, and conversion reports.

Validation uses the complete pinned 196-row upstream demo, not a new synthetic dataset. PyTorch, Core ML ALL, and Core ML CPU_AND_NE select all 196 labeled options correctly. Maximum probability differences are 0.003099 and 0.002336 respectively, below the preselected 0.005 tolerance. The unmodified Cua evaluator reports zero wrong actions, wrong targets, or unsafe actions on these saved predictions. Seventeen Python regression tests pass.

FluidAudio's Swift runtime independently matches all 196 decisions against the PyTorch probabilities (maximum error 0.002336), including local package loading, shared compiled-model cache loading, UTF-8 encoding, and concurrent/reordered-option checks. The Swift library builds; local XCTest execution is unavailable because this Mac has Command Line Tools without the XCTest framework.

The package is 1,511,163 bytes. Timings and ANE/CPU placement are exploratory measurements on the documented M5 Pro, not general GUI-automation or mobile-device benchmarks. The caller supplies document entities and UI descriptions and owns action validation and execution.

Related code branches:
- https://github.com/FluidInference/mobius/tree/codex/cua-s1-forms
- https://github.com/FluidInference/FluidAudio/tree/codex/cua-s1-forms

Merge this model PR before enabling FluidAudio's default download path. This PR does not merge or release the model automatically.

LICENSE ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Cua AI, Inc.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
NOTICES.md ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Distribution notices
2
+
3
+ This repository distributes FP16 Core ML derivatives of the MIT-licensed
4
+ CUA-S1-FORMS checkpoint published by Cua at
5
+ https://huggingface.co/cua-ai/cua-s1-forms/tree/f54adbf447f4ca6ec259f529ee3f2e3e09f8cc71.
6
+ The Cua MIT license is included as LICENSE.
7
+
8
+ The model implementation includes byte-collation and attention primitives adapted
9
+ from Minimal Labs' MIT-licensed jevlike project. Its copyright and license are
10
+ preserved in UPSTREAM-THIRD-PARTY-NOTICES.md. That file is an unmodified notice
11
+ from the source distribution; its statement that the source package does not
12
+ bundle model weights describes that upstream package. This derived distribution
13
+ does include the converted weights listed above.
14
+
15
+ The upstream demo dataset, training datasets, source safetensors checkpoint,
16
+ Python environment, and third-party dependencies are not bundled. The local
17
+ preprocessing helper is from the FluidInference Mobius conversion toolkit.
18
+ Model/data revisions and source download hashes are recorded in assets.lock.json.
README.md ADDED
@@ -0,0 +1,172 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: mit
3
+ library_name: coreml
4
+ pipeline_tag: text-classification
5
+ base_model: cua-ai/cua-s1-forms
6
+ base_model_relation: quantized
7
+ datasets:
8
+ - cua-ai/cua-s1-forms
9
+ tags:
10
+ - coreml
11
+ - apple-silicon
12
+ - computer-use
13
+ - classification
14
+ - cua-s1
15
+ - fp16
16
+ ---
17
+
18
+ # CUA-S1-FORMS — Core ML
19
+
20
+ FP16 Core ML conversion of [Cua's CUA-S1-FORMS](https://huggingface.co/cua-ai/cua-s1-forms),
21
+ a **706,048-parameter** specialist that selects among supplied form actions.
22
+ The portable package is **1,511,163 bytes (1.51 MB)**. No text generation, KV cache,
23
+ or external tokenizer is required.
24
+
25
+ The model uses small Transformer encoders over UTF-8 bytes and an attention
26
+ readout. It is a classifier, not an autoregressive LLM. The inherited checkpoint
27
+ configuration contains an unused `hf_model` value; this `tinyx` checkpoint does
28
+ not load Qwen weights.
29
+
30
+ ## Files
31
+
32
+ | File | Purpose |
33
+ | --- | --- |
34
+ | `cua_s1_forms_fp16_options32.mlpackage/` | Portable model; compile locally or add to Xcode |
35
+ | `cua_s1_forms_fp16_options32.mlmodelc/` | Compiled bundle for FluidAudio's model loader |
36
+ | `preprocessing.py` | Upstream-compatible byte encoding and input validation |
37
+ | `conversion.json` | Architecture, conversion versions, and portable package hashes |
38
+ | `assets.lock.json` | Pinned upstream source, model, and demo hashes |
39
+ | `checksums.json` | SHA-256 of each distributed file except this checksum file |
40
+ | `reports/` | Per-row parity, original Cua metrics, and compute-placement report |
41
+
42
+ The model targets **iOS 17/macOS 14 or newer**. Runtime validation used an Apple
43
+ silicon Mac. Use the portable package for local compilation on other supported
44
+ systems; iPhone performance and compatibility of the precompiled bundle across
45
+ older OS versions have not been measured.
46
+
47
+ ## Python usage
48
+
49
+ Install `coremltools==9.0`, `numpy==1.26.4`, and `huggingface_hub` on macOS.
50
+ Download this repository, then run from its directory:
51
+
52
+ ```python
53
+ import coremltools as ct
54
+ from preprocessing import InputLimits, prepare_inputs
55
+
56
+ model = ct.models.MLModel(
57
+ "cua_s1_forms_fp16_options32.mlpackage",
58
+ compute_units=ct.ComputeUnit.CPU_AND_NE,
59
+ )
60
+ options = ["fill E-mail: person@example.com", "check", "click", "skip"]
61
+ inputs = prepare_inputs(
62
+ 'TASK fill the form from the document, then submit\n'
63
+ 'FORM Contact details\nELEMENT Edit "Email address" value=""',
64
+ options,
65
+ InputLimits(),
66
+ )
67
+ probabilities = model.predict(inputs)["probabilities"][0, :len(options)]
68
+ print(options[int(probabilities.argmax())], probabilities)
69
+ ```
70
+
71
+ During review, download the model PR's revision (for example `--revision refs/pr/1`)
72
+ with `hf download FluidInference/cua-s1-forms-coreml --local-dir ./cua-coreml`.
73
+ After merge, the default `main` revision contains the artifacts.
74
+
75
+ ## Swift usage
76
+
77
+ The proposed [FluidAudio integration](https://github.com/FluidInference/FluidAudio/tree/codex/cua-s1-forms)
78
+ provides `CuaS1FormsManager`:
79
+
80
+ ```swift
81
+ import FluidAudio
82
+ import Foundation
83
+
84
+ let manager = try await CuaS1FormsManager.load(
85
+ from: URL(fileURLWithPath: "/models/cua_s1_forms_fp16_options32.mlpackage"))
86
+ let decision = try await manager.score(
87
+ context: "TASK fill the form from the document, then submit\nFORM Contact details\nELEMENT Edit \"Email address\" value=\"\"",
88
+ options: ["fill E-mail: person@example.com", "check", "click", "skip"])
89
+ print(decision.selectedOption, decision.probabilities)
90
+ ```
91
+
92
+ After the model and Swift PRs land, `try await CuaS1FormsManager.load()` downloads
93
+ and caches the compiled artifact automatically.
94
+
95
+ ## Tensor interface
96
+
97
+ | Name | Type | Shape |
98
+ | --- | --- | --- |
99
+ | `context_ids` | int32 | `[1, 224]` |
100
+ | `option_ids` | int32 | `[1, 32, 96]` |
101
+ | `option_mask` | int32 | `[1, 32]` |
102
+ | `logits` | float32 output | `[1, 32]` |
103
+ | `probabilities` | float32 output | `[1, 32]` |
104
+
105
+ Encode UTF-8 bytes plus one, pad with zero, and truncate by bytes at 224 for
106
+ context and 96 per option. Supply a nonempty context and 2–32 nonempty options.
107
+ Set option-mask entries to one for supplied options and zero for padding.
108
+ Padded logits are `-10000`; padded probabilities are zero. Inputs above 32
109
+ options must be rejected or use a separately exported larger-capacity model.
110
+ The example helper rejects overflow rather than dropping choices.
111
+
112
+ ## Conversion verification
113
+
114
+ On the complete pinned **196-row upstream demo**, PyTorch and Core ML both
115
+ selected **196/196 labeled options correctly**, and matched each other's selected
116
+ option on every row. The unmodified upstream Cua evaluator reports 36 fill,
117
+ 4 check, 6 click, and 150 skip decisions, with zero wrong actions, wrong targets,
118
+ or unsafe actions on these saved predictions. It counts `skip` as abstention,
119
+ so its 23.47% coverage corresponds to 46 actionable decisions.
120
+
121
+ | Check | Core ML `ALL` | Core ML `CPU_AND_NE` |
122
+ | --- | ---: | ---: |
123
+ | Selected options matching PyTorch | 196 / 196 | 196 / 196 |
124
+ | Maximum absolute probability error | 0.003099 | 0.002336 |
125
+ | Warm model-call median | 1.85 ms | 0.90 ms |
126
+ | Warm model-call p95 | 2.49 ms | 0.94 ms |
127
+
128
+ Measured September 19, 2026 on Apple M5 Pro, 24 GB, macOS 27.0, using
129
+ Python 3.11.11, PyTorch 2.7.0, and coremltools 9.0. Timing is exploratory and
130
+ includes Python call overhead; model loading, encoding, document extraction,
131
+ UI observation, and action execution are excluded. It is not an optimized
132
+ PyTorch/MPS speed comparison.
133
+
134
+ The conversion gates require 100% selected-option agreement, no accuracy loss,
135
+ maximum absolute probability error ≤ 0.005, finite outputs, normalized live
136
+ probabilities, and zero probability for padding. The FP32 export adapter differs
137
+ from the unmodified PyTorch reference by at most 0.00000113. Six reversed-option
138
+ checks also pass on each Core ML configuration. The checked-in placement report
139
+ counts 149 Neural Engine operations, 24 CPU operations, and zero GPU operations;
140
+ operation counts are not a measurement of time spent on each processor.
141
+
142
+ These results verify conversion on three demo forms and three PDFs. They do not
143
+ establish generalization, live GUI completion rates, or production safety.
144
+ The original demo is not redistributed here; its exact revision and SHA-256 are
145
+ in the asset lock. No training or larger-corpus evaluation was performed for
146
+ this conversion.
147
+
148
+ ## Application responsibilities
149
+
150
+ The application must extract document entities, describe UI elements, build
151
+ candidate actions, and validate and order the selected actions. Submission and
152
+ other effects require application authorization. Scores are not calibrated
153
+ confidence guarantees. Text outside the byte limits is truncated, and arbitrary
154
+ new forms and languages require their own evaluation.
155
+
156
+ ## Source, reproduction, and license
157
+
158
+ The [Mobius conversion toolkit](https://github.com/FluidInference/mobius/tree/codex/cua-s1-forms/models/computer-use/cua-s1-forms/coreml)
159
+ contains the conversion code, lockfile, original reference implementation and
160
+ evaluator, tests, and full reproduction instructions. Adaptations are limited
161
+ to export-compatible masking, a floating-point clamp constant, finite padded
162
+ logits, and disabling the fused PyTorch Transformer fast path during tracing.
163
+ All trained layers and checkpoint tensors are retained; internal compute and
164
+ weights are converted to FP16.
165
+
166
+ - Model: [`cua-ai/cua-s1-forms` at `f54adbf447f4ca6ec259f529ee3f2e3e09f8cc71`](https://huggingface.co/cua-ai/cua-s1-forms/tree/f54adbf447f4ca6ec259f529ee3f2e3e09f8cc71).
167
+ - Demo: [`cua-ai/cua-s1-forms` at `8273f34778b99ac2e12d9f6e7d57dad99ae20845`](https://huggingface.co/datasets/cua-ai/cua-s1-forms/tree/8273f34778b99ac2e12d9f6e7d57dad99ae20845).
168
+ - Code: [`trycua/cua` at `83f142c4290a0f7d9ed545ae8532858c6e4f8145`](https://github.com/trycua/cua/tree/83f142c4290a0f7d9ed545ae8532858c6e4f8145/libs/cua-s1).
169
+
170
+ The pinned model and dataset cards declare MIT. See [LICENSE](LICENSE),
171
+ [NOTICES.md](NOTICES.md), and the preserved
172
+ [upstream third-party notices](UPSTREAM-THIRD-PARTY-NOTICES.md).
UPSTREAM-THIRD-PARTY-NOTICES.md ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Third-party notices
2
+
3
+ This Cua-S1 component does not bundle third-party model weights, datasets,
4
+ binaries, or media.
5
+
6
+ ## jevlike
7
+
8
+ Parts of `python/src/cua_s1/model.py` are adapted from the MIT-licensed
9
+ [`jevlike`](https://github.com/vinnylarouge/jevlike) project at commit
10
+ [`94f5fd1b0b11d52bbdfdf4e0ee6aa96b568f8452`](https://github.com/vinnylarouge/jevlike/commit/94f5fd1b0b11d52bbdfdf4e0ee6aa96b568f8452).
11
+ The adapted material is limited to the byte-collation and small attention-model
12
+ primitives in that file.
13
+
14
+ Copyright (c) 2026 Minimal Labs
15
+
16
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
17
+ this software and associated documentation files (the "Software"), to deal in
18
+ the Software without restriction, including without limitation the rights to
19
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
20
+ the Software, and to permit persons to whom the Software is furnished to do so,
21
+ subject to the following conditions:
22
+
23
+ The above copyright notice and this permission notice shall be included in all
24
+ copies or substantial portions of the Software.
25
+
26
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
27
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
28
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
29
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
30
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
31
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
32
+ SOFTWARE.
33
+
34
+ The Python package declares Hatchling as a build-system requirement. Hatchling
35
+ is build tooling and is not bundled in the resulting package; it is distributed
36
+ under its own terms.
37
+
38
+ The Python package declares its runtime dependencies in `python/pyproject.toml`.
39
+ The component-local `python/uv.lock` records the tested development resolution.
40
+ Those dependencies remain distributed under their own licenses and are not
41
+ copied into this repository.
42
+
43
+ Future checkpoint or software distributions must update this file with the
44
+ applicable notices for all included third-party code, models, datasets, assets,
45
+ and other materials. A reference to Cua-S1 or `cua-s1-form-v0` does not grant
46
+ rights to third-party material.
assets.lock.json ADDED
@@ -0,0 +1,54 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "source_revision": "83f142c4290a0f7d9ed545ae8532858c6e4f8145",
3
+ "model_revision": "f54adbf447f4ca6ec259f529ee3f2e3e09f8cc71",
4
+ "dataset_revision": "8273f34778b99ac2e12d9f6e7d57dad99ae20845",
5
+ "evaluation_file": "artifacts/demo.jsonl",
6
+ "evaluation_rows": 196,
7
+ "files": [
8
+ {
9
+ "path": "vendor/cua_s1/__init__.py",
10
+ "url": "https://raw.githubusercontent.com/trycua/cua/83f142c4290a0f7d9ed545ae8532858c6e4f8145/libs/cua-s1/python/src/cua_s1/__init__.py",
11
+ "sha256": "68ca526b67bdb95401ddaa2ccc09b0717879d16a9102e2014f4f9018df292ddf"
12
+ },
13
+ {
14
+ "path": "vendor/cua_s1/model.py",
15
+ "url": "https://raw.githubusercontent.com/trycua/cua/83f142c4290a0f7d9ed545ae8532858c6e4f8145/libs/cua-s1/python/src/cua_s1/model.py",
16
+ "sha256": "7538cb4c9730d70a0b325050f370f981a9e109a1b182b8c66be3ba0fa2474344"
17
+ },
18
+ {
19
+ "path": "vendor/cua_s1/checkpoint.py",
20
+ "url": "https://raw.githubusercontent.com/trycua/cua/83f142c4290a0f7d9ed545ae8532858c6e4f8145/libs/cua-s1/python/src/cua_s1/checkpoint.py",
21
+ "sha256": "6d96ab6e946c88af341947d656ff244a8de5846edfd1f6a410466a97d89b375f"
22
+ },
23
+ {
24
+ "path": "vendor/CUA-LICENSE",
25
+ "url": "https://raw.githubusercontent.com/trycua/cua/83f142c4290a0f7d9ed545ae8532858c6e4f8145/libs/cua-s1/python/LICENSE",
26
+ "sha256": "c0779290c1d4783169aa3dbfb55feb505e563ef8a004bbf55298ceffcfbda8d9"
27
+ },
28
+ {
29
+ "path": "artifacts/cua-s1-forms.safetensors",
30
+ "url": "https://huggingface.co/cua-ai/cua-s1-forms/resolve/f54adbf447f4ca6ec259f529ee3f2e3e09f8cc71/cua-s1-forms.safetensors",
31
+ "sha256": "05954c1caf51c2fb6c13ea4acbfc88a2e7653dea192252bb51dc89e76a356ddc"
32
+ },
33
+ {
34
+ "path": "artifacts/cua-s1-forms.json",
35
+ "url": "https://huggingface.co/cua-ai/cua-s1-forms/resolve/f54adbf447f4ca6ec259f529ee3f2e3e09f8cc71/cua-s1-forms.json",
36
+ "sha256": "62d31e2f9a001a8e9b6f8534c5194d07ebdd3f9d62ef1ac281906622992650ca"
37
+ },
38
+ {
39
+ "path": "artifacts/demo.jsonl",
40
+ "url": "https://huggingface.co/datasets/cua-ai/cua-s1-forms/resolve/8273f34778b99ac2e12d9f6e7d57dad99ae20845/demo.jsonl",
41
+ "sha256": "4f43b442e79ba2e2ce731e27e9b8e340c2b5dfcaffc92d8ff564c34f115ff1ca"
42
+ },
43
+ {
44
+ "path": "artifacts/model-card.md",
45
+ "url": "https://huggingface.co/cua-ai/cua-s1-forms/resolve/f54adbf447f4ca6ec259f529ee3f2e3e09f8cc71/README.md",
46
+ "sha256": "a52b7930d12d59a9f70fba537f02c1683eb4be2b451ec0fd5f407620c5670a93"
47
+ },
48
+ {
49
+ "path": "artifacts/dataset-card.md",
50
+ "url": "https://huggingface.co/datasets/cua-ai/cua-s1-forms/resolve/8273f34778b99ac2e12d9f6e7d57dad99ae20845/README.md",
51
+ "sha256": "e5768e2a4b8fee2622ca73fb522bdbb0caca567a49c93266ef0f0fdef5b0af11"
52
+ }
53
+ ]
54
+ }
checksums.json ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "LICENSE": "c0779290c1d4783169aa3dbfb55feb505e563ef8a004bbf55298ceffcfbda8d9",
3
+ "NOTICES.md": "027c72741eaa695e60d7b6cebd3666372c81d443a96b673b72a897cf432ddfd0",
4
+ "README.md": "4008ae7ef610e44c2d6e019a0fa375b3e1705714d5875a8e0c63aba8541b4c96",
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",
9
+ "cua_s1_forms_fp16_options32.mlmodelc/coremldata.bin": "2ddf9edc046a1e66b3d3a0cd57a1d9e25c75df5f8d937249dc02d9806617d884",
10
+ "cua_s1_forms_fp16_options32.mlmodelc/model.mil": "e93676bd4f553ffcf9403ae5049185cb55acdcb63908e39952578db0845e0a12",
11
+ "cua_s1_forms_fp16_options32.mlmodelc/weights/weight.bin": "4da9259f798e44f5a1b50769ee1916fd3747c4d723dd9997b516c7fe238c7895",
12
+ "cua_s1_forms_fp16_options32.mlpackage/Data/com.apple.CoreML/model.mlmodel": "70485fc18cbb21785df833cbddddc0b5b59acb00d22394b76e55307e2c135dd0",
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": "0a5d25b97545bfb2878531f3e409030ae3448a26c3aa3ba7db29f57d7194b2a6",
17
+ "reports/upstream-metrics.json": "7d6207e430504dc0baec96d8180cb03f8aadc5a6e016b53c4cf03a80baf169ab",
18
+ "reports/verification.json": "9a5d22ec4b447f0710c12e03c69d7ed802158bb94e9a3c6b059731730ced9f30"
19
+ }
conversion.json ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "model": "cua_s1_forms_fp16_options32.mlpackage",
3
+ "precision": "float16",
4
+ "minimum_target": "iOS17/macOS14",
5
+ "limits": {
6
+ "context_bytes": 224,
7
+ "option_bytes": 96,
8
+ "max_options": 32
9
+ },
10
+ "model_config": {
11
+ "context_tokens": 224,
12
+ "encoder": "tinyx",
13
+ "heads": 4,
14
+ "hf_model": "Qwen/Qwen2.5-0.5B",
15
+ "layers": 2,
16
+ "option_tokens": 96,
17
+ "rank": 128,
18
+ "width": 128
19
+ },
20
+ "parameters": 706048,
21
+ "assets_lock_sha256": "8e65ad70af6bb814b571cdcfe828ba4bc339147da2d2211cbeac416163ef18ba",
22
+ "model_revision": "f54adbf447f4ca6ec259f529ee3f2e3e09f8cc71",
23
+ "source_revision": "83f142c4290a0f7d9ed545ae8532858c6e4f8145",
24
+ "trace_row": 0,
25
+ "trace_dataset_revision": "8273f34778b99ac2e12d9f6e7d57dad99ae20845",
26
+ "export_seconds": 0.5374167499830946,
27
+ "python": "3.11.11",
28
+ "torch": "2.7.0",
29
+ "coremltools": "9.0",
30
+ "package_files": {
31
+ "Data/com.apple.CoreML/model.mlmodel": "70485fc18cbb21785df833cbddddc0b5b59acb00d22394b76e55307e2c135dd0",
32
+ "Data/com.apple.CoreML/weights/weight.bin": "4da9259f798e44f5a1b50769ee1916fd3747c4d723dd9997b516c7fe238c7895",
33
+ "Manifest.json": "2bc0f5f62337b27fb6b0ecde248f1e3dc269e1ba4b65516aaeede2a60e293dcc"
34
+ }
35
+ }
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:a7a11d7772fb6879778e6223d0f3b16a6b2a44df20a7991bf9bcc24042d05542
3
+ size 243
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:2ddf9edc046a1e66b3d3a0cd57a1d9e25c75df5f8d937249dc02d9806617d884
3
+ size 909
cua_s1_forms_fp16_options32.mlmodelc/model.mil ADDED
@@ -0,0 +1,418 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ program(1.0)
2
+ [buildInfo = dict<tensor<string, []>, tensor<string, []>>({{"coremlc-component-MIL", "3600.16.1"}, {"coremlc-version", "3600.25.2"}, {"coremltools-component-torch", "2.7.0"}, {"coremltools-source-dialect", "TorchScript"}, {"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<int32, []> var_14 = const()[name = tensor<string, []>("op_14"), val = tensor<int32, []>(0)];
6
+ tensor<bool, [1, 32]> option_mask_1 = not_equal(x = option_mask, y = var_14)[name = tensor<string, []>("option_mask")];
7
+ tensor<int32, []> var_16 = const()[name = tensor<string, []>("op_16"), val = tensor<int32, []>(0)];
8
+ tensor<bool, [1, 224]> context_mask = not_equal(x = context_ids, y = var_16)[name = tensor<string, []>("context_mask")];
9
+ tensor<int32, [2]> var_27_begin_0 = const()[name = tensor<string, []>("op_27_begin_0"), val = tensor<int32, [2]>([0, 0])];
10
+ tensor<int32, [2]> var_27_end_0 = const()[name = tensor<string, []>("op_27_end_0"), val = tensor<int32, [2]>([1, 1])];
11
+ tensor<bool, [2]> var_27_end_mask_0 = const()[name = tensor<string, []>("op_27_end_mask_0"), val = tensor<bool, [2]>([true, false])];
12
+ tensor<int32, [1, 1]> var_27 = slice_by_index(begin = var_27_begin_0, end = var_27_end_0, end_mask = var_27_end_mask_0, x = context_ids)[name = tensor<string, []>("op_27")];
13
+ 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)];
14
+ tensor<fp16, [1, 1]> fill_like_0_cast_fp16 = fill_like(ref_tensor = var_27, value = fill_like_0_value_0_to_fp16)[name = tensor<string, []>("fill_like_0_cast_fp16")];
15
+ tensor<int32, [2]> var_43_begin_0 = const()[name = tensor<string, []>("op_43_begin_0"), val = tensor<int32, [2]>([0, 1])];
16
+ tensor<int32, [2]> var_43_end_0 = const()[name = tensor<string, []>("op_43_end_0"), val = tensor<int32, [2]>([1, 224])];
17
+ tensor<bool, [2]> var_43_end_mask_0 = const()[name = tensor<string, []>("op_43_end_mask_0"), val = tensor<bool, [2]>([true, true])];
18
+ tensor<int32, [1, 223]> var_43 = slice_by_index(begin = var_43_begin_0, end = var_43_end_0, end_mask = var_43_end_mask_0, x = context_ids)[name = tensor<string, []>("op_43")];
19
+ tensor<int32, []> var_45 = const()[name = tensor<string, []>("op_45"), val = tensor<int32, []>(1)];
20
+ tensor<bool, []> safe_context_ids_interleave_0 = const()[name = tensor<string, []>("safe_context_ids_interleave_0"), val = tensor<bool, []>(false)];
21
+ tensor<string, []> var_43_promoted_to_fp16_dtype_0 = const()[name = tensor<string, []>("op_43_promoted_to_fp16_dtype_0"), val = tensor<string, []>("fp16")];
22
+ tensor<fp16, [1, 223]> var_43_to_fp16 = cast(dtype = var_43_promoted_to_fp16_dtype_0, x = var_43)[name = tensor<string, []>("cast_66")];
23
+ tensor<fp16, [1, 224]> safe_context_ids_cast_fp16 = concat(axis = var_45, interleave = safe_context_ids_interleave_0, values = (fill_like_0_cast_fp16, var_43_to_fp16))[name = tensor<string, []>("safe_context_ids_cast_fp16")];
24
+ tensor<int32, []> var_59_batch_dims_0 = const()[name = tensor<string, []>("op_59_batch_dims_0"), val = tensor<int32, []>(0)];
25
+ tensor<bool, []> var_59_validate_indices_0 = const()[name = tensor<string, []>("op_59_validate_indices_0"), val = tensor<bool, []>(false)];
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, []> context_ids_to_int16_dtype_0 = const()[name = tensor<string, []>("context_ids_to_int16_dtype_0"), val = tensor<string, []>("int16")];
28
+ tensor<string, []> cast_54_dtype_0 = const()[name = tensor<string, []>("cast_54_dtype_0"), val = tensor<string, []>("int32")];
29
+ tensor<int32, []> greater_equal_0_y_0 = const()[name = tensor<string, []>("greater_equal_0_y_0"), val = tensor<int32, []>(0)];
30
+ tensor<int16, [1, 224]> context_ids_to_int16 = cast(dtype = context_ids_to_int16_dtype_0, x = context_ids)[name = tensor<string, []>("cast_65")];
31
+ tensor<int32, [1, 224]> cast_54 = cast(dtype = cast_54_dtype_0, x = context_ids_to_int16)[name = tensor<string, []>("cast_64")];
32
+ tensor<bool, [1, 224]> greater_equal_0 = greater_equal(x = cast_54, y = greater_equal_0_y_0)[name = tensor<string, []>("greater_equal_0")];
33
+ tensor<int32, []> slice_by_index_18 = const()[name = tensor<string, []>("slice_by_index_18"), val = tensor<int32, []>(257)];
34
+ tensor<int32, [1, 224]> add_3 = add(x = cast_54, y = slice_by_index_18)[name = tensor<string, []>("add_3")];
35
+ tensor<int32, [1, 224]> select_0 = select(a = cast_54, b = add_3, cond = greater_equal_0)[name = tensor<string, []>("select_0")];
36
+ tensor<int32, []> var_59_cast_fp16_cast_uint16_axis_0 = const()[name = tensor<string, []>("op_59_cast_fp16_cast_uint16_axis_0"), val = tensor<int32, []>(0)];
37
+ tensor<string, []> select_0_to_int16_dtype_0 = const()[name = tensor<string, []>("select_0_to_int16_dtype_0"), val = tensor<string, []>("int16")];
38
+ tensor<int16, [1, 224]> select_0_to_int16 = cast(dtype = select_0_to_int16_dtype_0, x = select_0)[name = tensor<string, []>("cast_63")];
39
+ tensor<fp16, [1, 224, 128]> var_59_cast_fp16_cast_uint16_cast_uint16 = gather(axis = var_59_cast_fp16_cast_uint16_axis_0, batch_dims = var_59_batch_dims_0, indices = select_0_to_int16, validate_indices = var_59_validate_indices_0, x = model_embedding_weight_to_fp16)[name = tensor<string, []>("op_59_cast_fp16_cast_uint16_cast_uint16")];
40
+ 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)))];
41
+ tensor<fp16, [1, 224, 128]> src_1_cast_fp16 = add(x = var_59_cast_fp16_cast_uint16_cast_uint16, y = model_position_weight_to_fp16)[name = tensor<string, []>("src_1_cast_fp16")];
42
+ tensor<fp16, []> var_66_promoted_to_fp16 = const()[name = tensor<string, []>("op_66_promoted_to_fp16"), val = tensor<fp16, []>(0x0p+0)];
43
+ tensor<bool, [1, 224]> mask_1_cast_fp16 = equal(x = safe_context_ids_cast_fp16, y = var_66_promoted_to_fp16)[name = tensor<string, []>("mask_1_cast_fp16")];
44
+ tensor<fp16, []> var_82_to_fp16 = const()[name = tensor<string, []>("op_82_to_fp16"), val = tensor<fp16, []>(-inf)];
45
+ tensor<fp16, [1, 224]> var_90_to_fp16 = const()[name = tensor<string, []>("op_90_to_fp16"), val = tensor<fp16, [1, 224]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(123328)))];
46
+ tensor<fp16, [1, 224]> key_padding_mask_1_cast_fp16 = select(a = var_82_to_fp16, b = var_90_to_fp16, cond = mask_1_cast_fp16)[name = tensor<string, []>("key_padding_mask_1_cast_fp16")];
47
+ tensor<int32, [1]> query_1_axes_0 = const()[name = tensor<string, []>("query_1_axes_0"), val = tensor<int32, [1]>([-1])];
48
+ 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)))];
49
+ 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)))];
50
+ tensor<fp16, []> var_69_to_fp16 = const()[name = tensor<string, []>("op_69_to_fp16"), val = tensor<fp16, []>(0x1.5p-17)];
51
+ 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_69_to_fp16, gamma = model_encoder_layers_0_norm1_weight_to_fp16, x = src_1_cast_fp16)[name = tensor<string, []>("query_1_cast_fp16")];
52
+ tensor<int32, [3]> query_3_perm_0 = const()[name = tensor<string, []>("query_3_perm_0"), val = tensor<int32, [3]>([1, 0, 2])];
53
+ 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)))];
54
+ 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)))];
55
+ 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")];
56
+ 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")];
57
+ tensor<int32, [4]> concat_0 = const()[name = tensor<string, []>("concat_0"), val = tensor<int32, [4]>([224, 1, 3, 128])];
58
+ tensor<fp16, [224, 1, 3, 128]> var_124_cast_fp16 = reshape(shape = concat_0, x = linear_0_cast_fp16)[name = tensor<string, []>("op_124_cast_fp16")];
59
+ tensor<int32, [1]> var_125_axes_0 = const()[name = tensor<string, []>("op_125_axes_0"), val = tensor<int32, [1]>([0])];
60
+ tensor<fp16, [1, 224, 1, 3, 128]> var_125_cast_fp16 = expand_dims(axes = var_125_axes_0, x = var_124_cast_fp16)[name = tensor<string, []>("op_125_cast_fp16")];
61
+ tensor<int32, [5]> var_126_perm_0 = const()[name = tensor<string, []>("op_126_perm_0"), val = tensor<int32, [5]>([-2, 1, 2, 0, 4])];
62
+ tensor<int32, [1]> var_127_axes_0 = const()[name = tensor<string, []>("op_127_axes_0"), val = tensor<int32, [1]>([-2])];
63
+ tensor<fp16, [3, 224, 1, 1, 128]> var_126_cast_fp16 = transpose(perm = var_126_perm_0, x = var_125_cast_fp16)[name = tensor<string, []>("transpose_23")];
64
+ tensor<fp16, [3, 224, 1, 128]> var_127_cast_fp16 = squeeze(axes = var_127_axes_0, x = var_126_cast_fp16)[name = tensor<string, []>("op_127_cast_fp16")];
65
+ tensor<int32, [4]> q_1_begin_0 = const()[name = tensor<string, []>("q_1_begin_0"), val = tensor<int32, [4]>([0, 0, 0, 0])];
66
+ tensor<int32, [4]> q_1_end_0 = const()[name = tensor<string, []>("q_1_end_0"), val = tensor<int32, [4]>([1, 224, 1, 128])];
67
+ 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])];
68
+ 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])];
69
+ 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_127_cast_fp16)[name = tensor<string, []>("q_1_cast_fp16")];
70
+ tensor<int32, [4]> k_1_begin_0 = const()[name = tensor<string, []>("k_1_begin_0"), val = tensor<int32, [4]>([1, 0, 0, 0])];
71
+ tensor<int32, [4]> k_1_end_0 = const()[name = tensor<string, []>("k_1_end_0"), val = tensor<int32, [4]>([2, 224, 1, 128])];
72
+ 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])];
73
+ 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])];
74
+ 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_127_cast_fp16)[name = tensor<string, []>("k_1_cast_fp16")];
75
+ tensor<int32, [4]> v_1_begin_0 = const()[name = tensor<string, []>("v_1_begin_0"), val = tensor<int32, [4]>([2, 0, 0, 0])];
76
+ tensor<int32, [4]> v_1_end_0 = const()[name = tensor<string, []>("v_1_end_0"), val = tensor<int32, [4]>([3, 224, 1, 128])];
77
+ 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])];
78
+ 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])];
79
+ 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_127_cast_fp16)[name = tensor<string, []>("v_1_cast_fp16")];
80
+ tensor<int32, [3]> var_135 = const()[name = tensor<string, []>("op_135"), val = tensor<int32, [3]>([224, 4, 32])];
81
+ tensor<fp16, [224, 4, 32]> var_136_cast_fp16 = reshape(shape = var_135, x = q_1_cast_fp16)[name = tensor<string, []>("op_136_cast_fp16")];
82
+ tensor<int32, [3]> q_3_perm_0 = const()[name = tensor<string, []>("q_3_perm_0"), val = tensor<int32, [3]>([1, 0, 2])];
83
+ tensor<int32, [3]> var_142 = const()[name = tensor<string, []>("op_142"), val = tensor<int32, [3]>([224, 4, 32])];
84
+ tensor<fp16, [224, 4, 32]> var_143_cast_fp16 = reshape(shape = var_142, x = k_1_cast_fp16)[name = tensor<string, []>("op_143_cast_fp16")];
85
+ tensor<int32, [3]> k_3_perm_0 = const()[name = tensor<string, []>("k_3_perm_0"), val = tensor<int32, [3]>([1, 0, 2])];
86
+ tensor<int32, [3]> var_149 = const()[name = tensor<string, []>("op_149"), val = tensor<int32, [3]>([224, 4, 32])];
87
+ tensor<fp16, [224, 4, 32]> var_150_cast_fp16 = reshape(shape = var_149, x = v_1_cast_fp16)[name = tensor<string, []>("op_150_cast_fp16")];
88
+ tensor<int32, [3]> v_3_perm_0 = const()[name = tensor<string, []>("v_3_perm_0"), val = tensor<int32, [3]>([1, 0, 2])];
89
+ tensor<int32, [4]> var_153 = const()[name = tensor<string, []>("op_153"), val = tensor<int32, [4]>([1, 1, 1, 224])];
90
+ tensor<fp16, [1, 1, 1, 224]> var_154_cast_fp16 = reshape(shape = var_153, x = key_padding_mask_1_cast_fp16)[name = tensor<string, []>("op_154_cast_fp16")];
91
+ tensor<int32, [4]> var_156_reps_0 = const()[name = tensor<string, []>("op_156_reps_0"), val = tensor<int32, [4]>([1, 4, 1, 1])];
92
+ tensor<fp16, [1, 4, 1, 224]> var_156_cast_fp16 = tile(reps = var_156_reps_0, x = var_154_cast_fp16)[name = tensor<string, []>("op_156_cast_fp16")];
93
+ tensor<int32, [4]> var_164 = const()[name = tensor<string, []>("op_164"), val = tensor<int32, [4]>([1, 4, 224, 32])];
94
+ tensor<fp16, [4, 224, 32]> q_3_cast_fp16 = transpose(perm = q_3_perm_0, x = var_136_cast_fp16)[name = tensor<string, []>("transpose_22")];
95
+ tensor<fp16, [1, 4, 224, 32]> q_5_cast_fp16 = reshape(shape = var_164, x = q_3_cast_fp16)[name = tensor<string, []>("q_5_cast_fp16")];
96
+ tensor<int32, [4]> var_166 = const()[name = tensor<string, []>("op_166"), val = tensor<int32, [4]>([1, 4, 224, 32])];
97
+ tensor<fp16, [4, 224, 32]> k_3_cast_fp16 = transpose(perm = k_3_perm_0, x = var_143_cast_fp16)[name = tensor<string, []>("transpose_21")];
98
+ tensor<fp16, [1, 4, 224, 32]> k_5_cast_fp16 = reshape(shape = var_166, x = k_3_cast_fp16)[name = tensor<string, []>("k_5_cast_fp16")];
99
+ tensor<int32, [4]> var_168 = const()[name = tensor<string, []>("op_168"), val = tensor<int32, [4]>([1, 4, 224, 32])];
100
+ tensor<fp16, [4, 224, 32]> v_3_cast_fp16 = transpose(perm = v_3_perm_0, x = var_150_cast_fp16)[name = tensor<string, []>("transpose_20")];
101
+ tensor<fp16, [1, 4, 224, 32]> v_5_cast_fp16 = reshape(shape = var_168, x = v_3_cast_fp16)[name = tensor<string, []>("v_5_cast_fp16")];
102
+ tensor<fp16, []> mul_1_y_0_to_fp16 = const()[name = tensor<string, []>("mul_1_y_0_to_fp16"), val = tensor<fp16, []>(0x1.6ap-3)];
103
+ 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")];
104
+ tensor<bool, []> matmul_0_transpose_y_0 = const()[name = tensor<string, []>("matmul_0_transpose_y_0"), val = tensor<bool, []>(true)];
105
+ tensor<bool, []> matmul_0_transpose_x_0 = const()[name = tensor<string, []>("matmul_0_transpose_x_0"), val = tensor<bool, []>(false)];
106
+ 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")];
107
+ tensor<fp16, [1, 4, 224, 224]> add_0_cast_fp16 = add(x = matmul_0_cast_fp16, y = var_156_cast_fp16)[name = tensor<string, []>("add_0_cast_fp16")];
108
+ tensor<int32, []> softmax_0_axis_0 = const()[name = tensor<string, []>("softmax_0_axis_0"), val = tensor<int32, []>(-1)];
109
+ 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")];
110
+ tensor<bool, []> attn_output_1_transpose_x_0 = const()[name = tensor<string, []>("attn_output_1_transpose_x_0"), val = tensor<bool, []>(false)];
111
+ tensor<bool, []> attn_output_1_transpose_y_0 = const()[name = tensor<string, []>("attn_output_1_transpose_y_0"), val = tensor<bool, []>(false)];
112
+ 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")];
113
+ tensor<int32, [4]> var_171 = const()[name = tensor<string, []>("op_171"), val = tensor<int32, [4]>([2, 0, 1, 3])];
114
+ tensor<int32, [2]> var_176 = const()[name = tensor<string, []>("op_176"), val = tensor<int32, [2]>([224, 128])];
115
+ tensor<fp16, [224, 1, 4, 32]> var_172_cast_fp16 = transpose(perm = var_171, x = attn_output_1_cast_fp16)[name = tensor<string, []>("transpose_19")];
116
+ tensor<fp16, [224, 128]> attn_output_3_cast_fp16 = reshape(shape = var_176, x = var_172_cast_fp16)[name = tensor<string, []>("attn_output_3_cast_fp16")];
117
+ 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)))];
118
+ 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)))];
119
+ 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")];
120
+ tensor<int32, [3]> var_180 = const()[name = tensor<string, []>("op_180"), val = tensor<int32, [3]>([224, 1, 128])];
121
+ tensor<fp16, [224, 1, 128]> attn_output_7_cast_fp16 = reshape(shape = var_180, x = linear_1_cast_fp16)[name = tensor<string, []>("attn_output_7_cast_fp16")];
122
+ tensor<int32, [3]> input_3_perm_0 = const()[name = tensor<string, []>("input_3_perm_0"), val = tensor<int32, [3]>([1, 0, 2])];
123
+ 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")];
124
+ 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")];
125
+ tensor<int32, [1]> input_7_axes_0 = const()[name = tensor<string, []>("input_7_axes_0"), val = tensor<int32, [1]>([-1])];
126
+ 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)))];
127
+ 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)))];
128
+ 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_69_to_fp16, gamma = model_encoder_layers_0_norm2_weight_to_fp16, x = input_5_cast_fp16)[name = tensor<string, []>("input_7_cast_fp16")];
129
+ 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)))];
130
+ 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)))];
131
+ 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")];
132
+ tensor<fp16, [1, 224, 512]> input_11_cast_fp16 = relu(x = linear_2_cast_fp16)[name = tensor<string, []>("input_11_cast_fp16")];
133
+ 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)))];
134
+ 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)))];
135
+ 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")];
136
+ 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")];
137
+ tensor<int32, [1]> query_5_axes_0 = const()[name = tensor<string, []>("query_5_axes_0"), val = tensor<int32, [1]>([-1])];
138
+ 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)))];
139
+ 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)))];
140
+ 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_69_to_fp16, gamma = model_encoder_layers_1_norm1_weight_to_fp16, x = input_17_cast_fp16)[name = tensor<string, []>("query_5_cast_fp16")];
141
+ tensor<int32, [3]> query_7_perm_0 = const()[name = tensor<string, []>("query_7_perm_0"), val = tensor<int32, [3]>([1, 0, 2])];
142
+ 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)))];
143
+ 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)))];
144
+ 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")];
145
+ 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")];
146
+ tensor<int32, [4]> concat_2 = const()[name = tensor<string, []>("concat_2"), val = tensor<int32, [4]>([224, 1, 3, 128])];
147
+ tensor<fp16, [224, 1, 3, 128]> var_231_cast_fp16 = reshape(shape = concat_2, x = linear_4_cast_fp16)[name = tensor<string, []>("op_231_cast_fp16")];
148
+ tensor<int32, [1]> var_232_axes_0 = const()[name = tensor<string, []>("op_232_axes_0"), val = tensor<int32, [1]>([0])];
149
+ tensor<fp16, [1, 224, 1, 3, 128]> var_232_cast_fp16 = expand_dims(axes = var_232_axes_0, x = var_231_cast_fp16)[name = tensor<string, []>("op_232_cast_fp16")];
150
+ tensor<int32, [5]> var_233_perm_0 = const()[name = tensor<string, []>("op_233_perm_0"), val = tensor<int32, [5]>([-2, 1, 2, 0, 4])];
151
+ tensor<int32, [1]> var_234_axes_0 = const()[name = tensor<string, []>("op_234_axes_0"), val = tensor<int32, [1]>([-2])];
152
+ tensor<fp16, [3, 224, 1, 1, 128]> var_233_cast_fp16 = transpose(perm = var_233_perm_0, x = var_232_cast_fp16)[name = tensor<string, []>("transpose_16")];
153
+ tensor<fp16, [3, 224, 1, 128]> var_234_cast_fp16 = squeeze(axes = var_234_axes_0, x = var_233_cast_fp16)[name = tensor<string, []>("op_234_cast_fp16")];
154
+ tensor<int32, [4]> q_7_begin_0 = const()[name = tensor<string, []>("q_7_begin_0"), val = tensor<int32, [4]>([0, 0, 0, 0])];
155
+ tensor<int32, [4]> q_7_end_0 = const()[name = tensor<string, []>("q_7_end_0"), val = tensor<int32, [4]>([1, 224, 1, 128])];
156
+ 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])];
157
+ 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])];
158
+ 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_234_cast_fp16)[name = tensor<string, []>("q_7_cast_fp16")];
159
+ tensor<int32, [4]> k_7_begin_0 = const()[name = tensor<string, []>("k_7_begin_0"), val = tensor<int32, [4]>([1, 0, 0, 0])];
160
+ tensor<int32, [4]> k_7_end_0 = const()[name = tensor<string, []>("k_7_end_0"), val = tensor<int32, [4]>([2, 224, 1, 128])];
161
+ 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])];
162
+ 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])];
163
+ 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_234_cast_fp16)[name = tensor<string, []>("k_7_cast_fp16")];
164
+ tensor<int32, [4]> v_7_begin_0 = const()[name = tensor<string, []>("v_7_begin_0"), val = tensor<int32, [4]>([2, 0, 0, 0])];
165
+ tensor<int32, [4]> v_7_end_0 = const()[name = tensor<string, []>("v_7_end_0"), val = tensor<int32, [4]>([3, 224, 1, 128])];
166
+ 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])];
167
+ 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])];
168
+ 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_234_cast_fp16)[name = tensor<string, []>("v_7_cast_fp16")];
169
+ tensor<int32, [3]> var_242 = const()[name = tensor<string, []>("op_242"), val = tensor<int32, [3]>([224, 4, 32])];
170
+ tensor<fp16, [224, 4, 32]> var_243_cast_fp16 = reshape(shape = var_242, x = q_7_cast_fp16)[name = tensor<string, []>("op_243_cast_fp16")];
171
+ tensor<int32, [3]> q_9_perm_0 = const()[name = tensor<string, []>("q_9_perm_0"), val = tensor<int32, [3]>([1, 0, 2])];
172
+ tensor<int32, [3]> var_249 = const()[name = tensor<string, []>("op_249"), val = tensor<int32, [3]>([224, 4, 32])];
173
+ tensor<fp16, [224, 4, 32]> var_250_cast_fp16 = reshape(shape = var_249, x = k_7_cast_fp16)[name = tensor<string, []>("op_250_cast_fp16")];
174
+ tensor<int32, [3]> k_9_perm_0 = const()[name = tensor<string, []>("k_9_perm_0"), val = tensor<int32, [3]>([1, 0, 2])];
175
+ tensor<int32, [3]> var_256 = const()[name = tensor<string, []>("op_256"), val = tensor<int32, [3]>([224, 4, 32])];
176
+ tensor<fp16, [224, 4, 32]> var_257_cast_fp16 = reshape(shape = var_256, x = v_7_cast_fp16)[name = tensor<string, []>("op_257_cast_fp16")];
177
+ tensor<int32, [3]> v_9_perm_0 = const()[name = tensor<string, []>("v_9_perm_0"), val = tensor<int32, [3]>([1, 0, 2])];
178
+ tensor<int32, [4]> var_271 = const()[name = tensor<string, []>("op_271"), val = tensor<int32, [4]>([1, 4, 224, 32])];
179
+ tensor<fp16, [4, 224, 32]> q_9_cast_fp16 = transpose(perm = q_9_perm_0, x = var_243_cast_fp16)[name = tensor<string, []>("transpose_15")];
180
+ tensor<fp16, [1, 4, 224, 32]> q_11_cast_fp16 = reshape(shape = var_271, x = q_9_cast_fp16)[name = tensor<string, []>("q_11_cast_fp16")];
181
+ tensor<int32, [4]> var_273 = const()[name = tensor<string, []>("op_273"), val = tensor<int32, [4]>([1, 4, 224, 32])];
182
+ tensor<fp16, [4, 224, 32]> k_9_cast_fp16 = transpose(perm = k_9_perm_0, x = var_250_cast_fp16)[name = tensor<string, []>("transpose_14")];
183
+ tensor<fp16, [1, 4, 224, 32]> k_11_cast_fp16 = reshape(shape = var_273, x = k_9_cast_fp16)[name = tensor<string, []>("k_11_cast_fp16")];
184
+ tensor<int32, [4]> var_275 = const()[name = tensor<string, []>("op_275"), val = tensor<int32, [4]>([1, 4, 224, 32])];
185
+ tensor<fp16, [4, 224, 32]> v_9_cast_fp16 = transpose(perm = v_9_perm_0, x = var_257_cast_fp16)[name = tensor<string, []>("transpose_13")];
186
+ tensor<fp16, [1, 4, 224, 32]> v_11_cast_fp16 = reshape(shape = var_275, x = v_9_cast_fp16)[name = tensor<string, []>("v_11_cast_fp16")];
187
+ tensor<fp16, []> mul_3_y_0_to_fp16 = const()[name = tensor<string, []>("mul_3_y_0_to_fp16"), val = tensor<fp16, []>(0x1.6ap-3)];
188
+ 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")];
189
+ tensor<bool, []> matmul_1_transpose_y_0 = const()[name = tensor<string, []>("matmul_1_transpose_y_0"), val = tensor<bool, []>(true)];
190
+ tensor<bool, []> matmul_1_transpose_x_0 = const()[name = tensor<string, []>("matmul_1_transpose_x_0"), val = tensor<bool, []>(false)];
191
+ 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")];
192
+ tensor<fp16, [1, 4, 224, 224]> add_1_cast_fp16 = add(x = matmul_1_cast_fp16, y = var_156_cast_fp16)[name = tensor<string, []>("add_1_cast_fp16")];
193
+ tensor<int32, []> softmax_1_axis_0 = const()[name = tensor<string, []>("softmax_1_axis_0"), val = tensor<int32, []>(-1)];
194
+ 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")];
195
+ tensor<bool, []> attn_output_9_transpose_x_0 = const()[name = tensor<string, []>("attn_output_9_transpose_x_0"), val = tensor<bool, []>(false)];
196
+ tensor<bool, []> attn_output_9_transpose_y_0 = const()[name = tensor<string, []>("attn_output_9_transpose_y_0"), val = tensor<bool, []>(false)];
197
+ 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")];
198
+ tensor<int32, [4]> var_278 = const()[name = tensor<string, []>("op_278"), val = tensor<int32, [4]>([2, 0, 1, 3])];
199
+ tensor<int32, [2]> var_283 = const()[name = tensor<string, []>("op_283"), val = tensor<int32, [2]>([224, 128])];
200
+ tensor<fp16, [224, 1, 4, 32]> var_279_cast_fp16 = transpose(perm = var_278, x = attn_output_9_cast_fp16)[name = tensor<string, []>("transpose_12")];
201
+ tensor<fp16, [224, 128]> attn_output_11_cast_fp16 = reshape(shape = var_283, x = var_279_cast_fp16)[name = tensor<string, []>("attn_output_11_cast_fp16")];
202
+ 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)))];
203
+ 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)))];
204
+ 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")];
205
+ tensor<int32, [3]> var_287 = const()[name = tensor<string, []>("op_287"), val = tensor<int32, [3]>([224, 1, 128])];
206
+ tensor<fp16, [224, 1, 128]> attn_output_15_cast_fp16 = reshape(shape = var_287, x = linear_5_cast_fp16)[name = tensor<string, []>("attn_output_15_cast_fp16")];
207
+ tensor<int32, [3]> input_19_perm_0 = const()[name = tensor<string, []>("input_19_perm_0"), val = tensor<int32, [3]>([1, 0, 2])];
208
+ 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")];
209
+ 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")];
210
+ tensor<int32, [1]> input_23_axes_0 = const()[name = tensor<string, []>("input_23_axes_0"), val = tensor<int32, [1]>([-1])];
211
+ 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)))];
212
+ 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)))];
213
+ 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_69_to_fp16, gamma = model_encoder_layers_1_norm2_weight_to_fp16, x = input_21_cast_fp16)[name = tensor<string, []>("input_23_cast_fp16")];
214
+ 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)))];
215
+ 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)))];
216
+ 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")];
217
+ tensor<fp16, [1, 224, 512]> input_27_cast_fp16 = relu(x = linear_6_cast_fp16)[name = tensor<string, []>("input_27_cast_fp16")];
218
+ 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)))];
219
+ 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)))];
220
+ 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")];
221
+ 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")];
222
+ tensor<int32, [2]> var_320 = const()[name = tensor<string, []>("op_320"), val = tensor<int32, [2]>([32, 96])];
223
+ tensor<int32, [32, 96]> flat_ids = reshape(shape = var_320, x = option_ids)[name = tensor<string, []>("flat_ids")];
224
+ tensor<int32, []> var_322 = const()[name = tensor<string, []>("op_322"), val = tensor<int32, []>(0)];
225
+ tensor<bool, [32, 96]> flat_mask = not_equal(x = flat_ids, y = var_322)[name = tensor<string, []>("flat_mask")];
226
+ tensor<int32, [2]> var_333_begin_0 = const()[name = tensor<string, []>("op_333_begin_0"), val = tensor<int32, [2]>([0, 0])];
227
+ tensor<int32, [2]> var_333_end_0 = const()[name = tensor<string, []>("op_333_end_0"), val = tensor<int32, [2]>([32, 1])];
228
+ tensor<bool, [2]> var_333_end_mask_0 = const()[name = tensor<string, []>("op_333_end_mask_0"), val = tensor<bool, [2]>([true, false])];
229
+ tensor<int32, [32, 1]> var_333 = slice_by_index(begin = var_333_begin_0, end = var_333_end_0, end_mask = var_333_end_mask_0, x = flat_ids)[name = tensor<string, []>("op_333")];
230
+ 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)];
231
+ tensor<fp16, [32, 1]> fill_like_1_cast_fp16 = fill_like(ref_tensor = var_333, value = fill_like_1_value_0_to_fp16)[name = tensor<string, []>("fill_like_1_cast_fp16")];
232
+ tensor<int32, [2]> var_349_begin_0 = const()[name = tensor<string, []>("op_349_begin_0"), val = tensor<int32, [2]>([0, 1])];
233
+ tensor<int32, [2]> var_349_end_0 = const()[name = tensor<string, []>("op_349_end_0"), val = tensor<int32, [2]>([32, 96])];
234
+ tensor<bool, [2]> var_349_end_mask_0 = const()[name = tensor<string, []>("op_349_end_mask_0"), val = tensor<bool, [2]>([true, true])];
235
+ tensor<int32, [32, 95]> var_349 = slice_by_index(begin = var_349_begin_0, end = var_349_end_0, end_mask = var_349_end_mask_0, x = flat_ids)[name = tensor<string, []>("op_349")];
236
+ tensor<int32, []> var_351 = const()[name = tensor<string, []>("op_351"), val = tensor<int32, []>(1)];
237
+ tensor<bool, []> safe_ids_interleave_0 = const()[name = tensor<string, []>("safe_ids_interleave_0"), val = tensor<bool, []>(false)];
238
+ tensor<string, []> var_349_promoted_to_fp16_dtype_0 = const()[name = tensor<string, []>("op_349_promoted_to_fp16_dtype_0"), val = tensor<string, []>("fp16")];
239
+ tensor<fp16, [32, 95]> var_349_to_fp16 = cast(dtype = var_349_promoted_to_fp16_dtype_0, x = var_349)[name = tensor<string, []>("cast_62")];
240
+ tensor<fp16, [32, 96]> safe_ids_cast_fp16 = concat(axis = var_351, interleave = safe_ids_interleave_0, values = (fill_like_1_cast_fp16, var_349_to_fp16))[name = tensor<string, []>("safe_ids_cast_fp16")];
241
+ tensor<int32, []> var_365_batch_dims_0 = const()[name = tensor<string, []>("op_365_batch_dims_0"), val = tensor<int32, []>(0)];
242
+ tensor<bool, []> var_365_validate_indices_0 = const()[name = tensor<string, []>("op_365_validate_indices_0"), val = tensor<bool, []>(false)];
243
+ tensor<string, []> flat_ids_to_int16_dtype_0 = const()[name = tensor<string, []>("flat_ids_to_int16_dtype_0"), val = tensor<string, []>("int16")];
244
+ tensor<string, []> cast_55_dtype_0 = const()[name = tensor<string, []>("cast_55_dtype_0"), val = tensor<string, []>("int32")];
245
+ tensor<int32, []> greater_equal_1_y_0 = const()[name = tensor<string, []>("greater_equal_1_y_0"), val = tensor<int32, []>(0)];
246
+ tensor<int16, [32, 96]> flat_ids_to_int16 = cast(dtype = flat_ids_to_int16_dtype_0, x = flat_ids)[name = tensor<string, []>("cast_61")];
247
+ tensor<int32, [32, 96]> cast_55 = cast(dtype = cast_55_dtype_0, x = flat_ids_to_int16)[name = tensor<string, []>("cast_60")];
248
+ tensor<bool, [32, 96]> greater_equal_1 = greater_equal(x = cast_55, y = greater_equal_1_y_0)[name = tensor<string, []>("greater_equal_1")];
249
+ tensor<int32, []> slice_by_index_19 = const()[name = tensor<string, []>("slice_by_index_19"), val = tensor<int32, []>(257)];
250
+ tensor<int32, [32, 96]> add_4 = add(x = cast_55, y = slice_by_index_19)[name = tensor<string, []>("add_4")];
251
+ tensor<int32, [32, 96]> select_1 = select(a = cast_55, b = add_4, cond = greater_equal_1)[name = tensor<string, []>("select_1")];
252
+ tensor<int32, []> var_365_cast_fp16_cast_uint16_axis_0 = const()[name = tensor<string, []>("op_365_cast_fp16_cast_uint16_axis_0"), val = tensor<int32, []>(0)];
253
+ tensor<string, []> select_1_to_int16_dtype_0 = const()[name = tensor<string, []>("select_1_to_int16_dtype_0"), val = tensor<string, []>("int16")];
254
+ tensor<int16, [32, 96]> select_1_to_int16 = cast(dtype = select_1_to_int16_dtype_0, x = select_1)[name = tensor<string, []>("cast_59")];
255
+ tensor<fp16, [32, 96, 128]> var_365_cast_fp16_cast_uint16_cast_uint16 = gather(axis = var_365_cast_fp16_cast_uint16_axis_0, batch_dims = var_365_batch_dims_0, indices = select_1_to_int16, validate_indices = var_365_validate_indices_0, x = model_embedding_weight_to_fp16)[name = tensor<string, []>("op_365_cast_fp16_cast_uint16_cast_uint16")];
256
+ tensor<fp16, [96, 128]> var_369_to_fp16 = const()[name = tensor<string, []>("op_369_to_fp16"), val = tensor<fp16, [96, 128]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(918464)))];
257
+ tensor<fp16, [32, 96, 128]> src_cast_fp16 = add(x = var_365_cast_fp16_cast_uint16_cast_uint16, y = var_369_to_fp16)[name = tensor<string, []>("src_cast_fp16")];
258
+ tensor<fp16, []> var_372_promoted_to_fp16 = const()[name = tensor<string, []>("op_372_promoted_to_fp16"), val = tensor<fp16, []>(0x0p+0)];
259
+ tensor<bool, [32, 96]> mask_cast_fp16 = equal(x = safe_ids_cast_fp16, y = var_372_promoted_to_fp16)[name = tensor<string, []>("mask_cast_fp16")];
260
+ tensor<fp16, []> var_388_to_fp16 = const()[name = tensor<string, []>("op_388_to_fp16"), val = tensor<fp16, []>(-inf)];
261
+ tensor<fp16, [32, 96]> var_394_to_fp16 = const()[name = tensor<string, []>("op_394_to_fp16"), val = tensor<fp16, [32, 96]>(BLOBFILE(path = tensor<string, []>("@model_path/weights/weight.bin"), offset = tensor<uint64, []>(943104)))];
262
+ tensor<fp16, [32, 96]> key_padding_mask_7_cast_fp16 = select(a = var_388_to_fp16, b = var_394_to_fp16, cond = mask_cast_fp16)[name = tensor<string, []>("key_padding_mask_7_cast_fp16")];
263
+ tensor<int32, [1]> query_9_axes_0 = const()[name = tensor<string, []>("query_9_axes_0"), val = tensor<int32, [1]>([-1])];
264
+ 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)))];
265
+ 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)))];
266
+ tensor<fp16, []> var_375_to_fp16 = const()[name = tensor<string, []>("op_375_to_fp16"), val = tensor<fp16, []>(0x1.5p-17)];
267
+ 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_375_to_fp16, gamma = model_option_encoder_layers_0_norm1_weight_to_fp16, x = src_cast_fp16)[name = tensor<string, []>("query_9_cast_fp16")];
268
+ tensor<int32, [3]> query_11_perm_0 = const()[name = tensor<string, []>("query_11_perm_0"), val = tensor<int32, [3]>([1, 0, 2])];
269
+ 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)))];
270
+ 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)))];
271
+ 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")];
272
+ 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")];
273
+ tensor<int32, [4]> concat_4 = const()[name = tensor<string, []>("concat_4"), val = tensor<int32, [4]>([96, 32, 3, 128])];
274
+ tensor<fp16, [96, 32, 3, 128]> var_428_cast_fp16 = reshape(shape = concat_4, x = linear_8_cast_fp16)[name = tensor<string, []>("op_428_cast_fp16")];
275
+ tensor<int32, [1]> var_429_axes_0 = const()[name = tensor<string, []>("op_429_axes_0"), val = tensor<int32, [1]>([0])];
276
+ tensor<fp16, [1, 96, 32, 3, 128]> var_429_cast_fp16 = expand_dims(axes = var_429_axes_0, x = var_428_cast_fp16)[name = tensor<string, []>("op_429_cast_fp16")];
277
+ tensor<int32, [5]> var_430_perm_0 = const()[name = tensor<string, []>("op_430_perm_0"), val = tensor<int32, [5]>([-2, 1, 2, 0, 4])];
278
+ tensor<int32, [1]> var_431_axes_0 = const()[name = tensor<string, []>("op_431_axes_0"), val = tensor<int32, [1]>([-2])];
279
+ tensor<fp16, [3, 96, 32, 1, 128]> var_430_cast_fp16 = transpose(perm = var_430_perm_0, x = var_429_cast_fp16)[name = tensor<string, []>("transpose_9")];
280
+ tensor<fp16, [3, 96, 32, 128]> var_431_cast_fp16 = squeeze(axes = var_431_axes_0, x = var_430_cast_fp16)[name = tensor<string, []>("op_431_cast_fp16")];
281
+ tensor<int32, [4]> q_13_begin_0 = const()[name = tensor<string, []>("q_13_begin_0"), val = tensor<int32, [4]>([0, 0, 0, 0])];
282
+ tensor<int32, [4]> q_13_end_0 = const()[name = tensor<string, []>("q_13_end_0"), val = tensor<int32, [4]>([1, 96, 32, 128])];
283
+ 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])];
284
+ 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])];
285
+ 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_431_cast_fp16)[name = tensor<string, []>("q_13_cast_fp16")];
286
+ tensor<int32, [4]> k_13_begin_0 = const()[name = tensor<string, []>("k_13_begin_0"), val = tensor<int32, [4]>([1, 0, 0, 0])];
287
+ tensor<int32, [4]> k_13_end_0 = const()[name = tensor<string, []>("k_13_end_0"), val = tensor<int32, [4]>([2, 96, 32, 128])];
288
+ 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])];
289
+ 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])];
290
+ 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_431_cast_fp16)[name = tensor<string, []>("k_13_cast_fp16")];
291
+ tensor<int32, [4]> v_13_begin_0 = const()[name = tensor<string, []>("v_13_begin_0"), val = tensor<int32, [4]>([2, 0, 0, 0])];
292
+ tensor<int32, [4]> v_13_end_0 = const()[name = tensor<string, []>("v_13_end_0"), val = tensor<int32, [4]>([3, 96, 32, 128])];
293
+ 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])];
294
+ 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])];
295
+ 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_431_cast_fp16)[name = tensor<string, []>("v_13_cast_fp16")];
296
+ tensor<int32, [3]> var_439 = const()[name = tensor<string, []>("op_439"), val = tensor<int32, [3]>([96, 128, 32])];
297
+ tensor<fp16, [96, 128, 32]> var_440_cast_fp16 = reshape(shape = var_439, x = q_13_cast_fp16)[name = tensor<string, []>("op_440_cast_fp16")];
298
+ tensor<int32, [3]> q_15_perm_0 = const()[name = tensor<string, []>("q_15_perm_0"), val = tensor<int32, [3]>([1, 0, 2])];
299
+ tensor<int32, [3]> var_446 = const()[name = tensor<string, []>("op_446"), val = tensor<int32, [3]>([96, 128, 32])];
300
+ tensor<fp16, [96, 128, 32]> var_447_cast_fp16 = reshape(shape = var_446, x = k_13_cast_fp16)[name = tensor<string, []>("op_447_cast_fp16")];
301
+ tensor<int32, [3]> k_15_perm_0 = const()[name = tensor<string, []>("k_15_perm_0"), val = tensor<int32, [3]>([1, 0, 2])];
302
+ tensor<int32, [3]> var_453 = const()[name = tensor<string, []>("op_453"), val = tensor<int32, [3]>([96, 128, 32])];
303
+ tensor<fp16, [96, 128, 32]> var_454_cast_fp16 = reshape(shape = var_453, x = v_13_cast_fp16)[name = tensor<string, []>("op_454_cast_fp16")];
304
+ tensor<int32, [3]> v_15_perm_0 = const()[name = tensor<string, []>("v_15_perm_0"), val = tensor<int32, [3]>([1, 0, 2])];
305
+ tensor<int32, [4]> var_457 = const()[name = tensor<string, []>("op_457"), val = tensor<int32, [4]>([32, 1, 1, 96])];
306
+ tensor<fp16, [32, 1, 1, 96]> var_458_cast_fp16 = reshape(shape = var_457, x = key_padding_mask_7_cast_fp16)[name = tensor<string, []>("op_458_cast_fp16")];
307
+ tensor<int32, [4]> var_460_reps_0 = const()[name = tensor<string, []>("op_460_reps_0"), val = tensor<int32, [4]>([1, 4, 1, 1])];
308
+ tensor<fp16, [32, 4, 1, 96]> var_460_cast_fp16 = tile(reps = var_460_reps_0, x = var_458_cast_fp16)[name = tensor<string, []>("op_460_cast_fp16")];
309
+ tensor<int32, [4]> var_468 = const()[name = tensor<string, []>("op_468"), val = tensor<int32, [4]>([32, 4, 96, 32])];
310
+ tensor<fp16, [128, 96, 32]> q_15_cast_fp16 = transpose(perm = q_15_perm_0, x = var_440_cast_fp16)[name = tensor<string, []>("transpose_8")];
311
+ tensor<fp16, [32, 4, 96, 32]> q_cast_fp16 = reshape(shape = var_468, x = q_15_cast_fp16)[name = tensor<string, []>("q_cast_fp16")];
312
+ tensor<int32, [4]> var_470 = const()[name = tensor<string, []>("op_470"), val = tensor<int32, [4]>([32, 4, 96, 32])];
313
+ tensor<fp16, [128, 96, 32]> k_15_cast_fp16 = transpose(perm = k_15_perm_0, x = var_447_cast_fp16)[name = tensor<string, []>("transpose_7")];
314
+ tensor<fp16, [32, 4, 96, 32]> k_cast_fp16 = reshape(shape = var_470, x = k_15_cast_fp16)[name = tensor<string, []>("k_cast_fp16")];
315
+ tensor<int32, [4]> var_472 = const()[name = tensor<string, []>("op_472"), val = tensor<int32, [4]>([32, 4, 96, 32])];
316
+ tensor<fp16, [128, 96, 32]> v_15_cast_fp16 = transpose(perm = v_15_perm_0, x = var_454_cast_fp16)[name = tensor<string, []>("transpose_6")];
317
+ tensor<fp16, [32, 4, 96, 32]> v_cast_fp16 = reshape(shape = var_472, x = v_15_cast_fp16)[name = tensor<string, []>("v_cast_fp16")];
318
+ tensor<fp16, []> mul_5_y_0_to_fp16 = const()[name = tensor<string, []>("mul_5_y_0_to_fp16"), val = tensor<fp16, []>(0x1.6ap-3)];
319
+ 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")];
320
+ tensor<bool, []> matmul_2_transpose_y_0 = const()[name = tensor<string, []>("matmul_2_transpose_y_0"), val = tensor<bool, []>(true)];
321
+ tensor<bool, []> matmul_2_transpose_x_0 = const()[name = tensor<string, []>("matmul_2_transpose_x_0"), val = tensor<bool, []>(false)];
322
+ 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")];
323
+ tensor<fp16, [32, 4, 96, 96]> add_2_cast_fp16 = add(x = matmul_2_cast_fp16, y = var_460_cast_fp16)[name = tensor<string, []>("add_2_cast_fp16")];
324
+ tensor<int32, []> softmax_2_axis_0 = const()[name = tensor<string, []>("softmax_2_axis_0"), val = tensor<int32, []>(-1)];
325
+ 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")];
326
+ tensor<bool, []> attn_output_17_transpose_x_0 = const()[name = tensor<string, []>("attn_output_17_transpose_x_0"), val = tensor<bool, []>(false)];
327
+ tensor<bool, []> attn_output_17_transpose_y_0 = const()[name = tensor<string, []>("attn_output_17_transpose_y_0"), val = tensor<bool, []>(false)];
328
+ 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")];
329
+ tensor<int32, [4]> var_475 = const()[name = tensor<string, []>("op_475"), val = tensor<int32, [4]>([2, 0, 1, 3])];
330
+ tensor<int32, [2]> var_480 = const()[name = tensor<string, []>("op_480"), val = tensor<int32, [2]>([3072, 128])];
331
+ tensor<fp16, [96, 32, 4, 32]> var_476_cast_fp16 = transpose(perm = var_475, x = attn_output_17_cast_fp16)[name = tensor<string, []>("transpose_5")];
332
+ tensor<fp16, [3072, 128]> attn_output_19_cast_fp16 = reshape(shape = var_480, x = var_476_cast_fp16)[name = tensor<string, []>("attn_output_19_cast_fp16")];
333
+ 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)))];
334
+ 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)))];
335
+ 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")];
336
+ tensor<int32, [3]> var_484 = const()[name = tensor<string, []>("op_484"), val = tensor<int32, [3]>([96, 32, 128])];
337
+ tensor<fp16, [96, 32, 128]> attn_output_cast_fp16 = reshape(shape = var_484, x = linear_9_cast_fp16)[name = tensor<string, []>("attn_output_cast_fp16")];
338
+ tensor<int32, [3]> input_35_perm_0 = const()[name = tensor<string, []>("input_35_perm_0"), val = tensor<int32, [3]>([1, 0, 2])];
339
+ 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")];
340
+ 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")];
341
+ tensor<int32, [1]> input_39_axes_0 = const()[name = tensor<string, []>("input_39_axes_0"), val = tensor<int32, [1]>([-1])];
342
+ 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)))];
343
+ 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)))];
344
+ 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_375_to_fp16, gamma = model_option_encoder_layers_0_norm2_weight_to_fp16, x = input_37_cast_fp16)[name = tensor<string, []>("input_39_cast_fp16")];
345
+ 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)))];
346
+ 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)))];
347
+ 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")];
348
+ tensor<fp16, [32, 96, 512]> input_43_cast_fp16 = relu(x = linear_10_cast_fp16)[name = tensor<string, []>("input_43_cast_fp16")];
349
+ 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)))];
350
+ 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)))];
351
+ 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")];
352
+ 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")];
353
+ tensor<int32, [1]> var_504_axes_0 = const()[name = tensor<string, []>("op_504_axes_0"), val = tensor<int32, [1]>([-1])];
354
+ tensor<bool, [32, 96, 1]> var_504 = expand_dims(axes = var_504_axes_0, x = flat_mask)[name = tensor<string, []>("op_504")];
355
+ tensor<string, []> weights_to_fp16_dtype_0 = const()[name = tensor<string, []>("weights_to_fp16_dtype_0"), val = tensor<string, []>("fp16")];
356
+ tensor<fp16, [32, 96, 1]> var_504_to_fp16 = cast(dtype = weights_to_fp16_dtype_0, x = var_504)[name = tensor<string, []>("cast_58")];
357
+ tensor<fp16, [32, 96, 128]> var_510_cast_fp16 = mul(x = hidden_cast_fp16, y = var_504_to_fp16)[name = tensor<string, []>("op_510_cast_fp16")];
358
+ tensor<int32, [1]> var_515_axes_0 = const()[name = tensor<string, []>("op_515_axes_0"), val = tensor<int32, [1]>([1])];
359
+ tensor<bool, []> var_515_keep_dims_0 = const()[name = tensor<string, []>("op_515_keep_dims_0"), val = tensor<bool, []>(false)];
360
+ tensor<fp16, [32, 128]> var_515_cast_fp16 = reduce_sum(axes = var_515_axes_0, keep_dims = var_515_keep_dims_0, x = var_510_cast_fp16)[name = tensor<string, []>("op_515_cast_fp16")];
361
+ tensor<int32, [1]> var_520_axes_0 = const()[name = tensor<string, []>("op_520_axes_0"), val = tensor<int32, [1]>([1])];
362
+ tensor<bool, []> var_520_keep_dims_0 = const()[name = tensor<string, []>("op_520_keep_dims_0"), val = tensor<bool, []>(false)];
363
+ tensor<fp16, [32, 1]> var_520_cast_fp16 = reduce_sum(axes = var_520_axes_0, keep_dims = var_520_keep_dims_0, x = var_504_to_fp16)[name = tensor<string, []>("op_520_cast_fp16")];
364
+ tensor<fp16, []> var_521_to_fp16 = const()[name = tensor<string, []>("op_521_to_fp16"), val = tensor<fp16, []>(0x1p+0)];
365
+ tensor<fp16, [32, 1]> var_522_cast_fp16 = maximum(x = var_520_cast_fp16, y = var_521_to_fp16)[name = tensor<string, []>("op_522_cast_fp16")];
366
+ tensor<fp16, [32, 128]> pooled_cast_fp16 = real_div(x = var_515_cast_fp16, y = var_522_cast_fp16)[name = tensor<string, []>("pooled_cast_fp16")];
367
+ tensor<int32, [3]> var_525 = const()[name = tensor<string, []>("op_525"), val = tensor<int32, [3]>([1, 32, -1])];
368
+ tensor<fp16, [1, 32, 128]> options_cast_fp16 = reshape(shape = var_525, x = pooled_cast_fp16)[name = tensor<string, []>("options_cast_fp16")];
369
+ tensor<int32, []> var_528 = const()[name = tensor<string, []>("op_528"), val = tensor<int32, []>(-1)];
370
+ tensor<int32, [1]> input_axes_0 = const()[name = tensor<string, []>("input_axes_0"), val = tensor<int32, [1]>([-1])];
371
+ 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)))];
372
+ 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)))];
373
+ tensor<fp16, []> var_536_to_fp16 = const()[name = tensor<string, []>("op_536_to_fp16"), val = tensor<fp16, []>(0x1.5p-17)];
374
+ tensor<fp16, [1, 224, 128]> input_cast_fp16 = layer_norm(axes = input_axes_0, beta = model_head_context_norm_bias_to_fp16, epsilon = var_536_to_fp16, gamma = model_head_context_norm_weight_to_fp16, x = context_cast_fp16)[name = tensor<string, []>("input_cast_fp16")];
375
+ tensor<int32, [1]> input_53_axes_0 = const()[name = tensor<string, []>("input_53_axes_0"), val = tensor<int32, [1]>([-1])];
376
+ 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)))];
377
+ 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)))];
378
+ 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_536_to_fp16, gamma = model_head_option_norm_weight_to_fp16, x = options_cast_fp16)[name = tensor<string, []>("input_53_cast_fp16")];
379
+ 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)))];
380
+ 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)))];
381
+ 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")];
382
+ 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)))];
383
+ 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")];
384
+ 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)))];
385
+ 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")];
386
+ tensor<bool, []> matmul_3_transpose_x_1 = const()[name = tensor<string, []>("matmul_3_transpose_x_1"), val = tensor<bool, []>(false)];
387
+ tensor<bool, []> matmul_3_transpose_y_1 = const()[name = tensor<string, []>("matmul_3_transpose_y_1"), val = tensor<bool, []>(true)];
388
+ 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")];
389
+ 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)];
390
+ 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")];
391
+ tensor<int32, [1]> var_567_axes_0 = const()[name = tensor<string, []>("op_567_axes_0"), val = tensor<int32, [1]>([1])];
392
+ tensor<bool, [1, 1, 224]> var_567 = expand_dims(axes = var_567_axes_0, x = context_mask)[name = tensor<string, []>("op_567")];
393
+ tensor<bool, [1, 1, 224]> var_569 = logical_not(x = var_567)[name = tensor<string, []>("op_569")];
394
+ tensor<fp16, []> var_529_to_fp16 = const()[name = tensor<string, []>("op_529_to_fp16"), val = tensor<fp16, []>(-inf)];
395
+ tensor<fp16, [1, 32, 224]> scores_cast_fp16 = select(a = var_529_to_fp16, b = _inversed_scores_1_cast_fp16, cond = var_569)[name = tensor<string, []>("scores_cast_fp16")];
396
+ tensor<fp16, [1, 32, 224]> var_571_cast_fp16 = softmax(axis = var_528, x = scores_cast_fp16)[name = tensor<string, []>("op_571_cast_fp16")];
397
+ tensor<bool, []> matmul_4_transpose_x_0 = const()[name = tensor<string, []>("matmul_4_transpose_x_0"), val = tensor<bool, []>(false)];
398
+ tensor<bool, []> matmul_4_transpose_y_0 = const()[name = tensor<string, []>("matmul_4_transpose_y_0"), val = tensor<bool, []>(false)];
399
+ 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_571_cast_fp16, y = linear_14_cast_fp16)[name = tensor<string, []>("matmul_4_cast_fp16")];
400
+ tensor<fp16, [1, 32, 128]> var_574_cast_fp16 = mul(x = linear_12_cast_fp16, y = matmul_4_cast_fp16)[name = tensor<string, []>("op_574_cast_fp16")];
401
+ tensor<int32, [1]> var_576_axes_0 = const()[name = tensor<string, []>("op_576_axes_0"), val = tensor<int32, [1]>([-1])];
402
+ tensor<bool, []> var_576_keep_dims_0 = const()[name = tensor<string, []>("op_576_keep_dims_0"), val = tensor<bool, []>(false)];
403
+ tensor<fp16, [1, 32]> var_576_cast_fp16 = reduce_sum(axes = var_576_axes_0, keep_dims = var_576_keep_dims_0, x = var_574_cast_fp16)[name = tensor<string, []>("op_576_cast_fp16")];
404
+ 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)];
405
+ tensor<fp16, [1, 32]> _inversed_logits_1_cast_fp16 = mul(x = var_576_cast_fp16, y = _inversed_logits_1_y_0_to_fp16)[name = tensor<string, []>("_inversed_logits_1_cast_fp16")];
406
+ tensor<bool, [1, 32]> var_579 = logical_not(x = option_mask_1)[name = tensor<string, []>("op_579")];
407
+ tensor<fp16, [1, 32]> logits_3_cast_fp16 = select(a = var_529_to_fp16, b = _inversed_logits_1_cast_fp16, cond = var_579)[name = tensor<string, []>("logits_3_cast_fp16")];
408
+ tensor<fp16, []> var_587_value_0_to_fp16 = const()[name = tensor<string, []>("op_587_value_0_to_fp16"), val = tensor<fp16, []>(-0x1.388p+13)];
409
+ tensor<fp16, [1, 32]> var_587_cast_fp16 = fill_like(ref_tensor = logits_3_cast_fp16, value = var_587_value_0_to_fp16)[name = tensor<string, []>("op_587_cast_fp16")];
410
+ tensor<fp16, [1, 32]> logits_cast_fp16 = select(a = logits_3_cast_fp16, b = var_587_cast_fp16, cond = option_mask_1)[name = tensor<string, []>("logits_cast_fp16")];
411
+ tensor<string, []> logits_cast_fp16_to_fp32_dtype_0 = const()[name = tensor<string, []>("logits_cast_fp16_to_fp32_dtype_0"), val = tensor<string, []>("fp32")];
412
+ tensor<int32, []> var_589 = const()[name = tensor<string, []>("op_589"), val = tensor<int32, []>(-1)];
413
+ tensor<fp16, [1, 32]> var_591_cast_fp16 = softmax(axis = var_589, x = logits_cast_fp16)[name = tensor<string, []>("op_591_cast_fp16")];
414
+ tensor<string, []> var_591_cast_fp16_to_fp32_dtype_0 = const()[name = tensor<string, []>("op_591_cast_fp16_to_fp32_dtype_0"), val = tensor<string, []>("fp32")];
415
+ tensor<fp32, [1, 32]> probabilities = cast(dtype = var_591_cast_fp16_to_fp32_dtype_0, x = var_591_cast_fp16)[name = tensor<string, []>("cast_56")];
416
+ tensor<fp32, [1, 32]> logits = cast(dtype = logits_cast_fp16_to_fp32_dtype_0, x = logits_cast_fp16)[name = tensor<string, []>("cast_57")];
417
+ } -> (logits, probabilities);
418
+ }
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
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:70485fc18cbb21785df833cbddddc0b5b59acb00d22394b76e55307e2c135dd0
3
+ size 63826
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
cua_s1_forms_fp16_options32.mlpackage/Manifest.json ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "fileFormatVersion": "1.0.0",
3
+ "itemInfoEntries": {
4
+ "A4ADBA80-1EEA-488D-A01F-25F39ECC9001": {
5
+ "author": "com.apple.CoreML",
6
+ "description": "CoreML Model Weights",
7
+ "name": "weights",
8
+ "path": "com.apple.CoreML/weights"
9
+ },
10
+ "B61C4C42-FF5A-4E18-BC04-DD11C9CE38DE": {
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": "B61C4C42-FF5A-4E18-BC04-DD11C9CE38DE"
18
+ }
preprocessing.py ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Host-side UTF-8 byte encoding for the fixed-shape Core ML interface."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from dataclasses import dataclass
6
+
7
+ import numpy as np
8
+
9
+
10
+ @dataclass(frozen=True)
11
+ class InputLimits:
12
+ context_bytes: int = 224
13
+ option_bytes: int = 96
14
+ max_options: int = 32
15
+
16
+ def __post_init__(self):
17
+ if self.context_bytes < 1 or self.option_bytes < 1 or self.max_options < 2:
18
+ raise ValueError("Positive byte limits and at least two option slots are required")
19
+
20
+
21
+ def byte_ids(text: str, length: int) -> np.ndarray:
22
+ """Match upstream: truncate UTF-8 bytes, offset byte values by one, zero-pad."""
23
+ data = text.encode("utf-8", errors="replace")[:length]
24
+ return np.frombuffer(data, dtype=np.uint8).astype(np.int32) + 1
25
+
26
+
27
+ def prepare_inputs(context: str, options: list[str] | tuple[str, ...], limits: InputLimits) -> dict[str, np.ndarray]:
28
+ """Encode one decision; options are never silently removed to fit the model."""
29
+ if not isinstance(context, str) or not context:
30
+ raise ValueError("context must be a nonempty string")
31
+ if not isinstance(options, (list, tuple)) or len(options) < 2:
32
+ raise ValueError("At least two options are required")
33
+ if len(options) > limits.max_options:
34
+ raise ValueError(f"{len(options)} options exceed {limits.max_options}; re-export with a larger --max-options")
35
+ if any(not isinstance(option, str) or not option for option in options):
36
+ raise ValueError("Options must be nonempty strings")
37
+ context_ids = np.zeros((1, limits.context_bytes), dtype=np.int32)
38
+ option_ids = np.zeros((1, limits.max_options, limits.option_bytes), dtype=np.int32)
39
+ option_mask = np.zeros((1, limits.max_options), dtype=np.int32)
40
+ tokens = byte_ids(context, limits.context_bytes)
41
+ context_ids[0, : len(tokens)] = tokens
42
+ for index, option in enumerate(options):
43
+ tokens = byte_ids(option, limits.option_bytes)
44
+ option_ids[0, index, : len(tokens)] = tokens
45
+ option_mask[0, : len(options)] = 1
46
+ return {"context_ids": context_ids, "option_ids": option_ids, "option_mask": option_mask}
reports/ane-fallback.json ADDED
@@ -0,0 +1,84 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "hardware": {
3
+ "device": "arm64",
4
+ "chip": "Apple M5 Pro",
5
+ "ram": "24GB",
6
+ "os_version": "macOS 27.0",
7
+ "timestamp": "2026-09-19T16:51:27.323329+00:00"
8
+ },
9
+ "models": [
10
+ {
11
+ "model_path": "build/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": 173,
16
+ "ane_ops": 149,
17
+ "gpu_ops": 0,
18
+ "cpu_ops": 24,
19
+ "ane_percent": 86.1,
20
+ "reasons": [
21
+ {
22
+ "reason": "Unsupported tensor data type: int32",
23
+ "count": 17,
24
+ "estimated_cpu_runtime_ms": 0.017,
25
+ "op_types": {
26
+ "ios17.cast": 8,
27
+ "ios17.slice_by_index": 4,
28
+ "ios17.add": 2,
29
+ "select": 2,
30
+ "ios17.reshape": 1
31
+ },
32
+ "ops": [
33
+ "var_27",
34
+ "var_43",
35
+ "var_43_to_fp16",
36
+ "context_ids_to_int16",
37
+ "cast_54",
38
+ "add_3",
39
+ "select_0",
40
+ "select_0_to_int16",
41
+ "flat_ids",
42
+ "var_333",
43
+ "var_349",
44
+ "var_349_to_fp16",
45
+ "flat_ids_to_int16",
46
+ "cast_55",
47
+ "add_4",
48
+ "select_1",
49
+ "select_1_to_int16"
50
+ ]
51
+ },
52
+ {
53
+ "reason": "Unable to resolve operation input \"y\".",
54
+ "count": 5,
55
+ "estimated_cpu_runtime_ms": 0.005,
56
+ "op_types": {
57
+ "ios17.not_equal": 3,
58
+ "ios17.greater_equal": 2
59
+ },
60
+ "ops": [
61
+ "option_mask_1",
62
+ "context_mask",
63
+ "greater_equal_0",
64
+ "flat_mask",
65
+ "greater_equal_1"
66
+ ]
67
+ },
68
+ {
69
+ "reason": "Unsupported gather index type",
70
+ "count": 2,
71
+ "estimated_cpu_runtime_ms": 0.0144,
72
+ "op_types": {
73
+ "ios17.gather": 2
74
+ },
75
+ "ops": [
76
+ "var_59_cast_fp16_cast_uint16_cast_uint16",
77
+ "var_365_cast_fp16_cast_uint16_cast_uint16"
78
+ ]
79
+ }
80
+ ]
81
+ }
82
+ }
83
+ ]
84
+ }
reports/upstream-metrics.json ADDED
@@ -0,0 +1,128 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "verification_report_sha256": "9a5d22ec4b447f0710c12e03c69d7ed802158bb94e9a3c6b059731730ced9f30",
3
+ "evaluator_source_revision": "83f142c4290a0f7d9ed545ae8532858c6e4f8145",
4
+ "evaluator_source_path": "libs/cua-s1/evals/metrics.py",
5
+ "evaluator_sha256": "49dccdeb4e2b456187cdc4491a6d78fabac6a45384272f8e3ec802a58872aa6e",
6
+ "adapter_sha256": "c78e45caa86fb59f9a56ef18cc6a35020ea6e281a6a23d23618f56da85a0d95e",
7
+ "scope": "Offline action/target classification, not GUI execution or task completion",
8
+ "normalization": "Stable row IDs; fill target is entity option index; upstream treats skip as abstention",
9
+ "results": {
10
+ "ALL": {
11
+ "examples": 196,
12
+ "accuracy": 1.0,
13
+ "coverage": 0.23469387755102042,
14
+ "abstention_rate": 0.7653061224489796,
15
+ "selective_accuracy": 1.0,
16
+ "wrong_action_rate": 0.0,
17
+ "wrong_target_rate": 0.0,
18
+ "unsafe_action_rate": 0.0,
19
+ "counts": {
20
+ "total": 196,
21
+ "correct": 196,
22
+ "abstained": 150,
23
+ "acted": 46,
24
+ "acted_correct": 46
25
+ },
26
+ "per_action": {
27
+ "abstain": {
28
+ "accuracy": 1.0,
29
+ "abstention_rate": 1.0,
30
+ "examples": 150
31
+ },
32
+ "check": {
33
+ "accuracy": 1.0,
34
+ "abstention_rate": 0.0,
35
+ "examples": 4
36
+ },
37
+ "click": {
38
+ "accuracy": 1.0,
39
+ "abstention_rate": 0.0,
40
+ "examples": 6
41
+ },
42
+ "fill": {
43
+ "accuracy": 1.0,
44
+ "abstention_rate": 0.0,
45
+ "examples": 36
46
+ }
47
+ }
48
+ },
49
+ "CPU_AND_NE": {
50
+ "examples": 196,
51
+ "accuracy": 1.0,
52
+ "coverage": 0.23469387755102042,
53
+ "abstention_rate": 0.7653061224489796,
54
+ "selective_accuracy": 1.0,
55
+ "wrong_action_rate": 0.0,
56
+ "wrong_target_rate": 0.0,
57
+ "unsafe_action_rate": 0.0,
58
+ "counts": {
59
+ "total": 196,
60
+ "correct": 196,
61
+ "abstained": 150,
62
+ "acted": 46,
63
+ "acted_correct": 46
64
+ },
65
+ "per_action": {
66
+ "abstain": {
67
+ "accuracy": 1.0,
68
+ "abstention_rate": 1.0,
69
+ "examples": 150
70
+ },
71
+ "check": {
72
+ "accuracy": 1.0,
73
+ "abstention_rate": 0.0,
74
+ "examples": 4
75
+ },
76
+ "click": {
77
+ "accuracy": 1.0,
78
+ "abstention_rate": 0.0,
79
+ "examples": 6
80
+ },
81
+ "fill": {
82
+ "accuracy": 1.0,
83
+ "abstention_rate": 0.0,
84
+ "examples": 36
85
+ }
86
+ }
87
+ },
88
+ "upstream_pytorch": {
89
+ "examples": 196,
90
+ "accuracy": 1.0,
91
+ "coverage": 0.23469387755102042,
92
+ "abstention_rate": 0.7653061224489796,
93
+ "selective_accuracy": 1.0,
94
+ "wrong_action_rate": 0.0,
95
+ "wrong_target_rate": 0.0,
96
+ "unsafe_action_rate": 0.0,
97
+ "counts": {
98
+ "total": 196,
99
+ "correct": 196,
100
+ "abstained": 150,
101
+ "acted": 46,
102
+ "acted_correct": 46
103
+ },
104
+ "per_action": {
105
+ "abstain": {
106
+ "accuracy": 1.0,
107
+ "abstention_rate": 1.0,
108
+ "examples": 150
109
+ },
110
+ "check": {
111
+ "accuracy": 1.0,
112
+ "abstention_rate": 0.0,
113
+ "examples": 4
114
+ },
115
+ "click": {
116
+ "accuracy": 1.0,
117
+ "abstention_rate": 0.0,
118
+ "examples": 6
119
+ },
120
+ "fill": {
121
+ "accuracy": 1.0,
122
+ "abstention_rate": 0.0,
123
+ "examples": 36
124
+ }
125
+ }
126
+ }
127
+ }
128
+ }
reports/verification.json ADDED
@@ -0,0 +1,3309 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "purpose": "Local conversion parity on the upstream demo; not a generalization or live GUI benchmark",
3
+ "created_utc": "2026-09-19T16:49:43.157197+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
+ "minimum_target": "iOS17/macOS14",
13
+ "limits": {
14
+ "context_bytes": 224,
15
+ "option_bytes": 96,
16
+ "max_options": 32
17
+ },
18
+ "model_config": {
19
+ "context_tokens": 224,
20
+ "encoder": "tinyx",
21
+ "heads": 4,
22
+ "hf_model": "Qwen/Qwen2.5-0.5B",
23
+ "layers": 2,
24
+ "option_tokens": 96,
25
+ "rank": 128,
26
+ "width": 128
27
+ },
28
+ "parameters": 706048,
29
+ "assets_lock_sha256": "8e65ad70af6bb814b571cdcfe828ba4bc339147da2d2211cbeac416163ef18ba",
30
+ "model_revision": "f54adbf447f4ca6ec259f529ee3f2e3e09f8cc71",
31
+ "source_revision": "83f142c4290a0f7d9ed545ae8532858c6e4f8145",
32
+ "trace_row": 0,
33
+ "trace_dataset_revision": "8273f34778b99ac2e12d9f6e7d57dad99ae20845",
34
+ "export_seconds": 0.5374167499830946,
35
+ "python": "3.11.11",
36
+ "torch": "2.7.0",
37
+ "coremltools": "9.0",
38
+ "package_files": {
39
+ "Data/com.apple.CoreML/model.mlmodel": "70485fc18cbb21785df833cbddddc0b5b59acb00d22394b76e55307e2c135dd0",
40
+ "Data/com.apple.CoreML/weights/weight.bin": "4da9259f798e44f5a1b50769ee1916fd3747c4d723dd9997b516c7fe238c7895",
41
+ "Manifest.json": "2bc0f5f62337b27fb6b0ecde248f1e3dc269e1ba4b65516aaeede2a60e293dcc"
42
+ }
43
+ },
44
+ "environment": {
45
+ "machine": "Apple M5 Pro",
46
+ "os": "27.0",
47
+ "python": "3.11.11",
48
+ "torch": "2.7.0",
49
+ "coremltools": "9.0",
50
+ "torch_cpu_threads": 2
51
+ },
52
+ "rows": 196,
53
+ "upstream": {
54
+ "correct": 196,
55
+ "accuracy": 1.0,
56
+ "inference_latency_ms": {
57
+ "count": 196,
58
+ "median_ms": 2.4375420034630224,
59
+ "p95_ms": 3.0990312443464063,
60
+ "min_ms": 1.6581250238232315,
61
+ "max_ms": 3.908416983904317
62
+ }
63
+ },
64
+ "export_adapter_fp32": {
65
+ "argmax_agreement": 196,
66
+ "max_abs_probability_error": 1.1324882507324219e-06
67
+ },
68
+ "host_preprocessing_latency_ms": {
69
+ "count": 196,
70
+ "median_ms": 0.03766651207115501,
71
+ "p95_ms": 0.04735450784210116,
72
+ "min_ms": 0.026416993932798505,
73
+ "max_ms": 0.07812498370185494
74
+ },
75
+ "thresholds": {
76
+ "argmax_agreement": 1.0,
77
+ "max_abs_probability_error": 0.005,
78
+ "export_adapter_max_abs_probability_error": 0.0001,
79
+ "allow_accuracy_loss": false
80
+ },
81
+ "backends": {
82
+ "ALL": {
83
+ "passed": true,
84
+ "correct": 196,
85
+ "accuracy": 1.0,
86
+ "argmax_agreement": 196,
87
+ "max_abs_probability_error": 0.0030989646911621094,
88
+ "mean_row_max_abs_probability_error": 1.6251600213152587e-05,
89
+ "max_abs_logit_error": 0.03653383255004883,
90
+ "load_seconds": 0.1422372910019476,
91
+ "warm_inference_latency_ms": {
92
+ "count": 196,
93
+ "median_ms": 1.8487705092411488,
94
+ "p95_ms": 2.4909165003919043,
95
+ "min_ms": 1.7662910104263574,
96
+ "max_ms": 2.893916011089459
97
+ },
98
+ "reversed_option_order": {
99
+ "rows": 6,
100
+ "max_abs_probability_error": 5.26619260199368e-07
101
+ },
102
+ "per_action": {
103
+ "fill": {
104
+ "rows": 36,
105
+ "correct": 36
106
+ },
107
+ "skip": {
108
+ "rows": 150,
109
+ "correct": 150
110
+ },
111
+ "check": {
112
+ "rows": 4,
113
+ "correct": 4
114
+ },
115
+ "click": {
116
+ "rows": 6,
117
+ "correct": 6
118
+ }
119
+ },
120
+ "decisions": [
121
+ {
122
+ "row": 0,
123
+ "label": 22,
124
+ "upstream": 22,
125
+ "coreml": 22,
126
+ "max_abs_probability_error": 5.26619260199368e-07,
127
+ "max_abs_logit_error": 0.017948150634765625
128
+ },
129
+ {
130
+ "row": 1,
131
+ "label": 23,
132
+ "upstream": 23,
133
+ "coreml": 23,
134
+ "max_abs_probability_error": 5.320471245795488e-07,
135
+ "max_abs_logit_error": 0.0173797607421875
136
+ },
137
+ {
138
+ "row": 2,
139
+ "label": 2,
140
+ "upstream": 2,
141
+ "coreml": 2,
142
+ "max_abs_probability_error": 3.134431381113245e-09,
143
+ "max_abs_logit_error": 0.02239227294921875
144
+ },
145
+ {
146
+ "row": 3,
147
+ "label": 5,
148
+ "upstream": 5,
149
+ "coreml": 5,
150
+ "max_abs_probability_error": 2.8436625143513083e-07,
151
+ "max_abs_logit_error": 0.014525413513183594
152
+ },
153
+ {
154
+ "row": 4,
155
+ "label": 4,
156
+ "upstream": 4,
157
+ "coreml": 4,
158
+ "max_abs_probability_error": 4.76837158203125e-07,
159
+ "max_abs_logit_error": 0.013245582580566406
160
+ },
161
+ {
162
+ "row": 5,
163
+ "label": 6,
164
+ "upstream": 6,
165
+ "coreml": 6,
166
+ "max_abs_probability_error": 3.197783371433616e-08,
167
+ "max_abs_logit_error": 0.01342916488647461
168
+ },
169
+ {
170
+ "row": 6,
171
+ "label": 7,
172
+ "upstream": 7,
173
+ "coreml": 7,
174
+ "max_abs_probability_error": 1.7993625078815967e-07,
175
+ "max_abs_logit_error": 0.011149883270263672
176
+ },
177
+ {
178
+ "row": 7,
179
+ "label": 8,
180
+ "upstream": 8,
181
+ "coreml": 8,
182
+ "max_abs_probability_error": 6.677582859992981e-07,
183
+ "max_abs_logit_error": 0.013294458389282227
184
+ },
185
+ {
186
+ "row": 8,
187
+ "label": 9,
188
+ "upstream": 9,
189
+ "coreml": 9,
190
+ "max_abs_probability_error": 4.183561941317748e-09,
191
+ "max_abs_logit_error": 0.013601541519165039
192
+ },
193
+ {
194
+ "row": 9,
195
+ "label": 10,
196
+ "upstream": 10,
197
+ "coreml": 10,
198
+ "max_abs_probability_error": 4.019384505227208e-07,
199
+ "max_abs_logit_error": 0.029033660888671875
200
+ },
201
+ {
202
+ "row": 10,
203
+ "label": 11,
204
+ "upstream": 11,
205
+ "coreml": 11,
206
+ "max_abs_probability_error": 2.5259510039177258e-09,
207
+ "max_abs_logit_error": 0.03653383255004883
208
+ },
209
+ {
210
+ "row": 11,
211
+ "label": 13,
212
+ "upstream": 13,
213
+ "coreml": 13,
214
+ "max_abs_probability_error": 1.1920928955078125e-07,
215
+ "max_abs_logit_error": 0.026096343994140625
216
+ },
217
+ {
218
+ "row": 12,
219
+ "label": 15,
220
+ "upstream": 15,
221
+ "coreml": 15,
222
+ "max_abs_probability_error": 4.578259904519655e-08,
223
+ "max_abs_logit_error": 0.029152870178222656
224
+ },
225
+ {
226
+ "row": 13,
227
+ "label": 16,
228
+ "upstream": 16,
229
+ "coreml": 16,
230
+ "max_abs_probability_error": 8.465372957289219e-06,
231
+ "max_abs_logit_error": 0.01841115951538086
232
+ },
233
+ {
234
+ "row": 14,
235
+ "label": 26,
236
+ "upstream": 26,
237
+ "coreml": 26,
238
+ "max_abs_probability_error": 1.1920928955078125e-07,
239
+ "max_abs_logit_error": 0.020061016082763672
240
+ },
241
+ {
242
+ "row": 15,
243
+ "label": 24,
244
+ "upstream": 24,
245
+ "coreml": 24,
246
+ "max_abs_probability_error": 8.867027645464987e-08,
247
+ "max_abs_logit_error": 0.013807952404022217
248
+ },
249
+ {
250
+ "row": 16,
251
+ "label": 26,
252
+ "upstream": 26,
253
+ "coreml": 26,
254
+ "max_abs_probability_error": 5.60369528557203e-10,
255
+ "max_abs_logit_error": 0.011376380920410156
256
+ },
257
+ {
258
+ "row": 17,
259
+ "label": 25,
260
+ "upstream": 25,
261
+ "coreml": 25,
262
+ "max_abs_probability_error": 3.9392489270539954e-11,
263
+ "max_abs_logit_error": 0.02391815185546875
264
+ },
265
+ {
266
+ "row": 18,
267
+ "label": 26,
268
+ "upstream": 26,
269
+ "coreml": 26,
270
+ "max_abs_probability_error": 5.761169319384862e-11,
271
+ "max_abs_logit_error": 0.008268356323242188
272
+ },
273
+ {
274
+ "row": 19,
275
+ "label": 26,
276
+ "upstream": 26,
277
+ "coreml": 26,
278
+ "max_abs_probability_error": 3.685274307940745e-12,
279
+ "max_abs_logit_error": 0.012112617492675781
280
+ },
281
+ {
282
+ "row": 20,
283
+ "label": 26,
284
+ "upstream": 26,
285
+ "coreml": 26,
286
+ "max_abs_probability_error": 3.197389020215269e-10,
287
+ "max_abs_logit_error": 0.012657880783081055
288
+ },
289
+ {
290
+ "row": 21,
291
+ "label": 26,
292
+ "upstream": 26,
293
+ "coreml": 26,
294
+ "max_abs_probability_error": 1.3100631690576847e-13,
295
+ "max_abs_logit_error": 0.02386617660522461
296
+ },
297
+ {
298
+ "row": 22,
299
+ "label": 26,
300
+ "upstream": 26,
301
+ "coreml": 26,
302
+ "max_abs_probability_error": 2.716319613682572e-09,
303
+ "max_abs_logit_error": 0.027971267700195312
304
+ },
305
+ {
306
+ "row": 23,
307
+ "label": 26,
308
+ "upstream": 26,
309
+ "coreml": 26,
310
+ "max_abs_probability_error": 8.720178357179975e-09,
311
+ "max_abs_logit_error": 0.026054739952087402
312
+ },
313
+ {
314
+ "row": 24,
315
+ "label": 26,
316
+ "upstream": 26,
317
+ "coreml": 26,
318
+ "max_abs_probability_error": 1.5336516778763354e-13,
319
+ "max_abs_logit_error": 0.012665033340454102
320
+ },
321
+ {
322
+ "row": 25,
323
+ "label": 26,
324
+ "upstream": 26,
325
+ "coreml": 26,
326
+ "max_abs_probability_error": 9.446710080851517e-11,
327
+ "max_abs_logit_error": 0.014183402061462402
328
+ },
329
+ {
330
+ "row": 26,
331
+ "label": 26,
332
+ "upstream": 26,
333
+ "coreml": 26,
334
+ "max_abs_probability_error": 4.373890138964498e-12,
335
+ "max_abs_logit_error": 0.009427070617675781
336
+ },
337
+ {
338
+ "row": 27,
339
+ "label": 26,
340
+ "upstream": 26,
341
+ "coreml": 26,
342
+ "max_abs_probability_error": 4.2128106558791956e-13,
343
+ "max_abs_logit_error": 0.016583919525146484
344
+ },
345
+ {
346
+ "row": 28,
347
+ "label": 26,
348
+ "upstream": 26,
349
+ "coreml": 26,
350
+ "max_abs_probability_error": 1.1457235160605705e-10,
351
+ "max_abs_logit_error": 0.012380242347717285
352
+ },
353
+ {
354
+ "row": 29,
355
+ "label": 26,
356
+ "upstream": 26,
357
+ "coreml": 26,
358
+ "max_abs_probability_error": 1.6885971787505838e-13,
359
+ "max_abs_logit_error": 0.01409292221069336
360
+ },
361
+ {
362
+ "row": 30,
363
+ "label": 26,
364
+ "upstream": 26,
365
+ "coreml": 26,
366
+ "max_abs_probability_error": 3.038820750589366e-09,
367
+ "max_abs_logit_error": 0.023344039916992188
368
+ },
369
+ {
370
+ "row": 31,
371
+ "label": 26,
372
+ "upstream": 26,
373
+ "coreml": 26,
374
+ "max_abs_probability_error": 2.535194276731545e-12,
375
+ "max_abs_logit_error": 0.019451618194580078
376
+ },
377
+ {
378
+ "row": 32,
379
+ "label": 26,
380
+ "upstream": 26,
381
+ "coreml": 26,
382
+ "max_abs_probability_error": 1.1524559084818975e-11,
383
+ "max_abs_logit_error": 0.016178369522094727
384
+ },
385
+ {
386
+ "row": 33,
387
+ "label": 26,
388
+ "upstream": 26,
389
+ "coreml": 26,
390
+ "max_abs_probability_error": 7.133360568900571e-11,
391
+ "max_abs_logit_error": 0.016007661819458008
392
+ },
393
+ {
394
+ "row": 34,
395
+ "label": 26,
396
+ "upstream": 26,
397
+ "coreml": 26,
398
+ "max_abs_probability_error": 8.463859558105469e-06,
399
+ "max_abs_logit_error": 0.021859407424926758
400
+ },
401
+ {
402
+ "row": 35,
403
+ "label": 26,
404
+ "upstream": 26,
405
+ "coreml": 26,
406
+ "max_abs_probability_error": 6.966427434917932e-12,
407
+ "max_abs_logit_error": 0.012809276580810547
408
+ },
409
+ {
410
+ "row": 36,
411
+ "label": 26,
412
+ "upstream": 26,
413
+ "coreml": 26,
414
+ "max_abs_probability_error": 3.978734008924789e-12,
415
+ "max_abs_logit_error": 0.011217594146728516
416
+ },
417
+ {
418
+ "row": 37,
419
+ "label": 26,
420
+ "upstream": 26,
421
+ "coreml": 26,
422
+ "max_abs_probability_error": 3.058104880437895e-10,
423
+ "max_abs_logit_error": 0.015135049819946289
424
+ },
425
+ {
426
+ "row": 38,
427
+ "label": 26,
428
+ "upstream": 26,
429
+ "coreml": 26,
430
+ "max_abs_probability_error": 1.1240661179634515e-12,
431
+ "max_abs_logit_error": 0.013502120971679688
432
+ },
433
+ {
434
+ "row": 39,
435
+ "label": 26,
436
+ "upstream": 26,
437
+ "coreml": 26,
438
+ "max_abs_probability_error": 3.3960612100258913e-12,
439
+ "max_abs_logit_error": 0.015411376953125
440
+ },
441
+ {
442
+ "row": 40,
443
+ "label": 26,
444
+ "upstream": 26,
445
+ "coreml": 26,
446
+ "max_abs_probability_error": 3.713369369506836e-05,
447
+ "max_abs_logit_error": 0.02988719940185547
448
+ },
449
+ {
450
+ "row": 41,
451
+ "label": 26,
452
+ "upstream": 26,
453
+ "coreml": 26,
454
+ "max_abs_probability_error": 1.836255592024827e-10,
455
+ "max_abs_logit_error": 0.017060812562704086
456
+ },
457
+ {
458
+ "row": 42,
459
+ "label": 26,
460
+ "upstream": 26,
461
+ "coreml": 26,
462
+ "max_abs_probability_error": 2.5000002068509275e-12,
463
+ "max_abs_logit_error": 0.009338855743408203
464
+ },
465
+ {
466
+ "row": 43,
467
+ "label": 26,
468
+ "upstream": 26,
469
+ "coreml": 26,
470
+ "max_abs_probability_error": 1.031253304972779e-08,
471
+ "max_abs_logit_error": 0.013645172119140625
472
+ },
473
+ {
474
+ "row": 44,
475
+ "label": 26,
476
+ "upstream": 26,
477
+ "coreml": 26,
478
+ "max_abs_probability_error": 3.2869124089174306e-12,
479
+ "max_abs_logit_error": 0.014712810516357422
480
+ },
481
+ {
482
+ "row": 45,
483
+ "label": 26,
484
+ "upstream": 26,
485
+ "coreml": 26,
486
+ "max_abs_probability_error": 2.582760394442829e-13,
487
+ "max_abs_logit_error": 0.01000899076461792
488
+ },
489
+ {
490
+ "row": 46,
491
+ "label": 26,
492
+ "upstream": 26,
493
+ "coreml": 26,
494
+ "max_abs_probability_error": 3.987421504092481e-12,
495
+ "max_abs_logit_error": 0.008915901184082031
496
+ },
497
+ {
498
+ "row": 47,
499
+ "label": 26,
500
+ "upstream": 26,
501
+ "coreml": 26,
502
+ "max_abs_probability_error": 3.5084782301630923e-13,
503
+ "max_abs_logit_error": 0.012367963790893555
504
+ },
505
+ {
506
+ "row": 48,
507
+ "label": 26,
508
+ "upstream": 26,
509
+ "coreml": 26,
510
+ "max_abs_probability_error": 1.1920928955078125e-07,
511
+ "max_abs_logit_error": 0.020061016082763672
512
+ },
513
+ {
514
+ "row": 49,
515
+ "label": 26,
516
+ "upstream": 26,
517
+ "coreml": 26,
518
+ "max_abs_probability_error": 1.312366881833782e-12,
519
+ "max_abs_logit_error": 0.02675628662109375
520
+ },
521
+ {
522
+ "row": 50,
523
+ "label": 26,
524
+ "upstream": 26,
525
+ "coreml": 26,
526
+ "max_abs_probability_error": 5.60369528557203e-10,
527
+ "max_abs_logit_error": 0.011376380920410156
528
+ },
529
+ {
530
+ "row": 51,
531
+ "label": 25,
532
+ "upstream": 25,
533
+ "coreml": 25,
534
+ "max_abs_probability_error": 3.9392489270539954e-11,
535
+ "max_abs_logit_error": 0.02391815185546875
536
+ },
537
+ {
538
+ "row": 52,
539
+ "label": 26,
540
+ "upstream": 26,
541
+ "coreml": 26,
542
+ "max_abs_probability_error": 5.761169319384862e-11,
543
+ "max_abs_logit_error": 0.008268356323242188
544
+ },
545
+ {
546
+ "row": 53,
547
+ "label": 26,
548
+ "upstream": 26,
549
+ "coreml": 26,
550
+ "max_abs_probability_error": 3.685274307940745e-12,
551
+ "max_abs_logit_error": 0.012112617492675781
552
+ },
553
+ {
554
+ "row": 54,
555
+ "label": 26,
556
+ "upstream": 26,
557
+ "coreml": 26,
558
+ "max_abs_probability_error": 3.197389020215269e-10,
559
+ "max_abs_logit_error": 0.012657880783081055
560
+ },
561
+ {
562
+ "row": 55,
563
+ "label": 26,
564
+ "upstream": 26,
565
+ "coreml": 26,
566
+ "max_abs_probability_error": 1.3100631690576847e-13,
567
+ "max_abs_logit_error": 0.02386617660522461
568
+ },
569
+ {
570
+ "row": 56,
571
+ "label": 26,
572
+ "upstream": 26,
573
+ "coreml": 26,
574
+ "max_abs_probability_error": 2.716319613682572e-09,
575
+ "max_abs_logit_error": 0.027971267700195312
576
+ },
577
+ {
578
+ "row": 57,
579
+ "label": 26,
580
+ "upstream": 26,
581
+ "coreml": 26,
582
+ "max_abs_probability_error": 8.720178357179975e-09,
583
+ "max_abs_logit_error": 0.026054739952087402
584
+ },
585
+ {
586
+ "row": 58,
587
+ "label": 26,
588
+ "upstream": 26,
589
+ "coreml": 26,
590
+ "max_abs_probability_error": 1.5336516778763354e-13,
591
+ "max_abs_logit_error": 0.012665033340454102
592
+ },
593
+ {
594
+ "row": 59,
595
+ "label": 26,
596
+ "upstream": 26,
597
+ "coreml": 26,
598
+ "max_abs_probability_error": 9.446710080851517e-11,
599
+ "max_abs_logit_error": 0.014183402061462402
600
+ },
601
+ {
602
+ "row": 60,
603
+ "label": 26,
604
+ "upstream": 26,
605
+ "coreml": 26,
606
+ "max_abs_probability_error": 4.373890138964498e-12,
607
+ "max_abs_logit_error": 0.009427070617675781
608
+ },
609
+ {
610
+ "row": 61,
611
+ "label": 26,
612
+ "upstream": 26,
613
+ "coreml": 26,
614
+ "max_abs_probability_error": 4.2128106558791956e-13,
615
+ "max_abs_logit_error": 0.016583919525146484
616
+ },
617
+ {
618
+ "row": 62,
619
+ "label": 26,
620
+ "upstream": 26,
621
+ "coreml": 26,
622
+ "max_abs_probability_error": 1.1457235160605705e-10,
623
+ "max_abs_logit_error": 0.012380242347717285
624
+ },
625
+ {
626
+ "row": 63,
627
+ "label": 26,
628
+ "upstream": 26,
629
+ "coreml": 26,
630
+ "max_abs_probability_error": 1.6885971787505838e-13,
631
+ "max_abs_logit_error": 0.01409292221069336
632
+ },
633
+ {
634
+ "row": 64,
635
+ "label": 26,
636
+ "upstream": 26,
637
+ "coreml": 26,
638
+ "max_abs_probability_error": 3.038820750589366e-09,
639
+ "max_abs_logit_error": 0.023344039916992188
640
+ },
641
+ {
642
+ "row": 65,
643
+ "label": 26,
644
+ "upstream": 26,
645
+ "coreml": 26,
646
+ "max_abs_probability_error": 2.535194276731545e-12,
647
+ "max_abs_logit_error": 0.019451618194580078
648
+ },
649
+ {
650
+ "row": 66,
651
+ "label": 26,
652
+ "upstream": 26,
653
+ "coreml": 26,
654
+ "max_abs_probability_error": 1.1524559084818975e-11,
655
+ "max_abs_logit_error": 0.016178369522094727
656
+ },
657
+ {
658
+ "row": 67,
659
+ "label": 26,
660
+ "upstream": 26,
661
+ "coreml": 26,
662
+ "max_abs_probability_error": 7.133360568900571e-11,
663
+ "max_abs_logit_error": 0.016007661819458008
664
+ },
665
+ {
666
+ "row": 68,
667
+ "label": 0,
668
+ "upstream": 0,
669
+ "coreml": 0,
670
+ "max_abs_probability_error": 5.960464477539062e-07,
671
+ "max_abs_logit_error": 0.02204132080078125
672
+ },
673
+ {
674
+ "row": 69,
675
+ "label": 1,
676
+ "upstream": 1,
677
+ "coreml": 1,
678
+ "max_abs_probability_error": 5.992624210193753e-07,
679
+ "max_abs_logit_error": 0.01074361801147461
680
+ },
681
+ {
682
+ "row": 70,
683
+ "label": 2,
684
+ "upstream": 2,
685
+ "coreml": 2,
686
+ "max_abs_probability_error": 1.6200374375330284e-09,
687
+ "max_abs_logit_error": 0.012182235717773438
688
+ },
689
+ {
690
+ "row": 71,
691
+ "label": 3,
692
+ "upstream": 3,
693
+ "coreml": 3,
694
+ "max_abs_probability_error": 7.649177860002965e-07,
695
+ "max_abs_logit_error": 0.021416664123535156
696
+ },
697
+ {
698
+ "row": 72,
699
+ "label": 5,
700
+ "upstream": 5,
701
+ "coreml": 5,
702
+ "max_abs_probability_error": 1.716807673801668e-08,
703
+ "max_abs_logit_error": 0.015079259872436523
704
+ },
705
+ {
706
+ "row": 73,
707
+ "label": 6,
708
+ "upstream": 6,
709
+ "coreml": 6,
710
+ "max_abs_probability_error": 2.384185791015625e-07,
711
+ "max_abs_logit_error": 0.022822856903076172
712
+ },
713
+ {
714
+ "row": 74,
715
+ "label": 7,
716
+ "upstream": 7,
717
+ "coreml": 7,
718
+ "max_abs_probability_error": 1.3113021850585938e-06,
719
+ "max_abs_logit_error": 0.02725982666015625
720
+ },
721
+ {
722
+ "row": 75,
723
+ "label": 8,
724
+ "upstream": 8,
725
+ "coreml": 8,
726
+ "max_abs_probability_error": 8.482402336085215e-08,
727
+ "max_abs_logit_error": 0.01822662353515625
728
+ },
729
+ {
730
+ "row": 76,
731
+ "label": 9,
732
+ "upstream": 9,
733
+ "coreml": 9,
734
+ "max_abs_probability_error": 4.19224761571968e-08,
735
+ "max_abs_logit_error": 0.027760028839111328
736
+ },
737
+ {
738
+ "row": 77,
739
+ "label": 13,
740
+ "upstream": 13,
741
+ "coreml": 13,
742
+ "max_abs_probability_error": 6.794929504394531e-06,
743
+ "max_abs_logit_error": 0.02509307861328125
744
+ },
745
+ {
746
+ "row": 78,
747
+ "label": 20,
748
+ "upstream": 20,
749
+ "coreml": 20,
750
+ "max_abs_probability_error": 1.1920928955078125e-07,
751
+ "max_abs_logit_error": 0.013262271881103516
752
+ },
753
+ {
754
+ "row": 79,
755
+ "label": 18,
756
+ "upstream": 18,
757
+ "coreml": 18,
758
+ "max_abs_probability_error": 7.902155630290508e-06,
759
+ "max_abs_logit_error": 0.019384384155273438
760
+ },
761
+ {
762
+ "row": 80,
763
+ "label": 18,
764
+ "upstream": 18,
765
+ "coreml": 18,
766
+ "max_abs_probability_error": 4.386720320326276e-09,
767
+ "max_abs_logit_error": 0.020812511444091797
768
+ },
769
+ {
770
+ "row": 81,
771
+ "label": 20,
772
+ "upstream": 20,
773
+ "coreml": 20,
774
+ "max_abs_probability_error": 3.5509287954482716e-08,
775
+ "max_abs_logit_error": 0.033596038818359375
776
+ },
777
+ {
778
+ "row": 82,
779
+ "label": 19,
780
+ "upstream": 19,
781
+ "coreml": 19,
782
+ "max_abs_probability_error": 1.1210374850634253e-09,
783
+ "max_abs_logit_error": 0.021764755249023438
784
+ },
785
+ {
786
+ "row": 83,
787
+ "label": 20,
788
+ "upstream": 20,
789
+ "coreml": 20,
790
+ "max_abs_probability_error": 2.9104718635153404e-11,
791
+ "max_abs_logit_error": 0.017470359802246094
792
+ },
793
+ {
794
+ "row": 84,
795
+ "label": 20,
796
+ "upstream": 20,
797
+ "coreml": 20,
798
+ "max_abs_probability_error": 3.615042487581377e-09,
799
+ "max_abs_logit_error": 0.011733055114746094
800
+ },
801
+ {
802
+ "row": 85,
803
+ "label": 20,
804
+ "upstream": 20,
805
+ "coreml": 20,
806
+ "max_abs_probability_error": 2.5568436257117355e-12,
807
+ "max_abs_logit_error": 0.018376827239990234
808
+ },
809
+ {
810
+ "row": 86,
811
+ "label": 20,
812
+ "upstream": 20,
813
+ "coreml": 20,
814
+ "max_abs_probability_error": 3.652814939414384e-09,
815
+ "max_abs_logit_error": 0.013185739517211914
816
+ },
817
+ {
818
+ "row": 87,
819
+ "label": 20,
820
+ "upstream": 20,
821
+ "coreml": 20,
822
+ "max_abs_probability_error": 8.637570658720506e-10,
823
+ "max_abs_logit_error": 0.010789871215820312
824
+ },
825
+ {
826
+ "row": 88,
827
+ "label": 20,
828
+ "upstream": 20,
829
+ "coreml": 20,
830
+ "max_abs_probability_error": 2.6595947666407938e-11,
831
+ "max_abs_logit_error": 0.022840499877929688
832
+ },
833
+ {
834
+ "row": 89,
835
+ "label": 20,
836
+ "upstream": 20,
837
+ "coreml": 20,
838
+ "max_abs_probability_error": 1.6561418902938385e-11,
839
+ "max_abs_logit_error": 0.009737014770507812
840
+ },
841
+ {
842
+ "row": 90,
843
+ "label": 20,
844
+ "upstream": 20,
845
+ "coreml": 20,
846
+ "max_abs_probability_error": 1.1621037465658901e-11,
847
+ "max_abs_logit_error": 0.01908111572265625
848
+ },
849
+ {
850
+ "row": 91,
851
+ "label": 20,
852
+ "upstream": 20,
853
+ "coreml": 20,
854
+ "max_abs_probability_error": 8.295308884243013e-13,
855
+ "max_abs_logit_error": 0.016066551208496094
856
+ },
857
+ {
858
+ "row": 92,
859
+ "label": 20,
860
+ "upstream": 20,
861
+ "coreml": 20,
862
+ "max_abs_probability_error": 2.485815372987865e-14,
863
+ "max_abs_logit_error": 0.01638507843017578
864
+ },
865
+ {
866
+ "row": 93,
867
+ "label": 20,
868
+ "upstream": 20,
869
+ "coreml": 20,
870
+ "max_abs_probability_error": 2.78640222006743e-10,
871
+ "max_abs_logit_error": 0.024122238159179688
872
+ },
873
+ {
874
+ "row": 94,
875
+ "label": 20,
876
+ "upstream": 20,
877
+ "coreml": 20,
878
+ "max_abs_probability_error": 3.6049052631881295e-11,
879
+ "max_abs_logit_error": 0.0227203369140625
880
+ },
881
+ {
882
+ "row": 95,
883
+ "label": 20,
884
+ "upstream": 20,
885
+ "coreml": 20,
886
+ "max_abs_probability_error": 7.636086207796211e-12,
887
+ "max_abs_logit_error": 0.021586894989013672
888
+ },
889
+ {
890
+ "row": 96,
891
+ "label": 20,
892
+ "upstream": 20,
893
+ "coreml": 20,
894
+ "max_abs_probability_error": 2.5383029012004954e-12,
895
+ "max_abs_logit_error": 0.019191741943359375
896
+ },
897
+ {
898
+ "row": 97,
899
+ "label": 20,
900
+ "upstream": 20,
901
+ "coreml": 20,
902
+ "max_abs_probability_error": 3.6573055695043877e-09,
903
+ "max_abs_logit_error": 0.016190528869628906
904
+ },
905
+ {
906
+ "row": 98,
907
+ "label": 20,
908
+ "upstream": 20,
909
+ "coreml": 20,
910
+ "max_abs_probability_error": 3.6824872040597256e-09,
911
+ "max_abs_logit_error": 0.016640663146972656
912
+ },
913
+ {
914
+ "row": 99,
915
+ "label": 20,
916
+ "upstream": 20,
917
+ "coreml": 20,
918
+ "max_abs_probability_error": 7.239464139274787e-09,
919
+ "max_abs_logit_error": 0.012330055236816406
920
+ },
921
+ {
922
+ "row": 100,
923
+ "label": 20,
924
+ "upstream": 20,
925
+ "coreml": 20,
926
+ "max_abs_probability_error": 9.094208053284092e-09,
927
+ "max_abs_logit_error": 0.024295806884765625
928
+ },
929
+ {
930
+ "row": 101,
931
+ "label": 20,
932
+ "upstream": 20,
933
+ "coreml": 20,
934
+ "max_abs_probability_error": 4.488498461796553e-11,
935
+ "max_abs_logit_error": 0.010948657989501953
936
+ },
937
+ {
938
+ "row": 102,
939
+ "label": 20,
940
+ "upstream": 20,
941
+ "coreml": 20,
942
+ "max_abs_probability_error": 6.78730405212491e-11,
943
+ "max_abs_logit_error": 0.0258026123046875
944
+ },
945
+ {
946
+ "row": 103,
947
+ "label": 20,
948
+ "upstream": 20,
949
+ "coreml": 20,
950
+ "max_abs_probability_error": 4.291534423828125e-06,
951
+ "max_abs_logit_error": 0.013744831085205078
952
+ },
953
+ {
954
+ "row": 104,
955
+ "label": 20,
956
+ "upstream": 20,
957
+ "coreml": 20,
958
+ "max_abs_probability_error": 4.948583409714047e-08,
959
+ "max_abs_logit_error": 0.02979755401611328
960
+ },
961
+ {
962
+ "row": 105,
963
+ "label": 20,
964
+ "upstream": 20,
965
+ "coreml": 20,
966
+ "max_abs_probability_error": 9.98279237052202e-12,
967
+ "max_abs_logit_error": 0.012142181396484375
968
+ },
969
+ {
970
+ "row": 106,
971
+ "label": 20,
972
+ "upstream": 20,
973
+ "coreml": 20,
974
+ "max_abs_probability_error": 2.4030777368011513e-11,
975
+ "max_abs_logit_error": 0.013262748718261719
976
+ },
977
+ {
978
+ "row": 107,
979
+ "label": 20,
980
+ "upstream": 20,
981
+ "coreml": 20,
982
+ "max_abs_probability_error": 2.511102437097179e-12,
983
+ "max_abs_logit_error": 0.018053054809570312
984
+ },
985
+ {
986
+ "row": 108,
987
+ "label": 20,
988
+ "upstream": 20,
989
+ "coreml": 20,
990
+ "max_abs_probability_error": 2.8072548730051494e-09,
991
+ "max_abs_logit_error": 0.024975299835205078
992
+ },
993
+ {
994
+ "row": 109,
995
+ "label": 20,
996
+ "upstream": 20,
997
+ "coreml": 20,
998
+ "max_abs_probability_error": 1.1920928955078125e-07,
999
+ "max_abs_logit_error": 0.013262271881103516
1000
+ },
1001
+ {
1002
+ "row": 110,
1003
+ "label": 20,
1004
+ "upstream": 20,
1005
+ "coreml": 20,
1006
+ "max_abs_probability_error": 2.9665898182429373e-08,
1007
+ "max_abs_logit_error": 0.02109050750732422
1008
+ },
1009
+ {
1010
+ "row": 111,
1011
+ "label": 20,
1012
+ "upstream": 20,
1013
+ "coreml": 20,
1014
+ "max_abs_probability_error": 1.1920928955078125e-07,
1015
+ "max_abs_logit_error": 0.0117645263671875
1016
+ },
1017
+ {
1018
+ "row": 112,
1019
+ "label": 20,
1020
+ "upstream": 20,
1021
+ "coreml": 20,
1022
+ "max_abs_probability_error": 3.5509287954482716e-08,
1023
+ "max_abs_logit_error": 0.033596038818359375
1024
+ },
1025
+ {
1026
+ "row": 113,
1027
+ "label": 19,
1028
+ "upstream": 19,
1029
+ "coreml": 19,
1030
+ "max_abs_probability_error": 1.1210374850634253e-09,
1031
+ "max_abs_logit_error": 0.021764755249023438
1032
+ },
1033
+ {
1034
+ "row": 114,
1035
+ "label": 20,
1036
+ "upstream": 20,
1037
+ "coreml": 20,
1038
+ "max_abs_probability_error": 2.9104718635153404e-11,
1039
+ "max_abs_logit_error": 0.017470359802246094
1040
+ },
1041
+ {
1042
+ "row": 115,
1043
+ "label": 20,
1044
+ "upstream": 20,
1045
+ "coreml": 20,
1046
+ "max_abs_probability_error": 3.615042487581377e-09,
1047
+ "max_abs_logit_error": 0.011733055114746094
1048
+ },
1049
+ {
1050
+ "row": 116,
1051
+ "label": 20,
1052
+ "upstream": 20,
1053
+ "coreml": 20,
1054
+ "max_abs_probability_error": 2.5568436257117355e-12,
1055
+ "max_abs_logit_error": 0.018376827239990234
1056
+ },
1057
+ {
1058
+ "row": 117,
1059
+ "label": 20,
1060
+ "upstream": 20,
1061
+ "coreml": 20,
1062
+ "max_abs_probability_error": 3.652814939414384e-09,
1063
+ "max_abs_logit_error": 0.013185739517211914
1064
+ },
1065
+ {
1066
+ "row": 118,
1067
+ "label": 20,
1068
+ "upstream": 20,
1069
+ "coreml": 20,
1070
+ "max_abs_probability_error": 8.637570658720506e-10,
1071
+ "max_abs_logit_error": 0.010789871215820312
1072
+ },
1073
+ {
1074
+ "row": 119,
1075
+ "label": 20,
1076
+ "upstream": 20,
1077
+ "coreml": 20,
1078
+ "max_abs_probability_error": 2.6595947666407938e-11,
1079
+ "max_abs_logit_error": 0.022840499877929688
1080
+ },
1081
+ {
1082
+ "row": 120,
1083
+ "label": 20,
1084
+ "upstream": 20,
1085
+ "coreml": 20,
1086
+ "max_abs_probability_error": 1.6561418902938385e-11,
1087
+ "max_abs_logit_error": 0.009737014770507812
1088
+ },
1089
+ {
1090
+ "row": 121,
1091
+ "label": 20,
1092
+ "upstream": 20,
1093
+ "coreml": 20,
1094
+ "max_abs_probability_error": 1.1621037465658901e-11,
1095
+ "max_abs_logit_error": 0.01908111572265625
1096
+ },
1097
+ {
1098
+ "row": 122,
1099
+ "label": 20,
1100
+ "upstream": 20,
1101
+ "coreml": 20,
1102
+ "max_abs_probability_error": 8.295308884243013e-13,
1103
+ "max_abs_logit_error": 0.016066551208496094
1104
+ },
1105
+ {
1106
+ "row": 123,
1107
+ "label": 20,
1108
+ "upstream": 20,
1109
+ "coreml": 20,
1110
+ "max_abs_probability_error": 2.485815372987865e-14,
1111
+ "max_abs_logit_error": 0.01638507843017578
1112
+ },
1113
+ {
1114
+ "row": 124,
1115
+ "label": 20,
1116
+ "upstream": 20,
1117
+ "coreml": 20,
1118
+ "max_abs_probability_error": 2.78640222006743e-10,
1119
+ "max_abs_logit_error": 0.024122238159179688
1120
+ },
1121
+ {
1122
+ "row": 125,
1123
+ "label": 20,
1124
+ "upstream": 20,
1125
+ "coreml": 20,
1126
+ "max_abs_probability_error": 3.6049052631881295e-11,
1127
+ "max_abs_logit_error": 0.0227203369140625
1128
+ },
1129
+ {
1130
+ "row": 126,
1131
+ "label": 20,
1132
+ "upstream": 20,
1133
+ "coreml": 20,
1134
+ "max_abs_probability_error": 7.636086207796211e-12,
1135
+ "max_abs_logit_error": 0.021586894989013672
1136
+ },
1137
+ {
1138
+ "row": 127,
1139
+ "label": 20,
1140
+ "upstream": 20,
1141
+ "coreml": 20,
1142
+ "max_abs_probability_error": 2.5383029012004954e-12,
1143
+ "max_abs_logit_error": 0.019191741943359375
1144
+ },
1145
+ {
1146
+ "row": 128,
1147
+ "label": 20,
1148
+ "upstream": 20,
1149
+ "coreml": 20,
1150
+ "max_abs_probability_error": 3.6573055695043877e-09,
1151
+ "max_abs_logit_error": 0.016190528869628906
1152
+ },
1153
+ {
1154
+ "row": 129,
1155
+ "label": 20,
1156
+ "upstream": 20,
1157
+ "coreml": 20,
1158
+ "max_abs_probability_error": 3.6824872040597256e-09,
1159
+ "max_abs_logit_error": 0.016640663146972656
1160
+ },
1161
+ {
1162
+ "row": 130,
1163
+ "label": 1,
1164
+ "upstream": 1,
1165
+ "coreml": 1,
1166
+ "max_abs_probability_error": 4.76837158203125e-07,
1167
+ "max_abs_logit_error": 0.027278900146484375
1168
+ },
1169
+ {
1170
+ "row": 131,
1171
+ "label": 2,
1172
+ "upstream": 2,
1173
+ "coreml": 2,
1174
+ "max_abs_probability_error": 1.3382816632656613e-08,
1175
+ "max_abs_logit_error": 0.016567230224609375
1176
+ },
1177
+ {
1178
+ "row": 132,
1179
+ "label": 3,
1180
+ "upstream": 3,
1181
+ "coreml": 3,
1182
+ "max_abs_probability_error": 4.5742126530967653e-07,
1183
+ "max_abs_logit_error": 0.025929927825927734
1184
+ },
1185
+ {
1186
+ "row": 133,
1187
+ "label": 4,
1188
+ "upstream": 4,
1189
+ "coreml": 4,
1190
+ "max_abs_probability_error": 1.1920928955078125e-07,
1191
+ "max_abs_logit_error": 0.017045140266418457
1192
+ },
1193
+ {
1194
+ "row": 134,
1195
+ "label": 5,
1196
+ "upstream": 5,
1197
+ "coreml": 5,
1198
+ "max_abs_probability_error": 8.344650268554688e-07,
1199
+ "max_abs_logit_error": 0.017194747924804688
1200
+ },
1201
+ {
1202
+ "row": 135,
1203
+ "label": 6,
1204
+ "upstream": 6,
1205
+ "coreml": 6,
1206
+ "max_abs_probability_error": 3.5762786865234375e-07,
1207
+ "max_abs_logit_error": 0.026395797729492188
1208
+ },
1209
+ {
1210
+ "row": 136,
1211
+ "label": 7,
1212
+ "upstream": 7,
1213
+ "coreml": 7,
1214
+ "max_abs_probability_error": 2.384185791015625e-07,
1215
+ "max_abs_logit_error": 0.020420074462890625
1216
+ },
1217
+ {
1218
+ "row": 137,
1219
+ "label": 8,
1220
+ "upstream": 8,
1221
+ "coreml": 8,
1222
+ "max_abs_probability_error": 0.0030989646911621094,
1223
+ "max_abs_logit_error": 0.021968841552734375
1224
+ },
1225
+ {
1226
+ "row": 138,
1227
+ "label": 9,
1228
+ "upstream": 9,
1229
+ "coreml": 9,
1230
+ "max_abs_probability_error": 1.7425772966817021e-06,
1231
+ "max_abs_logit_error": 0.010594367980957031
1232
+ },
1233
+ {
1234
+ "row": 139,
1235
+ "label": 10,
1236
+ "upstream": 10,
1237
+ "coreml": 10,
1238
+ "max_abs_probability_error": 1.1920928955078125e-07,
1239
+ "max_abs_logit_error": 0.015566825866699219
1240
+ },
1241
+ {
1242
+ "row": 140,
1243
+ "label": 11,
1244
+ "upstream": 11,
1245
+ "coreml": 11,
1246
+ "max_abs_probability_error": 2.733497694862308e-08,
1247
+ "max_abs_logit_error": 0.020360946655273438
1248
+ },
1249
+ {
1250
+ "row": 141,
1251
+ "label": 12,
1252
+ "upstream": 12,
1253
+ "coreml": 12,
1254
+ "max_abs_probability_error": 8.882998372428119e-07,
1255
+ "max_abs_logit_error": 0.01713848114013672
1256
+ },
1257
+ {
1258
+ "row": 142,
1259
+ "label": 18,
1260
+ "upstream": 18,
1261
+ "coreml": 18,
1262
+ "max_abs_probability_error": 7.821654435247183e-11,
1263
+ "max_abs_logit_error": 0.016475677490234375
1264
+ },
1265
+ {
1266
+ "row": 143,
1267
+ "label": 16,
1268
+ "upstream": 16,
1269
+ "coreml": 16,
1270
+ "max_abs_probability_error": 6.903178473294247e-09,
1271
+ "max_abs_logit_error": 0.02091217041015625
1272
+ },
1273
+ {
1274
+ "row": 144,
1275
+ "label": 18,
1276
+ "upstream": 18,
1277
+ "coreml": 18,
1278
+ "max_abs_probability_error": 1.9354274627403356e-08,
1279
+ "max_abs_logit_error": 0.014428257942199707
1280
+ },
1281
+ {
1282
+ "row": 145,
1283
+ "label": 18,
1284
+ "upstream": 18,
1285
+ "coreml": 18,
1286
+ "max_abs_probability_error": 3.937020665034652e-08,
1287
+ "max_abs_logit_error": 0.013593673706054688
1288
+ },
1289
+ {
1290
+ "row": 146,
1291
+ "label": 17,
1292
+ "upstream": 17,
1293
+ "coreml": 17,
1294
+ "max_abs_probability_error": 1.295774154641549e-09,
1295
+ "max_abs_logit_error": 0.03515338897705078
1296
+ },
1297
+ {
1298
+ "row": 147,
1299
+ "label": 18,
1300
+ "upstream": 18,
1301
+ "coreml": 18,
1302
+ "max_abs_probability_error": 3.638334078459593e-11,
1303
+ "max_abs_logit_error": 0.016902923583984375
1304
+ },
1305
+ {
1306
+ "row": 148,
1307
+ "label": 18,
1308
+ "upstream": 18,
1309
+ "coreml": 18,
1310
+ "max_abs_probability_error": 1.354898415684147e-10,
1311
+ "max_abs_logit_error": 0.007921218872070312
1312
+ },
1313
+ {
1314
+ "row": 149,
1315
+ "label": 18,
1316
+ "upstream": 18,
1317
+ "coreml": 18,
1318
+ "max_abs_probability_error": 4.4544090638254374e-12,
1319
+ "max_abs_logit_error": 0.018396615982055664
1320
+ },
1321
+ {
1322
+ "row": 150,
1323
+ "label": 18,
1324
+ "upstream": 18,
1325
+ "coreml": 18,
1326
+ "max_abs_probability_error": 2.2619059403261588e-14,
1327
+ "max_abs_logit_error": 0.019584178924560547
1328
+ },
1329
+ {
1330
+ "row": 151,
1331
+ "label": 18,
1332
+ "upstream": 18,
1333
+ "coreml": 18,
1334
+ "max_abs_probability_error": 5.77121683775772e-12,
1335
+ "max_abs_logit_error": 0.01009368896484375
1336
+ },
1337
+ {
1338
+ "row": 152,
1339
+ "label": 18,
1340
+ "upstream": 18,
1341
+ "coreml": 18,
1342
+ "max_abs_probability_error": 1.4402368186949843e-12,
1343
+ "max_abs_logit_error": 0.016597270965576172
1344
+ },
1345
+ {
1346
+ "row": 153,
1347
+ "label": 18,
1348
+ "upstream": 18,
1349
+ "coreml": 18,
1350
+ "max_abs_probability_error": 2.3069191001923173e-10,
1351
+ "max_abs_logit_error": 0.023260116577148438
1352
+ },
1353
+ {
1354
+ "row": 154,
1355
+ "label": 18,
1356
+ "upstream": 18,
1357
+ "coreml": 18,
1358
+ "max_abs_probability_error": 4.5346018606728933e-13,
1359
+ "max_abs_logit_error": 0.023482322692871094
1360
+ },
1361
+ {
1362
+ "row": 155,
1363
+ "label": 18,
1364
+ "upstream": 18,
1365
+ "coreml": 18,
1366
+ "max_abs_probability_error": 1.2430889650971721e-12,
1367
+ "max_abs_logit_error": 0.013761520385742188
1368
+ },
1369
+ {
1370
+ "row": 156,
1371
+ "label": 18,
1372
+ "upstream": 18,
1373
+ "coreml": 18,
1374
+ "max_abs_probability_error": 3.12792326762068e-14,
1375
+ "max_abs_logit_error": 0.013568401336669922
1376
+ },
1377
+ {
1378
+ "row": 157,
1379
+ "label": 18,
1380
+ "upstream": 18,
1381
+ "coreml": 18,
1382
+ "max_abs_probability_error": 1.5832196664788967e-12,
1383
+ "max_abs_logit_error": 0.013137876987457275
1384
+ },
1385
+ {
1386
+ "row": 158,
1387
+ "label": 18,
1388
+ "upstream": 18,
1389
+ "coreml": 18,
1390
+ "max_abs_probability_error": 3.681888127715638e-12,
1391
+ "max_abs_logit_error": 0.026842832565307617
1392
+ },
1393
+ {
1394
+ "row": 159,
1395
+ "label": 18,
1396
+ "upstream": 18,
1397
+ "coreml": 18,
1398
+ "max_abs_probability_error": 1.731503829205394e-11,
1399
+ "max_abs_logit_error": 0.015740394592285156
1400
+ },
1401
+ {
1402
+ "row": 160,
1403
+ "label": 18,
1404
+ "upstream": 18,
1405
+ "coreml": 18,
1406
+ "max_abs_probability_error": 1.0416112417033219e-10,
1407
+ "max_abs_logit_error": 0.01055908203125
1408
+ },
1409
+ {
1410
+ "row": 161,
1411
+ "label": 18,
1412
+ "upstream": 18,
1413
+ "coreml": 18,
1414
+ "max_abs_probability_error": 4.944752163282828e-09,
1415
+ "max_abs_logit_error": 0.01996326446533203
1416
+ },
1417
+ {
1418
+ "row": 162,
1419
+ "label": 18,
1420
+ "upstream": 18,
1421
+ "coreml": 18,
1422
+ "max_abs_probability_error": 3.288525007860699e-11,
1423
+ "max_abs_logit_error": 0.011535167694091797
1424
+ },
1425
+ {
1426
+ "row": 163,
1427
+ "label": 18,
1428
+ "upstream": 18,
1429
+ "coreml": 18,
1430
+ "max_abs_probability_error": 6.579597977562912e-13,
1431
+ "max_abs_logit_error": 0.010066986083984375
1432
+ },
1433
+ {
1434
+ "row": 164,
1435
+ "label": 18,
1436
+ "upstream": 18,
1437
+ "coreml": 18,
1438
+ "max_abs_probability_error": 3.8768099841490766e-11,
1439
+ "max_abs_logit_error": 0.014286994934082031
1440
+ },
1441
+ {
1442
+ "row": 165,
1443
+ "label": 18,
1444
+ "upstream": 18,
1445
+ "coreml": 18,
1446
+ "max_abs_probability_error": 1.6796633528493032e-13,
1447
+ "max_abs_logit_error": 0.014059066772460938
1448
+ },
1449
+ {
1450
+ "row": 166,
1451
+ "label": 18,
1452
+ "upstream": 18,
1453
+ "coreml": 18,
1454
+ "max_abs_probability_error": 1.0951239914902544e-11,
1455
+ "max_abs_logit_error": 0.012742996215820312
1456
+ },
1457
+ {
1458
+ "row": 167,
1459
+ "label": 18,
1460
+ "upstream": 18,
1461
+ "coreml": 18,
1462
+ "max_abs_probability_error": 5.0552340091769565e-12,
1463
+ "max_abs_logit_error": 0.017006397247314453
1464
+ },
1465
+ {
1466
+ "row": 168,
1467
+ "label": 18,
1468
+ "upstream": 18,
1469
+ "coreml": 18,
1470
+ "max_abs_probability_error": 4.349431037553586e-09,
1471
+ "max_abs_logit_error": 0.02781963348388672
1472
+ },
1473
+ {
1474
+ "row": 169,
1475
+ "label": 18,
1476
+ "upstream": 18,
1477
+ "coreml": 18,
1478
+ "max_abs_probability_error": 1.7824977605052084e-13,
1479
+ "max_abs_logit_error": 0.022431373596191406
1480
+ },
1481
+ {
1482
+ "row": 170,
1483
+ "label": 18,
1484
+ "upstream": 18,
1485
+ "coreml": 18,
1486
+ "max_abs_probability_error": 3.2377225900326323e-13,
1487
+ "max_abs_logit_error": 0.006749153137207031
1488
+ },
1489
+ {
1490
+ "row": 171,
1491
+ "label": 18,
1492
+ "upstream": 18,
1493
+ "coreml": 18,
1494
+ "max_abs_probability_error": 3.13179953081999e-08,
1495
+ "max_abs_logit_error": 0.015783309936523438
1496
+ },
1497
+ {
1498
+ "row": 172,
1499
+ "label": 18,
1500
+ "upstream": 18,
1501
+ "coreml": 18,
1502
+ "max_abs_probability_error": 4.681899312686255e-11,
1503
+ "max_abs_logit_error": 0.013919830322265625
1504
+ },
1505
+ {
1506
+ "row": 173,
1507
+ "label": 18,
1508
+ "upstream": 18,
1509
+ "coreml": 18,
1510
+ "max_abs_probability_error": 2.2486568163060383e-11,
1511
+ "max_abs_logit_error": 0.016487598419189453
1512
+ },
1513
+ {
1514
+ "row": 174,
1515
+ "label": 18,
1516
+ "upstream": 18,
1517
+ "coreml": 18,
1518
+ "max_abs_probability_error": 3.743627630115043e-11,
1519
+ "max_abs_logit_error": 0.02295398712158203
1520
+ },
1521
+ {
1522
+ "row": 175,
1523
+ "label": 18,
1524
+ "upstream": 18,
1525
+ "coreml": 18,
1526
+ "max_abs_probability_error": 7.821654435247183e-11,
1527
+ "max_abs_logit_error": 0.016475677490234375
1528
+ },
1529
+ {
1530
+ "row": 176,
1531
+ "label": 18,
1532
+ "upstream": 18,
1533
+ "coreml": 18,
1534
+ "max_abs_probability_error": 1.1420979717513546e-09,
1535
+ "max_abs_logit_error": 0.028388500213623047
1536
+ },
1537
+ {
1538
+ "row": 177,
1539
+ "label": 18,
1540
+ "upstream": 18,
1541
+ "coreml": 18,
1542
+ "max_abs_probability_error": 1.5013057463875157e-10,
1543
+ "max_abs_logit_error": 0.015703678131103516
1544
+ },
1545
+ {
1546
+ "row": 178,
1547
+ "label": 18,
1548
+ "upstream": 18,
1549
+ "coreml": 18,
1550
+ "max_abs_probability_error": 3.937020665034652e-08,
1551
+ "max_abs_logit_error": 0.013593673706054688
1552
+ },
1553
+ {
1554
+ "row": 179,
1555
+ "label": 17,
1556
+ "upstream": 17,
1557
+ "coreml": 17,
1558
+ "max_abs_probability_error": 1.295774154641549e-09,
1559
+ "max_abs_logit_error": 0.03515338897705078
1560
+ },
1561
+ {
1562
+ "row": 180,
1563
+ "label": 18,
1564
+ "upstream": 18,
1565
+ "coreml": 18,
1566
+ "max_abs_probability_error": 3.638334078459593e-11,
1567
+ "max_abs_logit_error": 0.016902923583984375
1568
+ },
1569
+ {
1570
+ "row": 181,
1571
+ "label": 18,
1572
+ "upstream": 18,
1573
+ "coreml": 18,
1574
+ "max_abs_probability_error": 1.354898415684147e-10,
1575
+ "max_abs_logit_error": 0.007921218872070312
1576
+ },
1577
+ {
1578
+ "row": 182,
1579
+ "label": 18,
1580
+ "upstream": 18,
1581
+ "coreml": 18,
1582
+ "max_abs_probability_error": 4.4544090638254374e-12,
1583
+ "max_abs_logit_error": 0.018396615982055664
1584
+ },
1585
+ {
1586
+ "row": 183,
1587
+ "label": 18,
1588
+ "upstream": 18,
1589
+ "coreml": 18,
1590
+ "max_abs_probability_error": 2.2619059403261588e-14,
1591
+ "max_abs_logit_error": 0.019584178924560547
1592
+ },
1593
+ {
1594
+ "row": 184,
1595
+ "label": 18,
1596
+ "upstream": 18,
1597
+ "coreml": 18,
1598
+ "max_abs_probability_error": 5.77121683775772e-12,
1599
+ "max_abs_logit_error": 0.01009368896484375
1600
+ },
1601
+ {
1602
+ "row": 185,
1603
+ "label": 18,
1604
+ "upstream": 18,
1605
+ "coreml": 18,
1606
+ "max_abs_probability_error": 1.4402368186949843e-12,
1607
+ "max_abs_logit_error": 0.016597270965576172
1608
+ },
1609
+ {
1610
+ "row": 186,
1611
+ "label": 18,
1612
+ "upstream": 18,
1613
+ "coreml": 18,
1614
+ "max_abs_probability_error": 2.3069191001923173e-10,
1615
+ "max_abs_logit_error": 0.023260116577148438
1616
+ },
1617
+ {
1618
+ "row": 187,
1619
+ "label": 18,
1620
+ "upstream": 18,
1621
+ "coreml": 18,
1622
+ "max_abs_probability_error": 4.5346018606728933e-13,
1623
+ "max_abs_logit_error": 0.023482322692871094
1624
+ },
1625
+ {
1626
+ "row": 188,
1627
+ "label": 18,
1628
+ "upstream": 18,
1629
+ "coreml": 18,
1630
+ "max_abs_probability_error": 1.2430889650971721e-12,
1631
+ "max_abs_logit_error": 0.013761520385742188
1632
+ },
1633
+ {
1634
+ "row": 189,
1635
+ "label": 18,
1636
+ "upstream": 18,
1637
+ "coreml": 18,
1638
+ "max_abs_probability_error": 3.12792326762068e-14,
1639
+ "max_abs_logit_error": 0.013568401336669922
1640
+ },
1641
+ {
1642
+ "row": 190,
1643
+ "label": 18,
1644
+ "upstream": 18,
1645
+ "coreml": 18,
1646
+ "max_abs_probability_error": 1.5832196664788967e-12,
1647
+ "max_abs_logit_error": 0.013137876987457275
1648
+ },
1649
+ {
1650
+ "row": 191,
1651
+ "label": 18,
1652
+ "upstream": 18,
1653
+ "coreml": 18,
1654
+ "max_abs_probability_error": 3.681888127715638e-12,
1655
+ "max_abs_logit_error": 0.026842832565307617
1656
+ },
1657
+ {
1658
+ "row": 192,
1659
+ "label": 18,
1660
+ "upstream": 18,
1661
+ "coreml": 18,
1662
+ "max_abs_probability_error": 1.731503829205394e-11,
1663
+ "max_abs_logit_error": 0.015740394592285156
1664
+ },
1665
+ {
1666
+ "row": 193,
1667
+ "label": 18,
1668
+ "upstream": 18,
1669
+ "coreml": 18,
1670
+ "max_abs_probability_error": 1.0416112417033219e-10,
1671
+ "max_abs_logit_error": 0.01055908203125
1672
+ },
1673
+ {
1674
+ "row": 194,
1675
+ "label": 18,
1676
+ "upstream": 18,
1677
+ "coreml": 18,
1678
+ "max_abs_probability_error": 4.944752163282828e-09,
1679
+ "max_abs_logit_error": 0.01996326446533203
1680
+ },
1681
+ {
1682
+ "row": 195,
1683
+ "label": 18,
1684
+ "upstream": 18,
1685
+ "coreml": 18,
1686
+ "max_abs_probability_error": 3.288525007860699e-11,
1687
+ "max_abs_logit_error": 0.011535167694091797
1688
+ }
1689
+ ]
1690
+ },
1691
+ "CPU_AND_NE": {
1692
+ "passed": true,
1693
+ "correct": 196,
1694
+ "accuracy": 1.0,
1695
+ "argmax_agreement": 196,
1696
+ "max_abs_probability_error": 0.00233614444732666,
1697
+ "mean_row_max_abs_probability_error": 2.934475840582507e-05,
1698
+ "max_abs_logit_error": 0.07230281829833984,
1699
+ "load_seconds": 0.578660333994776,
1700
+ "warm_inference_latency_ms": {
1701
+ "count": 196,
1702
+ "median_ms": 0.9031249937834218,
1703
+ "p95_ms": 0.9396872410434298,
1704
+ "min_ms": 0.8796670008450747,
1705
+ "max_ms": 0.9663329983595759
1706
+ },
1707
+ "reversed_option_order": {
1708
+ "rows": 6,
1709
+ "max_abs_probability_error": 3.1828880310058594e-05
1710
+ },
1711
+ "per_action": {
1712
+ "fill": {
1713
+ "rows": 36,
1714
+ "correct": 36
1715
+ },
1716
+ "skip": {
1717
+ "rows": 150,
1718
+ "correct": 150
1719
+ },
1720
+ "check": {
1721
+ "rows": 4,
1722
+ "correct": 4
1723
+ },
1724
+ "click": {
1725
+ "rows": 6,
1726
+ "correct": 6
1727
+ }
1728
+ },
1729
+ "decisions": [
1730
+ {
1731
+ "row": 0,
1732
+ "label": 22,
1733
+ "upstream": 22,
1734
+ "coreml": 22,
1735
+ "max_abs_probability_error": 3.1828880310058594e-05,
1736
+ "max_abs_logit_error": 0.03086566925048828
1737
+ },
1738
+ {
1739
+ "row": 1,
1740
+ "label": 23,
1741
+ "upstream": 23,
1742
+ "coreml": 23,
1743
+ "max_abs_probability_error": 3.814697265625e-05,
1744
+ "max_abs_logit_error": 0.020841598510742188
1745
+ },
1746
+ {
1747
+ "row": 2,
1748
+ "label": 2,
1749
+ "upstream": 2,
1750
+ "coreml": 2,
1751
+ "max_abs_probability_error": 1.1920928955078125e-07,
1752
+ "max_abs_logit_error": 0.024377822875976562
1753
+ },
1754
+ {
1755
+ "row": 3,
1756
+ "label": 5,
1757
+ "upstream": 5,
1758
+ "coreml": 5,
1759
+ "max_abs_probability_error": 3.218650817871094e-05,
1760
+ "max_abs_logit_error": 0.030775785446166992
1761
+ },
1762
+ {
1763
+ "row": 4,
1764
+ "label": 4,
1765
+ "upstream": 4,
1766
+ "coreml": 4,
1767
+ "max_abs_probability_error": 2.944469451904297e-05,
1768
+ "max_abs_logit_error": 0.03573417663574219
1769
+ },
1770
+ {
1771
+ "row": 5,
1772
+ "label": 6,
1773
+ "upstream": 6,
1774
+ "coreml": 6,
1775
+ "max_abs_probability_error": 1.2636184692382812e-05,
1776
+ "max_abs_logit_error": 0.026729822158813477
1777
+ },
1778
+ {
1779
+ "row": 6,
1780
+ "label": 7,
1781
+ "upstream": 7,
1782
+ "coreml": 7,
1783
+ "max_abs_probability_error": 2.3365020751953125e-05,
1784
+ "max_abs_logit_error": 0.023685455322265625
1785
+ },
1786
+ {
1787
+ "row": 7,
1788
+ "label": 8,
1789
+ "upstream": 8,
1790
+ "coreml": 8,
1791
+ "max_abs_probability_error": 0.00014638900756835938,
1792
+ "max_abs_logit_error": 0.04038810729980469
1793
+ },
1794
+ {
1795
+ "row": 8,
1796
+ "label": 9,
1797
+ "upstream": 9,
1798
+ "coreml": 9,
1799
+ "max_abs_probability_error": 1.1920928955078125e-06,
1800
+ "max_abs_logit_error": 0.02460002899169922
1801
+ },
1802
+ {
1803
+ "row": 9,
1804
+ "label": 10,
1805
+ "upstream": 10,
1806
+ "coreml": 10,
1807
+ "max_abs_probability_error": 2.1457672119140625e-05,
1808
+ "max_abs_logit_error": 0.018064022064208984
1809
+ },
1810
+ {
1811
+ "row": 10,
1812
+ "label": 11,
1813
+ "upstream": 11,
1814
+ "coreml": 11,
1815
+ "max_abs_probability_error": 5.960464477539062e-07,
1816
+ "max_abs_logit_error": 0.047691673040390015
1817
+ },
1818
+ {
1819
+ "row": 11,
1820
+ "label": 13,
1821
+ "upstream": 13,
1822
+ "coreml": 13,
1823
+ "max_abs_probability_error": 3.2186508178710938e-06,
1824
+ "max_abs_logit_error": 0.03340768814086914
1825
+ },
1826
+ {
1827
+ "row": 12,
1828
+ "label": 15,
1829
+ "upstream": 15,
1830
+ "coreml": 15,
1831
+ "max_abs_probability_error": 2.384185791015625e-06,
1832
+ "max_abs_logit_error": 0.053191184997558594
1833
+ },
1834
+ {
1835
+ "row": 13,
1836
+ "label": 16,
1837
+ "upstream": 16,
1838
+ "coreml": 16,
1839
+ "max_abs_probability_error": 0.0005360841751098633,
1840
+ "max_abs_logit_error": 0.03362560272216797
1841
+ },
1842
+ {
1843
+ "row": 14,
1844
+ "label": 26,
1845
+ "upstream": 26,
1846
+ "coreml": 26,
1847
+ "max_abs_probability_error": 1.8596649169921875e-05,
1848
+ "max_abs_logit_error": 0.024669170379638672
1849
+ },
1850
+ {
1851
+ "row": 15,
1852
+ "label": 24,
1853
+ "upstream": 24,
1854
+ "coreml": 24,
1855
+ "max_abs_probability_error": 1.6689300537109375e-05,
1856
+ "max_abs_logit_error": 0.034501075744628906
1857
+ },
1858
+ {
1859
+ "row": 16,
1860
+ "label": 26,
1861
+ "upstream": 26,
1862
+ "coreml": 26,
1863
+ "max_abs_probability_error": 1.440092489701783e-08,
1864
+ "max_abs_logit_error": 0.033290743827819824
1865
+ },
1866
+ {
1867
+ "row": 17,
1868
+ "label": 25,
1869
+ "upstream": 25,
1870
+ "coreml": 25,
1871
+ "max_abs_probability_error": 1.1920928955078125e-07,
1872
+ "max_abs_logit_error": 0.03323173522949219
1873
+ },
1874
+ {
1875
+ "row": 18,
1876
+ "label": 26,
1877
+ "upstream": 26,
1878
+ "coreml": 26,
1879
+ "max_abs_probability_error": 8.430758313693332e-09,
1880
+ "max_abs_logit_error": 0.022179126739501953
1881
+ },
1882
+ {
1883
+ "row": 19,
1884
+ "label": 26,
1885
+ "upstream": 26,
1886
+ "coreml": 26,
1887
+ "max_abs_probability_error": 3.0266471551243512e-09,
1888
+ "max_abs_logit_error": 0.029880523681640625
1889
+ },
1890
+ {
1891
+ "row": 20,
1892
+ "label": 26,
1893
+ "upstream": 26,
1894
+ "coreml": 26,
1895
+ "max_abs_probability_error": 2.4500966588902884e-08,
1896
+ "max_abs_logit_error": 0.031145095825195312
1897
+ },
1898
+ {
1899
+ "row": 21,
1900
+ "label": 26,
1901
+ "upstream": 26,
1902
+ "coreml": 26,
1903
+ "max_abs_probability_error": 1.647379281599637e-11,
1904
+ "max_abs_logit_error": 0.03861522674560547
1905
+ },
1906
+ {
1907
+ "row": 22,
1908
+ "label": 26,
1909
+ "upstream": 26,
1910
+ "coreml": 26,
1911
+ "max_abs_probability_error": 7.152557373046875e-07,
1912
+ "max_abs_logit_error": 0.027164459228515625
1913
+ },
1914
+ {
1915
+ "row": 23,
1916
+ "label": 26,
1917
+ "upstream": 26,
1918
+ "coreml": 26,
1919
+ "max_abs_probability_error": 5.960464477539062e-07,
1920
+ "max_abs_logit_error": 0.058716535568237305
1921
+ },
1922
+ {
1923
+ "row": 24,
1924
+ "label": 26,
1925
+ "upstream": 26,
1926
+ "coreml": 26,
1927
+ "max_abs_probability_error": 2.5055844551924444e-11,
1928
+ "max_abs_logit_error": 0.035381317138671875
1929
+ },
1930
+ {
1931
+ "row": 25,
1932
+ "label": 26,
1933
+ "upstream": 26,
1934
+ "coreml": 26,
1935
+ "max_abs_probability_error": 6.995705792434137e-09,
1936
+ "max_abs_logit_error": 0.04862499237060547
1937
+ },
1938
+ {
1939
+ "row": 26,
1940
+ "label": 26,
1941
+ "upstream": 26,
1942
+ "coreml": 26,
1943
+ "max_abs_probability_error": 6.470584068551943e-10,
1944
+ "max_abs_logit_error": 0.029034733772277832
1945
+ },
1946
+ {
1947
+ "row": 27,
1948
+ "label": 26,
1949
+ "upstream": 26,
1950
+ "coreml": 26,
1951
+ "max_abs_probability_error": 6.973024935241767e-11,
1952
+ "max_abs_logit_error": 0.03808116912841797
1953
+ },
1954
+ {
1955
+ "row": 28,
1956
+ "label": 26,
1957
+ "upstream": 26,
1958
+ "coreml": 26,
1959
+ "max_abs_probability_error": 5.994321927715873e-09,
1960
+ "max_abs_logit_error": 0.03319191932678223
1961
+ },
1962
+ {
1963
+ "row": 29,
1964
+ "label": 26,
1965
+ "upstream": 26,
1966
+ "coreml": 26,
1967
+ "max_abs_probability_error": 2.4426039316183257e-11,
1968
+ "max_abs_logit_error": 0.030045509338378906
1969
+ },
1970
+ {
1971
+ "row": 30,
1972
+ "label": 26,
1973
+ "upstream": 26,
1974
+ "coreml": 26,
1975
+ "max_abs_probability_error": 2.384185791015625e-07,
1976
+ "max_abs_logit_error": 0.026231765747070312
1977
+ },
1978
+ {
1979
+ "row": 31,
1980
+ "label": 26,
1981
+ "upstream": 26,
1982
+ "coreml": 26,
1983
+ "max_abs_probability_error": 7.78299757975276e-10,
1984
+ "max_abs_logit_error": 0.033112093806266785
1985
+ },
1986
+ {
1987
+ "row": 32,
1988
+ "label": 26,
1989
+ "upstream": 26,
1990
+ "coreml": 26,
1991
+ "max_abs_probability_error": 6.185003176284454e-09,
1992
+ "max_abs_logit_error": 0.022128582000732422
1993
+ },
1994
+ {
1995
+ "row": 33,
1996
+ "label": 26,
1997
+ "upstream": 26,
1998
+ "coreml": 26,
1999
+ "max_abs_probability_error": 3.4556297823229443e-09,
2000
+ "max_abs_logit_error": 0.038306236267089844
2001
+ },
2002
+ {
2003
+ "row": 34,
2004
+ "label": 26,
2005
+ "upstream": 26,
2006
+ "coreml": 26,
2007
+ "max_abs_probability_error": 0.0004820823669433594,
2008
+ "max_abs_logit_error": 0.032683372497558594
2009
+ },
2010
+ {
2011
+ "row": 35,
2012
+ "label": 26,
2013
+ "upstream": 26,
2014
+ "coreml": 26,
2015
+ "max_abs_probability_error": 1.462750809366753e-09,
2016
+ "max_abs_logit_error": 0.029730796813964844
2017
+ },
2018
+ {
2019
+ "row": 36,
2020
+ "label": 26,
2021
+ "upstream": 26,
2022
+ "coreml": 26,
2023
+ "max_abs_probability_error": 2.7510341227277024e-10,
2024
+ "max_abs_logit_error": 0.02333354949951172
2025
+ },
2026
+ {
2027
+ "row": 37,
2028
+ "label": 26,
2029
+ "upstream": 26,
2030
+ "coreml": 26,
2031
+ "max_abs_probability_error": 2.657592190757896e-08,
2032
+ "max_abs_logit_error": 0.022855758666992188
2033
+ },
2034
+ {
2035
+ "row": 38,
2036
+ "label": 26,
2037
+ "upstream": 26,
2038
+ "coreml": 26,
2039
+ "max_abs_probability_error": 9.552543478452691e-11,
2040
+ "max_abs_logit_error": 0.023164749145507812
2041
+ },
2042
+ {
2043
+ "row": 39,
2044
+ "label": 26,
2045
+ "upstream": 26,
2046
+ "coreml": 26,
2047
+ "max_abs_probability_error": 4.04716482549361e-10,
2048
+ "max_abs_logit_error": 0.02880859375
2049
+ },
2050
+ {
2051
+ "row": 40,
2052
+ "label": 26,
2053
+ "upstream": 26,
2054
+ "coreml": 26,
2055
+ "max_abs_probability_error": 0.00021719932556152344,
2056
+ "max_abs_logit_error": 0.04735088348388672
2057
+ },
2058
+ {
2059
+ "row": 41,
2060
+ "label": 26,
2061
+ "upstream": 26,
2062
+ "coreml": 26,
2063
+ "max_abs_probability_error": 6.146233744175333e-09,
2064
+ "max_abs_logit_error": 0.03671276569366455
2065
+ },
2066
+ {
2067
+ "row": 42,
2068
+ "label": 26,
2069
+ "upstream": 26,
2070
+ "coreml": 26,
2071
+ "max_abs_probability_error": 1.8819494851385343e-09,
2072
+ "max_abs_logit_error": 0.023815155029296875
2073
+ },
2074
+ {
2075
+ "row": 43,
2076
+ "label": 26,
2077
+ "upstream": 26,
2078
+ "coreml": 26,
2079
+ "max_abs_probability_error": 7.152557373046875e-07,
2080
+ "max_abs_logit_error": 0.02039623260498047
2081
+ },
2082
+ {
2083
+ "row": 44,
2084
+ "label": 26,
2085
+ "upstream": 26,
2086
+ "coreml": 26,
2087
+ "max_abs_probability_error": 1.780525865635596e-10,
2088
+ "max_abs_logit_error": 0.022927284240722656
2089
+ },
2090
+ {
2091
+ "row": 45,
2092
+ "label": 26,
2093
+ "upstream": 26,
2094
+ "coreml": 26,
2095
+ "max_abs_probability_error": 3.414331317674879e-11,
2096
+ "max_abs_logit_error": 0.030417919158935547
2097
+ },
2098
+ {
2099
+ "row": 46,
2100
+ "label": 26,
2101
+ "upstream": 26,
2102
+ "coreml": 26,
2103
+ "max_abs_probability_error": 5.599257724142603e-10,
2104
+ "max_abs_logit_error": 0.025608062744140625
2105
+ },
2106
+ {
2107
+ "row": 47,
2108
+ "label": 26,
2109
+ "upstream": 26,
2110
+ "coreml": 26,
2111
+ "max_abs_probability_error": 5.212314607705437e-11,
2112
+ "max_abs_logit_error": 0.022733211517333984
2113
+ },
2114
+ {
2115
+ "row": 48,
2116
+ "label": 26,
2117
+ "upstream": 26,
2118
+ "coreml": 26,
2119
+ "max_abs_probability_error": 1.8596649169921875e-05,
2120
+ "max_abs_logit_error": 0.024669170379638672
2121
+ },
2122
+ {
2123
+ "row": 49,
2124
+ "label": 26,
2125
+ "upstream": 26,
2126
+ "coreml": 26,
2127
+ "max_abs_probability_error": 1.932842080831776e-10,
2128
+ "max_abs_logit_error": 0.030317306518554688
2129
+ },
2130
+ {
2131
+ "row": 50,
2132
+ "label": 26,
2133
+ "upstream": 26,
2134
+ "coreml": 26,
2135
+ "max_abs_probability_error": 1.440092489701783e-08,
2136
+ "max_abs_logit_error": 0.033290743827819824
2137
+ },
2138
+ {
2139
+ "row": 51,
2140
+ "label": 25,
2141
+ "upstream": 25,
2142
+ "coreml": 25,
2143
+ "max_abs_probability_error": 1.1920928955078125e-07,
2144
+ "max_abs_logit_error": 0.03323173522949219
2145
+ },
2146
+ {
2147
+ "row": 52,
2148
+ "label": 26,
2149
+ "upstream": 26,
2150
+ "coreml": 26,
2151
+ "max_abs_probability_error": 8.430758313693332e-09,
2152
+ "max_abs_logit_error": 0.022179126739501953
2153
+ },
2154
+ {
2155
+ "row": 53,
2156
+ "label": 26,
2157
+ "upstream": 26,
2158
+ "coreml": 26,
2159
+ "max_abs_probability_error": 3.0266471551243512e-09,
2160
+ "max_abs_logit_error": 0.029880523681640625
2161
+ },
2162
+ {
2163
+ "row": 54,
2164
+ "label": 26,
2165
+ "upstream": 26,
2166
+ "coreml": 26,
2167
+ "max_abs_probability_error": 2.4500966588902884e-08,
2168
+ "max_abs_logit_error": 0.031145095825195312
2169
+ },
2170
+ {
2171
+ "row": 55,
2172
+ "label": 26,
2173
+ "upstream": 26,
2174
+ "coreml": 26,
2175
+ "max_abs_probability_error": 1.647379281599637e-11,
2176
+ "max_abs_logit_error": 0.03861522674560547
2177
+ },
2178
+ {
2179
+ "row": 56,
2180
+ "label": 26,
2181
+ "upstream": 26,
2182
+ "coreml": 26,
2183
+ "max_abs_probability_error": 7.152557373046875e-07,
2184
+ "max_abs_logit_error": 0.027164459228515625
2185
+ },
2186
+ {
2187
+ "row": 57,
2188
+ "label": 26,
2189
+ "upstream": 26,
2190
+ "coreml": 26,
2191
+ "max_abs_probability_error": 5.960464477539062e-07,
2192
+ "max_abs_logit_error": 0.058716535568237305
2193
+ },
2194
+ {
2195
+ "row": 58,
2196
+ "label": 26,
2197
+ "upstream": 26,
2198
+ "coreml": 26,
2199
+ "max_abs_probability_error": 2.5055844551924444e-11,
2200
+ "max_abs_logit_error": 0.035381317138671875
2201
+ },
2202
+ {
2203
+ "row": 59,
2204
+ "label": 26,
2205
+ "upstream": 26,
2206
+ "coreml": 26,
2207
+ "max_abs_probability_error": 6.995705792434137e-09,
2208
+ "max_abs_logit_error": 0.04862499237060547
2209
+ },
2210
+ {
2211
+ "row": 60,
2212
+ "label": 26,
2213
+ "upstream": 26,
2214
+ "coreml": 26,
2215
+ "max_abs_probability_error": 6.470584068551943e-10,
2216
+ "max_abs_logit_error": 0.029034733772277832
2217
+ },
2218
+ {
2219
+ "row": 61,
2220
+ "label": 26,
2221
+ "upstream": 26,
2222
+ "coreml": 26,
2223
+ "max_abs_probability_error": 6.973024935241767e-11,
2224
+ "max_abs_logit_error": 0.03808116912841797
2225
+ },
2226
+ {
2227
+ "row": 62,
2228
+ "label": 26,
2229
+ "upstream": 26,
2230
+ "coreml": 26,
2231
+ "max_abs_probability_error": 5.994321927715873e-09,
2232
+ "max_abs_logit_error": 0.03319191932678223
2233
+ },
2234
+ {
2235
+ "row": 63,
2236
+ "label": 26,
2237
+ "upstream": 26,
2238
+ "coreml": 26,
2239
+ "max_abs_probability_error": 2.4426039316183257e-11,
2240
+ "max_abs_logit_error": 0.030045509338378906
2241
+ },
2242
+ {
2243
+ "row": 64,
2244
+ "label": 26,
2245
+ "upstream": 26,
2246
+ "coreml": 26,
2247
+ "max_abs_probability_error": 2.384185791015625e-07,
2248
+ "max_abs_logit_error": 0.026231765747070312
2249
+ },
2250
+ {
2251
+ "row": 65,
2252
+ "label": 26,
2253
+ "upstream": 26,
2254
+ "coreml": 26,
2255
+ "max_abs_probability_error": 7.78299757975276e-10,
2256
+ "max_abs_logit_error": 0.033112093806266785
2257
+ },
2258
+ {
2259
+ "row": 66,
2260
+ "label": 26,
2261
+ "upstream": 26,
2262
+ "coreml": 26,
2263
+ "max_abs_probability_error": 6.185003176284454e-09,
2264
+ "max_abs_logit_error": 0.022128582000732422
2265
+ },
2266
+ {
2267
+ "row": 67,
2268
+ "label": 26,
2269
+ "upstream": 26,
2270
+ "coreml": 26,
2271
+ "max_abs_probability_error": 3.4556297823229443e-09,
2272
+ "max_abs_logit_error": 0.038306236267089844
2273
+ },
2274
+ {
2275
+ "row": 68,
2276
+ "label": 0,
2277
+ "upstream": 0,
2278
+ "coreml": 0,
2279
+ "max_abs_probability_error": 3.147125244140625e-05,
2280
+ "max_abs_logit_error": 0.03265953063964844
2281
+ },
2282
+ {
2283
+ "row": 69,
2284
+ "label": 1,
2285
+ "upstream": 1,
2286
+ "coreml": 1,
2287
+ "max_abs_probability_error": 5.030632019042969e-05,
2288
+ "max_abs_logit_error": 0.038794517517089844
2289
+ },
2290
+ {
2291
+ "row": 70,
2292
+ "label": 2,
2293
+ "upstream": 2,
2294
+ "coreml": 2,
2295
+ "max_abs_probability_error": 1.7881393432617188e-06,
2296
+ "max_abs_logit_error": 0.040470123291015625
2297
+ },
2298
+ {
2299
+ "row": 71,
2300
+ "label": 3,
2301
+ "upstream": 3,
2302
+ "coreml": 3,
2303
+ "max_abs_probability_error": 5.2928924560546875e-05,
2304
+ "max_abs_logit_error": 0.040035247802734375
2305
+ },
2306
+ {
2307
+ "row": 72,
2308
+ "label": 5,
2309
+ "upstream": 5,
2310
+ "coreml": 5,
2311
+ "max_abs_probability_error": 4.649162292480469e-06,
2312
+ "max_abs_logit_error": 0.042186737060546875
2313
+ },
2314
+ {
2315
+ "row": 73,
2316
+ "label": 6,
2317
+ "upstream": 6,
2318
+ "coreml": 6,
2319
+ "max_abs_probability_error": 2.1576881408691406e-05,
2320
+ "max_abs_logit_error": 0.033161163330078125
2321
+ },
2322
+ {
2323
+ "row": 74,
2324
+ "label": 7,
2325
+ "upstream": 7,
2326
+ "coreml": 7,
2327
+ "max_abs_probability_error": 4.470348358154297e-05,
2328
+ "max_abs_logit_error": 0.0293731689453125
2329
+ },
2330
+ {
2331
+ "row": 75,
2332
+ "label": 8,
2333
+ "upstream": 8,
2334
+ "coreml": 8,
2335
+ "max_abs_probability_error": 1.1563301086425781e-05,
2336
+ "max_abs_logit_error": 0.03249359130859375
2337
+ },
2338
+ {
2339
+ "row": 76,
2340
+ "label": 9,
2341
+ "upstream": 9,
2342
+ "coreml": 9,
2343
+ "max_abs_probability_error": 2.86102294921875e-06,
2344
+ "max_abs_logit_error": 0.03498554229736328
2345
+ },
2346
+ {
2347
+ "row": 77,
2348
+ "label": 13,
2349
+ "upstream": 13,
2350
+ "coreml": 13,
2351
+ "max_abs_probability_error": 0.0003635883331298828,
2352
+ "max_abs_logit_error": 0.023473739624023438
2353
+ },
2354
+ {
2355
+ "row": 78,
2356
+ "label": 20,
2357
+ "upstream": 20,
2358
+ "coreml": 20,
2359
+ "max_abs_probability_error": 9.5367431640625e-07,
2360
+ "max_abs_logit_error": 0.034421443939208984
2361
+ },
2362
+ {
2363
+ "row": 79,
2364
+ "label": 18,
2365
+ "upstream": 18,
2366
+ "coreml": 18,
2367
+ "max_abs_probability_error": 0.0003609657287597656,
2368
+ "max_abs_logit_error": 0.03937721252441406
2369
+ },
2370
+ {
2371
+ "row": 80,
2372
+ "label": 18,
2373
+ "upstream": 18,
2374
+ "coreml": 18,
2375
+ "max_abs_probability_error": 2.384185791015625e-07,
2376
+ "max_abs_logit_error": 0.03752422332763672
2377
+ },
2378
+ {
2379
+ "row": 81,
2380
+ "label": 20,
2381
+ "upstream": 20,
2382
+ "coreml": 20,
2383
+ "max_abs_probability_error": 1.7881393432617188e-06,
2384
+ "max_abs_logit_error": 0.025417327880859375
2385
+ },
2386
+ {
2387
+ "row": 82,
2388
+ "label": 19,
2389
+ "upstream": 19,
2390
+ "coreml": 19,
2391
+ "max_abs_probability_error": 2.384185791015625e-07,
2392
+ "max_abs_logit_error": 0.04453086853027344
2393
+ },
2394
+ {
2395
+ "row": 83,
2396
+ "label": 20,
2397
+ "upstream": 20,
2398
+ "coreml": 20,
2399
+ "max_abs_probability_error": 5.0942090545902374e-09,
2400
+ "max_abs_logit_error": 0.023950576782226562
2401
+ },
2402
+ {
2403
+ "row": 84,
2404
+ "label": 20,
2405
+ "upstream": 20,
2406
+ "coreml": 20,
2407
+ "max_abs_probability_error": 2.384185791015625e-07,
2408
+ "max_abs_logit_error": 0.022706031799316406
2409
+ },
2410
+ {
2411
+ "row": 85,
2412
+ "label": 20,
2413
+ "upstream": 20,
2414
+ "coreml": 20,
2415
+ "max_abs_probability_error": 3.5405053888659666e-10,
2416
+ "max_abs_logit_error": 0.035375118255615234
2417
+ },
2418
+ {
2419
+ "row": 86,
2420
+ "label": 20,
2421
+ "upstream": 20,
2422
+ "coreml": 20,
2423
+ "max_abs_probability_error": 4.76837158203125e-07,
2424
+ "max_abs_logit_error": 0.03717994689941406
2425
+ },
2426
+ {
2427
+ "row": 87,
2428
+ "label": 20,
2429
+ "upstream": 20,
2430
+ "coreml": 20,
2431
+ "max_abs_probability_error": 1.1920928955078125e-07,
2432
+ "max_abs_logit_error": 0.04058122634887695
2433
+ },
2434
+ {
2435
+ "row": 88,
2436
+ "label": 20,
2437
+ "upstream": 20,
2438
+ "coreml": 20,
2439
+ "max_abs_probability_error": 1.3188037328859537e-09,
2440
+ "max_abs_logit_error": 0.032048702239990234
2441
+ },
2442
+ {
2443
+ "row": 89,
2444
+ "label": 20,
2445
+ "upstream": 20,
2446
+ "coreml": 20,
2447
+ "max_abs_probability_error": 1.9970605169561395e-09,
2448
+ "max_abs_logit_error": 0.030427932739257812
2449
+ },
2450
+ {
2451
+ "row": 90,
2452
+ "label": 20,
2453
+ "upstream": 20,
2454
+ "coreml": 20,
2455
+ "max_abs_probability_error": 1.7617375336342889e-09,
2456
+ "max_abs_logit_error": 0.0281219482421875
2457
+ },
2458
+ {
2459
+ "row": 91,
2460
+ "label": 20,
2461
+ "upstream": 20,
2462
+ "coreml": 20,
2463
+ "max_abs_probability_error": 1.612549260787688e-10,
2464
+ "max_abs_logit_error": 0.030226707458496094
2465
+ },
2466
+ {
2467
+ "row": 92,
2468
+ "label": 20,
2469
+ "upstream": 20,
2470
+ "coreml": 20,
2471
+ "max_abs_probability_error": 6.506330630512425e-12,
2472
+ "max_abs_logit_error": 0.04007530212402344
2473
+ },
2474
+ {
2475
+ "row": 93,
2476
+ "label": 20,
2477
+ "upstream": 20,
2478
+ "coreml": 20,
2479
+ "max_abs_probability_error": 1.5150824594911683e-08,
2480
+ "max_abs_logit_error": 0.02728891372680664
2481
+ },
2482
+ {
2483
+ "row": 94,
2484
+ "label": 20,
2485
+ "upstream": 20,
2486
+ "coreml": 20,
2487
+ "max_abs_probability_error": 1.3666674458789885e-09,
2488
+ "max_abs_logit_error": 0.0217437744140625
2489
+ },
2490
+ {
2491
+ "row": 95,
2492
+ "label": 20,
2493
+ "upstream": 20,
2494
+ "coreml": 20,
2495
+ "max_abs_probability_error": 3.969476136678196e-10,
2496
+ "max_abs_logit_error": 0.03214454650878906
2497
+ },
2498
+ {
2499
+ "row": 96,
2500
+ "label": 20,
2501
+ "upstream": 20,
2502
+ "coreml": 20,
2503
+ "max_abs_probability_error": 2.657726538846106e-10,
2504
+ "max_abs_logit_error": 0.03669023513793945
2505
+ },
2506
+ {
2507
+ "row": 97,
2508
+ "label": 20,
2509
+ "upstream": 20,
2510
+ "coreml": 20,
2511
+ "max_abs_probability_error": 1.9073486328125e-06,
2512
+ "max_abs_logit_error": 0.019012451171875
2513
+ },
2514
+ {
2515
+ "row": 98,
2516
+ "label": 20,
2517
+ "upstream": 20,
2518
+ "coreml": 20,
2519
+ "max_abs_probability_error": 2.384185791015625e-07,
2520
+ "max_abs_logit_error": 0.026651382446289062
2521
+ },
2522
+ {
2523
+ "row": 99,
2524
+ "label": 20,
2525
+ "upstream": 20,
2526
+ "coreml": 20,
2527
+ "max_abs_probability_error": 2.1457672119140625e-06,
2528
+ "max_abs_logit_error": 0.04161381721496582
2529
+ },
2530
+ {
2531
+ "row": 100,
2532
+ "label": 20,
2533
+ "upstream": 20,
2534
+ "coreml": 20,
2535
+ "max_abs_probability_error": 9.5367431640625e-07,
2536
+ "max_abs_logit_error": 0.04680633544921875
2537
+ },
2538
+ {
2539
+ "row": 101,
2540
+ "label": 20,
2541
+ "upstream": 20,
2542
+ "coreml": 20,
2543
+ "max_abs_probability_error": 1.789079107084035e-08,
2544
+ "max_abs_logit_error": 0.029542922973632812
2545
+ },
2546
+ {
2547
+ "row": 102,
2548
+ "label": 20,
2549
+ "upstream": 20,
2550
+ "coreml": 20,
2551
+ "max_abs_probability_error": 2.5862225694339713e-09,
2552
+ "max_abs_logit_error": 0.023795127868652344
2553
+ },
2554
+ {
2555
+ "row": 103,
2556
+ "label": 20,
2557
+ "upstream": 20,
2558
+ "coreml": 20,
2559
+ "max_abs_probability_error": 0.00024586915969848633,
2560
+ "max_abs_logit_error": 0.030111312866210938
2561
+ },
2562
+ {
2563
+ "row": 104,
2564
+ "label": 20,
2565
+ "upstream": 20,
2566
+ "coreml": 20,
2567
+ "max_abs_probability_error": 5.841255187988281e-06,
2568
+ "max_abs_logit_error": 0.03126239776611328
2569
+ },
2570
+ {
2571
+ "row": 105,
2572
+ "label": 20,
2573
+ "upstream": 20,
2574
+ "coreml": 20,
2575
+ "max_abs_probability_error": 4.928799035575082e-10,
2576
+ "max_abs_logit_error": 0.026149272918701172
2577
+ },
2578
+ {
2579
+ "row": 106,
2580
+ "label": 20,
2581
+ "upstream": 20,
2582
+ "coreml": 20,
2583
+ "max_abs_probability_error": 2.4136979082101107e-09,
2584
+ "max_abs_logit_error": 0.024585723876953125
2585
+ },
2586
+ {
2587
+ "row": 107,
2588
+ "label": 20,
2589
+ "upstream": 20,
2590
+ "coreml": 20,
2591
+ "max_abs_probability_error": 6.302839361538304e-10,
2592
+ "max_abs_logit_error": 0.024765491485595703
2593
+ },
2594
+ {
2595
+ "row": 108,
2596
+ "label": 20,
2597
+ "upstream": 20,
2598
+ "coreml": 20,
2599
+ "max_abs_probability_error": 1.1920928955078125e-07,
2600
+ "max_abs_logit_error": 0.03492164611816406
2601
+ },
2602
+ {
2603
+ "row": 109,
2604
+ "label": 20,
2605
+ "upstream": 20,
2606
+ "coreml": 20,
2607
+ "max_abs_probability_error": 9.5367431640625e-07,
2608
+ "max_abs_logit_error": 0.034421443939208984
2609
+ },
2610
+ {
2611
+ "row": 110,
2612
+ "label": 20,
2613
+ "upstream": 20,
2614
+ "coreml": 20,
2615
+ "max_abs_probability_error": 9.5367431640625e-07,
2616
+ "max_abs_logit_error": 0.0320439338684082
2617
+ },
2618
+ {
2619
+ "row": 111,
2620
+ "label": 20,
2621
+ "upstream": 20,
2622
+ "coreml": 20,
2623
+ "max_abs_probability_error": 1.811981201171875e-05,
2624
+ "max_abs_logit_error": 0.032814979553222656
2625
+ },
2626
+ {
2627
+ "row": 112,
2628
+ "label": 20,
2629
+ "upstream": 20,
2630
+ "coreml": 20,
2631
+ "max_abs_probability_error": 1.7881393432617188e-06,
2632
+ "max_abs_logit_error": 0.025417327880859375
2633
+ },
2634
+ {
2635
+ "row": 113,
2636
+ "label": 19,
2637
+ "upstream": 19,
2638
+ "coreml": 19,
2639
+ "max_abs_probability_error": 2.384185791015625e-07,
2640
+ "max_abs_logit_error": 0.04453086853027344
2641
+ },
2642
+ {
2643
+ "row": 114,
2644
+ "label": 20,
2645
+ "upstream": 20,
2646
+ "coreml": 20,
2647
+ "max_abs_probability_error": 5.0942090545902374e-09,
2648
+ "max_abs_logit_error": 0.023950576782226562
2649
+ },
2650
+ {
2651
+ "row": 115,
2652
+ "label": 20,
2653
+ "upstream": 20,
2654
+ "coreml": 20,
2655
+ "max_abs_probability_error": 2.384185791015625e-07,
2656
+ "max_abs_logit_error": 0.022706031799316406
2657
+ },
2658
+ {
2659
+ "row": 116,
2660
+ "label": 20,
2661
+ "upstream": 20,
2662
+ "coreml": 20,
2663
+ "max_abs_probability_error": 3.5405053888659666e-10,
2664
+ "max_abs_logit_error": 0.035375118255615234
2665
+ },
2666
+ {
2667
+ "row": 117,
2668
+ "label": 20,
2669
+ "upstream": 20,
2670
+ "coreml": 20,
2671
+ "max_abs_probability_error": 4.76837158203125e-07,
2672
+ "max_abs_logit_error": 0.03717994689941406
2673
+ },
2674
+ {
2675
+ "row": 118,
2676
+ "label": 20,
2677
+ "upstream": 20,
2678
+ "coreml": 20,
2679
+ "max_abs_probability_error": 1.1920928955078125e-07,
2680
+ "max_abs_logit_error": 0.04058122634887695
2681
+ },
2682
+ {
2683
+ "row": 119,
2684
+ "label": 20,
2685
+ "upstream": 20,
2686
+ "coreml": 20,
2687
+ "max_abs_probability_error": 1.3188037328859537e-09,
2688
+ "max_abs_logit_error": 0.032048702239990234
2689
+ },
2690
+ {
2691
+ "row": 120,
2692
+ "label": 20,
2693
+ "upstream": 20,
2694
+ "coreml": 20,
2695
+ "max_abs_probability_error": 1.9970605169561395e-09,
2696
+ "max_abs_logit_error": 0.030427932739257812
2697
+ },
2698
+ {
2699
+ "row": 121,
2700
+ "label": 20,
2701
+ "upstream": 20,
2702
+ "coreml": 20,
2703
+ "max_abs_probability_error": 1.7617375336342889e-09,
2704
+ "max_abs_logit_error": 0.0281219482421875
2705
+ },
2706
+ {
2707
+ "row": 122,
2708
+ "label": 20,
2709
+ "upstream": 20,
2710
+ "coreml": 20,
2711
+ "max_abs_probability_error": 1.612549260787688e-10,
2712
+ "max_abs_logit_error": 0.030226707458496094
2713
+ },
2714
+ {
2715
+ "row": 123,
2716
+ "label": 20,
2717
+ "upstream": 20,
2718
+ "coreml": 20,
2719
+ "max_abs_probability_error": 6.506330630512425e-12,
2720
+ "max_abs_logit_error": 0.04007530212402344
2721
+ },
2722
+ {
2723
+ "row": 124,
2724
+ "label": 20,
2725
+ "upstream": 20,
2726
+ "coreml": 20,
2727
+ "max_abs_probability_error": 1.5150824594911683e-08,
2728
+ "max_abs_logit_error": 0.02728891372680664
2729
+ },
2730
+ {
2731
+ "row": 125,
2732
+ "label": 20,
2733
+ "upstream": 20,
2734
+ "coreml": 20,
2735
+ "max_abs_probability_error": 1.3666674458789885e-09,
2736
+ "max_abs_logit_error": 0.0217437744140625
2737
+ },
2738
+ {
2739
+ "row": 126,
2740
+ "label": 20,
2741
+ "upstream": 20,
2742
+ "coreml": 20,
2743
+ "max_abs_probability_error": 3.969476136678196e-10,
2744
+ "max_abs_logit_error": 0.03214454650878906
2745
+ },
2746
+ {
2747
+ "row": 127,
2748
+ "label": 20,
2749
+ "upstream": 20,
2750
+ "coreml": 20,
2751
+ "max_abs_probability_error": 2.657726538846106e-10,
2752
+ "max_abs_logit_error": 0.03669023513793945
2753
+ },
2754
+ {
2755
+ "row": 128,
2756
+ "label": 20,
2757
+ "upstream": 20,
2758
+ "coreml": 20,
2759
+ "max_abs_probability_error": 1.9073486328125e-06,
2760
+ "max_abs_logit_error": 0.019012451171875
2761
+ },
2762
+ {
2763
+ "row": 129,
2764
+ "label": 20,
2765
+ "upstream": 20,
2766
+ "coreml": 20,
2767
+ "max_abs_probability_error": 2.384185791015625e-07,
2768
+ "max_abs_logit_error": 0.026651382446289062
2769
+ },
2770
+ {
2771
+ "row": 130,
2772
+ "label": 1,
2773
+ "upstream": 1,
2774
+ "coreml": 1,
2775
+ "max_abs_probability_error": 3.170967102050781e-05,
2776
+ "max_abs_logit_error": 0.071075439453125
2777
+ },
2778
+ {
2779
+ "row": 131,
2780
+ "label": 2,
2781
+ "upstream": 2,
2782
+ "coreml": 2,
2783
+ "max_abs_probability_error": 8.344650268554688e-07,
2784
+ "max_abs_logit_error": 0.051357269287109375
2785
+ },
2786
+ {
2787
+ "row": 132,
2788
+ "label": 3,
2789
+ "upstream": 3,
2790
+ "coreml": 3,
2791
+ "max_abs_probability_error": 2.7894973754882812e-05,
2792
+ "max_abs_logit_error": 0.033801641315221786
2793
+ },
2794
+ {
2795
+ "row": 133,
2796
+ "label": 4,
2797
+ "upstream": 4,
2798
+ "coreml": 4,
2799
+ "max_abs_probability_error": 1.0967254638671875e-05,
2800
+ "max_abs_logit_error": 0.039325714111328125
2801
+ },
2802
+ {
2803
+ "row": 134,
2804
+ "label": 5,
2805
+ "upstream": 5,
2806
+ "coreml": 5,
2807
+ "max_abs_probability_error": 6.258487701416016e-05,
2808
+ "max_abs_logit_error": 0.033056676387786865
2809
+ },
2810
+ {
2811
+ "row": 135,
2812
+ "label": 6,
2813
+ "upstream": 6,
2814
+ "coreml": 6,
2815
+ "max_abs_probability_error": 1.2993812561035156e-05,
2816
+ "max_abs_logit_error": 0.02561807632446289
2817
+ },
2818
+ {
2819
+ "row": 136,
2820
+ "label": 7,
2821
+ "upstream": 7,
2822
+ "coreml": 7,
2823
+ "max_abs_probability_error": 6.198883056640625e-06,
2824
+ "max_abs_logit_error": 0.03448677062988281
2825
+ },
2826
+ {
2827
+ "row": 137,
2828
+ "label": 8,
2829
+ "upstream": 8,
2830
+ "coreml": 8,
2831
+ "max_abs_probability_error": 0.00233614444732666,
2832
+ "max_abs_logit_error": 0.04230833053588867
2833
+ },
2834
+ {
2835
+ "row": 138,
2836
+ "label": 9,
2837
+ "upstream": 9,
2838
+ "coreml": 9,
2839
+ "max_abs_probability_error": 0.00022917985916137695,
2840
+ "max_abs_logit_error": 0.05339241027832031
2841
+ },
2842
+ {
2843
+ "row": 139,
2844
+ "label": 10,
2845
+ "upstream": 10,
2846
+ "coreml": 10,
2847
+ "max_abs_probability_error": 4.851818084716797e-05,
2848
+ "max_abs_logit_error": 0.032756805419921875
2849
+ },
2850
+ {
2851
+ "row": 140,
2852
+ "label": 11,
2853
+ "upstream": 11,
2854
+ "coreml": 11,
2855
+ "max_abs_probability_error": 3.0994415283203125e-06,
2856
+ "max_abs_logit_error": 0.029809951782226562
2857
+ },
2858
+ {
2859
+ "row": 141,
2860
+ "label": 12,
2861
+ "upstream": 12,
2862
+ "coreml": 12,
2863
+ "max_abs_probability_error": 9.34600830078125e-05,
2864
+ "max_abs_logit_error": 0.026587963104248047
2865
+ },
2866
+ {
2867
+ "row": 142,
2868
+ "label": 18,
2869
+ "upstream": 18,
2870
+ "coreml": 18,
2871
+ "max_abs_probability_error": 1.9073486328125e-06,
2872
+ "max_abs_logit_error": 0.03671073913574219
2873
+ },
2874
+ {
2875
+ "row": 143,
2876
+ "label": 16,
2877
+ "upstream": 16,
2878
+ "coreml": 16,
2879
+ "max_abs_probability_error": 7.152557373046875e-07,
2880
+ "max_abs_logit_error": 0.05281543731689453
2881
+ },
2882
+ {
2883
+ "row": 144,
2884
+ "label": 18,
2885
+ "upstream": 18,
2886
+ "coreml": 18,
2887
+ "max_abs_probability_error": 1.1920928955078125e-06,
2888
+ "max_abs_logit_error": 0.04511451721191406
2889
+ },
2890
+ {
2891
+ "row": 145,
2892
+ "label": 18,
2893
+ "upstream": 18,
2894
+ "coreml": 18,
2895
+ "max_abs_probability_error": 3.6954879760742188e-06,
2896
+ "max_abs_logit_error": 0.07230281829833984
2897
+ },
2898
+ {
2899
+ "row": 146,
2900
+ "label": 17,
2901
+ "upstream": 17,
2902
+ "coreml": 17,
2903
+ "max_abs_probability_error": 1.1920928955078125e-07,
2904
+ "max_abs_logit_error": 0.03114461898803711
2905
+ },
2906
+ {
2907
+ "row": 147,
2908
+ "label": 18,
2909
+ "upstream": 18,
2910
+ "coreml": 18,
2911
+ "max_abs_probability_error": 8.429776876539563e-09,
2912
+ "max_abs_logit_error": 0.020772457122802734
2913
+ },
2914
+ {
2915
+ "row": 148,
2916
+ "label": 18,
2917
+ "upstream": 18,
2918
+ "coreml": 18,
2919
+ "max_abs_probability_error": 9.215698426601193e-09,
2920
+ "max_abs_logit_error": 0.03475606441497803
2921
+ },
2922
+ {
2923
+ "row": 149,
2924
+ "label": 18,
2925
+ "upstream": 18,
2926
+ "coreml": 18,
2927
+ "max_abs_probability_error": 3.84208304060607e-10,
2928
+ "max_abs_logit_error": 0.020298004150390625
2929
+ },
2930
+ {
2931
+ "row": 150,
2932
+ "label": 18,
2933
+ "upstream": 18,
2934
+ "coreml": 18,
2935
+ "max_abs_probability_error": 7.947568818333917e-12,
2936
+ "max_abs_logit_error": 0.04283332824707031
2937
+ },
2938
+ {
2939
+ "row": 151,
2940
+ "label": 18,
2941
+ "upstream": 18,
2942
+ "coreml": 18,
2943
+ "max_abs_probability_error": 5.291168614363073e-10,
2944
+ "max_abs_logit_error": 0.028450965881347656
2945
+ },
2946
+ {
2947
+ "row": 152,
2948
+ "label": 18,
2949
+ "upstream": 18,
2950
+ "coreml": 18,
2951
+ "max_abs_probability_error": 7.924417788629512e-10,
2952
+ "max_abs_logit_error": 0.02250051498413086
2953
+ },
2954
+ {
2955
+ "row": 153,
2956
+ "label": 18,
2957
+ "upstream": 18,
2958
+ "coreml": 18,
2959
+ "max_abs_probability_error": 1.837478791344438e-08,
2960
+ "max_abs_logit_error": 0.06335592269897461
2961
+ },
2962
+ {
2963
+ "row": 154,
2964
+ "label": 18,
2965
+ "upstream": 18,
2966
+ "coreml": 18,
2967
+ "max_abs_probability_error": 3.3051329034750054e-11,
2968
+ "max_abs_logit_error": 0.02735137939453125
2969
+ },
2970
+ {
2971
+ "row": 155,
2972
+ "label": 18,
2973
+ "upstream": 18,
2974
+ "coreml": 18,
2975
+ "max_abs_probability_error": 1.650468511860126e-10,
2976
+ "max_abs_logit_error": 0.015047073364257812
2977
+ },
2978
+ {
2979
+ "row": 156,
2980
+ "label": 18,
2981
+ "upstream": 18,
2982
+ "coreml": 18,
2983
+ "max_abs_probability_error": 6.181078218703284e-12,
2984
+ "max_abs_logit_error": 0.04868888854980469
2985
+ },
2986
+ {
2987
+ "row": 157,
2988
+ "label": 18,
2989
+ "upstream": 18,
2990
+ "coreml": 18,
2991
+ "max_abs_probability_error": 1.6455586893115992e-10,
2992
+ "max_abs_logit_error": 0.026497364044189453
2993
+ },
2994
+ {
2995
+ "row": 158,
2996
+ "label": 18,
2997
+ "upstream": 18,
2998
+ "coreml": 18,
2999
+ "max_abs_probability_error": 6.109900363426846e-10,
3000
+ "max_abs_logit_error": 0.022236347198486328
3001
+ },
3002
+ {
3003
+ "row": 159,
3004
+ "label": 18,
3005
+ "upstream": 18,
3006
+ "coreml": 18,
3007
+ "max_abs_probability_error": 6.693580800742893e-09,
3008
+ "max_abs_logit_error": 0.020044326782226562
3009
+ },
3010
+ {
3011
+ "row": 160,
3012
+ "label": 18,
3013
+ "upstream": 18,
3014
+ "coreml": 18,
3015
+ "max_abs_probability_error": 1.3718365998727222e-08,
3016
+ "max_abs_logit_error": 0.05533123016357422
3017
+ },
3018
+ {
3019
+ "row": 161,
3020
+ "label": 18,
3021
+ "upstream": 18,
3022
+ "coreml": 18,
3023
+ "max_abs_probability_error": 8.344650268554688e-07,
3024
+ "max_abs_logit_error": 0.0247042179107666
3025
+ },
3026
+ {
3027
+ "row": 162,
3028
+ "label": 18,
3029
+ "upstream": 18,
3030
+ "coreml": 18,
3031
+ "max_abs_probability_error": 1.042114572413766e-08,
3032
+ "max_abs_logit_error": 0.028873443603515625
3033
+ },
3034
+ {
3035
+ "row": 163,
3036
+ "label": 18,
3037
+ "upstream": 18,
3038
+ "coreml": 18,
3039
+ "max_abs_probability_error": 1.9131388140358752e-10,
3040
+ "max_abs_logit_error": 0.015494346618652344
3041
+ },
3042
+ {
3043
+ "row": 164,
3044
+ "label": 18,
3045
+ "upstream": 18,
3046
+ "coreml": 18,
3047
+ "max_abs_probability_error": 1.0254025184508464e-08,
3048
+ "max_abs_logit_error": 0.02497100830078125
3049
+ },
3050
+ {
3051
+ "row": 165,
3052
+ "label": 18,
3053
+ "upstream": 18,
3054
+ "coreml": 18,
3055
+ "max_abs_probability_error": 5.15840287151903e-11,
3056
+ "max_abs_logit_error": 0.02679443359375
3057
+ },
3058
+ {
3059
+ "row": 166,
3060
+ "label": 18,
3061
+ "upstream": 18,
3062
+ "coreml": 18,
3063
+ "max_abs_probability_error": 2.6797479790729994e-09,
3064
+ "max_abs_logit_error": 0.028203964233398438
3065
+ },
3066
+ {
3067
+ "row": 167,
3068
+ "label": 18,
3069
+ "upstream": 18,
3070
+ "coreml": 18,
3071
+ "max_abs_probability_error": 7.54509399403247e-10,
3072
+ "max_abs_logit_error": 0.03371429443359375
3073
+ },
3074
+ {
3075
+ "row": 168,
3076
+ "label": 18,
3077
+ "upstream": 18,
3078
+ "coreml": 18,
3079
+ "max_abs_probability_error": 8.344650268554688e-07,
3080
+ "max_abs_logit_error": 0.028280355036258698
3081
+ },
3082
+ {
3083
+ "row": 169,
3084
+ "label": 18,
3085
+ "upstream": 18,
3086
+ "coreml": 18,
3087
+ "max_abs_probability_error": 2.4169340140378637e-11,
3088
+ "max_abs_logit_error": 0.038245439529418945
3089
+ },
3090
+ {
3091
+ "row": 170,
3092
+ "label": 18,
3093
+ "upstream": 18,
3094
+ "coreml": 18,
3095
+ "max_abs_probability_error": 3.0329603412093675e-11,
3096
+ "max_abs_logit_error": 0.030043363571166992
3097
+ },
3098
+ {
3099
+ "row": 171,
3100
+ "label": 18,
3101
+ "upstream": 18,
3102
+ "coreml": 18,
3103
+ "max_abs_probability_error": 1.7881393432617188e-06,
3104
+ "max_abs_logit_error": 0.02963542938232422
3105
+ },
3106
+ {
3107
+ "row": 172,
3108
+ "label": 18,
3109
+ "upstream": 18,
3110
+ "coreml": 18,
3111
+ "max_abs_probability_error": 4.66337235494052e-09,
3112
+ "max_abs_logit_error": 0.03510093688964844
3113
+ },
3114
+ {
3115
+ "row": 173,
3116
+ "label": 18,
3117
+ "upstream": 18,
3118
+ "coreml": 18,
3119
+ "max_abs_probability_error": 1.2885730260592254e-09,
3120
+ "max_abs_logit_error": 0.04009199142456055
3121
+ },
3122
+ {
3123
+ "row": 174,
3124
+ "label": 18,
3125
+ "upstream": 18,
3126
+ "coreml": 18,
3127
+ "max_abs_probability_error": 1.1279766010119374e-09,
3128
+ "max_abs_logit_error": 0.031810760498046875
3129
+ },
3130
+ {
3131
+ "row": 175,
3132
+ "label": 18,
3133
+ "upstream": 18,
3134
+ "coreml": 18,
3135
+ "max_abs_probability_error": 1.9073486328125e-06,
3136
+ "max_abs_logit_error": 0.03671073913574219
3137
+ },
3138
+ {
3139
+ "row": 176,
3140
+ "label": 18,
3141
+ "upstream": 18,
3142
+ "coreml": 18,
3143
+ "max_abs_probability_error": 1.0728836059570312e-06,
3144
+ "max_abs_logit_error": 0.05123615264892578
3145
+ },
3146
+ {
3147
+ "row": 177,
3148
+ "label": 18,
3149
+ "upstream": 18,
3150
+ "coreml": 18,
3151
+ "max_abs_probability_error": 1.2799782567185503e-08,
3152
+ "max_abs_logit_error": 0.03157186508178711
3153
+ },
3154
+ {
3155
+ "row": 178,
3156
+ "label": 18,
3157
+ "upstream": 18,
3158
+ "coreml": 18,
3159
+ "max_abs_probability_error": 3.6954879760742188e-06,
3160
+ "max_abs_logit_error": 0.07230281829833984
3161
+ },
3162
+ {
3163
+ "row": 179,
3164
+ "label": 17,
3165
+ "upstream": 17,
3166
+ "coreml": 17,
3167
+ "max_abs_probability_error": 1.1920928955078125e-07,
3168
+ "max_abs_logit_error": 0.03114461898803711
3169
+ },
3170
+ {
3171
+ "row": 180,
3172
+ "label": 18,
3173
+ "upstream": 18,
3174
+ "coreml": 18,
3175
+ "max_abs_probability_error": 8.429776876539563e-09,
3176
+ "max_abs_logit_error": 0.020772457122802734
3177
+ },
3178
+ {
3179
+ "row": 181,
3180
+ "label": 18,
3181
+ "upstream": 18,
3182
+ "coreml": 18,
3183
+ "max_abs_probability_error": 9.215698426601193e-09,
3184
+ "max_abs_logit_error": 0.03475606441497803
3185
+ },
3186
+ {
3187
+ "row": 182,
3188
+ "label": 18,
3189
+ "upstream": 18,
3190
+ "coreml": 18,
3191
+ "max_abs_probability_error": 3.84208304060607e-10,
3192
+ "max_abs_logit_error": 0.020298004150390625
3193
+ },
3194
+ {
3195
+ "row": 183,
3196
+ "label": 18,
3197
+ "upstream": 18,
3198
+ "coreml": 18,
3199
+ "max_abs_probability_error": 7.947568818333917e-12,
3200
+ "max_abs_logit_error": 0.04283332824707031
3201
+ },
3202
+ {
3203
+ "row": 184,
3204
+ "label": 18,
3205
+ "upstream": 18,
3206
+ "coreml": 18,
3207
+ "max_abs_probability_error": 5.291168614363073e-10,
3208
+ "max_abs_logit_error": 0.028450965881347656
3209
+ },
3210
+ {
3211
+ "row": 185,
3212
+ "label": 18,
3213
+ "upstream": 18,
3214
+ "coreml": 18,
3215
+ "max_abs_probability_error": 7.924417788629512e-10,
3216
+ "max_abs_logit_error": 0.02250051498413086
3217
+ },
3218
+ {
3219
+ "row": 186,
3220
+ "label": 18,
3221
+ "upstream": 18,
3222
+ "coreml": 18,
3223
+ "max_abs_probability_error": 1.837478791344438e-08,
3224
+ "max_abs_logit_error": 0.06335592269897461
3225
+ },
3226
+ {
3227
+ "row": 187,
3228
+ "label": 18,
3229
+ "upstream": 18,
3230
+ "coreml": 18,
3231
+ "max_abs_probability_error": 3.3051329034750054e-11,
3232
+ "max_abs_logit_error": 0.02735137939453125
3233
+ },
3234
+ {
3235
+ "row": 188,
3236
+ "label": 18,
3237
+ "upstream": 18,
3238
+ "coreml": 18,
3239
+ "max_abs_probability_error": 1.650468511860126e-10,
3240
+ "max_abs_logit_error": 0.015047073364257812
3241
+ },
3242
+ {
3243
+ "row": 189,
3244
+ "label": 18,
3245
+ "upstream": 18,
3246
+ "coreml": 18,
3247
+ "max_abs_probability_error": 6.181078218703284e-12,
3248
+ "max_abs_logit_error": 0.04868888854980469
3249
+ },
3250
+ {
3251
+ "row": 190,
3252
+ "label": 18,
3253
+ "upstream": 18,
3254
+ "coreml": 18,
3255
+ "max_abs_probability_error": 1.6455586893115992e-10,
3256
+ "max_abs_logit_error": 0.026497364044189453
3257
+ },
3258
+ {
3259
+ "row": 191,
3260
+ "label": 18,
3261
+ "upstream": 18,
3262
+ "coreml": 18,
3263
+ "max_abs_probability_error": 6.109900363426846e-10,
3264
+ "max_abs_logit_error": 0.022236347198486328
3265
+ },
3266
+ {
3267
+ "row": 192,
3268
+ "label": 18,
3269
+ "upstream": 18,
3270
+ "coreml": 18,
3271
+ "max_abs_probability_error": 6.693580800742893e-09,
3272
+ "max_abs_logit_error": 0.020044326782226562
3273
+ },
3274
+ {
3275
+ "row": 193,
3276
+ "label": 18,
3277
+ "upstream": 18,
3278
+ "coreml": 18,
3279
+ "max_abs_probability_error": 1.3718365998727222e-08,
3280
+ "max_abs_logit_error": 0.05533123016357422
3281
+ },
3282
+ {
3283
+ "row": 194,
3284
+ "label": 18,
3285
+ "upstream": 18,
3286
+ "coreml": 18,
3287
+ "max_abs_probability_error": 8.344650268554688e-07,
3288
+ "max_abs_logit_error": 0.0247042179107666
3289
+ },
3290
+ {
3291
+ "row": 195,
3292
+ "label": 18,
3293
+ "upstream": 18,
3294
+ "coreml": 18,
3295
+ "max_abs_probability_error": 1.042114572413766e-08,
3296
+ "max_abs_logit_error": 0.028873443603515625
3297
+ }
3298
+ ]
3299
+ }
3300
+ },
3301
+ "passed": true,
3302
+ "code_sha256": {
3303
+ "assets.py": "f7a5bc931075237e00c73bf21fee3575be35531f934f23b5e22627d50a79f92f",
3304
+ "convert-coreml.py": "e1e9cc20277515fc750940e97d75f9db7c15f0443e23c26fe65815cef4e23bb7",
3305
+ "export_model.py": "803b909577fe7c38968c5438b27fff7c07bb095a7c341c1b0430d91256649113",
3306
+ "preprocessing.py": "18c74ede43f95f91cd638c7e9631923a353e3a24d3b522ddb8b18b480f9c2846",
3307
+ "verify.py": "31425c5f0081b07725ce94c611664151ed02678f25ca93774497cfca8f46ceeb"
3308
+ }
3309
+ }