infosave commited on
Commit
9974f46
·
verified ·
1 Parent(s): 06bf006

Document Cargo installation and verified Metal/Vulkan decision backend

Browse files
Files changed (7) hide show
  1. BENCHMARKS.md +8 -9
  2. GPU.md +108 -0
  3. NOTICES.md +27 -0
  4. README.md +10 -13
  5. README_RU.md +10 -12
  6. evidence/gpu.json +2807 -0
  7. figures/gpu.svg +46 -0
BENCHMARKS.md CHANGED
@@ -2,7 +2,7 @@
2
 
3
  [Back to the model card](README.md)
4
 
5
- These are existing measurements of the downloadable Cortiq 0.7.8 model, not a new benchmark run. The charts are generated from [comparison.json](evidence/comparison.json); it includes the source report names and SHA-256 hashes.
6
 
7
  ## Accuracy and coverage
8
 
@@ -51,7 +51,7 @@ The hybrid run replayed recorded oracle answers, with 24 additional live MASSIVE
51
 
52
  - Public test sets were reused across development iterations. This is not a new blind holdout.
53
  - Supervision is unequal: Cortiq was fitted on train + dev, while Jev received two training examples per label. Neither this result nor a confidence interval removes that difference.
54
- - English inputs, up to 512 tokens. The downloadable encoder is BAAI BGE-small-en-v1.5 with 75% MLP compression using Cortiq NVG, not the separate Embryo research model.
55
  - The confidence gate is calibrated in-domain. It is not a universal correctness or out-of-distribution guarantee.
56
  - Incremental fitting preserves other labels’ parameters; that alone does not guarantee unchanged decisions because labels can compete for the same input.
57
  - No hardware-normalized RAM, VRAM or energy comparison with Jev was measured. The file is 304,520,292 bytes; model-file size is not process memory.
@@ -61,19 +61,18 @@ The hybrid run replayed recorded oracle answers, with 24 additional live MASSIVE
61
  File SHA-256: `ed9b8ec2bbfe9e9fd30f14a5eaf82314f38bc7e7510a39772baa2de3801d79b1`.
62
 
63
  - Cortiq engine and CMF: Apache-2.0, [source](https://github.com/infosave2007/cmf).
64
- - [BGE-small-en-v1.5](https://huggingface.co/BAAI/bge-small-en-v1.5): BAAI, MIT; encoder compressed with Cortiq NVG.
65
  - BANKING77: PolyAI, CC-BY-4.0. CLINC150: Larson et al., CC-BY-3.0. MASSIVE en-US: Amazon, CC-BY-4.0.
66
  - Resonance Routing — US Patent Application 19/452,440.
67
 
68
- The redesign changes documentation and figures only. No new accuracy, timing or paid oracle runs were performed for it.
69
 
70
  ## Execution and language scope
71
 
72
- The measurements above use the **local decision path on CPU**. In Cortiq
73
- 0.7.9, the decision encoder explicitly calls the host FP32 GEMM; it does not
74
- dispatch to Metal or Vulkan. GPU support elsewhere in the Cortiq engine does
75
- not establish GPU acceleration for this decision model. No GPU speedup is
76
- claimed here.
77
 
78
  The included seed skills and their reported scores were evaluated in English.
79
  The CMF format itself does not impose a language; local language coverage
 
2
 
3
  [Back to the model card](README.md)
4
 
5
+ The quality and Jev/API comparisons below retain the original measurements of this CMF. New GPU measurements are documented separately in [Metal and Vulkan](GPU.md). The charts are generated from [comparison.json](evidence/comparison.json); it includes the source report names and SHA-256 hashes.
6
 
7
  ## Accuracy and coverage
8
 
 
51
 
52
  - Public test sets were reused across development iterations. This is not a new blind holdout.
53
  - Supervision is unequal: Cortiq was fitted on train + dev, while Jev received two training examples per label. Neither this result nor a confidence interval removes that difference.
54
+ - English inputs, up to 512 tokens. The downloadable model uses a Cortiq NVG-modified text encoder (75% MLP compression) and trained task topologies; it is distinct from the separate Embryo research model.
55
  - The confidence gate is calibrated in-domain. It is not a universal correctness or out-of-distribution guarantee.
56
  - Incremental fitting preserves other labels’ parameters; that alone does not guarantee unchanged decisions because labels can compete for the same input.
57
  - No hardware-normalized RAM, VRAM or energy comparison with Jev was measured. The file is 304,520,292 bytes; model-file size is not process memory.
 
61
  File SHA-256: `ed9b8ec2bbfe9e9fd30f14a5eaf82314f38bc7e7510a39772baa2de3801d79b1`.
62
 
63
  - Cortiq engine and CMF: Apache-2.0, [source](https://github.com/infosave2007/cmf).
64
+ - Modified text-encoder component: MIT notices retained separately in [Component notices](NOTICES.md).
65
  - BANKING77: PolyAI, CC-BY-4.0. CLINC150: Larson et al., CC-BY-3.0. MASSIVE en-US: Amazon, CC-BY-4.0.
66
  - Resonance Routing — US Patent Application 19/452,440.
67
 
68
+ The original Jev/API charts are unchanged. The new GPU work adds local timing and CPU/GPU parity tests; it makes no paid oracle calls and does not retrain the model.
69
 
70
  ## Execution and language scope
71
 
72
+ The original local measurements above use CPU. A separate GPU-enabled development
73
+ build now runs this same CMF on Metal and Vulkan. See [GPU measurements and usage](GPU.md)
74
+ for request schedules, full-corpus parity, latency tails and release availability.
75
+ Those GPU results do not replace the original Jev/API experiment.
 
76
 
77
  The included seed skills and their reported scores were evaluated in English.
78
  The CMF format itself does not impose a language; local language coverage
GPU.md ADDED
@@ -0,0 +1,108 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Metal and Vulkan: the same CMF, accelerated
2
+
3
+ The model file, skills and gates stay unchanged. The GPU prepares text features
4
+ and computes reconstruction errors; it does not generate an answer.
5
+
6
+ **Availability:** these results use a validated development build. The GPU decision
7
+ backend is not yet in the published crates.io package. `cargo install cortiq-cli --locked`
8
+ installs the current stable CLI; it must not be read as installing this GPU build.
9
+
10
+ ![GPU latency, within-host comparisons; different request schedules and independent scales.](figures/gpu.svg)
11
+
12
+ ## RTX PRO 4000 Blackwell · Vulkan
13
+
14
+ | Dataset | CPU p50, ms | GPU p50, ms | GPU p95, ms | GPU p99, ms |
15
+ |---|---:|---:|---:|---:|
16
+ | BANKING77 | 24.05–24.30 | 1.24–1.24 | 1.77–1.78 | 2.23–2.30 |
17
+ | CLINC150 | 21.07–21.11 | 1.18–1.20 | 1.41–1.43 | 1.56–1.59 |
18
+ | MASSIVE | 16.23–16.26 | 1.10–1.15 | 1.33–1.37 | 1.50–1.56 |
19
+
20
+ Two full runs, each with 3,080 BANKING77, 4,500 CLINC150 and 2,974 MASSIVE rows.
21
+ CPU baseline: native portable-release path on the same Xeon E5-2690 v4 server.
22
+ CPU references are computed first; after GPU warmup, GPU requests run serially
23
+ without a CPU reference calculation between requests. Ranges span both runs.
24
+ This is warm local latency, not HTTP, cold startup, concurrent throughput or a Jev test.
25
+
26
+ **Idle behavior matters:** a final-build diagnostic alternates CPU/GPU requests
27
+ on 400 deterministically sampled rows per dataset. The GPU waits while the CPU
28
+ computes its reference; these gaps allow the RTX to lower its memory clock.
29
+
30
+ | Dataset | Rows | CPU p50, ms | Vulkan p50 / p95, ms |
31
+ |---|---:|---:|---:|
32
+ | BANKING77 | 400 | 25.29 | 8.57 / 9.16 |
33
+ | CLINC150 | 400 | 21.50 | 5.02 / 8.84 |
34
+ | MASSIVE | 400 | 16.56 | 3.40 / 7.50 |
35
+
36
+ Do not substitute continuous-stream latency for sparse-traffic latency.
37
+ No clocks, power limits or background keep-alive loads were forced. These
38
+ diagnostic samples are separate from the full-corpus quality checks above.
39
+
40
+ ## Apple M4 · Metal
41
+
42
+ Default alternating CPU/GPU protocol, two full runs:
43
+
44
+ | Dataset | CPU p50, ms | GPU p50, ms | GPU p95, ms | GPU p99, ms |
45
+ |---|---:|---:|---:|---:|
46
+ | BANKING77 | 3.45–3.46 | 2.57–2.58 | 3.75–4.43 | 6.02–7.54 |
47
+ | CLINC150 | 3.26–3.27 | 2.52–2.55 | 3.38–3.54 | 4.09–6.37 |
48
+ | MASSIVE | 2.66–2.68 | 2.28–2.31 | 3.07–3.86 | 3.37–7.17 |
49
+
50
+ Separate serial streams, also two full runs:
51
+
52
+ | Dataset | CPU p50, ms | GPU p50, ms | GPU p95, ms | GPU p99, ms |
53
+ |---|---:|---:|---:|---:|
54
+ | BANKING77 | 3.43–3.43 | 2.08–2.09 | 3.13–3.15 | 3.75–3.80 |
55
+ | CLINC150 | 3.24–3.25 | 2.06–2.13 | 2.93–4.11 | 3.15–5.33 |
56
+ | MASSIVE | 2.63–2.64 | 1.81–3.21 | 2.70–5.44 | 2.92–5.97 |
57
+
58
+ The Mac had an active desktop. Metal shares the GPU with other applications;
59
+ one MASSIVE serial-stream run was slower than CPU, and some p95/p99 tails also
60
+ regressed. Acceleration is not a guarantee for every request or workload.
61
+ CPU remains the default; GPU selection is explicit.
62
+
63
+ ## Correctness and resources
64
+
65
+ Across the two full runs per mode, winners, abstentions and hash features match
66
+ CPU exactly. This preserves the existing model's quality; it is not a new accuracy
67
+ improvement. Embedding tolerance remains `1e-5`; scaled reconstruction-error
68
+ difference is limited to `2e-5`. No retraining, oracle calls or lower precision.
69
+ [All per-dataset measurements and numerical checks](evidence/gpu.json).
70
+
71
+ The working path is used by CLI, `/v1/decisions` and `/v1/route`. Hardware tests cover
72
+ empty/long/Unicode input, non-aligned dimensions, non-orthogonal bases, multiple
73
+ skills and concurrent requests. GPU failures return errors, not a hidden CPU fallback.
74
+ Resident GPU weights use additional memory; model file size is not RAM or VRAM.
75
+ No energy comparison or hardware-normalized Jev resource comparison was measured.
76
+
77
+ | Host | CPU RSS, MiB | GPU-mode RSS, MiB |
78
+ |---|---:|---:|
79
+ | Apple M4 | 478.5 | 808.1 |
80
+ | Xeon + RTX | 437.6 | 694.8 |
81
+
82
+ RSS snapshots after 11 successful HTTP requests per backend, all three skills
83
+ loaded; not peak memory. The Vulkan process also reported **522 MiB of VRAM**.
84
+ Four concurrent clients exercised routing; both decision API aliases were
85
+ checked. Temporary servers were stopped. CPU/GPU timing excludes model loading,
86
+ shader compilation, response serialization, network and external oracles.
87
+
88
+ ## Using a GPU-enabled source checkout
89
+
90
+ ```bash
91
+ # Apple Silicon
92
+ cargo build --release -p cortiq-cli
93
+ CORTIQ_DECISION_DEVICE=metal ./target/release/cortiq decide cortiq-decision.cmf \
94
+ --skill banking77 -p "I still have not received my new card"
95
+
96
+ # Linux with a hardware Vulkan driver
97
+ cargo build --release -p cortiq-cli --features decision-vulkan
98
+ CORTIQ_DECISION_DEVICE=vulkan CORTIQ_DECISION_VULKAN_ADAPTER="RTX PRO 4000" \
99
+ ./target/release/cortiq decide cortiq-decision.cmf \
100
+ --skill banking77 -p "I still have not received my new card"
101
+ ```
102
+
103
+ The same environment variables apply to `cortiq serve`. `/healthz` reports the
104
+ actual adapter and completed GPU submissions. `gpu` timing includes the joint
105
+ encoder and reconstruction pass plus its wait, not a fictional kernel-only time.
106
+ Other GPUs require their own validation; a software Vulkan adapter is rejected.
107
+
108
+ [Back to model card](README.md) · [Existing Jev comparison](BENCHMARKS.md)
NOTICES.md ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Component notices
2
+
3
+ Cortiq runtime, CMF implementation and Cortiq modifications: Apache-2.0.
4
+ The modified text-encoder component retains the following third-party notice.
5
+ This notice is not a description of the complete Cortiq Decision system.
6
+
7
+ MIT License
8
+
9
+ Copyright (c) the BAAI FlagEmbedding authors
10
+
11
+ Permission is hereby granted, free of charge, to any person obtaining a copy
12
+ of this software and associated documentation files (the "Software"), to deal
13
+ in the Software without restriction, including without limitation the rights
14
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
15
+ copies of the Software, and to permit persons to whom the Software is
16
+ furnished to do so, subject to the following conditions:
17
+
18
+ The above copyright notice and this permission notice shall be included in all
19
+ copies or substantial portions of the Software.
20
+
21
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
24
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
26
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
27
+ SOFTWARE.
README.md CHANGED
@@ -2,7 +2,6 @@
2
  license: apache-2.0
3
  library_name: cortiq
4
  pipeline_tag: text-classification
5
- base_model: BAAI/bge-small-en-v1.5
6
  language:
7
  - en
8
  tags:
@@ -27,24 +26,20 @@ oracle for unfamiliar cases, then use its answers to grow your local skills.
27
 
28
  ## Quick start
29
 
30
- Download and unpack [Cortiq 0.7.9 for your platform](https://github.com/infosave2007/cmf/releases/tag/v0.7.9),
31
- then add `cortiq` to your PATH. No Rust or Hugging Face CLI required.
32
 
33
  ```bash
34
- curl -fL -o cortiq-decision.cmf \
35
- https://huggingface.co/infosave/cortiq-decision/resolve/main/cortiq-decision.cmf
36
- cortiq decide cortiq-decision.cmf --skill banking77 -p "I still have not received my new card"
37
  ```
38
 
39
- <details>
40
- <summary>Alternative: install with Cargo (requires Rust)</summary>
41
 
42
  ```bash
43
- cargo install cortiq-cli --version 0.7.9 --locked
 
 
44
  ```
45
 
46
- </details>
47
-
48
  **Result:** `card_arrival`, answered locally. No cloud key required.
49
  Included skills: `banking77`, `clinc150`, `massive`.
50
 
@@ -65,6 +60,8 @@ the model answers **54.30–92.11%** of requests locally, depending on the task.
65
  Local times include the entire text-to-decision path, not just the resonance
66
  kernel. API times include the network; these are not hardware-normalized tests.
67
 
 
 
68
  ### Cost: cloud only when needed
69
 
70
  ![API fees per million decisions: Cortiq plus an optional oracle $3.01, $3.53, $8.48; Jev $183.69, $271.61, $110.86 for BANKING77, CLINC150 and MASSIVE respectively.](figures/cost.png)
@@ -101,8 +98,8 @@ To serve over HTTP: `cortiq serve cortiq-decision.cmf`.
101
  ---
102
 
103
  **Benchmark scope:** reused public datasets; CMF trained on train + dev,
104
- Jev given two examples per label. The encoder is BGE-small compressed with
105
- Cortiq NVG. [Method, data and licenses](BENCHMARKS.md) ·
106
  [Chart data](evidence/comparison.json)
107
 
108
  Resonance Routing — US 19/452,440.
 
2
  license: apache-2.0
3
  library_name: cortiq
4
  pipeline_tag: text-classification
 
5
  language:
6
  - en
7
  tags:
 
26
 
27
  ## Quick start
28
 
29
+ Install the latest published CLI from crates.io (requires Rust):
 
30
 
31
  ```bash
32
+ cargo install cortiq-cli --locked
 
 
33
  ```
34
 
35
+ Run the same command again to update. Download the model and make your first decision:
 
36
 
37
  ```bash
38
+ curl -fL -o cortiq-decision.cmf \
39
+ https://huggingface.co/infosave/cortiq-decision/resolve/main/cortiq-decision.cmf
40
+ cortiq decide cortiq-decision.cmf --skill banking77 -p "I still have not received my new card"
41
  ```
42
 
 
 
43
  **Result:** `card_arrival`, answered locally. No cloud key required.
44
  Included skills: `banking77`, `clinc150`, `massive`.
45
 
 
60
  Local times include the entire text-to-decision path, not just the resonance
61
  kernel. API times include the network; these are not hardware-normalized tests.
62
 
63
+ [New Metal and Vulkan measurements — same CMF, unchanged decisions →](GPU.md)
64
+
65
  ### Cost: cloud only when needed
66
 
67
  ![API fees per million decisions: Cortiq plus an optional oracle $3.01, $3.53, $8.48; Jev $183.69, $271.61, $110.86 for BANKING77, CLINC150 and MASSIVE respectively.](figures/cost.png)
 
98
  ---
99
 
100
  **Benchmark scope:** reused public datasets; CMF trained on train + dev,
101
+ Jev given two examples per label. The model combines a Cortiq NVG-modified text encoder with
102
+ trained resonance topologies. [Method, data and licenses](BENCHMARKS.md) ·
103
  [Chart data](evidence/comparison.json)
104
 
105
  Resonance Routing — US 19/452,440.
README_RU.md CHANGED
@@ -13,24 +13,20 @@
13
 
14
  ## Быстрый запуск
15
 
16
- Скачайте и распакуйте [Cortiq 0.7.9 для своей платформы](https://github.com/infosave2007/cmf/releases/tag/v0.7.9),
17
- затем добавьте `cortiq` в PATH. Rust и Hugging Face CLI не нужны.
18
 
19
  ```bash
20
- curl -fL -o cortiq-decision.cmf \
21
- https://huggingface.co/infosave/cortiq-decision/resolve/main/cortiq-decision.cmf
22
- cortiq decide cortiq-decision.cmf --skill banking77 -p "I still have not received my new card"
23
  ```
24
 
25
- <details>
26
- <summary>Альтернатива: установка через Cargo (нужен Rust)</summary>
27
 
28
  ```bash
29
- cargo install cortiq-cli --version 0.7.9 --locked
 
 
30
  ```
31
 
32
- </details>
33
-
34
  **Результат:** `card_arrival` — ожидание доставки карты. Решение принято локально,
35
  ключ облачного API не нужен. Готовые навыки: `banking77`, `clinc150`, `massive`.
36
 
@@ -52,6 +48,8 @@ cargo install cortiq-cli --version 0.7.9 --locked
52
  Локальный замер включает весь путь от текста до решения, не только ядро.
53
  В API-замеры входит сеть; оборудование и режимы параллельности различаются.
54
 
 
 
55
  ### Стоимость: облако только для сложных случаев
56
 
57
  ![Плата за API на миллион решений: Cortiq с оракулом — $3,01 / $3,53 / $8,48; Jev — $183,69 / $271,61 / $110,86.](figures/cost.png)
@@ -89,8 +87,8 @@ HTTP-сервер: `cortiq serve cortiq-decision.cmf`.
89
  ---
90
 
91
  **Условия сравнения:** повторно использованные открытые наборы; CMF обучен
92
- на train + dev, Jev получил по два примера на метку. Энкодер — BGE-small,
93
- сжатый технологией Cortiq NVG. [Методика и лицензии](BENCHMARKS.md) ·
94
  [Данные графиков](evidence/comparison.json)
95
 
96
  Resonance Routing — US 19/452,440.
 
13
 
14
  ## Быстрый запуск
15
 
16
+ Установите актуальную опубликованную CLI из crates.io (нужен Rust):
 
17
 
18
  ```bash
19
+ cargo install cortiq-cli --locked
 
 
20
  ```
21
 
22
+ Для обновления повторите ту же команду. Скачайте модель и получите первое решение:
 
23
 
24
  ```bash
25
+ curl -fL -o cortiq-decision.cmf \
26
+ https://huggingface.co/infosave/cortiq-decision/resolve/main/cortiq-decision.cmf
27
+ cortiq decide cortiq-decision.cmf --skill banking77 -p "I still have not received my new card"
28
  ```
29
 
 
 
30
  **Результат:** `card_arrival` — ожидание доставки карты. Решение принято локально,
31
  ключ облачного API не нужен. Готовые навыки: `banking77`, `clinc150`, `massive`.
32
 
 
48
  Локальный замер включает весь путь от текста до решения, не только ядро.
49
  В API-замеры входит сеть; оборудование и режимы параллельности различаются.
50
 
51
+ [Новые замеры Metal и Vulkan — тот же CMF, те же решения →](GPU.md)
52
+
53
  ### Стоимость: облако только для сложных случаев
54
 
55
  ![Плата за API на миллион решений: Cortiq с оракулом — $3,01 / $3,53 / $8,48; Jev — $183,69 / $271,61 / $110,86.](figures/cost.png)
 
87
  ---
88
 
89
  **Условия сравнения:** повторно использованные открытые наборы; CMF обучен
90
+ на train + dev, Jev получил по два примера на метку. В модели объединены энкодер, переработанный
91
+ технологией Cortiq NVG, и обученные резонансные топологии. [Методика и лицензии](BENCHMARKS.md) ·
92
  [Данные графиков](evidence/comparison.json)
93
 
94
  Resonance Routing — US 19/452,440.
evidence/gpu.json ADDED
@@ -0,0 +1,2807 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "schema": "cortiq-decision-gpu-evidence/1",
3
+ "created_utc": "2026-09-28T05:26:36.972640+00:00",
4
+ "model_sha256": "ed9b8ec2bbfe9e9fd30f14a5eaf82314f38bc7e7510a39772baa2de3801d79b1",
5
+ "oracle_calls": 0,
6
+ "model_bytes_changed": false,
7
+ "precision": "FP32; no FP16/TF32; unchanged 1e-5 embedding tolerance",
8
+ "gpu_release_status": "Validated development build; GPU decision backend is not in the currently published crates.io package.",
9
+ "tests": [
10
+ {
11
+ "backend": "metal",
12
+ "mode": "paired",
13
+ "run": 1,
14
+ "source_sha256": "8b5d7b02728504308e209b21928965322a2dd1de30c2c37f8a774f8081a9924b",
15
+ "schema": "cortiq-decision-metal-comparison/2",
16
+ "model_sha": "386b6e43fd35d5aa9e9710529dfdf30aa868df98ab4434d8e45dae9829898f85",
17
+ "skill": "banking77",
18
+ "n": 3080,
19
+ "dataset_sha256": "649607fa7b124293c80b455d2effe5e41da713e1836ee936073fe34ab9dc6fba",
20
+ "device": "metal: Apple M4",
21
+ "warmup": 50,
22
+ "order": "paired serial; CPU-first/GPU-first alternates per row; same process, model, scorer and texts; no oracle",
23
+ "golden_max_abs": {
24
+ "cpu": 0.0,
25
+ "metal": 1.1920928955078125e-07
26
+ },
27
+ "max_embedding_abs": 1.6391277313232422e-07,
28
+ "max_reconstruction_error_abs": 1.1742115020751953e-05,
29
+ "max_reconstruction_error_scaled": 6.425947049137903e-06,
30
+ "winner_changes": 0,
31
+ "gate_changes": 0,
32
+ "hash_changes": 0,
33
+ "different_rows": [],
34
+ "correct": {
35
+ "cpu": 2875,
36
+ "metal": 2875
37
+ },
38
+ "accepted": {
39
+ "cpu": 2791,
40
+ "metal": 2791
41
+ },
42
+ "metal_command_buffers": 3080,
43
+ "cpu_command_buffers": 0,
44
+ "metal_resonance_dispatches": 3080,
45
+ "ms": {
46
+ "cpu_total": {
47
+ "p50": 3.458792,
48
+ "p95": 4.6185,
49
+ "p99": 6.479583
50
+ },
51
+ "metal_total": {
52
+ "p50": 2.5725409999999997,
53
+ "p95": 4.429583,
54
+ "p99": 7.538375
55
+ },
56
+ "cpu_encoder": {
57
+ "p50": 2.071917,
58
+ "p95": 3.203542,
59
+ "p99": 5.040916
60
+ },
61
+ "metal_split_encoder": {
62
+ "p50": 0.0,
63
+ "p95": 0.0,
64
+ "p99": 0.0
65
+ },
66
+ "cpu_resonance": {
67
+ "p50": 1.350666,
68
+ "p95": 1.4649159999999999,
69
+ "p99": 1.538958
70
+ },
71
+ "metal_ranking_cpu": {
72
+ "p50": 0.006333,
73
+ "p95": 0.010209,
74
+ "p99": 0.019042000000000003
75
+ },
76
+ "metal_joint_pipeline": {
77
+ "p50": 2.554542,
78
+ "p95": 4.40325,
79
+ "p99": 7.522084
80
+ }
81
+ },
82
+ "by_tokens": [
83
+ {
84
+ "tokens": "1-8",
85
+ "n": 230,
86
+ "cpu_ms": {
87
+ "p50": 3.093625,
88
+ "p95": 3.267084,
89
+ "p99": 3.378875
90
+ },
91
+ "gpu_ms": {
92
+ "p50": 2.420125,
93
+ "p95": 3.592583,
94
+ "p99": 5.5611250000000005
95
+ }
96
+ },
97
+ {
98
+ "tokens": "9-16",
99
+ "n": 2084,
100
+ "cpu_ms": {
101
+ "p50": 3.398666,
102
+ "p95": 3.682708,
103
+ "p99": 3.81625
104
+ },
105
+ "gpu_ms": {
106
+ "p50": 2.523584,
107
+ "p95": 3.9925409999999997,
108
+ "p99": 6.467167
109
+ }
110
+ },
111
+ {
112
+ "tokens": "17-32",
113
+ "n": 632,
114
+ "cpu_ms": {
115
+ "p50": 3.750125,
116
+ "p95": 4.5125,
117
+ "p99": 4.7405
118
+ },
119
+ "gpu_ms": {
120
+ "p50": 2.7897920000000003,
121
+ "p95": 4.739041,
122
+ "p99": 8.428542
123
+ }
124
+ },
125
+ {
126
+ "tokens": "33-64",
127
+ "n": 129,
128
+ "cpu_ms": {
129
+ "p50": 5.745417,
130
+ "p95": 7.550709,
131
+ "p99": 8.154875
132
+ },
133
+ "gpu_ms": {
134
+ "p50": 3.735917,
135
+ "p95": 6.810416,
136
+ "p99": 9.454334
137
+ }
138
+ },
139
+ {
140
+ "tokens": "65+",
141
+ "n": 5,
142
+ "cpu_ms": {
143
+ "p50": 10.160499999999999,
144
+ "p95": 11.220374999999999,
145
+ "p99": 11.220374999999999
146
+ },
147
+ "gpu_ms": {
148
+ "p50": 5.704416,
149
+ "p95": 15.93725,
150
+ "p99": 15.93725
151
+ }
152
+ }
153
+ ],
154
+ "gpu_scope": "One command buffer: embedding lookup, transformer layers, row-order pooling and FP32 L2, reconstruction errors; tokenization, hashing and ranking/gates on CPU. Joint GPU time is not split into fictitious encoder/resonance wall times."
155
+ },
156
+ {
157
+ "backend": "metal",
158
+ "mode": "paired",
159
+ "run": 2,
160
+ "source_sha256": "17972babb78332434ae98acddc9ceb5b3635aa60811fa9863ad636a0bae95015",
161
+ "schema": "cortiq-decision-metal-comparison/2",
162
+ "model_sha": "386b6e43fd35d5aa9e9710529dfdf30aa868df98ab4434d8e45dae9829898f85",
163
+ "skill": "banking77",
164
+ "n": 3080,
165
+ "dataset_sha256": "649607fa7b124293c80b455d2effe5e41da713e1836ee936073fe34ab9dc6fba",
166
+ "device": "metal: Apple M4",
167
+ "warmup": 50,
168
+ "order": "paired serial; CPU-first/GPU-first alternates per row; same process, model, scorer and texts; no oracle",
169
+ "golden_max_abs": {
170
+ "cpu": 0.0,
171
+ "metal": 1.1920928955078125e-07
172
+ },
173
+ "max_embedding_abs": 1.6391277313232422e-07,
174
+ "max_reconstruction_error_abs": 1.1742115020751953e-05,
175
+ "max_reconstruction_error_scaled": 6.425947049137903e-06,
176
+ "winner_changes": 0,
177
+ "gate_changes": 0,
178
+ "hash_changes": 0,
179
+ "different_rows": [],
180
+ "correct": {
181
+ "cpu": 2875,
182
+ "metal": 2875
183
+ },
184
+ "accepted": {
185
+ "cpu": 2791,
186
+ "metal": 2791
187
+ },
188
+ "metal_command_buffers": 3080,
189
+ "cpu_command_buffers": 0,
190
+ "metal_resonance_dispatches": 3080,
191
+ "ms": {
192
+ "cpu_total": {
193
+ "p50": 3.4517089999999997,
194
+ "p95": 4.600292,
195
+ "p99": 6.439208
196
+ },
197
+ "metal_total": {
198
+ "p50": 2.583042,
199
+ "p95": 3.750917,
200
+ "p99": 6.0215
201
+ },
202
+ "cpu_encoder": {
203
+ "p50": 2.066834,
204
+ "p95": 3.2210419999999997,
205
+ "p99": 5.067708
206
+ },
207
+ "metal_split_encoder": {
208
+ "p50": 0.0,
209
+ "p95": 0.0,
210
+ "p99": 0.0
211
+ },
212
+ "cpu_resonance": {
213
+ "p50": 1.3495409999999999,
214
+ "p95": 1.467708,
215
+ "p99": 1.539374
216
+ },
217
+ "metal_ranking_cpu": {
218
+ "p50": 0.006416,
219
+ "p95": 0.015667,
220
+ "p99": 0.01925
221
+ },
222
+ "metal_joint_pipeline": {
223
+ "p50": 2.563375,
224
+ "p95": 3.721,
225
+ "p99": 6.00075
226
+ }
227
+ },
228
+ "by_tokens": [
229
+ {
230
+ "tokens": "1-8",
231
+ "n": 230,
232
+ "cpu_ms": {
233
+ "p50": 3.1007919999999998,
234
+ "p95": 3.277709,
235
+ "p99": 3.465416
236
+ },
237
+ "gpu_ms": {
238
+ "p50": 2.448209,
239
+ "p95": 3.439,
240
+ "p99": 4.4012080000000005
241
+ }
242
+ },
243
+ {
244
+ "tokens": "9-16",
245
+ "n": 2084,
246
+ "cpu_ms": {
247
+ "p50": 3.3943749999999997,
248
+ "p95": 3.7052080000000003,
249
+ "p99": 3.836292
250
+ },
251
+ "gpu_ms": {
252
+ "p50": 2.548833,
253
+ "p95": 3.523375,
254
+ "p99": 5.749334
255
+ }
256
+ },
257
+ {
258
+ "tokens": "17-32",
259
+ "n": 632,
260
+ "cpu_ms": {
261
+ "p50": 3.763,
262
+ "p95": 4.530416,
263
+ "p99": 4.754292
264
+ },
265
+ "gpu_ms": {
266
+ "p50": 2.768875,
267
+ "p95": 3.757083,
268
+ "p99": 6.398375000000001
269
+ }
270
+ },
271
+ {
272
+ "tokens": "33-64",
273
+ "n": 129,
274
+ "cpu_ms": {
275
+ "p50": 5.747959000000001,
276
+ "p95": 7.2992919999999994,
277
+ "p99": 8.021875
278
+ },
279
+ "gpu_ms": {
280
+ "p50": 3.626416,
281
+ "p95": 4.8097080000000005,
282
+ "p99": 5.3585
283
+ }
284
+ },
285
+ {
286
+ "tokens": "65+",
287
+ "n": 5,
288
+ "cpu_ms": {
289
+ "p50": 10.039708,
290
+ "p95": 11.134333,
291
+ "p99": 11.134333
292
+ },
293
+ "gpu_ms": {
294
+ "p50": 5.726041,
295
+ "p95": 6.274583,
296
+ "p99": 6.274583
297
+ }
298
+ }
299
+ ],
300
+ "gpu_scope": "One command buffer: embedding lookup, transformer layers, row-order pooling and FP32 L2, reconstruction errors; tokenization, hashing and ranking/gates on CPU. Joint GPU time is not split into fictitious encoder/resonance wall times."
301
+ },
302
+ {
303
+ "backend": "metal",
304
+ "mode": "paired",
305
+ "run": 1,
306
+ "source_sha256": "fc7a10ec0068a37b983f205d3eecfa4efe3460a4cb66301cc60f1735ca7864ce",
307
+ "schema": "cortiq-decision-metal-comparison/2",
308
+ "model_sha": "386b6e43fd35d5aa9e9710529dfdf30aa868df98ab4434d8e45dae9829898f85",
309
+ "skill": "clinc150",
310
+ "n": 4500,
311
+ "dataset_sha256": "2bf61b64ef682646a8f942e636ee73aad240f04dbd50c8db2a413b44a8b64871",
312
+ "device": "metal: Apple M4",
313
+ "warmup": 50,
314
+ "order": "paired serial; CPU-first/GPU-first alternates per row; same process, model, scorer and texts; no oracle",
315
+ "golden_max_abs": {
316
+ "cpu": 0.0,
317
+ "metal": 1.1920928955078125e-07
318
+ },
319
+ "max_embedding_abs": 1.6391277313232422e-07,
320
+ "max_reconstruction_error_abs": 1.621246337890625e-05,
321
+ "max_reconstruction_error_scaled": 7.066538728395244e-06,
322
+ "winner_changes": 0,
323
+ "gate_changes": 0,
324
+ "hash_changes": 0,
325
+ "different_rows": [],
326
+ "correct": {
327
+ "cpu": 4328,
328
+ "metal": 4328
329
+ },
330
+ "accepted": {
331
+ "cpu": 4145,
332
+ "metal": 4145
333
+ },
334
+ "metal_command_buffers": 4500,
335
+ "cpu_command_buffers": 0,
336
+ "metal_resonance_dispatches": 4500,
337
+ "ms": {
338
+ "cpu_total": {
339
+ "p50": 3.267958,
340
+ "p95": 3.6562919999999997,
341
+ "p99": 3.939334
342
+ },
343
+ "metal_total": {
344
+ "p50": 2.515084,
345
+ "p95": 3.380667,
346
+ "p99": 4.091292
347
+ },
348
+ "cpu_encoder": {
349
+ "p50": 1.924042,
350
+ "p95": 2.301792,
351
+ "p99": 2.5448329999999997
352
+ },
353
+ "metal_split_encoder": {
354
+ "p50": 0.0,
355
+ "p95": 0.0,
356
+ "p99": 0.0
357
+ },
358
+ "cpu_resonance": {
359
+ "p50": 1.313542,
360
+ "p95": 1.432668,
361
+ "p99": 1.493917
362
+ },
363
+ "metal_ranking_cpu": {
364
+ "p50": 0.01225,
365
+ "p95": 0.022333000000000002,
366
+ "p99": 0.026250000000000002
367
+ },
368
+ "metal_joint_pipeline": {
369
+ "p50": 2.492792,
370
+ "p95": 3.3617920000000003,
371
+ "p99": 4.070749999999999
372
+ }
373
+ },
374
+ "by_tokens": [
375
+ {
376
+ "tokens": "1-8",
377
+ "n": 1122,
378
+ "cpu_ms": {
379
+ "p50": 3.035875,
380
+ "p95": 3.2303330000000003,
381
+ "p99": 3.267417
382
+ },
383
+ "gpu_ms": {
384
+ "p50": 2.480708,
385
+ "p95": 3.425959,
386
+ "p99": 4.00425
387
+ }
388
+ },
389
+ {
390
+ "tokens": "9-16",
391
+ "n": 3076,
392
+ "cpu_ms": {
393
+ "p50": 3.316917,
394
+ "p95": 3.6136660000000003,
395
+ "p99": 3.753667
396
+ },
397
+ "gpu_ms": {
398
+ "p50": 2.5173330000000003,
399
+ "p95": 3.2338340000000003,
400
+ "p99": 4.145417
401
+ }
402
+ },
403
+ {
404
+ "tokens": "17-32",
405
+ "n": 302,
406
+ "cpu_ms": {
407
+ "p50": 3.617875,
408
+ "p95": 4.072334000000001,
409
+ "p99": 4.338167
410
+ },
411
+ "gpu_ms": {
412
+ "p50": 2.7420410000000004,
413
+ "p95": 3.61625,
414
+ "p99": 3.951833
415
+ }
416
+ }
417
+ ],
418
+ "gpu_scope": "One command buffer: embedding lookup, transformer layers, row-order pooling and FP32 L2, reconstruction errors; tokenization, hashing and ranking/gates on CPU. Joint GPU time is not split into fictitious encoder/resonance wall times."
419
+ },
420
+ {
421
+ "backend": "metal",
422
+ "mode": "paired",
423
+ "run": 2,
424
+ "source_sha256": "681627e6ba06747e7e277329fe47e0ea4264899ddc57359d95062159f8885101",
425
+ "schema": "cortiq-decision-metal-comparison/2",
426
+ "model_sha": "386b6e43fd35d5aa9e9710529dfdf30aa868df98ab4434d8e45dae9829898f85",
427
+ "skill": "clinc150",
428
+ "n": 4500,
429
+ "dataset_sha256": "2bf61b64ef682646a8f942e636ee73aad240f04dbd50c8db2a413b44a8b64871",
430
+ "device": "metal: Apple M4",
431
+ "warmup": 50,
432
+ "order": "paired serial; CPU-first/GPU-first alternates per row; same process, model, scorer and texts; no oracle",
433
+ "golden_max_abs": {
434
+ "cpu": 0.0,
435
+ "metal": 1.1920928955078125e-07
436
+ },
437
+ "max_embedding_abs": 1.6391277313232422e-07,
438
+ "max_reconstruction_error_abs": 1.621246337890625e-05,
439
+ "max_reconstruction_error_scaled": 7.066538728395244e-06,
440
+ "winner_changes": 0,
441
+ "gate_changes": 0,
442
+ "hash_changes": 0,
443
+ "different_rows": [],
444
+ "correct": {
445
+ "cpu": 4328,
446
+ "metal": 4328
447
+ },
448
+ "accepted": {
449
+ "cpu": 4145,
450
+ "metal": 4145
451
+ },
452
+ "metal_command_buffers": 4500,
453
+ "cpu_command_buffers": 0,
454
+ "metal_resonance_dispatches": 4500,
455
+ "ms": {
456
+ "cpu_total": {
457
+ "p50": 3.262333,
458
+ "p95": 3.689833,
459
+ "p99": 4.154291
460
+ },
461
+ "metal_total": {
462
+ "p50": 2.554791,
463
+ "p95": 3.5370000000000004,
464
+ "p99": 6.369834
465
+ },
466
+ "cpu_encoder": {
467
+ "p50": 1.922083,
468
+ "p95": 2.319333,
469
+ "p99": 2.65525
470
+ },
471
+ "metal_split_encoder": {
472
+ "p50": 0.0,
473
+ "p95": 0.0,
474
+ "p99": 0.0
475
+ },
476
+ "cpu_resonance": {
477
+ "p50": 1.312,
478
+ "p95": 1.4382080000000002,
479
+ "p99": 1.594958
480
+ },
481
+ "metal_ranking_cpu": {
482
+ "p50": 0.012209,
483
+ "p95": 0.022541,
484
+ "p99": 0.025791
485
+ },
486
+ "metal_joint_pipeline": {
487
+ "p50": 2.532959,
488
+ "p95": 3.5140000000000002,
489
+ "p99": 6.349708
490
+ }
491
+ },
492
+ "by_tokens": [
493
+ {
494
+ "tokens": "1-8",
495
+ "n": 1122,
496
+ "cpu_ms": {
497
+ "p50": 3.0227090000000003,
498
+ "p95": 3.213959,
499
+ "p99": 3.4175
500
+ },
501
+ "gpu_ms": {
502
+ "p50": 2.498291,
503
+ "p95": 3.451,
504
+ "p99": 4.900708
505
+ }
506
+ },
507
+ {
508
+ "tokens": "9-16",
509
+ "n": 3076,
510
+ "cpu_ms": {
511
+ "p50": 3.307833,
512
+ "p95": 3.652208,
513
+ "p99": 4.212333
514
+ },
515
+ "gpu_ms": {
516
+ "p50": 2.574583,
517
+ "p95": 3.5756669999999997,
518
+ "p99": 6.6290000000000004
519
+ }
520
+ },
521
+ {
522
+ "tokens": "17-32",
523
+ "n": 302,
524
+ "cpu_ms": {
525
+ "p50": 3.616209,
526
+ "p95": 4.066125,
527
+ "p99": 4.446791999999999
528
+ },
529
+ "gpu_ms": {
530
+ "p50": 2.780833,
531
+ "p95": 3.815208,
532
+ "p99": 6.182792
533
+ }
534
+ }
535
+ ],
536
+ "gpu_scope": "One command buffer: embedding lookup, transformer layers, row-order pooling and FP32 L2, reconstruction errors; tokenization, hashing and ranking/gates on CPU. Joint GPU time is not split into fictitious encoder/resonance wall times."
537
+ },
538
+ {
539
+ "backend": "metal",
540
+ "mode": "paired",
541
+ "run": 1,
542
+ "source_sha256": "fba875dad32c2f41d1bb7ec4270de68a3d1d012c09a86f8f2e8ff115f97161ad",
543
+ "schema": "cortiq-decision-metal-comparison/2",
544
+ "model_sha": "386b6e43fd35d5aa9e9710529dfdf30aa868df98ab4434d8e45dae9829898f85",
545
+ "skill": "massive",
546
+ "n": 2974,
547
+ "dataset_sha256": "5517f3de57d9ec9f73885dbd01b26a55a5cd806b9e7ff10c8873f5998e72dbd3",
548
+ "device": "metal: Apple M4",
549
+ "warmup": 50,
550
+ "order": "paired serial; CPU-first/GPU-first alternates per row; same process, model, scorer and texts; no oracle",
551
+ "golden_max_abs": {
552
+ "cpu": 0.0,
553
+ "metal": 1.1920928955078125e-07
554
+ },
555
+ "max_embedding_abs": 1.7881393432617188e-07,
556
+ "max_reconstruction_error_abs": 2.0384788513183594e-05,
557
+ "max_reconstruction_error_scaled": 8.684849490236957e-06,
558
+ "winner_changes": 0,
559
+ "gate_changes": 0,
560
+ "hash_changes": 0,
561
+ "different_rows": [],
562
+ "correct": {
563
+ "cpu": 2562,
564
+ "metal": 2562
565
+ },
566
+ "accepted": {
567
+ "cpu": 1615,
568
+ "metal": 1615
569
+ },
570
+ "metal_command_buffers": 2974,
571
+ "cpu_command_buffers": 0,
572
+ "metal_resonance_dispatches": 2974,
573
+ "ms": {
574
+ "cpu_total": {
575
+ "p50": 2.660333,
576
+ "p95": 3.0798330000000003,
577
+ "p99": 3.3184590000000003
578
+ },
579
+ "metal_total": {
580
+ "p50": 2.281333,
581
+ "p95": 3.068542,
582
+ "p99": 3.3704579999999997
583
+ },
584
+ "cpu_encoder": {
585
+ "p50": 1.8122500000000001,
586
+ "p95": 2.230708,
587
+ "p99": 2.445875
588
+ },
589
+ "metal_split_encoder": {
590
+ "p50": 0.0,
591
+ "p95": 0.0,
592
+ "p99": 0.0
593
+ },
594
+ "cpu_resonance": {
595
+ "p50": 0.816874,
596
+ "p95": 0.8975,
597
+ "p99": 0.923208
598
+ },
599
+ "metal_ranking_cpu": {
600
+ "p50": 0.005667,
601
+ "p95": 0.016125,
602
+ "p99": 0.018917
603
+ },
604
+ "metal_joint_pipeline": {
605
+ "p50": 2.265208,
606
+ "p95": 3.047834,
607
+ "p99": 3.353167
608
+ }
609
+ },
610
+ "by_tokens": [
611
+ {
612
+ "tokens": "1-8",
613
+ "n": 1368,
614
+ "cpu_ms": {
615
+ "p50": 2.500333,
616
+ "p95": 2.691542,
617
+ "p99": 2.740958
618
+ },
619
+ "gpu_ms": {
620
+ "p50": 2.241958,
621
+ "p95": 2.847834,
622
+ "p99": 3.29425
623
+ }
624
+ },
625
+ {
626
+ "tokens": "9-16",
627
+ "n": 1487,
628
+ "cpu_ms": {
629
+ "p50": 2.7821249999999997,
630
+ "p95": 3.0707500000000003,
631
+ "p99": 3.2034580000000004
632
+ },
633
+ "gpu_ms": {
634
+ "p50": 2.320292,
635
+ "p95": 3.112666,
636
+ "p99": 3.3556250000000003
637
+ }
638
+ },
639
+ {
640
+ "tokens": "17-32",
641
+ "n": 117,
642
+ "cpu_ms": {
643
+ "p50": 3.137833,
644
+ "p95": 3.7797080000000003,
645
+ "p99": 4.111084
646
+ },
647
+ "gpu_ms": {
648
+ "p50": 2.556792,
649
+ "p95": 3.4589999999999996,
650
+ "p99": 3.741084
651
+ }
652
+ },
653
+ {
654
+ "tokens": "33-64",
655
+ "n": 2,
656
+ "cpu_ms": {
657
+ "p50": 7.734584,
658
+ "p95": 7.734584,
659
+ "p99": 7.734584
660
+ },
661
+ "gpu_ms": {
662
+ "p50": 4.539750000000001,
663
+ "p95": 4.539750000000001,
664
+ "p99": 4.539750000000001
665
+ }
666
+ }
667
+ ],
668
+ "gpu_scope": "One command buffer: embedding lookup, transformer layers, row-order pooling and FP32 L2, reconstruction errors; tokenization, hashing and ranking/gates on CPU. Joint GPU time is not split into fictitious encoder/resonance wall times."
669
+ },
670
+ {
671
+ "backend": "metal",
672
+ "mode": "paired",
673
+ "run": 2,
674
+ "source_sha256": "05265e40e4b03cf628040b026cd4cec81ae2cc9119f5267c361e88cac7937dd7",
675
+ "schema": "cortiq-decision-metal-comparison/2",
676
+ "model_sha": "386b6e43fd35d5aa9e9710529dfdf30aa868df98ab4434d8e45dae9829898f85",
677
+ "skill": "massive",
678
+ "n": 2974,
679
+ "dataset_sha256": "5517f3de57d9ec9f73885dbd01b26a55a5cd806b9e7ff10c8873f5998e72dbd3",
680
+ "device": "metal: Apple M4",
681
+ "warmup": 50,
682
+ "order": "paired serial; CPU-first/GPU-first alternates per row; same process, model, scorer and texts; no oracle",
683
+ "golden_max_abs": {
684
+ "cpu": 0.0,
685
+ "metal": 1.1920928955078125e-07
686
+ },
687
+ "max_embedding_abs": 1.7881393432617188e-07,
688
+ "max_reconstruction_error_abs": 2.0384788513183594e-05,
689
+ "max_reconstruction_error_scaled": 8.684849490236957e-06,
690
+ "winner_changes": 0,
691
+ "gate_changes": 0,
692
+ "hash_changes": 0,
693
+ "different_rows": [],
694
+ "correct": {
695
+ "cpu": 2562,
696
+ "metal": 2562
697
+ },
698
+ "accepted": {
699
+ "cpu": 1615,
700
+ "metal": 1615
701
+ },
702
+ "metal_command_buffers": 2974,
703
+ "cpu_command_buffers": 0,
704
+ "metal_resonance_dispatches": 2974,
705
+ "ms": {
706
+ "cpu_total": {
707
+ "p50": 2.684167,
708
+ "p95": 3.127583,
709
+ "p99": 3.5339579999999997
710
+ },
711
+ "metal_total": {
712
+ "p50": 2.3083750000000003,
713
+ "p95": 3.864667,
714
+ "p99": 7.1722920000000006
715
+ },
716
+ "cpu_encoder": {
717
+ "p50": 1.8290419999999998,
718
+ "p95": 2.255833,
719
+ "p99": 2.546667
720
+ },
721
+ "metal_split_encoder": {
722
+ "p50": 0.0,
723
+ "p95": 0.0,
724
+ "p99": 0.0
725
+ },
726
+ "cpu_resonance": {
727
+ "p50": 0.822208,
728
+ "p95": 0.911333,
729
+ "p99": 1.023625
730
+ },
731
+ "metal_ranking_cpu": {
732
+ "p50": 0.005542,
733
+ "p95": 0.015958,
734
+ "p99": 0.019292
735
+ },
736
+ "metal_joint_pipeline": {
737
+ "p50": 2.291833,
738
+ "p95": 3.8492919999999997,
739
+ "p99": 7.164042
740
+ }
741
+ },
742
+ "by_tokens": [
743
+ {
744
+ "tokens": "1-8",
745
+ "n": 1368,
746
+ "cpu_ms": {
747
+ "p50": 2.521625,
748
+ "p95": 2.758834,
749
+ "p99": 3.1563749999999997
750
+ },
751
+ "gpu_ms": {
752
+ "p50": 2.2763750000000003,
753
+ "p95": 3.9769999999999994,
754
+ "p99": 7.167666
755
+ }
756
+ },
757
+ {
758
+ "tokens": "9-16",
759
+ "n": 1487,
760
+ "cpu_ms": {
761
+ "p50": 2.797,
762
+ "p95": 3.109041,
763
+ "p99": 3.3707089999999997
764
+ },
765
+ "gpu_ms": {
766
+ "p50": 2.336875,
767
+ "p95": 3.387958,
768
+ "p99": 7.853667
769
+ }
770
+ },
771
+ {
772
+ "tokens": "17-32",
773
+ "n": 117,
774
+ "cpu_ms": {
775
+ "p50": 3.1375,
776
+ "p95": 3.769041,
777
+ "p99": 3.985417
778
+ },
779
+ "gpu_ms": {
780
+ "p50": 2.574042,
781
+ "p95": 3.8526670000000003,
782
+ "p99": 6.3545
783
+ }
784
+ },
785
+ {
786
+ "tokens": "33-64",
787
+ "n": 2,
788
+ "cpu_ms": {
789
+ "p50": 7.529083,
790
+ "p95": 7.529083,
791
+ "p99": 7.529083
792
+ },
793
+ "gpu_ms": {
794
+ "p50": 4.361125,
795
+ "p95": 4.361125,
796
+ "p99": 4.361125
797
+ }
798
+ }
799
+ ],
800
+ "gpu_scope": "One command buffer: embedding lookup, transformer layers, row-order pooling and FP32 L2, reconstruction errors; tokenization, hashing and ranking/gates on CPU. Joint GPU time is not split into fictitious encoder/resonance wall times."
801
+ },
802
+ {
803
+ "backend": "metal",
804
+ "mode": "separate",
805
+ "run": 1,
806
+ "source_sha256": "508fade6a9d905b58ecd96c29f259775c9fc5c1e66faab9fca39bbd5a2149a6b",
807
+ "schema": "cortiq-decision-metal-comparison/2",
808
+ "model_sha": "386b6e43fd35d5aa9e9710529dfdf30aa868df98ab4434d8e45dae9829898f85",
809
+ "skill": "banking77",
810
+ "n": 3080,
811
+ "dataset_sha256": "649607fa7b124293c80b455d2effe5e41da713e1836ee936073fe34ab9dc6fba",
812
+ "device": "metal: Apple M4",
813
+ "warmup": 50,
814
+ "order": "separate serial phases: all CPU references, 50 additional GPU warmups, all GPU rows. Same process/model/texts and parity checks; no inserted CPU inference between GPU requests; no oracle.",
815
+ "golden_max_abs": {
816
+ "cpu": 0.0,
817
+ "metal": 1.1920928955078125e-07
818
+ },
819
+ "max_embedding_abs": 1.6391277313232422e-07,
820
+ "max_reconstruction_error_abs": 1.1742115020751953e-05,
821
+ "max_reconstruction_error_scaled": 6.425947049137903e-06,
822
+ "winner_changes": 0,
823
+ "gate_changes": 0,
824
+ "hash_changes": 0,
825
+ "different_rows": [],
826
+ "correct": {
827
+ "cpu": 2875,
828
+ "metal": 2875
829
+ },
830
+ "accepted": {
831
+ "cpu": 2791,
832
+ "metal": 2791
833
+ },
834
+ "metal_command_buffers": 3080,
835
+ "cpu_command_buffers": 0,
836
+ "metal_resonance_dispatches": 3080,
837
+ "ms": {
838
+ "cpu_total": {
839
+ "p50": 3.426791,
840
+ "p95": 4.608875,
841
+ "p99": 6.514125
842
+ },
843
+ "metal_total": {
844
+ "p50": 2.082292,
845
+ "p95": 3.145417,
846
+ "p99": 3.803208
847
+ },
848
+ "cpu_encoder": {
849
+ "p50": 2.053667,
850
+ "p95": 3.216875,
851
+ "p99": 5.132416
852
+ },
853
+ "metal_split_encoder": {
854
+ "p50": 0.0,
855
+ "p95": 0.0,
856
+ "p99": 0.0
857
+ },
858
+ "cpu_resonance": {
859
+ "p50": 1.3502919999999998,
860
+ "p95": 1.425459,
861
+ "p99": 1.4637499999999999
862
+ },
863
+ "metal_ranking_cpu": {
864
+ "p50": 0.006167000000000001,
865
+ "p95": 0.007875,
866
+ "p99": 0.008541
867
+ },
868
+ "metal_joint_pipeline": {
869
+ "p50": 2.054458,
870
+ "p95": 3.111166,
871
+ "p99": 3.762542
872
+ }
873
+ },
874
+ "by_tokens": [
875
+ {
876
+ "tokens": "1-8",
877
+ "n": 230,
878
+ "cpu_ms": {
879
+ "p50": 3.0661669999999996,
880
+ "p95": 3.2113329999999998,
881
+ "p99": 3.249959
882
+ },
883
+ "gpu_ms": {
884
+ "p50": 1.9797500000000001,
885
+ "p95": 2.824375,
886
+ "p99": 2.939917
887
+ }
888
+ },
889
+ {
890
+ "tokens": "9-16",
891
+ "n": 2084,
892
+ "cpu_ms": {
893
+ "p50": 3.3712500000000003,
894
+ "p95": 3.651292,
895
+ "p99": 3.739666
896
+ },
897
+ "gpu_ms": {
898
+ "p50": 2.05275,
899
+ "p95": 2.918917,
900
+ "p99": 3.126792
901
+ }
902
+ },
903
+ {
904
+ "tokens": "17-32",
905
+ "n": 632,
906
+ "cpu_ms": {
907
+ "p50": 3.7390000000000003,
908
+ "p95": 4.504708,
909
+ "p99": 4.871083
910
+ },
911
+ "gpu_ms": {
912
+ "p50": 2.3177499999999998,
913
+ "p95": 3.191875,
914
+ "p99": 3.535459
915
+ }
916
+ },
917
+ {
918
+ "tokens": "33-64",
919
+ "n": 129,
920
+ "cpu_ms": {
921
+ "p50": 5.708208,
922
+ "p95": 7.52575,
923
+ "p99": 7.977583
924
+ },
925
+ "gpu_ms": {
926
+ "p50": 3.325958,
927
+ "p95": 4.169416,
928
+ "p99": 4.547917
929
+ }
930
+ },
931
+ {
932
+ "tokens": "65+",
933
+ "n": 5,
934
+ "cpu_ms": {
935
+ "p50": 10.176041,
936
+ "p95": 10.944333,
937
+ "p99": 10.944333
938
+ },
939
+ "gpu_ms": {
940
+ "p50": 4.924333000000001,
941
+ "p95": 6.196083,
942
+ "p99": 6.196083
943
+ }
944
+ }
945
+ ],
946
+ "gpu_scope": "One command buffer: embedding lookup, transformer layers, row-order pooling and FP32 L2, reconstruction errors; tokenization, hashing and ranking/gates on CPU. Joint GPU time is not split into fictitious encoder/resonance wall times."
947
+ },
948
+ {
949
+ "backend": "metal",
950
+ "mode": "separate",
951
+ "run": 2,
952
+ "source_sha256": "77dd75120ca679112906d122f26f7abf15666dd3d0b9d0fe5c7134f79ee457d3",
953
+ "schema": "cortiq-decision-metal-comparison/2",
954
+ "model_sha": "386b6e43fd35d5aa9e9710529dfdf30aa868df98ab4434d8e45dae9829898f85",
955
+ "skill": "banking77",
956
+ "n": 3080,
957
+ "dataset_sha256": "649607fa7b124293c80b455d2effe5e41da713e1836ee936073fe34ab9dc6fba",
958
+ "device": "metal: Apple M4",
959
+ "warmup": 50,
960
+ "order": "separate serial phases: all CPU references, 50 additional GPU warmups, all GPU rows. Same process/model/texts and parity checks; no inserted CPU inference between GPU requests; no oracle.",
961
+ "golden_max_abs": {
962
+ "cpu": 0.0,
963
+ "metal": 1.1920928955078125e-07
964
+ },
965
+ "max_embedding_abs": 1.6391277313232422e-07,
966
+ "max_reconstruction_error_abs": 1.1742115020751953e-05,
967
+ "max_reconstruction_error_scaled": 6.425947049137903e-06,
968
+ "winner_changes": 0,
969
+ "gate_changes": 0,
970
+ "hash_changes": 0,
971
+ "different_rows": [],
972
+ "correct": {
973
+ "cpu": 2875,
974
+ "metal": 2875
975
+ },
976
+ "accepted": {
977
+ "cpu": 2791,
978
+ "metal": 2791
979
+ },
980
+ "metal_command_buffers": 3080,
981
+ "cpu_command_buffers": 0,
982
+ "metal_resonance_dispatches": 3080,
983
+ "ms": {
984
+ "cpu_total": {
985
+ "p50": 3.42625,
986
+ "p95": 4.570374999999999,
987
+ "p99": 6.416209
988
+ },
989
+ "metal_total": {
990
+ "p50": 2.0866249999999997,
991
+ "p95": 3.125875,
992
+ "p99": 3.751917
993
+ },
994
+ "cpu_encoder": {
995
+ "p50": 2.0503750000000003,
996
+ "p95": 3.180292,
997
+ "p99": 5.027209
998
+ },
999
+ "metal_split_encoder": {
1000
+ "p50": 0.0,
1001
+ "p95": 0.0,
1002
+ "p99": 0.0
1003
+ },
1004
+ "cpu_resonance": {
1005
+ "p50": 1.349958,
1006
+ "p95": 1.421834,
1007
+ "p99": 1.4535
1008
+ },
1009
+ "metal_ranking_cpu": {
1010
+ "p50": 0.006292,
1011
+ "p95": 0.008,
1012
+ "p99": 0.008624999999999999
1013
+ },
1014
+ "metal_joint_pipeline": {
1015
+ "p50": 2.061583,
1016
+ "p95": 3.097584,
1017
+ "p99": 3.718375
1018
+ }
1019
+ },
1020
+ "by_tokens": [
1021
+ {
1022
+ "tokens": "1-8",
1023
+ "n": 230,
1024
+ "cpu_ms": {
1025
+ "p50": 3.058416,
1026
+ "p95": 3.202792,
1027
+ "p99": 3.234083
1028
+ },
1029
+ "gpu_ms": {
1030
+ "p50": 1.978125,
1031
+ "p95": 2.8625,
1032
+ "p99": 3.101292
1033
+ }
1034
+ },
1035
+ {
1036
+ "tokens": "9-16",
1037
+ "n": 2084,
1038
+ "cpu_ms": {
1039
+ "p50": 3.364125,
1040
+ "p95": 3.64475,
1041
+ "p99": 3.7355829999999997
1042
+ },
1043
+ "gpu_ms": {
1044
+ "p50": 2.059875,
1045
+ "p95": 2.921125,
1046
+ "p99": 3.14525
1047
+ }
1048
+ },
1049
+ {
1050
+ "tokens": "17-32",
1051
+ "n": 632,
1052
+ "cpu_ms": {
1053
+ "p50": 3.732167,
1054
+ "p95": 4.517417,
1055
+ "p99": 4.661958
1056
+ },
1057
+ "gpu_ms": {
1058
+ "p50": 2.3240000000000003,
1059
+ "p95": 3.290917,
1060
+ "p99": 3.5608329999999997
1061
+ }
1062
+ },
1063
+ {
1064
+ "tokens": "33-64",
1065
+ "n": 129,
1066
+ "cpu_ms": {
1067
+ "p50": 5.674583,
1068
+ "p95": 7.4869580000000004,
1069
+ "p99": 8.160708
1070
+ },
1071
+ "gpu_ms": {
1072
+ "p50": 3.256042,
1073
+ "p95": 4.225541,
1074
+ "p99": 4.588667
1075
+ }
1076
+ },
1077
+ {
1078
+ "tokens": "65+",
1079
+ "n": 5,
1080
+ "cpu_ms": {
1081
+ "p50": 10.207834,
1082
+ "p95": 11.088707999999999,
1083
+ "p99": 11.088707999999999
1084
+ },
1085
+ "gpu_ms": {
1086
+ "p50": 5.067416,
1087
+ "p95": 6.178833,
1088
+ "p99": 6.178833
1089
+ }
1090
+ }
1091
+ ],
1092
+ "gpu_scope": "One command buffer: embedding lookup, transformer layers, row-order pooling and FP32 L2, reconstruction errors; tokenization, hashing and ranking/gates on CPU. Joint GPU time is not split into fictitious encoder/resonance wall times."
1093
+ },
1094
+ {
1095
+ "backend": "metal",
1096
+ "mode": "separate",
1097
+ "run": 1,
1098
+ "source_sha256": "be41b7ac8fcd001f24a2f96e98481d1a8e79d548ca77d3c37e58781df31a7d2e",
1099
+ "schema": "cortiq-decision-metal-comparison/2",
1100
+ "model_sha": "386b6e43fd35d5aa9e9710529dfdf30aa868df98ab4434d8e45dae9829898f85",
1101
+ "skill": "clinc150",
1102
+ "n": 4500,
1103
+ "dataset_sha256": "2bf61b64ef682646a8f942e636ee73aad240f04dbd50c8db2a413b44a8b64871",
1104
+ "device": "metal: Apple M4",
1105
+ "warmup": 50,
1106
+ "order": "separate serial phases: all CPU references, 50 additional GPU warmups, all GPU rows. Same process/model/texts and parity checks; no inserted CPU inference between GPU requests; no oracle.",
1107
+ "golden_max_abs": {
1108
+ "cpu": 0.0,
1109
+ "metal": 1.1920928955078125e-07
1110
+ },
1111
+ "max_embedding_abs": 1.6391277313232422e-07,
1112
+ "max_reconstruction_error_abs": 1.621246337890625e-05,
1113
+ "max_reconstruction_error_scaled": 7.066538728395244e-06,
1114
+ "winner_changes": 0,
1115
+ "gate_changes": 0,
1116
+ "hash_changes": 0,
1117
+ "different_rows": [],
1118
+ "correct": {
1119
+ "cpu": 4328,
1120
+ "metal": 4328
1121
+ },
1122
+ "accepted": {
1123
+ "cpu": 4145,
1124
+ "metal": 4145
1125
+ },
1126
+ "metal_command_buffers": 4500,
1127
+ "cpu_command_buffers": 0,
1128
+ "metal_resonance_dispatches": 4500,
1129
+ "ms": {
1130
+ "cpu_total": {
1131
+ "p50": 3.2464999999999997,
1132
+ "p95": 3.627459,
1133
+ "p99": 3.8617920000000003
1134
+ },
1135
+ "metal_total": {
1136
+ "p50": 2.060625,
1137
+ "p95": 2.932292,
1138
+ "p99": 3.153084
1139
+ },
1140
+ "cpu_encoder": {
1141
+ "p50": 1.9132909999999999,
1142
+ "p95": 2.273292,
1143
+ "p99": 2.485417
1144
+ },
1145
+ "metal_split_encoder": {
1146
+ "p50": 0.0,
1147
+ "p95": 0.0,
1148
+ "p99": 0.0
1149
+ },
1150
+ "cpu_resonance": {
1151
+ "p50": 1.313833,
1152
+ "p95": 1.392667,
1153
+ "p99": 1.432625
1154
+ },
1155
+ "metal_ranking_cpu": {
1156
+ "p50": 0.011833,
1157
+ "p95": 0.014959,
1158
+ "p99": 0.015666
1159
+ },
1160
+ "metal_joint_pipeline": {
1161
+ "p50": 2.0349169999999996,
1162
+ "p95": 2.903167,
1163
+ "p99": 3.123041
1164
+ }
1165
+ },
1166
+ "by_tokens": [
1167
+ {
1168
+ "tokens": "1-8",
1169
+ "n": 1122,
1170
+ "cpu_ms": {
1171
+ "p50": 3.014959,
1172
+ "p95": 3.1492080000000002,
1173
+ "p99": 3.220209
1174
+ },
1175
+ "gpu_ms": {
1176
+ "p50": 2.003458,
1177
+ "p95": 2.833,
1178
+ "p99": 2.982958
1179
+ }
1180
+ },
1181
+ {
1182
+ "tokens": "9-16",
1183
+ "n": 3076,
1184
+ "cpu_ms": {
1185
+ "p50": 3.292125,
1186
+ "p95": 3.584625,
1187
+ "p99": 3.674208
1188
+ },
1189
+ "gpu_ms": {
1190
+ "p50": 2.071125,
1191
+ "p95": 2.93775,
1192
+ "p99": 3.148125
1193
+ }
1194
+ },
1195
+ {
1196
+ "tokens": "17-32",
1197
+ "n": 302,
1198
+ "cpu_ms": {
1199
+ "p50": 3.615583,
1200
+ "p95": 4.034333,
1201
+ "p99": 4.19475
1202
+ },
1203
+ "gpu_ms": {
1204
+ "p50": 2.321459,
1205
+ "p95": 3.160875,
1206
+ "p99": 3.412791
1207
+ }
1208
+ }
1209
+ ],
1210
+ "gpu_scope": "One command buffer: embedding lookup, transformer layers, row-order pooling and FP32 L2, reconstruction errors; tokenization, hashing and ranking/gates on CPU. Joint GPU time is not split into fictitious encoder/resonance wall times."
1211
+ },
1212
+ {
1213
+ "backend": "metal",
1214
+ "mode": "separate",
1215
+ "run": 2,
1216
+ "source_sha256": "243c6f11d09dce45245c73a99386f3c86c9c3532a86963d25ca6255d9d380b9d",
1217
+ "schema": "cortiq-decision-metal-comparison/2",
1218
+ "model_sha": "386b6e43fd35d5aa9e9710529dfdf30aa868df98ab4434d8e45dae9829898f85",
1219
+ "skill": "clinc150",
1220
+ "n": 4500,
1221
+ "dataset_sha256": "2bf61b64ef682646a8f942e636ee73aad240f04dbd50c8db2a413b44a8b64871",
1222
+ "device": "metal: Apple M4",
1223
+ "warmup": 50,
1224
+ "order": "separate serial phases: all CPU references, 50 additional GPU warmups, all GPU rows. Same process/model/texts and parity checks; no inserted CPU inference between GPU requests; no oracle.",
1225
+ "golden_max_abs": {
1226
+ "cpu": 0.0,
1227
+ "metal": 1.1920928955078125e-07
1228
+ },
1229
+ "max_embedding_abs": 1.6391277313232422e-07,
1230
+ "max_reconstruction_error_abs": 1.621246337890625e-05,
1231
+ "max_reconstruction_error_scaled": 7.066538728395244e-06,
1232
+ "winner_changes": 0,
1233
+ "gate_changes": 0,
1234
+ "hash_changes": 0,
1235
+ "different_rows": [],
1236
+ "correct": {
1237
+ "cpu": 4328,
1238
+ "metal": 4328
1239
+ },
1240
+ "accepted": {
1241
+ "cpu": 4145,
1242
+ "metal": 4145
1243
+ },
1244
+ "metal_command_buffers": 4500,
1245
+ "cpu_command_buffers": 0,
1246
+ "metal_resonance_dispatches": 4500,
1247
+ "ms": {
1248
+ "cpu_total": {
1249
+ "p50": 3.241291,
1250
+ "p95": 3.6175420000000003,
1251
+ "p99": 3.849542
1252
+ },
1253
+ "metal_total": {
1254
+ "p50": 2.1338749999999997,
1255
+ "p95": 4.1122499999999995,
1256
+ "p99": 5.328208
1257
+ },
1258
+ "cpu_encoder": {
1259
+ "p50": 1.910292,
1260
+ "p95": 2.270959,
1261
+ "p99": 2.518958
1262
+ },
1263
+ "metal_split_encoder": {
1264
+ "p50": 0.0,
1265
+ "p95": 0.0,
1266
+ "p99": 0.0
1267
+ },
1268
+ "cpu_resonance": {
1269
+ "p50": 1.314292,
1270
+ "p95": 1.387333,
1271
+ "p99": 1.422625
1272
+ },
1273
+ "metal_ranking_cpu": {
1274
+ "p50": 0.011958,
1275
+ "p95": 0.017041,
1276
+ "p99": 0.019833
1277
+ },
1278
+ "metal_joint_pipeline": {
1279
+ "p50": 2.104209,
1280
+ "p95": 4.0625,
1281
+ "p99": 5.26075
1282
+ }
1283
+ },
1284
+ "by_tokens": [
1285
+ {
1286
+ "tokens": "1-8",
1287
+ "n": 1122,
1288
+ "cpu_ms": {
1289
+ "p50": 3.017375,
1290
+ "p95": 3.155667,
1291
+ "p99": 3.195166
1292
+ },
1293
+ "gpu_ms": {
1294
+ "p50": 2.039625,
1295
+ "p95": 3.83825,
1296
+ "p99": 5.165209
1297
+ }
1298
+ },
1299
+ {
1300
+ "tokens": "9-16",
1301
+ "n": 3076,
1302
+ "cpu_ms": {
1303
+ "p50": 3.2857089999999998,
1304
+ "p95": 3.5790420000000003,
1305
+ "p99": 3.672209
1306
+ },
1307
+ "gpu_ms": {
1308
+ "p50": 2.132625,
1309
+ "p95": 4.120041,
1310
+ "p99": 5.41925
1311
+ }
1312
+ },
1313
+ {
1314
+ "tokens": "17-32",
1315
+ "n": 302,
1316
+ "cpu_ms": {
1317
+ "p50": 3.606833,
1318
+ "p95": 4.023,
1319
+ "p99": 4.379667
1320
+ },
1321
+ "gpu_ms": {
1322
+ "p50": 2.3708750000000003,
1323
+ "p95": 4.5940829999999995,
1324
+ "p99": 6.212083
1325
+ }
1326
+ }
1327
+ ],
1328
+ "gpu_scope": "One command buffer: embedding lookup, transformer layers, row-order pooling and FP32 L2, reconstruction errors; tokenization, hashing and ranking/gates on CPU. Joint GPU time is not split into fictitious encoder/resonance wall times."
1329
+ },
1330
+ {
1331
+ "backend": "metal",
1332
+ "mode": "separate",
1333
+ "run": 1,
1334
+ "source_sha256": "35fb0c3d2645926355cc1f76c42f5d972fecc1f611639eb4b90727b9f1f72ecc",
1335
+ "schema": "cortiq-decision-metal-comparison/2",
1336
+ "model_sha": "386b6e43fd35d5aa9e9710529dfdf30aa868df98ab4434d8e45dae9829898f85",
1337
+ "skill": "massive",
1338
+ "n": 2974,
1339
+ "dataset_sha256": "5517f3de57d9ec9f73885dbd01b26a55a5cd806b9e7ff10c8873f5998e72dbd3",
1340
+ "device": "metal: Apple M4",
1341
+ "warmup": 50,
1342
+ "order": "separate serial phases: all CPU references, 50 additional GPU warmups, all GPU rows. Same process/model/texts and parity checks; no inserted CPU inference between GPU requests; no oracle.",
1343
+ "golden_max_abs": {
1344
+ "cpu": 0.0,
1345
+ "metal": 1.1920928955078125e-07
1346
+ },
1347
+ "max_embedding_abs": 1.7881393432617188e-07,
1348
+ "max_reconstruction_error_abs": 2.0384788513183594e-05,
1349
+ "max_reconstruction_error_scaled": 8.684849490236957e-06,
1350
+ "winner_changes": 0,
1351
+ "gate_changes": 0,
1352
+ "hash_changes": 0,
1353
+ "different_rows": [],
1354
+ "correct": {
1355
+ "cpu": 2562,
1356
+ "metal": 2562
1357
+ },
1358
+ "accepted": {
1359
+ "cpu": 1615,
1360
+ "metal": 1615
1361
+ },
1362
+ "metal_command_buffers": 2974,
1363
+ "cpu_command_buffers": 0,
1364
+ "metal_resonance_dispatches": 2974,
1365
+ "ms": {
1366
+ "cpu_total": {
1367
+ "p50": 2.633041,
1368
+ "p95": 3.0664580000000004,
1369
+ "p99": 3.293333
1370
+ },
1371
+ "metal_total": {
1372
+ "p50": 1.809375,
1373
+ "p95": 2.696959,
1374
+ "p99": 2.923583
1375
+ },
1376
+ "cpu_encoder": {
1377
+ "p50": 1.795,
1378
+ "p95": 2.2252919999999996,
1379
+ "p99": 2.460125
1380
+ },
1381
+ "metal_split_encoder": {
1382
+ "p50": 0.0,
1383
+ "p95": 0.0,
1384
+ "p99": 0.0
1385
+ },
1386
+ "cpu_resonance": {
1387
+ "p50": 0.816125,
1388
+ "p95": 0.8720000000000001,
1389
+ "p99": 0.910791
1390
+ },
1391
+ "metal_ranking_cpu": {
1392
+ "p50": 0.005332999999999999,
1393
+ "p95": 0.00675,
1394
+ "p99": 0.007084
1395
+ },
1396
+ "metal_joint_pipeline": {
1397
+ "p50": 1.786291,
1398
+ "p95": 2.6687909999999997,
1399
+ "p99": 2.8969579999999997
1400
+ }
1401
+ },
1402
+ "by_tokens": [
1403
+ {
1404
+ "tokens": "1-8",
1405
+ "n": 1368,
1406
+ "cpu_ms": {
1407
+ "p50": 2.482125,
1408
+ "p95": 2.622125,
1409
+ "p99": 2.686292
1410
+ },
1411
+ "gpu_ms": {
1412
+ "p50": 1.771291,
1413
+ "p95": 2.626583,
1414
+ "p99": 2.81875
1415
+ }
1416
+ },
1417
+ {
1418
+ "tokens": "9-16",
1419
+ "n": 1487,
1420
+ "cpu_ms": {
1421
+ "p50": 2.753584,
1422
+ "p95": 3.064,
1423
+ "p99": 3.174083
1424
+ },
1425
+ "gpu_ms": {
1426
+ "p50": 1.845625,
1427
+ "p95": 2.712209,
1428
+ "p99": 2.9455839999999998
1429
+ }
1430
+ },
1431
+ {
1432
+ "tokens": "17-32",
1433
+ "n": 117,
1434
+ "cpu_ms": {
1435
+ "p50": 3.114834,
1436
+ "p95": 3.8297499999999998,
1437
+ "p99": 4.0048330000000005
1438
+ },
1439
+ "gpu_ms": {
1440
+ "p50": 2.079334,
1441
+ "p95": 2.985791,
1442
+ "p99": 3.344291
1443
+ }
1444
+ },
1445
+ {
1446
+ "tokens": "33-64",
1447
+ "n": 2,
1448
+ "cpu_ms": {
1449
+ "p50": 7.607125,
1450
+ "p95": 7.607125,
1451
+ "p99": 7.607125
1452
+ },
1453
+ "gpu_ms": {
1454
+ "p50": 3.9274169999999997,
1455
+ "p95": 3.9274169999999997,
1456
+ "p99": 3.9274169999999997
1457
+ }
1458
+ }
1459
+ ],
1460
+ "gpu_scope": "One command buffer: embedding lookup, transformer layers, row-order pooling and FP32 L2, reconstruction errors; tokenization, hashing and ranking/gates on CPU. Joint GPU time is not split into fictitious encoder/resonance wall times."
1461
+ },
1462
+ {
1463
+ "backend": "metal",
1464
+ "mode": "separate",
1465
+ "run": 2,
1466
+ "source_sha256": "d49be65a3e5f4ee0c1165ce6c6d7829e4d6eff7af4ec2719097e7e19c1464767",
1467
+ "schema": "cortiq-decision-metal-comparison/2",
1468
+ "model_sha": "386b6e43fd35d5aa9e9710529dfdf30aa868df98ab4434d8e45dae9829898f85",
1469
+ "skill": "massive",
1470
+ "n": 2974,
1471
+ "dataset_sha256": "5517f3de57d9ec9f73885dbd01b26a55a5cd806b9e7ff10c8873f5998e72dbd3",
1472
+ "device": "metal: Apple M4",
1473
+ "warmup": 50,
1474
+ "order": "separate serial phases: all CPU references, 50 additional GPU warmups, all GPU rows. Same process/model/texts and parity checks; no inserted CPU inference between GPU requests; no oracle.",
1475
+ "golden_max_abs": {
1476
+ "cpu": 0.0,
1477
+ "metal": 1.1920928955078125e-07
1478
+ },
1479
+ "max_embedding_abs": 1.7881393432617188e-07,
1480
+ "max_reconstruction_error_abs": 2.0384788513183594e-05,
1481
+ "max_reconstruction_error_scaled": 8.684849490236957e-06,
1482
+ "winner_changes": 0,
1483
+ "gate_changes": 0,
1484
+ "hash_changes": 0,
1485
+ "different_rows": [],
1486
+ "correct": {
1487
+ "cpu": 2562,
1488
+ "metal": 2562
1489
+ },
1490
+ "accepted": {
1491
+ "cpu": 1615,
1492
+ "metal": 1615
1493
+ },
1494
+ "metal_command_buffers": 2974,
1495
+ "cpu_command_buffers": 0,
1496
+ "metal_resonance_dispatches": 2974,
1497
+ "ms": {
1498
+ "cpu_total": {
1499
+ "p50": 2.636959,
1500
+ "p95": 3.060417,
1501
+ "p99": 3.2911669999999997
1502
+ },
1503
+ "metal_total": {
1504
+ "p50": 3.2125830000000004,
1505
+ "p95": 5.442749999999999,
1506
+ "p99": 5.974334000000001
1507
+ },
1508
+ "cpu_encoder": {
1509
+ "p50": 1.7979580000000002,
1510
+ "p95": 2.215167,
1511
+ "p99": 2.4351659999999997
1512
+ },
1513
+ "metal_split_encoder": {
1514
+ "p50": 0.0,
1515
+ "p95": 0.0,
1516
+ "p99": 0.0
1517
+ },
1518
+ "cpu_resonance": {
1519
+ "p50": 0.820249,
1520
+ "p95": 0.877958,
1521
+ "p99": 0.925708
1522
+ },
1523
+ "metal_ranking_cpu": {
1524
+ "p50": 0.006334,
1525
+ "p95": 0.009082999999999999,
1526
+ "p99": 0.010458
1527
+ },
1528
+ "metal_joint_pipeline": {
1529
+ "p50": 3.169042,
1530
+ "p95": 5.399167,
1531
+ "p99": 5.931625
1532
+ }
1533
+ },
1534
+ "by_tokens": [
1535
+ {
1536
+ "tokens": "1-8",
1537
+ "n": 1368,
1538
+ "cpu_ms": {
1539
+ "p50": 2.4871659999999998,
1540
+ "p95": 2.633291,
1541
+ "p99": 2.705
1542
+ },
1543
+ "gpu_ms": {
1544
+ "p50": 2.913458,
1545
+ "p95": 5.177166000000001,
1546
+ "p99": 5.509708000000001
1547
+ }
1548
+ },
1549
+ {
1550
+ "tokens": "9-16",
1551
+ "n": 1487,
1552
+ "cpu_ms": {
1553
+ "p50": 2.763167,
1554
+ "p95": 3.060709,
1555
+ "p99": 3.167125
1556
+ },
1557
+ "gpu_ms": {
1558
+ "p50": 3.3691250000000004,
1559
+ "p95": 5.669917,
1560
+ "p99": 5.914667000000001
1561
+ }
1562
+ },
1563
+ {
1564
+ "tokens": "17-32",
1565
+ "n": 117,
1566
+ "cpu_ms": {
1567
+ "p50": 3.1175,
1568
+ "p95": 3.743042,
1569
+ "p99": 3.994167
1570
+ },
1571
+ "gpu_ms": {
1572
+ "p50": 4.251916,
1573
+ "p95": 6.402959,
1574
+ "p99": 7.223292
1575
+ }
1576
+ },
1577
+ {
1578
+ "tokens": "33-64",
1579
+ "n": 2,
1580
+ "cpu_ms": {
1581
+ "p50": 7.465333,
1582
+ "p95": 7.465333,
1583
+ "p99": 7.465333
1584
+ },
1585
+ "gpu_ms": {
1586
+ "p50": 6.928792,
1587
+ "p95": 6.928792,
1588
+ "p99": 6.928792
1589
+ }
1590
+ }
1591
+ ],
1592
+ "gpu_scope": "One command buffer: embedding lookup, transformer layers, row-order pooling and FP32 L2, reconstruction errors; tokenization, hashing and ranking/gates on CPU. Joint GPU time is not split into fictitious encoder/resonance wall times."
1593
+ },
1594
+ {
1595
+ "backend": "vulkan",
1596
+ "mode": "separate",
1597
+ "run": 1,
1598
+ "source_sha256": "f785183f2c6e75116dec3510313a2fe2220d6e4f839ec5f53f50455081b1e974",
1599
+ "schema": "cortiq-decision-vulkan-comparison/2",
1600
+ "model_sha": "386b6e43fd35d5aa9e9710529dfdf30aa868df98ab4434d8e45dae9829898f85",
1601
+ "skill": "banking77",
1602
+ "n": 3080,
1603
+ "dataset_sha256": "649607fa7b124293c80b455d2effe5e41da713e1836ee936073fe34ab9dc6fba",
1604
+ "device": "vulkan: NVIDIA RTX PRO 4000 Blackwell",
1605
+ "warmup": 50,
1606
+ "order": "separate serial phases: all CPU references, 50 additional GPU warmups, all GPU rows. Same process/model/texts and parity checks; no inserted CPU inference between GPU requests; no oracle.",
1607
+ "golden_max_abs": {
1608
+ "cpu": 1.1920928955078125e-07,
1609
+ "vulkan": 1.341104507446289e-07
1610
+ },
1611
+ "max_embedding_abs": 1.4901161193847656e-07,
1612
+ "max_reconstruction_error_abs": 1.1682510375976562e-05,
1613
+ "max_reconstruction_error_scaled": 6.459768428612733e-06,
1614
+ "winner_changes": 0,
1615
+ "gate_changes": 0,
1616
+ "hash_changes": 0,
1617
+ "different_rows": [],
1618
+ "correct": {
1619
+ "cpu": 2875,
1620
+ "vulkan": 2875
1621
+ },
1622
+ "accepted": {
1623
+ "cpu": 2791,
1624
+ "vulkan": 2791
1625
+ },
1626
+ "vulkan_command_buffers": 3080,
1627
+ "cpu_command_buffers": 0,
1628
+ "vulkan_resonance_dispatches": 3080,
1629
+ "ms": {
1630
+ "cpu_total": {
1631
+ "p50": 24.300031999999998,
1632
+ "p95": 47.229065,
1633
+ "p99": 72.325288
1634
+ },
1635
+ "vulkan_total": {
1636
+ "p50": 1.243007,
1637
+ "p95": 1.779005,
1638
+ "p99": 2.225192
1639
+ },
1640
+ "cpu_encoder": {
1641
+ "p50": 17.429967,
1642
+ "p95": 40.324829,
1643
+ "p99": 65.381701
1644
+ },
1645
+ "vulkan_split_encoder": {
1646
+ "p50": 0.0,
1647
+ "p95": 0.0,
1648
+ "p99": 0.0
1649
+ },
1650
+ "cpu_resonance": {
1651
+ "p50": 6.8515440000000005,
1652
+ "p95": 6.980182,
1653
+ "p99": 7.111081
1654
+ },
1655
+ "vulkan_ranking_cpu": {
1656
+ "p50": 0.005383,
1657
+ "p95": 0.022862,
1658
+ "p99": 0.026559
1659
+ },
1660
+ "vulkan_joint_pipeline": {
1661
+ "p50": 1.205752,
1662
+ "p95": 1.714144,
1663
+ "p99": 2.136114
1664
+ }
1665
+ },
1666
+ "by_tokens": [
1667
+ {
1668
+ "tokens": "1-8",
1669
+ "n": 230,
1670
+ "cpu_ms": {
1671
+ "p50": 17.484273,
1672
+ "p95": 18.781585,
1673
+ "p99": 19.075535000000002
1674
+ },
1675
+ "gpu_ms": {
1676
+ "p50": 1.036284,
1677
+ "p95": 1.187726,
1678
+ "p99": 1.273517
1679
+ }
1680
+ },
1681
+ {
1682
+ "tokens": "9-16",
1683
+ "n": 2084,
1684
+ "cpu_ms": {
1685
+ "p50": 23.02284,
1686
+ "p95": 27.872968,
1687
+ "p99": 28.654959
1688
+ },
1689
+ "gpu_ms": {
1690
+ "p50": 1.216743,
1691
+ "p95": 1.3710110000000002,
1692
+ "p99": 1.451524
1693
+ }
1694
+ },
1695
+ {
1696
+ "tokens": "17-32",
1697
+ "n": 632,
1698
+ "cpu_ms": {
1699
+ "p50": 33.219012,
1700
+ "p95": 45.601294,
1701
+ "p99": 50.627319
1702
+ },
1703
+ "gpu_ms": {
1704
+ "p50": 1.453273,
1705
+ "p95": 1.7577289999999999,
1706
+ "p99": 1.838818
1707
+ }
1708
+ },
1709
+ {
1710
+ "tokens": "33-64",
1711
+ "n": 129,
1712
+ "cpu_ms": {
1713
+ "p50": 60.365970999999995,
1714
+ "p95": 83.40327,
1715
+ "p99": 89.708682
1716
+ },
1717
+ "gpu_ms": {
1718
+ "p50": 2.007216,
1719
+ "p95": 2.5339579999999997,
1720
+ "p99": 2.688999
1721
+ }
1722
+ },
1723
+ {
1724
+ "tokens": "65+",
1725
+ "n": 5,
1726
+ "cpu_ms": {
1727
+ "p50": 111.20082000000001,
1728
+ "p95": 113.755177,
1729
+ "p99": 113.755177
1730
+ },
1731
+ "gpu_ms": {
1732
+ "p50": 3.074434,
1733
+ "p95": 3.303453,
1734
+ "p99": 3.303453
1735
+ }
1736
+ }
1737
+ ],
1738
+ "gpu_scope": "One command buffer: embedding lookup, transformer layers, row-order pooling and FP32 L2, reconstruction errors; tokenization, hashing and ranking/gates on CPU. Joint GPU time is not split into fictitious encoder/resonance wall times."
1739
+ },
1740
+ {
1741
+ "backend": "vulkan",
1742
+ "mode": "separate",
1743
+ "run": 2,
1744
+ "source_sha256": "94a0c4678f95e2adf44c79ceb2c35d34eb45630dbc0fb87ca9f8ae48a860007f",
1745
+ "schema": "cortiq-decision-vulkan-comparison/2",
1746
+ "model_sha": "386b6e43fd35d5aa9e9710529dfdf30aa868df98ab4434d8e45dae9829898f85",
1747
+ "skill": "banking77",
1748
+ "n": 3080,
1749
+ "dataset_sha256": "649607fa7b124293c80b455d2effe5e41da713e1836ee936073fe34ab9dc6fba",
1750
+ "device": "vulkan: NVIDIA RTX PRO 4000 Blackwell",
1751
+ "warmup": 50,
1752
+ "order": "separate serial phases: all CPU references, 50 additional GPU warmups, all GPU rows. Same process/model/texts and parity checks; no inserted CPU inference between GPU requests; no oracle.",
1753
+ "golden_max_abs": {
1754
+ "cpu": 1.1920928955078125e-07,
1755
+ "vulkan": 1.341104507446289e-07
1756
+ },
1757
+ "max_embedding_abs": 1.4901161193847656e-07,
1758
+ "max_reconstruction_error_abs": 1.1682510375976562e-05,
1759
+ "max_reconstruction_error_scaled": 6.459768428612733e-06,
1760
+ "winner_changes": 0,
1761
+ "gate_changes": 0,
1762
+ "hash_changes": 0,
1763
+ "different_rows": [],
1764
+ "correct": {
1765
+ "cpu": 2875,
1766
+ "vulkan": 2875
1767
+ },
1768
+ "accepted": {
1769
+ "cpu": 2791,
1770
+ "vulkan": 2791
1771
+ },
1772
+ "vulkan_command_buffers": 3080,
1773
+ "cpu_command_buffers": 0,
1774
+ "vulkan_resonance_dispatches": 3080,
1775
+ "ms": {
1776
+ "cpu_total": {
1777
+ "p50": 24.053228,
1778
+ "p95": 47.818072,
1779
+ "p99": 71.431764
1780
+ },
1781
+ "vulkan_total": {
1782
+ "p50": 1.2399229999999999,
1783
+ "p95": 1.772518,
1784
+ "p99": 2.296392
1785
+ },
1786
+ "cpu_encoder": {
1787
+ "p50": 17.044211999999998,
1788
+ "p95": 40.826451,
1789
+ "p99": 64.435344
1790
+ },
1791
+ "vulkan_split_encoder": {
1792
+ "p50": 0.0,
1793
+ "p95": 0.0,
1794
+ "p99": 0.0
1795
+ },
1796
+ "cpu_resonance": {
1797
+ "p50": 6.954758,
1798
+ "p95": 7.078664,
1799
+ "p99": 7.189576
1800
+ },
1801
+ "vulkan_ranking_cpu": {
1802
+ "p50": 0.005202,
1803
+ "p95": 0.014052,
1804
+ "p99": 0.025805
1805
+ },
1806
+ "vulkan_joint_pipeline": {
1807
+ "p50": 1.203881,
1808
+ "p95": 1.717145,
1809
+ "p99": 2.198691
1810
+ }
1811
+ },
1812
+ "by_tokens": [
1813
+ {
1814
+ "tokens": "1-8",
1815
+ "n": 230,
1816
+ "cpu_ms": {
1817
+ "p50": 17.640131,
1818
+ "p95": 18.821365999999998,
1819
+ "p99": 18.949503999999997
1820
+ },
1821
+ "gpu_ms": {
1822
+ "p50": 1.051358,
1823
+ "p95": 1.200305,
1824
+ "p99": 1.249962
1825
+ }
1826
+ },
1827
+ {
1828
+ "tokens": "9-16",
1829
+ "n": 2084,
1830
+ "cpu_ms": {
1831
+ "p50": 23.347106999999998,
1832
+ "p95": 28.079639999999998,
1833
+ "p99": 28.775907
1834
+ },
1835
+ "gpu_ms": {
1836
+ "p50": 1.214836,
1837
+ "p95": 1.369686,
1838
+ "p99": 1.4417259999999998
1839
+ }
1840
+ },
1841
+ {
1842
+ "tokens": "17-32",
1843
+ "n": 632,
1844
+ "cpu_ms": {
1845
+ "p50": 33.129235,
1846
+ "p95": 46.115206,
1847
+ "p99": 50.701332
1848
+ },
1849
+ "gpu_ms": {
1850
+ "p50": 1.454658,
1851
+ "p95": 1.7448590000000002,
1852
+ "p99": 1.828859
1853
+ }
1854
+ },
1855
+ {
1856
+ "tokens": "33-64",
1857
+ "n": 129,
1858
+ "cpu_ms": {
1859
+ "p50": 58.644467,
1860
+ "p95": 85.296793,
1861
+ "p99": 93.428545
1862
+ },
1863
+ "gpu_ms": {
1864
+ "p50": 1.9888150000000002,
1865
+ "p95": 2.478187,
1866
+ "p99": 2.61321
1867
+ }
1868
+ },
1869
+ {
1870
+ "tokens": "65+",
1871
+ "n": 5,
1872
+ "cpu_ms": {
1873
+ "p50": 104.71356800000001,
1874
+ "p95": 128.376401,
1875
+ "p99": 128.376401
1876
+ },
1877
+ "gpu_ms": {
1878
+ "p50": 3.02045,
1879
+ "p95": 3.336854,
1880
+ "p99": 3.336854
1881
+ }
1882
+ }
1883
+ ],
1884
+ "gpu_scope": "One command buffer: embedding lookup, transformer layers, row-order pooling and FP32 L2, reconstruction errors; tokenization, hashing and ranking/gates on CPU. Joint GPU time is not split into fictitious encoder/resonance wall times."
1885
+ },
1886
+ {
1887
+ "backend": "vulkan",
1888
+ "mode": "separate",
1889
+ "run": 1,
1890
+ "source_sha256": "ec20b3839eb265c842fe880f9347de9ba34793a625b509fcd6490dff8b6aa8a8",
1891
+ "schema": "cortiq-decision-vulkan-comparison/2",
1892
+ "model_sha": "386b6e43fd35d5aa9e9710529dfdf30aa868df98ab4434d8e45dae9829898f85",
1893
+ "skill": "clinc150",
1894
+ "n": 4500,
1895
+ "dataset_sha256": "2bf61b64ef682646a8f942e636ee73aad240f04dbd50c8db2a413b44a8b64871",
1896
+ "device": "vulkan: NVIDIA RTX PRO 4000 Blackwell",
1897
+ "warmup": 50,
1898
+ "order": "separate serial phases: all CPU references, 50 additional GPU warmups, all GPU rows. Same process/model/texts and parity checks; no inserted CPU inference between GPU requests; no oracle.",
1899
+ "golden_max_abs": {
1900
+ "cpu": 1.1920928955078125e-07,
1901
+ "vulkan": 1.341104507446289e-07
1902
+ },
1903
+ "max_embedding_abs": 1.6391277313232422e-07,
1904
+ "max_reconstruction_error_abs": 1.6450881958007812e-05,
1905
+ "max_reconstruction_error_scaled": 7.17045804776717e-06,
1906
+ "winner_changes": 0,
1907
+ "gate_changes": 0,
1908
+ "hash_changes": 0,
1909
+ "different_rows": [],
1910
+ "correct": {
1911
+ "cpu": 4328,
1912
+ "vulkan": 4328
1913
+ },
1914
+ "accepted": {
1915
+ "cpu": 4145,
1916
+ "vulkan": 4145
1917
+ },
1918
+ "vulkan_command_buffers": 4500,
1919
+ "cpu_command_buffers": 0,
1920
+ "vulkan_resonance_dispatches": 4500,
1921
+ "ms": {
1922
+ "cpu_total": {
1923
+ "p50": 21.070990000000002,
1924
+ "p95": 28.693944,
1925
+ "p99": 35.540867
1926
+ },
1927
+ "vulkan_total": {
1928
+ "p50": 1.183739,
1929
+ "p95": 1.4106889999999999,
1930
+ "p99": 1.555227
1931
+ },
1932
+ "cpu_encoder": {
1933
+ "p50": 14.319863999999999,
1934
+ "p95": 21.939096000000003,
1935
+ "p99": 28.740892
1936
+ },
1937
+ "vulkan_split_encoder": {
1938
+ "p50": 0.0,
1939
+ "p95": 0.0,
1940
+ "p99": 0.0
1941
+ },
1942
+ "cpu_resonance": {
1943
+ "p50": 6.732084,
1944
+ "p95": 6.846308,
1945
+ "p99": 6.971
1946
+ },
1947
+ "vulkan_ranking_cpu": {
1948
+ "p50": 0.010095000000000002,
1949
+ "p95": 0.026825,
1950
+ "p99": 0.037598999999999994
1951
+ },
1952
+ "vulkan_joint_pipeline": {
1953
+ "p50": 1.142588,
1954
+ "p95": 1.3502889999999999,
1955
+ "p99": 1.4805000000000001
1956
+ }
1957
+ },
1958
+ "by_tokens": [
1959
+ {
1960
+ "tokens": "1-8",
1961
+ "n": 1122,
1962
+ "cpu_ms": {
1963
+ "p50": 17.321112,
1964
+ "p95": 18.650374,
1965
+ "p99": 18.874518
1966
+ },
1967
+ "gpu_ms": {
1968
+ "p50": 1.0571860000000002,
1969
+ "p95": 1.184428,
1970
+ "p99": 1.2439479999999998
1971
+ }
1972
+ },
1973
+ {
1974
+ "tokens": "9-16",
1975
+ "n": 3076,
1976
+ "cpu_ms": {
1977
+ "p50": 21.709161,
1978
+ "p95": 27.078848999999998,
1979
+ "p99": 28.25304
1980
+ },
1981
+ "gpu_ms": {
1982
+ "p50": 1.205003,
1983
+ "p95": 1.356696,
1984
+ "p99": 1.442542
1985
+ }
1986
+ },
1987
+ {
1988
+ "tokens": "17-32",
1989
+ "n": 302,
1990
+ "cpu_ms": {
1991
+ "p50": 30.710203,
1992
+ "p95": 38.634969,
1993
+ "p99": 44.367315
1994
+ },
1995
+ "gpu_ms": {
1996
+ "p50": 1.428216,
1997
+ "p95": 1.618438,
1998
+ "p99": 1.7441170000000001
1999
+ }
2000
+ }
2001
+ ],
2002
+ "gpu_scope": "One command buffer: embedding lookup, transformer layers, row-order pooling and FP32 L2, reconstruction errors; tokenization, hashing and ranking/gates on CPU. Joint GPU time is not split into fictitious encoder/resonance wall times."
2003
+ },
2004
+ {
2005
+ "backend": "vulkan",
2006
+ "mode": "separate",
2007
+ "run": 2,
2008
+ "source_sha256": "133a985c0a007cd45d8fcc23333d2edc319a721bd8d1b7048986e61768f9a87d",
2009
+ "schema": "cortiq-decision-vulkan-comparison/2",
2010
+ "model_sha": "386b6e43fd35d5aa9e9710529dfdf30aa868df98ab4434d8e45dae9829898f85",
2011
+ "skill": "clinc150",
2012
+ "n": 4500,
2013
+ "dataset_sha256": "2bf61b64ef682646a8f942e636ee73aad240f04dbd50c8db2a413b44a8b64871",
2014
+ "device": "vulkan: NVIDIA RTX PRO 4000 Blackwell",
2015
+ "warmup": 50,
2016
+ "order": "separate serial phases: all CPU references, 50 additional GPU warmups, all GPU rows. Same process/model/texts and parity checks; no inserted CPU inference between GPU requests; no oracle.",
2017
+ "golden_max_abs": {
2018
+ "cpu": 1.1920928955078125e-07,
2019
+ "vulkan": 1.341104507446289e-07
2020
+ },
2021
+ "max_embedding_abs": 1.6391277313232422e-07,
2022
+ "max_reconstruction_error_abs": 1.6450881958007812e-05,
2023
+ "max_reconstruction_error_scaled": 7.17045804776717e-06,
2024
+ "winner_changes": 0,
2025
+ "gate_changes": 0,
2026
+ "hash_changes": 0,
2027
+ "different_rows": [],
2028
+ "correct": {
2029
+ "cpu": 4328,
2030
+ "vulkan": 4328
2031
+ },
2032
+ "accepted": {
2033
+ "cpu": 4145,
2034
+ "vulkan": 4145
2035
+ },
2036
+ "vulkan_command_buffers": 4500,
2037
+ "cpu_command_buffers": 0,
2038
+ "vulkan_resonance_dispatches": 4500,
2039
+ "ms": {
2040
+ "cpu_total": {
2041
+ "p50": 21.108217,
2042
+ "p95": 30.122833,
2043
+ "p99": 35.055634000000005
2044
+ },
2045
+ "vulkan_total": {
2046
+ "p50": 1.20068,
2047
+ "p95": 1.428602,
2048
+ "p99": 1.585988
2049
+ },
2050
+ "cpu_encoder": {
2051
+ "p50": 14.355258,
2052
+ "p95": 23.349382,
2053
+ "p99": 28.311857
2054
+ },
2055
+ "vulkan_split_encoder": {
2056
+ "p50": 0.0,
2057
+ "p95": 0.0,
2058
+ "p99": 0.0
2059
+ },
2060
+ "cpu_resonance": {
2061
+ "p50": 6.738755,
2062
+ "p95": 6.857221,
2063
+ "p99": 6.979973
2064
+ },
2065
+ "vulkan_ranking_cpu": {
2066
+ "p50": 0.016079999999999997,
2067
+ "p95": 0.027441999999999998,
2068
+ "p99": 0.037886
2069
+ },
2070
+ "vulkan_joint_pipeline": {
2071
+ "p50": 1.1596270000000002,
2072
+ "p95": 1.369136,
2073
+ "p99": 1.508872
2074
+ }
2075
+ },
2076
+ "by_tokens": [
2077
+ {
2078
+ "tokens": "1-8",
2079
+ "n": 1122,
2080
+ "cpu_ms": {
2081
+ "p50": 17.345407,
2082
+ "p95": 18.718383000000003,
2083
+ "p99": 18.832627000000002
2084
+ },
2085
+ "gpu_ms": {
2086
+ "p50": 1.06457,
2087
+ "p95": 1.2041160000000002,
2088
+ "p99": 1.2711560000000002
2089
+ }
2090
+ },
2091
+ {
2092
+ "tokens": "9-16",
2093
+ "n": 3076,
2094
+ "cpu_ms": {
2095
+ "p50": 21.634235,
2096
+ "p95": 27.603956999999998,
2097
+ "p99": 28.299501000000003
2098
+ },
2099
+ "gpu_ms": {
2100
+ "p50": 1.221998,
2101
+ "p95": 1.374075,
2102
+ "p99": 1.44901
2103
+ }
2104
+ },
2105
+ {
2106
+ "tokens": "17-32",
2107
+ "n": 302,
2108
+ "cpu_ms": {
2109
+ "p50": 31.161271,
2110
+ "p95": 38.58855,
2111
+ "p99": 42.460954
2112
+ },
2113
+ "gpu_ms": {
2114
+ "p50": 1.44708,
2115
+ "p95": 1.641224,
2116
+ "p99": 1.728692
2117
+ }
2118
+ }
2119
+ ],
2120
+ "gpu_scope": "One command buffer: embedding lookup, transformer layers, row-order pooling and FP32 L2, reconstruction errors; tokenization, hashing and ranking/gates on CPU. Joint GPU time is not split into fictitious encoder/resonance wall times."
2121
+ },
2122
+ {
2123
+ "backend": "vulkan",
2124
+ "mode": "separate",
2125
+ "run": 1,
2126
+ "source_sha256": "f3c2a40a056decc6b55db1f7b24b6db8c210a238ed9a0e36ba198a40b58cd138",
2127
+ "schema": "cortiq-decision-vulkan-comparison/2",
2128
+ "model_sha": "386b6e43fd35d5aa9e9710529dfdf30aa868df98ab4434d8e45dae9829898f85",
2129
+ "skill": "massive",
2130
+ "n": 2974,
2131
+ "dataset_sha256": "5517f3de57d9ec9f73885dbd01b26a55a5cd806b9e7ff10c8873f5998e72dbd3",
2132
+ "device": "vulkan: NVIDIA RTX PRO 4000 Blackwell",
2133
+ "warmup": 50,
2134
+ "order": "separate serial phases: all CPU references, 50 additional GPU warmups, all GPU rows. Same process/model/texts and parity checks; no inserted CPU inference between GPU requests; no oracle.",
2135
+ "golden_max_abs": {
2136
+ "cpu": 1.1920928955078125e-07,
2137
+ "vulkan": 1.341104507446289e-07
2138
+ },
2139
+ "max_embedding_abs": 1.4901161193847656e-07,
2140
+ "max_reconstruction_error_abs": 2.0503997802734375e-05,
2141
+ "max_reconstruction_error_scaled": 8.735638402868062e-06,
2142
+ "winner_changes": 0,
2143
+ "gate_changes": 0,
2144
+ "hash_changes": 0,
2145
+ "different_rows": [],
2146
+ "correct": {
2147
+ "cpu": 2562,
2148
+ "vulkan": 2562
2149
+ },
2150
+ "accepted": {
2151
+ "cpu": 1615,
2152
+ "vulkan": 1615
2153
+ },
2154
+ "vulkan_command_buffers": 2974,
2155
+ "cpu_command_buffers": 0,
2156
+ "vulkan_resonance_dispatches": 2974,
2157
+ "ms": {
2158
+ "cpu_total": {
2159
+ "p50": 16.259952000000002,
2160
+ "p95": 25.118388,
2161
+ "p99": 31.614088
2162
+ },
2163
+ "vulkan_total": {
2164
+ "p50": 1.1542169999999998,
2165
+ "p95": 1.373807,
2166
+ "p99": 1.563799
2167
+ },
2168
+ "cpu_encoder": {
2169
+ "p50": 12.123259000000001,
2170
+ "p95": 21.019095,
2171
+ "p99": 27.428562
2172
+ },
2173
+ "vulkan_split_encoder": {
2174
+ "p50": 0.0,
2175
+ "p95": 0.0,
2176
+ "p99": 0.0
2177
+ },
2178
+ "cpu_resonance": {
2179
+ "p50": 4.093815,
2180
+ "p95": 4.180759,
2181
+ "p99": 4.279031
2182
+ },
2183
+ "vulkan_ranking_cpu": {
2184
+ "p50": 0.010161,
2185
+ "p95": 0.011192,
2186
+ "p99": 0.025403000000000002
2187
+ },
2188
+ "vulkan_joint_pipeline": {
2189
+ "p50": 1.116078,
2190
+ "p95": 1.32156,
2191
+ "p99": 1.492097
2192
+ }
2193
+ },
2194
+ "by_tokens": [
2195
+ {
2196
+ "tokens": "1-8",
2197
+ "n": 1368,
2198
+ "cpu_ms": {
2199
+ "p50": 13.768594,
2200
+ "p95": 15.994110999999998,
2201
+ "p99": 16.164708
2202
+ },
2203
+ "gpu_ms": {
2204
+ "p50": 1.060067,
2205
+ "p95": 1.202129,
2206
+ "p99": 1.256436
2207
+ }
2208
+ },
2209
+ {
2210
+ "tokens": "9-16",
2211
+ "n": 1487,
2212
+ "cpu_ms": {
2213
+ "p50": 18.553100999999998,
2214
+ "p95": 23.654970000000002,
2215
+ "p99": 25.654531000000002
2216
+ },
2217
+ "gpu_ms": {
2218
+ "p50": 1.2158609999999999,
2219
+ "p95": 1.363216,
2220
+ "p99": 1.435772
2221
+ }
2222
+ },
2223
+ {
2224
+ "tokens": "17-32",
2225
+ "n": 117,
2226
+ "cpu_ms": {
2227
+ "p50": 28.220928,
2228
+ "p95": 40.57731,
2229
+ "p99": 42.695208
2230
+ },
2231
+ "gpu_ms": {
2232
+ "p50": 1.448512,
2233
+ "p95": 1.744253,
2234
+ "p99": 1.797189
2235
+ }
2236
+ },
2237
+ {
2238
+ "tokens": "33-64",
2239
+ "n": 2,
2240
+ "cpu_ms": {
2241
+ "p50": 92.568872,
2242
+ "p95": 92.568872,
2243
+ "p99": 92.568872
2244
+ },
2245
+ "gpu_ms": {
2246
+ "p50": 2.741677,
2247
+ "p95": 2.741677,
2248
+ "p99": 2.741677
2249
+ }
2250
+ }
2251
+ ],
2252
+ "gpu_scope": "One command buffer: embedding lookup, transformer layers, row-order pooling and FP32 L2, reconstruction errors; tokenization, hashing and ranking/gates on CPU. Joint GPU time is not split into fictitious encoder/resonance wall times."
2253
+ },
2254
+ {
2255
+ "backend": "vulkan",
2256
+ "mode": "separate",
2257
+ "run": 2,
2258
+ "source_sha256": "08cc059ac15ca13c03b88491852f551b6dfe4e0641e7c0f113e1843d8da2d03e",
2259
+ "schema": "cortiq-decision-vulkan-comparison/2",
2260
+ "model_sha": "386b6e43fd35d5aa9e9710529dfdf30aa868df98ab4434d8e45dae9829898f85",
2261
+ "skill": "massive",
2262
+ "n": 2974,
2263
+ "dataset_sha256": "5517f3de57d9ec9f73885dbd01b26a55a5cd806b9e7ff10c8873f5998e72dbd3",
2264
+ "device": "vulkan: NVIDIA RTX PRO 4000 Blackwell",
2265
+ "warmup": 50,
2266
+ "order": "separate serial phases: all CPU references, 50 additional GPU warmups, all GPU rows. Same process/model/texts and parity checks; no inserted CPU inference between GPU requests; no oracle.",
2267
+ "golden_max_abs": {
2268
+ "cpu": 1.1920928955078125e-07,
2269
+ "vulkan": 1.341104507446289e-07
2270
+ },
2271
+ "max_embedding_abs": 1.4901161193847656e-07,
2272
+ "max_reconstruction_error_abs": 2.0503997802734375e-05,
2273
+ "max_reconstruction_error_scaled": 8.735638402868062e-06,
2274
+ "winner_changes": 0,
2275
+ "gate_changes": 0,
2276
+ "hash_changes": 0,
2277
+ "different_rows": [],
2278
+ "correct": {
2279
+ "cpu": 2562,
2280
+ "vulkan": 2562
2281
+ },
2282
+ "accepted": {
2283
+ "cpu": 1615,
2284
+ "vulkan": 1615
2285
+ },
2286
+ "vulkan_command_buffers": 2974,
2287
+ "cpu_command_buffers": 0,
2288
+ "vulkan_resonance_dispatches": 2974,
2289
+ "ms": {
2290
+ "cpu_total": {
2291
+ "p50": 16.226368,
2292
+ "p95": 25.084632,
2293
+ "p99": 31.197762
2294
+ },
2295
+ "vulkan_total": {
2296
+ "p50": 1.104685,
2297
+ "p95": 1.333802,
2298
+ "p99": 1.501266
2299
+ },
2300
+ "cpu_encoder": {
2301
+ "p50": 12.084242999999999,
2302
+ "p95": 20.98241,
2303
+ "p99": 27.027615
2304
+ },
2305
+ "vulkan_split_encoder": {
2306
+ "p50": 0.0,
2307
+ "p95": 0.0,
2308
+ "p99": 0.0
2309
+ },
2310
+ "cpu_resonance": {
2311
+ "p50": 4.08907,
2312
+ "p95": 4.173007999999999,
2313
+ "p99": 4.284597000000001
2314
+ },
2315
+ "vulkan_ranking_cpu": {
2316
+ "p50": 0.004288,
2317
+ "p95": 0.010778000000000001,
2318
+ "p99": 0.02296
2319
+ },
2320
+ "vulkan_joint_pipeline": {
2321
+ "p50": 1.070387,
2322
+ "p95": 1.281504,
2323
+ "p99": 1.449374
2324
+ }
2325
+ },
2326
+ "by_tokens": [
2327
+ {
2328
+ "tokens": "1-8",
2329
+ "n": 1368,
2330
+ "cpu_ms": {
2331
+ "p50": 13.77318,
2332
+ "p95": 15.957989999999999,
2333
+ "p99": 16.201877
2334
+ },
2335
+ "gpu_ms": {
2336
+ "p50": 1.0107110000000001,
2337
+ "p95": 1.145669,
2338
+ "p99": 1.198661
2339
+ }
2340
+ },
2341
+ {
2342
+ "tokens": "9-16",
2343
+ "n": 1487,
2344
+ "cpu_ms": {
2345
+ "p50": 18.513498,
2346
+ "p95": 24.04242,
2347
+ "p99": 25.511760000000002
2348
+ },
2349
+ "gpu_ms": {
2350
+ "p50": 1.168246,
2351
+ "p95": 1.323223,
2352
+ "p99": 1.401163
2353
+ }
2354
+ },
2355
+ {
2356
+ "tokens": "17-32",
2357
+ "n": 117,
2358
+ "cpu_ms": {
2359
+ "p50": 28.784033,
2360
+ "p95": 38.288958,
2361
+ "p99": 46.601112
2362
+ },
2363
+ "gpu_ms": {
2364
+ "p50": 1.387599,
2365
+ "p95": 1.630614,
2366
+ "p99": 1.743193
2367
+ }
2368
+ },
2369
+ {
2370
+ "tokens": "33-64",
2371
+ "n": 2,
2372
+ "cpu_ms": {
2373
+ "p50": 83.40803600000001,
2374
+ "p95": 83.40803600000001,
2375
+ "p99": 83.40803600000001
2376
+ },
2377
+ "gpu_ms": {
2378
+ "p50": 2.7668329999999997,
2379
+ "p95": 2.7668329999999997,
2380
+ "p99": 2.7668329999999997
2381
+ }
2382
+ }
2383
+ ],
2384
+ "gpu_scope": "One command buffer: embedding lookup, transformer layers, row-order pooling and FP32 L2, reconstruction errors; tokenization, hashing and ranking/gates on CPU. Joint GPU time is not split into fictitious encoder/resonance wall times."
2385
+ }
2386
+ ],
2387
+ "vulkan_final_alternating_diagnostic": [
2388
+ {
2389
+ "schema": "cortiq-decision-vulkan-comparison/2",
2390
+ "model_sha": "386b6e43fd35d5aa9e9710529dfdf30aa868df98ab4434d8e45dae9829898f85",
2391
+ "skill": "banking77",
2392
+ "n": 400,
2393
+ "dataset_sha256": "9b521ef5a55ec3065e70bccd2b30fa12e5b999406008f44338ef91ddbbaf1764",
2394
+ "device": "vulkan: NVIDIA RTX PRO 4000 Blackwell",
2395
+ "warmup": 50,
2396
+ "mode": "paired",
2397
+ "order": "paired serial; CPU-first/GPU-first alternates per row; same process, model, scorer and texts; no oracle",
2398
+ "golden_max_abs": {
2399
+ "cpu": 1.1920928955078125e-07,
2400
+ "vulkan": 1.341104507446289e-07
2401
+ },
2402
+ "max_embedding_abs": 1.341104507446289e-07,
2403
+ "max_reconstruction_error_abs": 7.748603820800781e-06,
2404
+ "max_reconstruction_error_scaled": 4.2701681195467245e-06,
2405
+ "winner_changes": 0,
2406
+ "gate_changes": 0,
2407
+ "hash_changes": 0,
2408
+ "different_rows": [],
2409
+ "correct": {
2410
+ "cpu": 378,
2411
+ "vulkan": 378
2412
+ },
2413
+ "accepted": {
2414
+ "cpu": 368,
2415
+ "vulkan": 368
2416
+ },
2417
+ "vulkan_command_buffers": 400,
2418
+ "cpu_command_buffers": 0,
2419
+ "vulkan_resonance_dispatches": 400,
2420
+ "ms": {
2421
+ "cpu_total": {
2422
+ "p50": 25.294016,
2423
+ "p95": 50.685048,
2424
+ "p99": 71.975504
2425
+ },
2426
+ "vulkan_total": {
2427
+ "p50": 8.570200999999999,
2428
+ "p95": 9.157026,
2429
+ "p99": 10.475235
2430
+ },
2431
+ "cpu_encoder": {
2432
+ "p50": 18.249418,
2433
+ "p95": 43.703988,
2434
+ "p99": 64.88609600000001
2435
+ },
2436
+ "vulkan_split_encoder": {
2437
+ "p50": 0.0,
2438
+ "p95": 0.0,
2439
+ "p99": 0.0
2440
+ },
2441
+ "cpu_resonance": {
2442
+ "p50": 7.033309,
2443
+ "p95": 7.121943000000001,
2444
+ "p99": 7.204884
2445
+ },
2446
+ "vulkan_ranking_cpu": {
2447
+ "p50": 0.005862,
2448
+ "p95": 0.014029000000000002,
2449
+ "p99": 0.022748
2450
+ },
2451
+ "vulkan_joint_pipeline": {
2452
+ "p50": 8.532857,
2453
+ "p95": 9.114592,
2454
+ "p99": 10.426771
2455
+ }
2456
+ },
2457
+ "by_tokens": [
2458
+ {
2459
+ "tokens": "1-8",
2460
+ "n": 33,
2461
+ "cpu_ms": {
2462
+ "p50": 18.183600000000002,
2463
+ "p95": 19.627952,
2464
+ "p99": 19.660096
2465
+ },
2466
+ "gpu_ms": {
2467
+ "p50": 8.504406000000001,
2468
+ "p95": 9.157026,
2469
+ "p99": 10.475235
2470
+ }
2471
+ },
2472
+ {
2473
+ "tokens": "9-16",
2474
+ "n": 254,
2475
+ "cpu_ms": {
2476
+ "p50": 23.578274,
2477
+ "p95": 27.982298999999998,
2478
+ "p99": 28.295987
2479
+ },
2480
+ "gpu_ms": {
2481
+ "p50": 8.541694000000001,
2482
+ "p95": 8.830613,
2483
+ "p99": 10.490369
2484
+ }
2485
+ },
2486
+ {
2487
+ "tokens": "17-32",
2488
+ "n": 97,
2489
+ "cpu_ms": {
2490
+ "p50": 32.586508,
2491
+ "p95": 50.685048,
2492
+ "p99": 52.140518
2493
+ },
2494
+ "gpu_ms": {
2495
+ "p50": 8.737691,
2496
+ "p95": 9.156465,
2497
+ "p99": 10.988516
2498
+ }
2499
+ },
2500
+ {
2501
+ "tokens": "33-64",
2502
+ "n": 15,
2503
+ "cpu_ms": {
2504
+ "p50": 59.938963,
2505
+ "p95": 86.883251,
2506
+ "p99": 86.883251
2507
+ },
2508
+ "gpu_ms": {
2509
+ "p50": 9.268764000000001,
2510
+ "p95": 9.999656000000002,
2511
+ "p99": 9.999656000000002
2512
+ }
2513
+ },
2514
+ {
2515
+ "tokens": "65+",
2516
+ "n": 1,
2517
+ "cpu_ms": {
2518
+ "p50": 96.077608,
2519
+ "p95": 96.077608,
2520
+ "p99": 96.077608
2521
+ },
2522
+ "gpu_ms": {
2523
+ "p50": 2.9224379999999996,
2524
+ "p95": 2.9224379999999996,
2525
+ "p99": 2.9224379999999996
2526
+ }
2527
+ }
2528
+ ],
2529
+ "gpu_scope": "One command buffer: embedding lookup, transformer layers, row-order pooling and FP32 L2, reconstruction errors; tokenization, hashing and ranking/gates on CPU. Joint GPU time is not split into fictitious encoder/resonance wall times."
2530
+ },
2531
+ {
2532
+ "schema": "cortiq-decision-vulkan-comparison/2",
2533
+ "model_sha": "386b6e43fd35d5aa9e9710529dfdf30aa868df98ab4434d8e45dae9829898f85",
2534
+ "skill": "clinc150",
2535
+ "n": 400,
2536
+ "dataset_sha256": "94ca69865b628e19e0b6c220e6749197888bdc7cb648cd1f72a20305bc13d9e5",
2537
+ "device": "vulkan: NVIDIA RTX PRO 4000 Blackwell",
2538
+ "warmup": 50,
2539
+ "mode": "paired",
2540
+ "order": "paired serial; CPU-first/GPU-first alternates per row; same process, model, scorer and texts; no oracle",
2541
+ "golden_max_abs": {
2542
+ "cpu": 1.1920928955078125e-07,
2543
+ "vulkan": 1.341104507446289e-07
2544
+ },
2545
+ "max_embedding_abs": 1.4901161193847656e-07,
2546
+ "max_reconstruction_error_abs": 1.3113021850585938e-05,
2547
+ "max_reconstruction_error_scaled": 6.0342304095684085e-06,
2548
+ "winner_changes": 0,
2549
+ "gate_changes": 0,
2550
+ "hash_changes": 0,
2551
+ "different_rows": [],
2552
+ "correct": {
2553
+ "cpu": 385,
2554
+ "vulkan": 385
2555
+ },
2556
+ "accepted": {
2557
+ "cpu": 371,
2558
+ "vulkan": 371
2559
+ },
2560
+ "vulkan_command_buffers": 400,
2561
+ "cpu_command_buffers": 0,
2562
+ "vulkan_resonance_dispatches": 400,
2563
+ "ms": {
2564
+ "cpu_total": {
2565
+ "p50": 21.496622,
2566
+ "p95": 30.177698,
2567
+ "p99": 35.863288
2568
+ },
2569
+ "vulkan_total": {
2570
+ "p50": 5.015118,
2571
+ "p95": 8.837807,
2572
+ "p99": 9.597926
2573
+ },
2574
+ "cpu_encoder": {
2575
+ "p50": 14.484449999999999,
2576
+ "p95": 23.357059,
2577
+ "p99": 28.846717
2578
+ },
2579
+ "vulkan_split_encoder": {
2580
+ "p50": 0.0,
2581
+ "p95": 0.0,
2582
+ "p99": 0.0
2583
+ },
2584
+ "cpu_resonance": {
2585
+ "p50": 6.933250999999999,
2586
+ "p95": 7.025986,
2587
+ "p99": 7.164185
2588
+ },
2589
+ "vulkan_ranking_cpu": {
2590
+ "p50": 0.010098999999999999,
2591
+ "p95": 0.025981999999999998,
2592
+ "p99": 0.031384
2593
+ },
2594
+ "vulkan_joint_pipeline": {
2595
+ "p50": 4.972818,
2596
+ "p95": 8.779129,
2597
+ "p99": 9.560920000000001
2598
+ }
2599
+ },
2600
+ "by_tokens": [
2601
+ {
2602
+ "tokens": "1-8",
2603
+ "n": 110,
2604
+ "cpu_ms": {
2605
+ "p50": 17.64624,
2606
+ "p95": 19.207981999999998,
2607
+ "p99": 19.309098
2608
+ },
2609
+ "gpu_ms": {
2610
+ "p50": 4.989846,
2611
+ "p95": 8.768485,
2612
+ "p99": 10.341634
2613
+ }
2614
+ },
2615
+ {
2616
+ "tokens": "9-16",
2617
+ "n": 257,
2618
+ "cpu_ms": {
2619
+ "p50": 22.010488000000002,
2620
+ "p95": 27.188233999999998,
2621
+ "p99": 28.56827
2622
+ },
2623
+ "gpu_ms": {
2624
+ "p50": 5.015118,
2625
+ "p95": 8.818614,
2626
+ "p99": 9.548928
2627
+ }
2628
+ },
2629
+ {
2630
+ "tokens": "17-32",
2631
+ "n": 33,
2632
+ "cpu_ms": {
2633
+ "p50": 30.596008,
2634
+ "p95": 40.529081000000005,
2635
+ "p99": 40.800326999999996
2636
+ },
2637
+ "gpu_ms": {
2638
+ "p50": 5.370083999999999,
2639
+ "p95": 8.975268999999999,
2640
+ "p99": 8.983433000000002
2641
+ }
2642
+ }
2643
+ ],
2644
+ "gpu_scope": "One command buffer: embedding lookup, transformer layers, row-order pooling and FP32 L2, reconstruction errors; tokenization, hashing and ranking/gates on CPU. Joint GPU time is not split into fictitious encoder/resonance wall times."
2645
+ },
2646
+ {
2647
+ "schema": "cortiq-decision-vulkan-comparison/2",
2648
+ "model_sha": "386b6e43fd35d5aa9e9710529dfdf30aa868df98ab4434d8e45dae9829898f85",
2649
+ "skill": "massive",
2650
+ "n": 400,
2651
+ "dataset_sha256": "1662fff070a896417bec73752f8b90e40085f174b38fdfa4690ee472fe1b86d3",
2652
+ "device": "vulkan: NVIDIA RTX PRO 4000 Blackwell",
2653
+ "warmup": 50,
2654
+ "mode": "paired",
2655
+ "order": "paired serial; CPU-first/GPU-first alternates per row; same process, model, scorer and texts; no oracle",
2656
+ "golden_max_abs": {
2657
+ "cpu": 1.1920928955078125e-07,
2658
+ "vulkan": 1.341104507446289e-07
2659
+ },
2660
+ "max_embedding_abs": 1.1920928955078125e-07,
2661
+ "max_reconstruction_error_abs": 1.6808509826660156e-05,
2662
+ "max_reconstruction_error_scaled": 7.22503500583116e-06,
2663
+ "winner_changes": 0,
2664
+ "gate_changes": 0,
2665
+ "hash_changes": 0,
2666
+ "different_rows": [],
2667
+ "correct": {
2668
+ "cpu": 341,
2669
+ "vulkan": 341
2670
+ },
2671
+ "accepted": {
2672
+ "cpu": 208,
2673
+ "vulkan": 208
2674
+ },
2675
+ "vulkan_command_buffers": 400,
2676
+ "cpu_command_buffers": 0,
2677
+ "vulkan_resonance_dispatches": 400,
2678
+ "ms": {
2679
+ "cpu_total": {
2680
+ "p50": 16.558957999999997,
2681
+ "p95": 24.45713,
2682
+ "p99": 30.835259
2683
+ },
2684
+ "vulkan_total": {
2685
+ "p50": 3.3972960000000003,
2686
+ "p95": 7.495115,
2687
+ "p99": 7.610043
2688
+ },
2689
+ "cpu_encoder": {
2690
+ "p50": 12.411912000000001,
2691
+ "p95": 20.365925,
2692
+ "p99": 26.537292
2693
+ },
2694
+ "vulkan_split_encoder": {
2695
+ "p50": 0.0,
2696
+ "p95": 0.0,
2697
+ "p99": 0.0
2698
+ },
2699
+ "cpu_resonance": {
2700
+ "p50": 4.108808000000001,
2701
+ "p95": 4.267616,
2702
+ "p99": 4.309318
2703
+ },
2704
+ "vulkan_ranking_cpu": {
2705
+ "p50": 0.0046099999999999995,
2706
+ "p95": 0.011302,
2707
+ "p99": 0.023187
2708
+ },
2709
+ "vulkan_joint_pipeline": {
2710
+ "p50": 3.3793870000000004,
2711
+ "p95": 7.45397,
2712
+ "p99": 7.584391
2713
+ }
2714
+ },
2715
+ "by_tokens": [
2716
+ {
2717
+ "tokens": "1-8",
2718
+ "n": 178,
2719
+ "cpu_ms": {
2720
+ "p50": 14.953128,
2721
+ "p95": 16.197547999999998,
2722
+ "p99": 16.479971
2723
+ },
2724
+ "gpu_ms": {
2725
+ "p50": 3.356858,
2726
+ "p95": 7.449042,
2727
+ "p99": 8.81558
2728
+ }
2729
+ },
2730
+ {
2731
+ "tokens": "9-16",
2732
+ "n": 210,
2733
+ "cpu_ms": {
2734
+ "p50": 18.80779,
2735
+ "p95": 24.283237,
2736
+ "p99": 26.044375000000002
2737
+ },
2738
+ "gpu_ms": {
2739
+ "p50": 3.452348,
2740
+ "p95": 7.5117780000000005,
2741
+ "p99": 7.610043
2742
+ }
2743
+ },
2744
+ {
2745
+ "tokens": "17-32",
2746
+ "n": 11,
2747
+ "cpu_ms": {
2748
+ "p50": 28.205081,
2749
+ "p95": 33.755212,
2750
+ "p99": 33.755212
2751
+ },
2752
+ "gpu_ms": {
2753
+ "p50": 3.871171,
2754
+ "p95": 7.600968,
2755
+ "p99": 7.600968
2756
+ }
2757
+ },
2758
+ {
2759
+ "tokens": "33-64",
2760
+ "n": 1,
2761
+ "cpu_ms": {
2762
+ "p50": 48.965486000000006,
2763
+ "p95": 48.965486000000006,
2764
+ "p99": 48.965486000000006
2765
+ },
2766
+ "gpu_ms": {
2767
+ "p50": 1.903141,
2768
+ "p95": 1.903141,
2769
+ "p99": 1.903141
2770
+ }
2771
+ }
2772
+ ],
2773
+ "gpu_scope": "One command buffer: embedding lookup, transformer layers, row-order pooling and FP32 L2, reconstruction errors; tokenization, hashing and ranking/gates on CPU. Joint GPU time is not split into fictitious encoder/resonance wall times."
2774
+ }
2775
+ ],
2776
+ "http": {
2777
+ "apple_m4": {
2778
+ "cpu": {
2779
+ "requests": 11,
2780
+ "rss_after_requests_MiB": 478.46875,
2781
+ "temporary_server_stopped": true
2782
+ },
2783
+ "metal": {
2784
+ "requests": 11,
2785
+ "rss_after_requests_MiB": 808.09375,
2786
+ "temporary_server_stopped": true
2787
+ }
2788
+ },
2789
+ "xeon_rtx": {
2790
+ "cpu": {
2791
+ "requests": 11,
2792
+ "rss_after_requests_MiB": 437.578125,
2793
+ "temporary_server_stopped": true
2794
+ },
2795
+ "vulkan": {
2796
+ "requests": 11,
2797
+ "rss_after_requests_MiB": 694.8125,
2798
+ "temporary_server_stopped": true
2799
+ }
2800
+ }
2801
+ },
2802
+ "vulkan_process_vram_snapshot_MiB": 522,
2803
+ "artifact_sha256": {
2804
+ "cortiq-linux-x86_64-vulkan": "005881d968e99a5444f92d7835e5aff8d93926cb570ec1ced9c7c3c2d8b31781",
2805
+ "cortiq-macos-arm64": "02aed7010feb10706a9238050487050b144afe1ff2090e4bc496301e784b2ff7"
2806
+ }
2807
+ }
figures/gpu.svg ADDED