thegovind commited on
Commit
656d44d
·
0 Parent(s):

blink v1.0

Browse files
.dockerignore ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ .git
2
+ .cache
.gitattributes ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
5
+ *.ckpt filter=lfs diff=lfs merge=lfs -text
6
+ *.ftz filter=lfs diff=lfs merge=lfs -text
7
+ *.gz filter=lfs diff=lfs merge=lfs -text
8
+ *.h5 filter=lfs diff=lfs merge=lfs -text
9
+ *.joblib filter=lfs diff=lfs merge=lfs -text
10
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
+ *.model filter=lfs diff=lfs merge=lfs -text
13
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
14
+ *.npy filter=lfs diff=lfs merge=lfs -text
15
+ *.npz filter=lfs diff=lfs merge=lfs -text
16
+ *.onnx filter=lfs diff=lfs merge=lfs -text
17
+ *.ot filter=lfs diff=lfs merge=lfs -text
18
+ *.parquet filter=lfs diff=lfs merge=lfs -text
19
+ *.pb filter=lfs diff=lfs merge=lfs -text
20
+ *.pickle filter=lfs diff=lfs merge=lfs -text
21
+ *.pkl filter=lfs diff=lfs merge=lfs -text
22
+ *.pt filter=lfs diff=lfs merge=lfs -text
23
+ *.pth filter=lfs diff=lfs merge=lfs -text
24
+ *.rar filter=lfs diff=lfs merge=lfs -text
25
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
26
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
28
+ *.tar filter=lfs diff=lfs merge=lfs -text
29
+ *.tflite filter=lfs diff=lfs merge=lfs -text
30
+ *.tgz filter=lfs diff=lfs merge=lfs -text
31
+ *.wasm filter=lfs diff=lfs merge=lfs -text
32
+ *.xz filter=lfs diff=lfs merge=lfs -text
33
+ *.zip filter=lfs diff=lfs merge=lfs -text
34
+ *.zst filter=lfs diff=lfs merge=lfs -text
35
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ tokenizer.json filter=lfs diff=lfs merge=lfs -text
Dockerfile ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # blink server image: this repository's weights and runtime; Hugging Face libraries run in offline mode.
2
+ # hf download thegovind/<model> --revision <sha> --local-dir blink && cd blink
3
+ # docker build -t blink . && docker run --rm --gpus all -p 127.0.0.1:8000:8000 blink
4
+ # curl -s http://127.0.0.1:8000/healthz # weights_verified, warmup.repeat_identical, kernels
5
+ FROM pytorch/pytorch:2.13.0-cuda12.6-cudnn9-runtime
6
+ ENV PIP_BREAK_SYSTEM_PACKAGES=1 PIP_NO_CACHE_DIR=1 PIP_DISABLE_PIP_VERSION_CHECK=1
7
+ RUN pip install "transformers==5.17.0" "flash-linear-attention==0.5.2" "accelerate>=1.0" "safetensors>=0.4" "huggingface_hub>=1.0"
8
+ COPY . /blink
9
+ ENV HF_HUB_OFFLINE=1 TRANSFORMERS_OFFLINE=1 HF_HUB_DISABLE_TELEMETRY=1
10
+ EXPOSE 8000
11
+ CMD ["python", "/blink/serve.py", "--model", "/blink", "--host", "0.0.0.0", "--port", "8000"]
LICENSE-Qwen ADDED
@@ -0,0 +1,202 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ Apache License
3
+ Version 2.0, January 2004
4
+ http://www.apache.org/licenses/
5
+
6
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
7
+
8
+ 1. Definitions.
9
+
10
+ "License" shall mean the terms and conditions for use, reproduction,
11
+ and distribution as defined by Sections 1 through 9 of this document.
12
+
13
+ "Licensor" shall mean the copyright owner or entity authorized by
14
+ the copyright owner that is granting the License.
15
+
16
+ "Legal Entity" shall mean the union of the acting entity and all
17
+ other entities that control, are controlled by, or are under common
18
+ control with that entity. For the purposes of this definition,
19
+ "control" means (i) the power, direct or indirect, to cause the
20
+ direction or management of such entity, whether by contract or
21
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
22
+ outstanding shares, or (iii) beneficial ownership of such entity.
23
+
24
+ "You" (or "Your") shall mean an individual or Legal Entity
25
+ exercising permissions granted by this License.
26
+
27
+ "Source" form shall mean the preferred form for making modifications,
28
+ including but not limited to software source code, documentation
29
+ source, and configuration files.
30
+
31
+ "Object" form shall mean any form resulting from mechanical
32
+ transformation or translation of a Source form, including but
33
+ not limited to compiled object code, generated documentation,
34
+ and conversions to other media types.
35
+
36
+ "Work" shall mean the work of authorship, whether in Source or
37
+ Object form, made available under the License, as indicated by a
38
+ copyright notice that is included in or attached to the work
39
+ (an example is provided in the Appendix below).
40
+
41
+ "Derivative Works" shall mean any work, whether in Source or Object
42
+ form, that is based on (or derived from) the Work and for which the
43
+ editorial revisions, annotations, elaborations, or other modifications
44
+ represent, as a whole, an original work of authorship. For the purposes
45
+ of this License, Derivative Works shall not include works that remain
46
+ separable from, or merely link (or bind by name) to the interfaces of,
47
+ the Work and Derivative Works thereof.
48
+
49
+ "Contribution" shall mean any work of authorship, including
50
+ the original version of the Work and any modifications or additions
51
+ to that Work or Derivative Works thereof, that is intentionally
52
+ submitted to Licensor for inclusion in the Work by the copyright owner
53
+ or by an individual or Legal Entity authorized to submit on behalf of
54
+ the copyright owner. For the purposes of this definition, "submitted"
55
+ means any form of electronic, verbal, or written communication sent
56
+ to the Licensor or its representatives, including but not limited to
57
+ communication on electronic mailing lists, source code control systems,
58
+ and issue tracking systems that are managed by, or on behalf of, the
59
+ Licensor for the purpose of discussing and improving the Work, but
60
+ excluding communication that is conspicuously marked or otherwise
61
+ designated in writing by the copyright owner as "Not a Contribution."
62
+
63
+ "Contributor" shall mean Licensor and any individual or Legal Entity
64
+ on behalf of whom a Contribution has been received by Licensor and
65
+ subsequently incorporated within the Work.
66
+
67
+ 2. Grant of Copyright License. Subject to the terms and conditions of
68
+ this License, each Contributor hereby grants to You a perpetual,
69
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
70
+ copyright license to reproduce, prepare Derivative Works of,
71
+ publicly display, publicly perform, sublicense, and distribute the
72
+ Work and such Derivative Works in Source or Object form.
73
+
74
+ 3. Grant of Patent License. Subject to the terms and conditions of
75
+ this License, each Contributor hereby grants to You a perpetual,
76
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
77
+ (except as stated in this section) patent license to make, have made,
78
+ use, offer to sell, sell, import, and otherwise transfer the Work,
79
+ where such license applies only to those patent claims licensable
80
+ by such Contributor that are necessarily infringed by their
81
+ Contribution(s) alone or by combination of their Contribution(s)
82
+ with the Work to which such Contribution(s) was submitted. If You
83
+ institute patent litigation against any entity (including a
84
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
85
+ or a Contribution incorporated within the Work constitutes direct
86
+ or contributory patent infringement, then any patent licenses
87
+ granted to You under this License for that Work shall terminate
88
+ as of the date such litigation is filed.
89
+
90
+ 4. Redistribution. You may reproduce and distribute copies of the
91
+ Work or Derivative Works thereof in any medium, with or without
92
+ modifications, and in Source or Object form, provided that You
93
+ meet the following conditions:
94
+
95
+ (a) You must give any other recipients of the Work or
96
+ Derivative Works a copy of this License; and
97
+
98
+ (b) You must cause any modified files to carry prominent notices
99
+ stating that You changed the files; and
100
+
101
+ (c) You must retain, in the Source form of any Derivative Works
102
+ that You distribute, all copyright, patent, trademark, and
103
+ attribution notices from the Source form of the Work,
104
+ excluding those notices that do not pertain to any part of
105
+ the Derivative Works; and
106
+
107
+ (d) If the Work includes a "NOTICE" text file as part of its
108
+ distribution, then any Derivative Works that You distribute must
109
+ include a readable copy of the attribution notices contained
110
+ within such NOTICE file, excluding those notices that do not
111
+ pertain to any part of the Derivative Works, in at least one
112
+ of the following places: within a NOTICE text file distributed
113
+ as part of the Derivative Works; within the Source form or
114
+ documentation, if provided along with the Derivative Works; or,
115
+ within a display generated by the Derivative Works, if and
116
+ wherever such third-party notices normally appear. The contents
117
+ of the NOTICE file are for informational purposes only and
118
+ do not modify the License. You may add Your own attribution
119
+ notices within Derivative Works that You distribute, alongside
120
+ or as an addendum to the NOTICE text from the Work, provided
121
+ that such additional attribution notices cannot be construed
122
+ as modifying the License.
123
+
124
+ You may add Your own copyright statement to Your modifications and
125
+ may provide additional or different license terms and conditions
126
+ for use, reproduction, or distribution of Your modifications, or
127
+ for any such Derivative Works as a whole, provided Your use,
128
+ reproduction, and distribution of the Work otherwise complies with
129
+ the conditions stated in this License.
130
+
131
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
132
+ any Contribution intentionally submitted for inclusion in the Work
133
+ by You to the Licensor shall be under the terms and conditions of
134
+ this License, without any additional terms or conditions.
135
+ Notwithstanding the above, nothing herein shall supersede or modify
136
+ the terms of any separate license agreement you may have executed
137
+ with Licensor regarding such Contributions.
138
+
139
+ 6. Trademarks. This License does not grant permission to use the trade
140
+ names, trademarks, service marks, or product names of the Licensor,
141
+ except as required for reasonable and customary use in describing the
142
+ origin of the Work and reproducing the content of the NOTICE file.
143
+
144
+ 7. Disclaimer of Warranty. Unless required by applicable law or
145
+ agreed to in writing, Licensor provides the Work (and each
146
+ Contributor provides its Contributions) on an "AS IS" BASIS,
147
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
148
+ implied, including, without limitation, any warranties or conditions
149
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
150
+ PARTICULAR PURPOSE. You are solely responsible for determining the
151
+ appropriateness of using or redistributing the Work and assume any
152
+ risks associated with Your exercise of permissions under this License.
153
+
154
+ 8. Limitation of Liability. In no event and under no legal theory,
155
+ whether in tort (including negligence), contract, or otherwise,
156
+ unless required by applicable law (such as deliberate and grossly
157
+ negligent acts) or agreed to in writing, shall any Contributor be
158
+ liable to You for damages, including any direct, indirect, special,
159
+ incidental, or consequential damages of any character arising as a
160
+ result of this License or out of the use or inability to use the
161
+ Work (including but not limited to damages for loss of goodwill,
162
+ work stoppage, computer failure or malfunction, or any and all
163
+ other commercial damages or losses), even if such Contributor
164
+ has been advised of the possibility of such damages.
165
+
166
+ 9. Accepting Warranty or Additional Liability. While redistributing
167
+ the Work or Derivative Works thereof, You may choose to offer,
168
+ and charge a fee for, acceptance of support, warranty, indemnity,
169
+ or other liability obligations and/or rights consistent with this
170
+ License. However, in accepting such obligations, You may act only
171
+ on Your own behalf and on Your sole responsibility, not on behalf
172
+ of any other Contributor, and only if You agree to indemnify,
173
+ defend, and hold each Contributor harmless for any liability
174
+ incurred by, or claims asserted against, such Contributor by reason
175
+ of your accepting any such warranty or additional liability.
176
+
177
+ END OF TERMS AND CONDITIONS
178
+
179
+ APPENDIX: How to apply the Apache License to your work.
180
+
181
+ To apply the Apache License to your work, attach the following
182
+ boilerplate notice, with the fields enclosed by brackets "[]"
183
+ replaced with your own identifying information. (Don't include
184
+ the brackets!) The text should be enclosed in the appropriate
185
+ comment syntax for the file format. We also recommend that a
186
+ file or class name and description of purpose be included on the
187
+ same "printed page" as the copyright notice for easier
188
+ identification within third-party archives.
189
+
190
+ Copyright 2026 Alibaba Cloud
191
+
192
+ Licensed under the Apache License, Version 2.0 (the "License");
193
+ you may not use this file except in compliance with the License.
194
+ You may obtain a copy of the License at
195
+
196
+ http://www.apache.org/licenses/LICENSE-2.0
197
+
198
+ Unless required by applicable law or agreed to in writing, software
199
+ distributed under the License is distributed on an "AS IS" BASIS,
200
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
201
+ See the License for the specific language governing permissions and
202
+ limitations under the License.
LICENSE.md ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ blink model weights: non-commercial research licence
2
+
3
+ These weights are a modification of Qwen/Qwen3.5-4B (Apache License 2.0, Copyright 2026 Alibaba Cloud;
4
+ the full licence text is in LICENSE-Qwen). The modification (fine-tuning with LoRA adapters merged into
5
+ the weights, and a uniform average of three such fine-tuned checkpoints) was made by thegovind.
6
+
7
+ The fine-tuning data included third-party datasets released under different terms, among them
8
+ non-commercial (CC BY-NC 3.0 / 4.0) and share-alike (CC BY-SA 3.0 / 4.0) licences, and sources that
9
+ state no licence (listed in README.md). Whether and how those terms apply to trained weights is unsettled.
10
+
11
+ The author of the modification permits you to use, copy and run it for non-commercial research and
12
+ evaluation only, provided this notice and LICENSE-Qwen are kept with every copy. No licence for commercial
13
+ use is granted, and nothing here grants rights in any third-party data. You remain responsible for
14
+ complying with the Apache License 2.0 for the Qwen base weights and with the terms of the upstream datasets.
15
+
16
+ THE WEIGHTS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND.
17
+
18
+ This is a personal research release. It is not an official product of any company, and it is not
19
+ affiliated with TypeSafe AI, Alibaba Cloud or the Qwen team.
README.md ADDED
@@ -0,0 +1,303 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: other
3
+ license_name: blink-research
4
+ license_link: LICENSE.md
5
+ base_model: Qwen/Qwen3.5-4B
6
+ library_name: transformers
7
+ pipeline_tag: text-classification
8
+ inference: false
9
+ tags:
10
+ - decision-model
11
+ - typed-decisions
12
+ - one-pass
13
+ - option-probabilities
14
+ language:
15
+ - en
16
+ ---
17
+
18
+ # blink-4b
19
+
20
+ Send a text or JSON `state` and your questions: `choice` picks from up to 255 options, `noul` is yes/no,
21
+ and `score` takes 2–10 ordered levels. Each question gets probabilities over its offered options from
22
+ one forward pass, with no generated text. Long or large multi-question requests may use several batches.
23
+
24
+ **Try it:** [Space demo](https://huggingface.co/spaces/thegovind/blink) — blink-4b and blink-mimo-9b run live ·
25
+ [blink-4b](https://huggingface.co/thegovind/blink-4b) · [blink-27b](https://huggingface.co/thegovind/blink-27b) ·
26
+ [blink-mimo-9b](https://huggingface.co/thegovind/blink-mimo-9b).
27
+
28
+ *Personal research release by thegovind, not an official product of any company. No affiliation with TypeSafe AI,
29
+ Xiaomi, Alibaba Cloud or the Qwen team. Weights are for non-commercial research; see [Licence](#licence).*
30
+
31
+ ## Results
32
+
33
+ ### JevBench: public-item development proxies
34
+
35
+ | Model | Public-items proxy | Public hard (111) | Hard ECE | Probability TVD | Official JevBench v1.4 |
36
+ |---|---:|---:|---:|---:|---:|
37
+ | **blink-4b** | 76.5 | 80/111 | 0.067 | 0.226 | not submitted |
38
+ | JevK5 v0.2.0 | 76.1 | 79/111 (own runtime: 82/111) | 0.068 | 0.220 | 62.0 |
39
+ | Jev 1.13.0 | — | — | — | — | 63.3 |
40
+
41
+ Both proxies use the same harness on public items. They aren't official JevBench scores or predictions: official scoring needs held-out, judge and sealed items. We claim no official score, rank or parity with Jev or JevK5.
42
+
43
+ <details><summary>How to read the public-item numbers</summary>
44
+
45
+ - On the public hard items, blink-4b got 80/111 and JevK5 got 79/111 in our runtime; JevK5's own runtime reports 82/111. We don't claim a hard-accuracy advantage. blink-4b's 95% Wilson interval is 0.631–0.796, before selection effects.
46
+ - Speed comes from each row's own serial run. The proxy speed axis already applies JevBench's self-hosted adjustment.
47
+ - Cost uses JevBench's 4B tariff ($0.03 per million input tokens) times measured tokens per decision; not a production bill.
48
+
49
+ </details>
50
+
51
+ ### Decision Index 0.1 (archived edition)
52
+
53
+ **Full suite: blink-4b 52.12 vs Jev 1.13.0 59.51.**
54
+
55
+ | Model | Size class | Decision Index 0.1 | Skill | Breadth |
56
+ |---|---|---:|---:|---:|
57
+ | **blink-4b** (this model) | 4B | 52.12 | 36.04 | 34.18 |
58
+ | Jev 1.13.0 | closed | 59.51 | 46.26 | 44.79 |
59
+ | Jevfire | 27B | 55.74 | 40.86 | 39.45 |
60
+ | JoshuaSP diffusiongemma (open-jev) | 26B-A4B | 55.56 | 40.84 | 39.19 |
61
+ | Decider 35B-A3B | 35B-A3B | 54.34 | 39.37 | 37.99 |
62
+ | Kev 9B | 9B | 50.48 | 32.96 | 30.54 |
63
+ | Kev 4B | 4B | 47.43 | 28.86 | 25.67 |
64
+
65
+ We ran the complete archived 0.1 suite: 132,422 requests across 37 benchmarks. The headline index averages 19 panel benchmarks. Comparison rows use the 2026-09-22 leaderboard snapshot. We ran the official kit's scorer locally; these aren't leaderboard submissions. The live [Decision Index](https://huggingface.co/spaces/multimodalart/jev-decision-index) moved to 0.2 on 2026-09-24, but the public kit can't build 0.2 yet.
66
+
67
+ No Decision Index 0.2 result is reported for these models. Comparable shared-benchmark results require matched request subsets and the 0.2 metric transformations.
68
+
69
+ On the archived 0.1 board, the best open entry with 3.5–5B served parameters was Kev 4B at 47.43; this model scored 52.12.
70
+
71
+ | Area | blink-4b | Jev 1.13.0 |
72
+ |---|---:|---:|
73
+ | Knowledge & Reasoning | 49.1 | 68.8 |
74
+ | Language Understanding | 61.0 | 62.3 |
75
+ | Retrieval & Classification | 30.1 | 37.0 |
76
+ | Tools & Automation | 70.2 | 73.6 |
77
+ | Arts & Human Judgment | 50.2 | 56.2 |
78
+
79
+ <details><summary>Per benchmark (19 panel benchmarks, 0.1)</summary>
80
+
81
+ | Area | Benchmark | This model | Jev 1.13.0 |
82
+ |---|---|---:|---:|
83
+ | Knowledge | MMLU | 0.749 | 0.917 |
84
+ | Knowledge | GPQA Diamond | 0.372 | 0.783 |
85
+ | Knowledge | GSM8K | 0.579 | 0.799 |
86
+ | Knowledge | CRUXEval | 0.472 | 0.730 |
87
+ | Knowledge | CLadder | 0.637 | 0.726 |
88
+ | Knowledge | ChessBench | 0.135 | 0.172 |
89
+ | Language | ContractNLI | 0.761 | 0.717 |
90
+ | Language | iSarcasmEval | 0.452 | 0.505 |
91
+ | Language | VAST | 0.617 | 0.646 |
92
+ | Retrieval | BRIGHT | 0.172 | 0.187 |
93
+ | Retrieval | Amazon ESCI | 0.431 | 0.552 |
94
+ | Tools | BFCL | 0.903 | 0.958 |
95
+ | Tools | ToolRet | 0.412 | 0.450 |
96
+ | Tools | RouterBench | 0.790 | 0.799 |
97
+ | Arts | BPoMP | 0.847 | 0.906 |
98
+ | Arts | Humicroedit | 0.605 | 0.619 |
99
+ | Arts | POP909-CL | 0.034 | 0.181 |
100
+ | Arts | cfcolor | 0.581 | 0.647 |
101
+ | Arts | Habermas Machine | 0.443 | 0.459 |
102
+
103
+ </details>
104
+
105
+ ## What we changed in the network
106
+
107
+ | | What ships |
108
+ |---|---|
109
+ | Backbone | Qwen3.5-4B text model; 32 decoder layers (24 Gated DeltaNet, 8 full-attention), hidden 2560; 4,205,751,296 shipped text parameters |
110
+ | Tuned | 32.5M LoRA parameters, merged before averaging |
111
+ | Final weights | Uniform weight average ("soup") of T3, T4 step 300 and T4 final |
112
+
113
+ T3/T4 also used KL anchors to the base model: its distributions on prompts whose teacher answers failed verification.
114
+
115
+ **LoRA targets (rank 16, alpha 32, every language-model layer):** full-attention `q_proj`, `k_proj`, `v_proj`, `o_proj`;
116
+ Gated DeltaNet `in_proj_qkv`, `in_proj_z`, `in_proj_a`, `in_proj_b`, `out_proj`; and every MLP's
117
+ `gate_proj`, `up_proj`, `down_proj`. Token embeddings, all norms and `lm_head` stayed frozen.
118
+ The trained adapters were merged into the text weights.
119
+
120
+ Qwen3.5-4B is a vision-language model; this checkpoint ships only its text model. The vision encoder and multi-token-prediction (MTP) head were cut: 0 vision tensors, 0 MTP tensors.
121
+
122
+ **The real cut is at readout:** no text generation. One prompt pass; next-token logits from only the
123
+ offered option-label rows of `lm_head` (verified single tokens A–Z, then two-letter labels), computed in
124
+ FP32 and softmaxed over those letters. The rest of the vocabulary is ignored.
125
+
126
+ **Objective:** "calibration-oriented decision post-training" is plain supervised fine-tuning.
127
+ Cross-entropy uses each row's target distribution: code-computed exact probabilities, probability
128
+ targets in teacher-written questions kept after a blind re-solve by that same teacher agreed, and
129
+ one-hot labels otherwise. For blink-4b, the base model's distributions on anchor rows are also targets. Choice and yes/no options and letter assignments are
130
+ reshuffled each epoch; score levels keep their order. Jev's RLCD recipe isn't public; we didn't
131
+ use or reproduce it. No RL or preference optimisation.
132
+
133
+ ## The climb
134
+
135
+ DI-S is the 3,000-request sample. JevBench hard and ECE here are public-item numbers, not official scores.
136
+
137
+ | Step | DI 0.1 | Public hard | Hard ECE | Why |
138
+ |---|---:|---:|---:|---|
139
+ | Qwen3.5-4B, zero-shot | 44.45 DI-S | 0.595 | 0.131 | Baseline before decision training. |
140
+ | T1 (106.7k rows; lr 1e-4; 355 steps) | 53.15 DI-S | 0.559 | — | Public train splits plus exact-probability items lifted DI-S but hurt hard items; NLI/classification didn't transfer to long documents. |
141
+ | T3 (23,156 question rows; lr 3e-5; 96 steps) | — | 0.649 | 0.089 | Restarted from base with worlds (including "can't tell"), exact probabilities, teacher-written docs, ~10% public replay and 7.6% base anchors. |
142
+ | T4 (42,360 question rows; lr 4e-5; 472 steps) | — | 0.712 (step 300); 0.676 (final) | — | Added judge-style items; the earlier checkpoint did better on hard cases. |
143
+ | **Soup (T3 + T4 step 300 + T4 final)** | 52.12 full | 0.721 | 0.067 | Averaged three checkpoints for hard accuracy and calibration; shipped. |
144
+
145
+ **Tried, didn't keep:**
146
+ - Distilling 27B answers into 4B didn't help on hard items.
147
+ - A DI-focused 4B gained just +0.4 on DI-S.
148
+ - Mixing JevK5 weights into the soup didn't help.
149
+ - Qwen3.5-9B with the T1 recipe scored 54.5 DI-S, below our pre-set bar.
150
+
151
+ ## Use
152
+
153
+ ```python
154
+ # pip install "torch==2.13.0" "transformers==5.17.0" "flash-linear-attention==0.5.2" "accelerate>=1.1.0" safetensors huggingface_hub
155
+ import os, sys
156
+ from huggingface_hub import hf_hub_download
157
+
158
+ os.environ["BLINK_MODEL"] = "thegovind/blink-4b"
159
+ os.environ["BLINK_REVISION"] = "v1.0"
160
+ sys.path.insert(0, os.path.dirname(hf_hub_download("thegovind/blink-4b", "blink.py", revision="v1.0")))
161
+ import blink
162
+
163
+ out = blink.decide(
164
+ "Order #4411 arrived with a cracked screen. I want my money back, not another one.",
165
+ {
166
+ "intent": {
167
+ "type": "choice",
168
+ "instructions": "What does the customer want?",
169
+ "criteria": {"refund": "Money back", "replacement": "A new unit", "info": "Information only"},
170
+ },
171
+ "urgent": {"type": "noul", "instructions": "Does this need a reply today?"},
172
+ "anger": {"type": "score", "instructions": "How upset is the customer?", "criteria": ["calm", "annoyed", "angry"]},
173
+ },
174
+ )
175
+ print(out["answers"]["intent"]["probabilities"])
176
+ ```
177
+
178
+ ## Run it as a server
179
+
180
+ `serve.py` accepts Jev-compatible `POST /v1/systemone` (`{state, questions}` → `{answers, usage}`);
181
+ JevBench's stock `typesafe` adapter and the Decision Index kit's `http` engine use this format.
182
+ `GET /healthz` reports startup checks.
183
+
184
+ ```sh
185
+ pip install "torch==2.13.0" "transformers==5.17.0" "flash-linear-attention==0.5.2" "accelerate>=1.1.0" safetensors huggingface_hub
186
+ hf download thegovind/blink-4b --revision v1.0 --local-dir blink-4b
187
+ python blink-4b/serve.py --model ./blink-4b --port 8000
188
+ ```
189
+
190
+ In another terminal: `curl -s http://127.0.0.1:8000/healthz`.
191
+
192
+ **Or use Docker** from the downloaded folder:
193
+
194
+ ```sh
195
+ cd blink-4b
196
+ docker build -t blink-4b . && docker run --rm --gpus all -p 127.0.0.1:8000:8000 blink-4b
197
+ ```
198
+
199
+ <details><summary>Health, limits and weights</summary>
200
+
201
+ - `/healthz` reports `weights_verified` (weight, config and tokenizer files listed in `weights.sha256`
202
+ are hashed before serving; a mismatch stops startup), `warmup.repeat_identical` (two matching warm-up
203
+ answers), `kernels` (fast path or slower fallback without flash-linear-attention), `versions` and `hub_offline`.
204
+ - Limits: 255 options per choice, 2–10 score levels, 131,072 input tokens per question and 512 questions
205
+ per request. Over-limit requests get HTTP 422 with the reason; nothing is truncated.
206
+ - Requests run one at a time. Questions are batched; each batch takes one forward pass (large requests
207
+ can take more than one). Serving the downloaded folder or Docker image enables Hugging Face offline
208
+ mode before model loading (`hub_offline: true`). The server doesn't otherwise restrict network access.
209
+ - blink-4b weights are 8.4 GB in bf16. Long prompts need more memory.
210
+
211
+ </details>
212
+
213
+ <details><summary>Model and probability readout</summary>
214
+
215
+ | | |
216
+ |---|---|
217
+ | Base | [Qwen/Qwen3.5-4B](https://huggingface.co/Qwen/Qwen3.5-4B) (Apache-2.0), text weights only |
218
+ | Adaptation | LoRA (r16, α32) on attention, Gated DeltaNet and MLP projections; uniform average of three merged checkpoints from two runs |
219
+ | Readout | Verified single-token labels (A–Z, then two-letter labels); FP32 softmax of next-token logits / T over the offered labels |
220
+ | Temperature | 1.0 (not fitted; see evaluation notes) |
221
+ | Input limit | 131,072 tokens per question; longest evaluated prompt: 37,906 tokens; longer inputs are refused, never truncated |
222
+ | Runtime | `blink.py` builds prompts and reads out probabilities for text decisions |
223
+
224
+ These are option-conditional model probabilities, not certified chances of being right. Calibration can shift
225
+ across tasks, domains and option sets. For `choice`, `confidence = (p_max − 1/K)/(1 − 1/K)` measures
226
+ concentration, not correctness. For `score`, `score` is the expected 0-based level and `choice` is the
227
+ most likely level.
228
+
229
+ </details>
230
+
231
+ <details><summary>Training and data</summary>
232
+
233
+ ### How it was trained
234
+
235
+ | Stage | Question rows | Mix |
236
+ |---|---:|---|
237
+ | T3 | 23,156 | 11,352 decision worlds · 3,741 teacher-written question rows · 2,579 exact-probability worlds · 2,221 public-source (~10%) · 1,763 base-model anchors (7.6%) · 1,500 program-generated reasoning |
238
+ | T4 | 42,360 | 12,000 decision worlds · 7,860 teacher-written question rows · 7,000 judge-style · 6,220 exact-probability worlds · 3,500 base-model anchors (8.3%) · 3,000 program-generated reasoning · 2,780 public-source |
239
+
240
+ T4 judge-style: 3,000 GSM8K-train solution checks, 2,500 Dolly-15k routing, 1,500 program-answer checks.
241
+
242
+ The released weights average three checkpoints fine-tuned from the base: T3 (lr 3e-5, 96 steps), T4 at step 300 and T4 at its final step 472 (lr 4e-5). The base-model anchor targets come from the base's own distributions on authored prompts whose teacher answers failed verification. Qwen3.8-27B wrote the teacher documents and their typed questions.
243
+
244
+ ### Data sources and licences
245
+
246
+ | Source | Licence |
247
+ |---|---|
248
+ | MMLU auxiliary train, MMLU-Pro, CommonsenseQA, GSM8K | MIT |
249
+ | AQuA-RAT, Amazon ESCI | Apache-2.0 |
250
+ | MedMCQA | Apache-2.0 (dataset card) |
251
+ | SuperGPQA | ODC-BY |
252
+ | WANLI, ContractNLI, BANKING77, GPQA | CC BY 4.0 |
253
+ | ARC | CC BY-SA 4.0 |
254
+ | BoolQ, Dolly-15k | CC BY-SA 3.0 |
255
+ | ANLI | CC BY-NC 4.0 |
256
+ | SciQ | CC BY-NC 3.0 |
257
+ | iSarcasmEval | MIT (upstream repository licence) |
258
+ | VAST, Humicroedit, OpenBookQA | None stated by source |
259
+ | Our code-generated worlds and teacher-written documents (Qwen3.8-27B) | See LICENSE.md |
260
+
261
+ These are source-repository licences; they don't settle rights in every underlying text.
262
+
263
+ </details>
264
+
265
+ <details><summary>Evaluation notes and limits</summary>
266
+
267
+ ### Evaluation notes
268
+
269
+ - **Scorer parity.** `blink.py` and the evaluation scorer matched prompts, labels and argmaxes on 296 requests (max |Δp| < 1e-7). At a pinned revision from a fresh install, JevBench's stock `typesafe` adapter reproduced public-item results byte for byte (easy 48/48, standard 71/72, hard 80/111); the Decision Index kit's `http` engine scored DI-S 50.16 versus 50.08 in-process; its per-request timer on 1,000 random suite requests served serially measured a 66.4 ms median over HTTP versus 65.2 ms in-process.
270
+ - **Selection.** We reused DI-S, the official kit's 3,000-request sample of the 0.1 suite, to pick the prompt format and candidate checkpoints. We fixed blink-4b using JevBench development proxies before its full-suite run. It scored 52.29 on the 129,422 requests outside DI-S.
271
+ - **Training overlap.** Public train splits also used by the 0.1 index: ContractNLI, iSarcasmEval, VAST, Amazon ESCI, Humicroedit, GSM8K (train split; solution-checking items). We also used ANLI and BANKING77 train splits; they're in the 0.1 suite but outside its index, and both are in the 0.2 panel. No identical suite test row was used; the overlap audit below covers shared passages.
272
+ - **Partitions.** Public-source data included training and development partitions, plus 281 MMLU-Pro test-partition questions (not in the 0.1 suite, but in the 0.2 panel, so don't score these weights on 0.2 MMLU-Pro) and 2 GPQA extended-set questions outside GPQA Diamond.
273
+ - **Final-mixture audit.** Rechecked every question row (including teacher-written rows, plus base-model anchors) against the complete 0.1 suite (132,422 requests) and JevBench's 231 public items. The checks used normalised text of at least 30 characters and 13-word passages. No public JevBench item matched; no chess position is shared.
274
+ - **Suite overlap.** No training row repeats suite content. All 36 flags were the fixed BANKING77 prompt template.
275
+ - **Audit limits.** Semantic or pretraining overlap can't be ruled out; private JevBench items weren't available to check.
276
+ - **Generated reasoning.** Our programs computed the labels for CRUXEval-style code and CLadder-style causal questions; no items from those benchmarks were used. We didn't reuse the suite's GSM8K distractors.
277
+ - **Teacher documents.** We kept Qwen3.8-27B's documents only if a fresh blind solve by that same teacher agreed with the answer. That's an agreement filter, not independent verification.
278
+ - The repo ships no benchmark items, GPQA text, JevBench items or teacher traces.
279
+ - **JevBench selection.** We scored all 231 public items on each candidate checkpoint and used JevK5's 65 hand-written hard items (Apache-2.0) as a second selection set. None went into training; these are development results.
280
+ - **Temperature.** A split held out from T4 suggested T = 0.82, with negligible gain. But 166 of its 401 items were in T3 training, so it isn't held out from the released average. We kept T = 1.0 without fitting it.
281
+ - **One-time lockbox.** We read held-out authored items from domains unseen in any of the three checkpoints' training data (same generator families, not JevBench's sealed set) once: accuracy 0.861 and ECE 0.026 over 396 items.
282
+
283
+ ### Limits
284
+
285
+ - English-centric. Training included Arabic iSarcasmEval rows; on the 0.1 suite, Arabic task A scored 0.313 and task C pairs 0.645. Broader multilingual performance hasn't been established.
286
+ - Doesn't chat or explain answers.
287
+ - Text in the state can sway the answer.
288
+ - Date arithmetic and long policies are its weakest cases.
289
+
290
+ </details>
291
+
292
+ ## Licence
293
+
294
+ Qwen/Qwen3.5-4B is Apache-2.0 (`LICENSE-Qwen`). The blink weights are for **non-commercial research and evaluation
295
+ only** (`LICENSE.md`); commercial use isn't licensed. Training used non-commercial, share-alike and unlicensed
296
+ sources (see the table above). It's unsettled whether their terms reach the weights, so check upstream terms too.
297
+ `blink.py`, `serve.py` and the Dockerfile are Apache-2.0.
298
+
299
+ <details><summary>Credits</summary>
300
+
301
+ The Qwen team (base models). SemIf (MIT) for the evidence/criterion/options prompt layout. The Decision Index kit (MIT) and JevBench (MIT) for evaluation. JevK5 (Apache-2.0) for its hand-written hard items, used for evaluation only.
302
+
303
+ </details>
blink.py ADDED
@@ -0,0 +1,623 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """blink — one-pass typed decisions.
2
+
3
+ A request is a `state` plus a map of typed questions. Every question is rendered
4
+ independently with the fixed "semif" template the model was trained on, the questions run
5
+ as right-padded prefills (packed into batches of at most BLINK_TOKEN_BUDGET padded tokens,
6
+ all inside one GPU call), and the answer is read from the next-token distribution over the
7
+ offered option labels. No tokens are generated.
8
+
9
+ Engines (BLINK_ENGINE): "torch" runs the model; "replay" serves label logits the real
10
+ model produced for the bundled examples (hosting without the model); "hybrid" serves those
11
+ recordings for the bundled examples and runs the model for everything else; "mock" is a
12
+ deterministic stand-in with fabricated numbers (BLINK_MOCK=1 also selects it). By default:
13
+ hybrid when CUDA and a recording are both present, torch when only CUDA is, replay otherwise.
14
+
15
+ BLINK_MODELS="repo[@revision],repo2" serves several models side by side (decide(..., model=...));
16
+ the default model's recording is replay.json, another model's replay-<repo name>.json, and a
17
+ recording is only used by the model that made it.
18
+ """
19
+
20
+ from __future__ import annotations
21
+
22
+ import hashlib
23
+ import itertools
24
+ import json
25
+ import math
26
+ import os
27
+ import re
28
+ import string
29
+ import time
30
+
31
+ # --- constants the deployment sets -------------------------------------------------
32
+
33
+ MODEL_ID = os.environ.get("BLINK_MODEL") or "thegovind/blink-4b"
34
+ MODEL_ID_27B = "thegovind/blink-27b"
35
+ MODEL_REVISION = os.environ.get("BLINK_REVISION") or None
36
+
37
+
38
+ def _model_specs() -> list[tuple[str, str | None]]:
39
+ """BLINK_MODELS serves several models side by side: comma-separated "repo" or "repo@revision",
40
+ the first one the default. Unset, the single BLINK_MODEL / BLINK_REVISION pair is served."""
41
+ specs = []
42
+ for item in os.environ.get("BLINK_MODELS", "").split(","):
43
+ repo, _, rev = item.strip().partition("@")
44
+ if repo.strip():
45
+ specs.append((repo.strip(), rev.strip() or None))
46
+ return specs or [(MODEL_ID, MODEL_REVISION)]
47
+
48
+
49
+ MODEL_SPECS = _model_specs()
50
+ MODEL_ID, MODEL_REVISION = MODEL_SPECS[0]
51
+
52
+ # Default release temperature: 1.0, not fitted; callers may override it.
53
+ TEMPERATURE = float(os.environ.get("BLINK_TEMPERATURE", "1.0"))
54
+
55
+ MAX_OPTIONS = 255
56
+ MAX_QUESTIONS = 512
57
+ MAX_INPUT_TOKENS = int(os.environ.get("BLINK_MAX_INPUT_TOKENS", "131072")) # as evaluated
58
+ TOKEN_BUDGET = int(os.environ.get("BLINK_TOKEN_BUDGET", "32768")) # padded tokens per forward
59
+ GPU_DURATION = int(os.environ.get("BLINK_GPU_DURATION", "60"))
60
+
61
+ SYSTEM = (
62
+ "Apply the supplied criterion to the supplied evidence. Choose exactly one listed option. "
63
+ "Respond with only its uppercase letter, with no explanation or reasoning."
64
+ )
65
+
66
+ LABEL_POOL = list(string.ascii_uppercase) + [
67
+ "".join(p) for p in itertools.product(string.ascii_uppercase, repeat=2)
68
+ ]
69
+ GENERIC_KEY = re.compile(r"^(?:[A-Za-z]{1,2}|option[_ ]?\d+|opt\d+|\d+)$")
70
+
71
+ MOCK = os.environ.get("BLINK_MOCK", "") not in ("", "0", "false", "False")
72
+ ENGINE = "mock" if MOCK else os.environ.get("BLINK_ENGINE", "").strip().lower()
73
+ HERE = os.path.dirname(os.path.abspath(__file__))
74
+ REPLAY_PATH = os.environ.get("BLINK_REPLAY", os.path.join(HERE, "replay.json"))
75
+
76
+
77
+ def replay_path(model_id: str | None = None) -> str:
78
+ """The default model's recording is replay.json (or BLINK_REPLAY); any other served model's
79
+ is replay-<repo name>.json beside this file."""
80
+ if model_id is None or model_id == MODEL_ID:
81
+ return REPLAY_PATH
82
+ return os.path.join(HERE, f"replay-{model_id.rstrip('/').split('/')[-1]}.json")
83
+
84
+
85
+ class BlinkError(ValueError):
86
+ """A request that cannot be rendered."""
87
+
88
+
89
+ class ReplayMiss(BlinkError):
90
+ """Replay mode has no recorded output for this request."""
91
+
92
+
93
+ # --- rendering (pure python; the model was trained on exactly this) -----------------
94
+
95
+
96
+ def text(x) -> str:
97
+ if x is None:
98
+ return ""
99
+ if isinstance(x, str):
100
+ return x
101
+ return json.dumps(x, ensure_ascii=False, indent=2)
102
+
103
+
104
+ def option_text(key, desc) -> str:
105
+ k = str(key)
106
+ if desc is None or (isinstance(desc, str) and not desc.strip()):
107
+ return k
108
+ d = text(desc)
109
+ if GENERIC_KEY.match(k) or k.strip().lower() == d.strip().lower():
110
+ return d
111
+ return f"{k}: {d}"
112
+
113
+
114
+ def question_options(q: dict) -> list[tuple[str, str]]:
115
+ """[(option_key, display_text)] in request order."""
116
+ qtype = q.get("type")
117
+ crit = q.get("criteria")
118
+ if qtype == "choice":
119
+ if isinstance(crit, dict):
120
+ items = [(str(k), option_text(k, v)) for k, v in crit.items()]
121
+ elif isinstance(crit, list):
122
+ items = [(str(k), str(k)) for k in crit]
123
+ else:
124
+ raise BlinkError("choice needs criteria")
125
+ elif qtype == "noul":
126
+ t = f = None
127
+ if isinstance(crit, dict):
128
+ t = crit.get("true", crit.get("yes"))
129
+ f = crit.get("false", crit.get("no"))
130
+ items = [
131
+ ("yes", "Yes" + (f" — {text(t)}" if t else "")),
132
+ ("no", "No" + (f" — {text(f)}" if f else "")),
133
+ ]
134
+ elif qtype == "score":
135
+ if not isinstance(crit, list) or not 2 <= len(crit) <= 10:
136
+ raise BlinkError("a score takes 2 to 10 levels")
137
+ items = [
138
+ (str(i), f"Level {i}: {text(c)}" if c is not None else f"Level {i}")
139
+ for i, c in enumerate(crit)
140
+ ]
141
+ else:
142
+ raise BlinkError(f"unsupported question type {qtype!r}")
143
+ keys = [k for k, _ in items]
144
+ if len(set(keys)) != len(keys):
145
+ raise BlinkError("duplicate option keys")
146
+ if not 1 <= len(items) <= MAX_OPTIONS:
147
+ raise BlinkError(f"{len(items)} options per choice; supported 1-{MAX_OPTIONS}")
148
+ return items
149
+
150
+
151
+ def user_message(state, q: dict, labels: list[str], items: list[tuple[str, str]]) -> str:
152
+ return json.dumps(
153
+ {
154
+ "evidence": state,
155
+ "criterion": text(q.get("instructions")).strip(),
156
+ "options": [
157
+ {"letter": lab, "description": d} for lab, (_, d) in zip(labels, items)
158
+ ],
159
+ },
160
+ ensure_ascii=False,
161
+ )
162
+
163
+
164
+ def validate(questions) -> None:
165
+ if not isinstance(questions, dict) or not questions:
166
+ raise BlinkError("questions must be a non-empty object")
167
+ if len(questions) > MAX_QUESTIONS:
168
+ raise BlinkError(f"{len(questions)} questions; supported 1-{MAX_QUESTIONS}")
169
+ for qkey, q in questions.items():
170
+ if not isinstance(q, dict):
171
+ raise BlinkError(f"question {qkey!r} must be an object")
172
+ question_options(q)
173
+
174
+
175
+ def as_state(state):
176
+ """A state that looks like JSON is passed through as JSON; anything else is text."""
177
+ if not isinstance(state, str) or not state.strip().startswith(("{", "[")):
178
+ return state
179
+ try:
180
+ return json.loads(state)
181
+ except json.JSONDecodeError:
182
+ return state
183
+
184
+
185
+ # --- answer assembly ----------------------------------------------------------------
186
+
187
+
188
+ def answer_for(q: dict, keys: list[str], probs: list[float]) -> dict:
189
+ p = {k: v for k, v in zip(keys, probs)}
190
+ z = sum(p.values()) or 1.0
191
+ p = {k: v / z for k, v in p.items()}
192
+ qtype = q["type"]
193
+ if qtype == "choice":
194
+ order = list(p)
195
+ best = max(order, key=lambda k: (p[k], -order.index(k)))
196
+ K = len(order)
197
+ conf = (p[best] - 1 / K) / (1 - 1 / K) if K > 1 else 1.0
198
+ return {"type": "choice", "choice": best, "probabilities": p, "confidence": conf}
199
+ if qtype == "noul":
200
+ return {"type": "noul", "noul": p["yes"], "probabilities": p}
201
+ levels = [str(i) for i in range(len(q["criteria"]))]
202
+ ev = sum(int(k) * p[k] for k in levels)
203
+ return {
204
+ "type": "score",
205
+ "score": ev,
206
+ "probabilities": {k: p[k] for k in levels},
207
+ "legend": {k: text(q["criteria"][int(k)]) for k in levels},
208
+ "choice": max(levels, key=lambda k: (p[k], -int(k))),
209
+ }
210
+
211
+
212
+ def softmax(logits: list[float], temperature: float) -> list[float]:
213
+ z = [v / temperature for v in logits]
214
+ m = max(z)
215
+ e = [math.exp(v - m) for v in z]
216
+ s = sum(e)
217
+ return [v / s for v in e]
218
+
219
+
220
+ # --- mock engine --------------------------------------------------------------------
221
+
222
+ _WORD = re.compile(r"[a-z0-9']+")
223
+ _STOP = frozenset(
224
+ "a an the of to and or is are was were be been it its this that for in on at "
225
+ "with as by from not no yes if then than there here we you they i".split()
226
+ )
227
+
228
+
229
+ def _terms(s: str) -> set[str]:
230
+ return {w for w in _WORD.findall(s.lower()) if w not in _STOP and len(w) > 2}
231
+
232
+
233
+ class MockEngine:
234
+ """Deterministic stand-in: lexical overlap plus a stable pseudo-random jitter.
235
+
236
+ Values are fabricated. They exist so the interface can be exercised without a GPU.
237
+ A caller may pass `bias` to shape a bundled demo; the real engine ignores it.
238
+ """
239
+
240
+ name = "mock"
241
+ temperature = TEMPERATURE
242
+
243
+ def __init__(self, model_id: str = MODEL_ID):
244
+ self.model_id = model_id
245
+ # every served model gets its own fabricated numbers; the default keeps the historic ones
246
+ self._salt = "" if model_id == MODEL_ID else f"|{model_id}"
247
+
248
+ def logits(self, state, questions: dict, bias: dict | None = None) -> tuple[dict[str, list[float]], int]:
249
+ evidence = _terms(text(state))
250
+ bias = bias or {}
251
+ out, n_tokens = {}, 0
252
+ for qkey, q in questions.items():
253
+ items = question_options(q)
254
+ labels = LABEL_POOL[: len(items)]
255
+ prompt = SYSTEM + user_message(state, q, labels, items)
256
+ n_tokens += max(1, len(prompt) // 4)
257
+ crit = _terms(text(q.get("instructions")))
258
+ hint = bias.get(qkey) or {}
259
+ row = []
260
+ for i, (key, disp) in enumerate(items):
261
+ opt = _terms(disp)
262
+ overlap = len(opt & evidence) / (len(opt) ** 0.5 + 1.0)
263
+ cue = len(opt & crit) / (len(crit) ** 0.5 + 1.0)
264
+ seed = f"{text(state)}|{text(q.get('instructions'))}|{key}|{i}{self._salt}".encode()
265
+ jitter = int.from_bytes(hashlib.blake2b(seed, digest_size=4).digest(), "big")
266
+ row.append(
267
+ 2.6 * overlap
268
+ + 1.1 * cue
269
+ + 1.9 * (jitter / 2**32)
270
+ - 0.5 * i / len(items)
271
+ + float(hint.get(key, 0.0))
272
+ )
273
+ out[qkey] = row
274
+ return out, n_tokens
275
+
276
+
277
+ # --- replay engine ------------------------------------------------------------------
278
+
279
+
280
+ def request_key(state, questions: dict) -> str:
281
+ """Stable key for a request. Question and option order are part of the request."""
282
+ if isinstance(state, str):
283
+ state = state.replace("\r\n", "\n").strip()
284
+ blob = json.dumps({"state": state, "questions": questions}, ensure_ascii=False, separators=(",", ":"))
285
+ return hashlib.sha256(blob.encode("utf-8")).hexdigest()[:32]
286
+
287
+
288
+ class ReplayEngine:
289
+ """Label logits the trained model produced for the bundled examples, recorded with
290
+ TorchEngine. Temperature and answer assembly still run live."""
291
+
292
+ name = "replay"
293
+
294
+ def __init__(self, path: str = REPLAY_PATH, temperature: float = TEMPERATURE):
295
+ with open(path, encoding="utf-8") as fh:
296
+ data = json.load(fh)
297
+ self.model_id = data["model"]
298
+ self.hardware = data.get("hardware", "")
299
+ self.temperature = float(temperature)
300
+ self.cache = data["requests"]
301
+ self.last = None
302
+
303
+ def logits(self, state, questions: dict, bias: dict | None = None) -> tuple[dict[str, list[float]], int]:
304
+ del bias
305
+ hit = self.cache.get(request_key(state, questions))
306
+ if hit is None:
307
+ raise ReplayMiss(
308
+ "Edited input. This page only has saved runs for the built-in examples and presets. "
309
+ "Pick one of those, or run blink.py yourself to decide on any text."
310
+ )
311
+ self.last = hit
312
+ return {k: list(v) for k, v in hit["logits"].items()}, int(hit["input_tokens"])
313
+
314
+
315
+ # --- torch engine -------------------------------------------------------------------
316
+
317
+
318
+ def _gpu(duration: int):
319
+ """spaces.GPU when running on ZeroGPU, a no-op decorator anywhere else."""
320
+ try:
321
+ import spaces
322
+ except Exception:
323
+ return lambda fn: fn
324
+ try:
325
+ return spaces.GPU(duration=duration)
326
+ except Exception:
327
+ return spaces.GPU
328
+
329
+
330
+ def _on_zero_gpu() -> bool:
331
+ try:
332
+ from spaces.config import Config
333
+
334
+ return bool(Config.zero_gpu)
335
+ except Exception:
336
+ return os.environ.get("SPACES_ZERO_GPU", "").lower() in ("1", "true")
337
+
338
+
339
+ # Live engines by id. The GPU function looks its engine up here instead of receiving it as an
340
+ # argument: on ZeroGPU the call runs in a worker process where only module-level state carries the
341
+ # real weights, and an argument would arrive as a copy.
342
+ _LIVE: dict = {}
343
+
344
+
345
+ class TorchEngine:
346
+ """Prefill-only readout over the offered labels, all questions of a request in one GPU call."""
347
+
348
+ name = "torch"
349
+
350
+ def __init__(self, model_id: str = MODEL_ID, revision=None, temperature: float = TEMPERATURE,
351
+ token_budget: int = TOKEN_BUDGET):
352
+ import torch
353
+ from transformers import AutoModelForCausalLM, AutoTokenizer
354
+
355
+ self.model_id = model_id
356
+ self.temperature = float(temperature)
357
+ self.token_budget = int(token_budget)
358
+ self.tok = AutoTokenizer.from_pretrained(model_id, revision=revision)
359
+ load = dict(revision=revision, dtype=torch.bfloat16, attn_implementation="sdpa")
360
+ if _on_zero_gpu():
361
+ # ZeroGPU: load on the host, then place on cuda at module level (emulated until
362
+ # a @spaces.GPU call attaches a real device).
363
+ self.model = AutoModelForCausalLM.from_pretrained(model_id, **load).to("cuda")
364
+ else:
365
+ device = "cuda" if torch.cuda.is_available() else "cpu"
366
+ self.model = AutoModelForCausalLM.from_pretrained(model_id, device_map=device, **load)
367
+ self.model.eval()
368
+ self.pad_id = self.tok.pad_token_id if self.tok.pad_token_id is not None else 0
369
+ self.labels, self.label_ids = self._verify_labels()
370
+ self.key = id(self)
371
+ _LIVE[self.key] = self
372
+
373
+ def _wrap(self, user: str) -> str:
374
+ return self.tok.apply_chat_template(
375
+ [{"role": "system", "content": SYSTEM}, {"role": "user", "content": user}],
376
+ tokenize=False,
377
+ add_generation_prompt=True,
378
+ enable_thinking=False,
379
+ )
380
+
381
+ def _verify_labels(self) -> tuple[list[str], list[int]]:
382
+ """Keep labels that are one token at the assistant boundary and decode back to themselves."""
383
+ probe = self._wrap("x")
384
+ base = self.tok(probe, add_special_tokens=False)["input_ids"]
385
+ labels, ids = [], []
386
+ for lab in LABEL_POOL:
387
+ t = self.tok(probe + lab, add_special_tokens=False)["input_ids"]
388
+ if (
389
+ len(t) == len(base) + 1
390
+ and t[: len(base)] == base
391
+ and self.tok.decode(t[-1:]) == lab
392
+ ):
393
+ labels.append(lab)
394
+ ids.append(t[-1])
395
+ if len(labels) >= MAX_OPTIONS:
396
+ break
397
+ if len(set(ids)) != len(ids):
398
+ raise BlinkError("label token ids collide")
399
+ if len(labels) < 26 or labels[:26] != list(string.ascii_uppercase):
400
+ raise BlinkError(f"only {len(labels)} verified single-token labels")
401
+ return labels, ids
402
+
403
+ def render(self, state, questions: dict):
404
+ work = []
405
+ for qkey, q in questions.items():
406
+ items = question_options(q)
407
+ if len(items) > len(self.labels):
408
+ raise BlinkError(f"{len(items)} options per choice; {len(self.labels)} labels verified")
409
+ labels = self.labels[: len(items)]
410
+ prompt = self._wrap(user_message(state, q, labels, items))
411
+ ids = self.tok(prompt, add_special_tokens=False)["input_ids"]
412
+ if len(ids) > MAX_INPUT_TOKENS:
413
+ raise BlinkError(
414
+ f"question {qkey!r} renders to {len(ids)} tokens, over the maximum context length "
415
+ f"of {MAX_INPUT_TOKENS}"
416
+ )
417
+ work.append(
418
+ {
419
+ "qkey": qkey,
420
+ "keys": [k for k, _ in items],
421
+ "ids": ids,
422
+ "cand": self.label_ids[: len(items)],
423
+ }
424
+ )
425
+ return work
426
+
427
+ def logits(self, state, questions: dict, bias: dict | None = None) -> tuple[dict[str, list[float]], int]:
428
+ del bias # demo-only shaping; the trained model reads the evidence instead
429
+ work = self.render(state, questions)
430
+ rows, self.last_model_ms = _forward(self.key, [w["ids"] for w in work], [w["cand"] for w in work])
431
+ return (
432
+ {w["qkey"]: r for w, r in zip(work, rows)},
433
+ sum(len(w["ids"]) for w in work),
434
+ )
435
+
436
+
437
+ def _batches(lengths: list[int], budget: int):
438
+ """Shortest first; a batch closes when (longest x count) would pass the padded-token budget.
439
+ A sequence longer than the budget runs alone."""
440
+ order = sorted(range(len(lengths)), key=lambda i: lengths[i])
441
+ batch, longest = [], 0
442
+ for i in order:
443
+ grown = max(longest, lengths[i])
444
+ if batch and grown * (len(batch) + 1) > budget:
445
+ yield batch
446
+ batch, grown = [], lengths[i]
447
+ batch.append(i)
448
+ longest = grown
449
+ if batch:
450
+ yield batch
451
+
452
+
453
+ @_gpu(GPU_DURATION)
454
+ def _forward(key: int, seqs: list[list[int]], cands: list[list[int]]):
455
+ """Right-padded maskless prefill; every layer is causal, so padding cannot reach the
456
+ last real position. Label rows of lm_head are applied in FP32."""
457
+ import torch
458
+
459
+ engine = _LIVE[key]
460
+ model = engine.model
461
+ device = next(model.parameters()).device
462
+ head = model.lm_head.weight
463
+ out: list = [None] * len(seqs)
464
+ t0 = time.perf_counter()
465
+ with torch.no_grad():
466
+ for b in _batches([len(s) for s in seqs], getattr(engine, "token_budget", TOKEN_BUDGET)):
467
+ L = max(len(seqs[i]) for i in b)
468
+ ids = torch.full((len(b), L), engine.pad_id, dtype=torch.long)
469
+ for r, i in enumerate(b):
470
+ ids[r, : len(seqs[i])] = torch.tensor(seqs[i], dtype=torch.long)
471
+ ids = ids.to(device)
472
+ h = model.model(input_ids=ids, use_cache=False).last_hidden_state
473
+ last = torch.tensor([len(seqs[i]) - 1 for i in b], device=device)
474
+ h = h[torch.arange(len(b), device=device), last].float()
475
+ for r, i in enumerate(b):
476
+ w = head[torch.tensor(cands[i], device=device)].float()
477
+ out[i] = (w @ h[r]).tolist()
478
+ return out, round((time.perf_counter() - t0) * 1000, 1)
479
+
480
+
481
+ # --- hybrid engine ------------------------------------------------------------------
482
+
483
+
484
+ class HybridEngine:
485
+ """Recorded outputs for the bundled examples (instant, no GPU), the live model for
486
+ everything else. The torch engine is built eagerly: ZeroGPU wants weights placed at startup."""
487
+
488
+ name = "hybrid"
489
+
490
+ def __init__(self, replay: "ReplayEngine | None", live: "TorchEngine"):
491
+ self.replay, self.live = replay, live
492
+ self.model_id = live.model_id
493
+ self.temperature = live.temperature
494
+ self.hardware = replay.hardware if replay is not None else ""
495
+ self.last_source = None
496
+ self.last = None
497
+
498
+ def logits(self, state, questions: dict, bias: dict | None = None,
499
+ prefer: str = "live") -> tuple[dict[str, list[float]], int]:
500
+ if (
501
+ prefer == "saved"
502
+ and self.replay is not None
503
+ and self.replay.cache.get(request_key(state, questions)) is not None
504
+ ):
505
+ self.last_source = "replay"
506
+ out = self.replay.logits(state, questions)
507
+ self.last = self.replay.last
508
+ return out
509
+ self.last_source = "torch"
510
+ return self.live.logits(state, questions)
511
+
512
+
513
+ # --- public entry point -------------------------------------------------------------
514
+
515
+ _ENGINE = None # the default model's engine (tests inject one here)
516
+ _ENGINES: dict = {} # every other served model's engine, by id
517
+
518
+
519
+ def _cuda() -> bool:
520
+ try:
521
+ import torch
522
+ except Exception:
523
+ return False
524
+ return bool(torch.cuda.is_available())
525
+
526
+
527
+ def engine_kind() -> str:
528
+ if ENGINE in ("mock", "replay", "torch", "hybrid"):
529
+ return ENGINE
530
+ recorded = os.path.exists(REPLAY_PATH)
531
+ if _cuda():
532
+ return "hybrid" if recorded else "torch"
533
+ return "replay" if recorded else "torch"
534
+
535
+
536
+ def models() -> list[str]:
537
+ """Model ids this deployment serves, the default first."""
538
+ return [m for m, _ in MODEL_SPECS]
539
+
540
+
541
+ def _matching_replay(model_id: str):
542
+ """The model's recording, only if that same model made it: a saved run must be what the live
543
+ model would answer."""
544
+ path = replay_path(model_id)
545
+ if not os.path.exists(path):
546
+ return None
547
+ rec = ReplayEngine(path, TEMPERATURE)
548
+ return rec if rec.model_id == model_id else None
549
+
550
+
551
+ def _build(model_id: str):
552
+ revision = dict(MODEL_SPECS).get(model_id)
553
+ kind = engine_kind()
554
+ if kind == "mock":
555
+ return MockEngine(model_id)
556
+ if kind == "replay":
557
+ return ReplayEngine(replay_path(model_id), TEMPERATURE)
558
+ if kind == "hybrid":
559
+ return HybridEngine(_matching_replay(model_id), TorchEngine(model_id, revision, TEMPERATURE))
560
+ return TorchEngine(model_id, revision, TEMPERATURE)
561
+
562
+
563
+ def engine(model: str | None = None):
564
+ global _ENGINE
565
+ mid = model or MODEL_ID
566
+ if mid not in dict(MODEL_SPECS):
567
+ raise BlinkError(f"unknown model {mid!r}; this deployment serves {', '.join(models())}")
568
+ if mid == MODEL_ID:
569
+ if _ENGINE is None:
570
+ _ENGINE = _build(mid)
571
+ return _ENGINE
572
+ if mid not in _ENGINES:
573
+ _ENGINES[mid] = _build(mid)
574
+ return _ENGINES[mid]
575
+
576
+
577
+ def warm() -> list:
578
+ """Build every served model's engine now: ZeroGPU wants weights placed at startup."""
579
+ return [engine(m) for m in models()]
580
+
581
+
582
+ def decide(state, questions: dict, temperature: float | None = None, bias: dict | None = None,
583
+ prefer: str = "live", model: str | None = None) -> dict:
584
+ """{state, questions} -> {answers, meta}. One forward pass, zero generated tokens.
585
+
586
+ `bias` shapes the mock engine so the bundled examples read realistically without a
587
+ GPU. It is discarded by the trained model. `prefer="saved"` lets the hybrid engine answer
588
+ a bundled example from its recording (used for the first page render); every other call
589
+ runs the model. `model` picks one of models() (default: the first).
590
+ """
591
+ validate(questions)
592
+ eng = engine(model)
593
+ T = float(temperature if temperature is not None else eng.temperature)
594
+ if T <= 0:
595
+ raise BlinkError("temperature must be positive")
596
+ t0 = time.perf_counter()
597
+ if isinstance(eng, HybridEngine):
598
+ raw, n_tokens = eng.logits(state, questions, bias, prefer=prefer)
599
+ else:
600
+ raw, n_tokens = eng.logits(state, questions, bias)
601
+ answers = {}
602
+ for qkey, q in questions.items():
603
+ keys = [k for k, _ in question_options(q)]
604
+ answers[qkey] = answer_for(q, keys, softmax(raw[qkey], T))
605
+ latency_ms = round((time.perf_counter() - t0) * 1000, 1)
606
+ source = getattr(eng, "last_source", None) or eng.name
607
+ meta = {
608
+ "model": getattr(eng, "model_id", MODEL_ID),
609
+ "engine": source,
610
+ "temperature": T,
611
+ "input_tokens": n_tokens,
612
+ "generated_tokens": 0,
613
+ "latency_ms": latency_ms,
614
+ }
615
+ if source == "replay":
616
+ meta["latency_ms"] = float(eng.last["latency_ms"])
617
+ if eng.hardware:
618
+ meta["recorded_on"] = eng.hardware
619
+ elif source == "torch":
620
+ model_ms = getattr(getattr(eng, "live", eng), "last_model_ms", None)
621
+ if model_ms is not None:
622
+ meta["model_ms"] = model_ms # forward passes only; excludes any wait for a device
623
+ return {"answers": answers, "meta": meta}
chat_template.jinja ADDED
@@ -0,0 +1,154 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {%- set image_count = namespace(value=0) %}
2
+ {%- set video_count = namespace(value=0) %}
3
+ {%- macro render_content(content, do_vision_count, is_system_content=false) %}
4
+ {%- if content is string %}
5
+ {{- content }}
6
+ {%- elif content is iterable and content is not mapping %}
7
+ {%- for item in content %}
8
+ {%- if 'image' in item or 'image_url' in item or item.type == 'image' %}
9
+ {%- if is_system_content %}
10
+ {{- raise_exception('System message cannot contain images.') }}
11
+ {%- endif %}
12
+ {%- if do_vision_count %}
13
+ {%- set image_count.value = image_count.value + 1 %}
14
+ {%- endif %}
15
+ {%- if add_vision_id %}
16
+ {{- 'Picture ' ~ image_count.value ~ ': ' }}
17
+ {%- endif %}
18
+ {{- '<|vision_start|><|image_pad|><|vision_end|>' }}
19
+ {%- elif 'video' in item or item.type == 'video' %}
20
+ {%- if is_system_content %}
21
+ {{- raise_exception('System message cannot contain videos.') }}
22
+ {%- endif %}
23
+ {%- if do_vision_count %}
24
+ {%- set video_count.value = video_count.value + 1 %}
25
+ {%- endif %}
26
+ {%- if add_vision_id %}
27
+ {{- 'Video ' ~ video_count.value ~ ': ' }}
28
+ {%- endif %}
29
+ {{- '<|vision_start|><|video_pad|><|vision_end|>' }}
30
+ {%- elif 'text' in item %}
31
+ {{- item.text }}
32
+ {%- else %}
33
+ {{- raise_exception('Unexpected item type in content.') }}
34
+ {%- endif %}
35
+ {%- endfor %}
36
+ {%- elif content is none or content is undefined %}
37
+ {{- '' }}
38
+ {%- else %}
39
+ {{- raise_exception('Unexpected content type.') }}
40
+ {%- endif %}
41
+ {%- endmacro %}
42
+ {%- if not messages %}
43
+ {{- raise_exception('No messages provided.') }}
44
+ {%- endif %}
45
+ {%- if tools and tools is iterable and tools is not mapping %}
46
+ {{- '<|im_start|>system\n' }}
47
+ {{- "# Tools\n\nYou have access to the following functions:\n\n<tools>" }}
48
+ {%- for tool in tools %}
49
+ {{- "\n" }}
50
+ {{- tool | tojson }}
51
+ {%- endfor %}
52
+ {{- "\n</tools>" }}
53
+ {{- '\n\nIf you choose to call a function ONLY reply in the following format with NO suffix:\n\n<tool_call>\n<function=example_function_name>\n<parameter=example_parameter_1>\nvalue_1\n</parameter>\n<parameter=example_parameter_2>\nThis is the value for the second parameter\nthat can span\nmultiple lines\n</parameter>\n</function>\n</tool_call>\n\n<IMPORTANT>\nReminder:\n- Function calls MUST follow the specified format: an inner <function=...></function> block must be nested within <tool_call></tool_call> XML tags\n- Required parameters MUST be specified\n- You may provide optional reasoning for your function call in natural language BEFORE the function call, but NOT after\n- If there is no function call available, answer the question like normal with your current knowledge and do not tell the user about function calls\n</IMPORTANT>' }}
54
+ {%- if messages[0].role == 'system' %}
55
+ {%- set content = render_content(messages[0].content, false, true)|trim %}
56
+ {%- if content %}
57
+ {{- '\n\n' + content }}
58
+ {%- endif %}
59
+ {%- endif %}
60
+ {{- '<|im_end|>\n' }}
61
+ {%- else %}
62
+ {%- if messages[0].role == 'system' %}
63
+ {%- set content = render_content(messages[0].content, false, true)|trim %}
64
+ {{- '<|im_start|>system\n' + content + '<|im_end|>\n' }}
65
+ {%- endif %}
66
+ {%- endif %}
67
+ {%- set ns = namespace(multi_step_tool=true, last_query_index=messages|length - 1) %}
68
+ {%- for message in messages[::-1] %}
69
+ {%- set index = (messages|length - 1) - loop.index0 %}
70
+ {%- if ns.multi_step_tool and message.role == "user" %}
71
+ {%- set content = render_content(message.content, false)|trim %}
72
+ {%- if not(content.startswith('<tool_response>') and content.endswith('</tool_response>')) %}
73
+ {%- set ns.multi_step_tool = false %}
74
+ {%- set ns.last_query_index = index %}
75
+ {%- endif %}
76
+ {%- endif %}
77
+ {%- endfor %}
78
+ {%- if ns.multi_step_tool %}
79
+ {{- raise_exception('No user query found in messages.') }}
80
+ {%- endif %}
81
+ {%- for message in messages %}
82
+ {%- set content = render_content(message.content, true)|trim %}
83
+ {%- if message.role == "system" %}
84
+ {%- if not loop.first %}
85
+ {{- raise_exception('System message must be at the beginning.') }}
86
+ {%- endif %}
87
+ {%- elif message.role == "user" %}
88
+ {{- '<|im_start|>' + message.role + '\n' + content + '<|im_end|>' + '\n' }}
89
+ {%- elif message.role == "assistant" %}
90
+ {%- set reasoning_content = '' %}
91
+ {%- if message.reasoning_content is string %}
92
+ {%- set reasoning_content = message.reasoning_content %}
93
+ {%- else %}
94
+ {%- if '</think>' in content %}
95
+ {%- set reasoning_content = content.split('</think>')[0].rstrip('\n').split('<think>')[-1].lstrip('\n') %}
96
+ {%- set content = content.split('</think>')[-1].lstrip('\n') %}
97
+ {%- endif %}
98
+ {%- endif %}
99
+ {%- set reasoning_content = reasoning_content|trim %}
100
+ {%- if loop.index0 > ns.last_query_index %}
101
+ {{- '<|im_start|>' + message.role + '\n<think>\n' + reasoning_content + '\n</think>\n\n' + content }}
102
+ {%- else %}
103
+ {{- '<|im_start|>' + message.role + '\n' + content }}
104
+ {%- endif %}
105
+ {%- if message.tool_calls and message.tool_calls is iterable and message.tool_calls is not mapping %}
106
+ {%- for tool_call in message.tool_calls %}
107
+ {%- if tool_call.function is defined %}
108
+ {%- set tool_call = tool_call.function %}
109
+ {%- endif %}
110
+ {%- if loop.first %}
111
+ {%- if content|trim %}
112
+ {{- '\n\n<tool_call>\n<function=' + tool_call.name + '>\n' }}
113
+ {%- else %}
114
+ {{- '<tool_call>\n<function=' + tool_call.name + '>\n' }}
115
+ {%- endif %}
116
+ {%- else %}
117
+ {{- '\n<tool_call>\n<function=' + tool_call.name + '>\n' }}
118
+ {%- endif %}
119
+ {%- if tool_call.arguments is defined %}
120
+ {%- for args_name, args_value in tool_call.arguments|items %}
121
+ {{- '<parameter=' + args_name + '>\n' }}
122
+ {%- set args_value = args_value | tojson | safe if args_value is mapping or (args_value is sequence and args_value is not string) else args_value | string %}
123
+ {{- args_value }}
124
+ {{- '\n</parameter>\n' }}
125
+ {%- endfor %}
126
+ {%- endif %}
127
+ {{- '</function>\n</tool_call>' }}
128
+ {%- endfor %}
129
+ {%- endif %}
130
+ {{- '<|im_end|>\n' }}
131
+ {%- elif message.role == "tool" %}
132
+ {%- if loop.previtem and loop.previtem.role != "tool" %}
133
+ {{- '<|im_start|>user' }}
134
+ {%- endif %}
135
+ {{- '\n<tool_response>\n' }}
136
+ {{- content }}
137
+ {{- '\n</tool_response>' }}
138
+ {%- if not loop.last and loop.nextitem.role != "tool" %}
139
+ {{- '<|im_end|>\n' }}
140
+ {%- elif loop.last %}
141
+ {{- '<|im_end|>\n' }}
142
+ {%- endif %}
143
+ {%- else %}
144
+ {{- raise_exception('Unexpected message role.') }}
145
+ {%- endif %}
146
+ {%- endfor %}
147
+ {%- if add_generation_prompt %}
148
+ {{- '<|im_start|>assistant\n' }}
149
+ {%- if enable_thinking is defined and enable_thinking is false %}
150
+ {{- '<think>\n\n</think>\n\n' }}
151
+ {%- else %}
152
+ {{- '<think>\n' }}
153
+ {%- endif %}
154
+ {%- endif %}
config.json ADDED
@@ -0,0 +1,83 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architectures": [
3
+ "Qwen3_5ForCausalLM"
4
+ ],
5
+ "attention_bias": false,
6
+ "attention_dropout": 0.0,
7
+ "attn_output_gate": true,
8
+ "bos_token_id": null,
9
+ "dtype": "bfloat16",
10
+ "eos_token_id": 248044,
11
+ "full_attention_interval": 4,
12
+ "head_dim": 256,
13
+ "hidden_act": "silu",
14
+ "hidden_size": 2560,
15
+ "initializer_range": 0.02,
16
+ "intermediate_size": 9216,
17
+ "layer_types": [
18
+ "linear_attention",
19
+ "linear_attention",
20
+ "linear_attention",
21
+ "full_attention",
22
+ "linear_attention",
23
+ "linear_attention",
24
+ "linear_attention",
25
+ "full_attention",
26
+ "linear_attention",
27
+ "linear_attention",
28
+ "linear_attention",
29
+ "full_attention",
30
+ "linear_attention",
31
+ "linear_attention",
32
+ "linear_attention",
33
+ "full_attention",
34
+ "linear_attention",
35
+ "linear_attention",
36
+ "linear_attention",
37
+ "full_attention",
38
+ "linear_attention",
39
+ "linear_attention",
40
+ "linear_attention",
41
+ "full_attention",
42
+ "linear_attention",
43
+ "linear_attention",
44
+ "linear_attention",
45
+ "full_attention",
46
+ "linear_attention",
47
+ "linear_attention",
48
+ "linear_attention",
49
+ "full_attention"
50
+ ],
51
+ "linear_conv_kernel_dim": 4,
52
+ "linear_key_head_dim": 128,
53
+ "linear_num_key_heads": 16,
54
+ "linear_num_value_heads": 32,
55
+ "linear_value_head_dim": 128,
56
+ "mamba_ssm_dtype": "float32",
57
+ "max_position_embeddings": 262144,
58
+ "mlp_only_layers": [],
59
+ "model_type": "qwen3_5_text",
60
+ "mtp_num_hidden_layers": 1,
61
+ "mtp_use_dedicated_embeddings": false,
62
+ "num_attention_heads": 16,
63
+ "num_hidden_layers": 32,
64
+ "num_key_value_heads": 4,
65
+ "pad_token_id": null,
66
+ "partial_rotary_factor": 0.25,
67
+ "rms_norm_eps": 1e-06,
68
+ "rope_parameters": {
69
+ "mrope_interleaved": true,
70
+ "mrope_section": [
71
+ 11,
72
+ 11,
73
+ 10
74
+ ],
75
+ "partial_rotary_factor": 0.25,
76
+ "rope_theta": 10000000,
77
+ "rope_type": "default"
78
+ },
79
+ "tie_word_embeddings": true,
80
+ "transformers_version": "5.17.0",
81
+ "use_cache": true,
82
+ "vocab_size": 248320
83
+ }
eval/decision-index-0.1-full.json ADDED
@@ -0,0 +1,1080 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "engine": "blink-4b",
3
+ "generated_utc": "2026-09-24T09:01:21+00:00",
4
+ "suite": {
5
+ "requests": 132422,
6
+ "scoreable": 131980,
7
+ "excluded": 442,
8
+ "benchmarks": 37,
9
+ "rows_sha256": "750d353a3a83af615c67cfe9752e005bf09e6c28d9c4ba28d3a9f57ba8536cfd"
10
+ },
11
+ "completed": 132422,
12
+ "complete": true,
13
+ "counts": {
14
+ "ok": 132422
15
+ },
16
+ "latency_ms": {
17
+ "median": 33.4,
18
+ "p95": 765.3,
19
+ "mean": 169.5
20
+ },
21
+ "decision_index": 52.12,
22
+ "scores": {
23
+ "balanced_raw": 52.12,
24
+ "balanced_skill": 36.04,
25
+ "breadth_skill": 34.18
26
+ },
27
+ "areas": [
28
+ {
29
+ "id": "knowledge",
30
+ "label": "Knowledge & Reasoning",
31
+ "raw": 0.4907,
32
+ "skill": 0.3016,
33
+ "coverage": 1.0,
34
+ "pending": 0.0,
35
+ "n": 6,
36
+ "benchmarks": [
37
+ 24,
38
+ 25,
39
+ 30,
40
+ 43,
41
+ 44,
42
+ 31
43
+ ]
44
+ },
45
+ {
46
+ "id": "language",
47
+ "label": "Language Understanding",
48
+ "raw": 0.6101,
49
+ "skill": 0.4585,
50
+ "coverage": 1.0,
51
+ "pending": 0.0,
52
+ "n": 3,
53
+ "benchmarks": [
54
+ 11,
55
+ 40,
56
+ 41
57
+ ]
58
+ },
59
+ {
60
+ "id": "retrieval",
61
+ "label": "Retrieval & Classification",
62
+ "raw": 0.3015,
63
+ "skill": 0.2099,
64
+ "coverage": 1.0,
65
+ "pending": 0.0,
66
+ "n": 2,
67
+ "benchmarks": [
68
+ 36,
69
+ 37
70
+ ]
71
+ },
72
+ {
73
+ "id": "tools",
74
+ "label": "Tools & Automation",
75
+ "raw": 0.702,
76
+ "skill": 0.5754,
77
+ "coverage": 1.0,
78
+ "pending": 0.0,
79
+ "n": 3,
80
+ "benchmarks": [
81
+ 1,
82
+ 2,
83
+ 6
84
+ ]
85
+ },
86
+ {
87
+ "id": "arts",
88
+ "label": "Arts & Human Judgment",
89
+ "raw": 0.5019,
90
+ "skill": 0.2566,
91
+ "coverage": 1.0,
92
+ "pending": 0.0,
93
+ "n": 5,
94
+ "benchmarks": [
95
+ 20,
96
+ 21,
97
+ 22,
98
+ 23,
99
+ 50
100
+ ]
101
+ }
102
+ ],
103
+ "index_benchmarks": {
104
+ "1": {
105
+ "raw": 0.9032,
106
+ "skill": 0.8693,
107
+ "coverage": 1.0,
108
+ "pending": 0.0,
109
+ "random": 0.2592,
110
+ "tracks": [],
111
+ "in_index": true
112
+ },
113
+ "2": {
114
+ "raw": 0.4122,
115
+ "skill": 0.3517,
116
+ "coverage": 1.0,
117
+ "pending": 0.0,
118
+ "random": 0.0933,
119
+ "tracks": [],
120
+ "in_index": true
121
+ },
122
+ "6": {
123
+ "raw": 0.7905,
124
+ "skill": 0.5052,
125
+ "coverage": 1.0,
126
+ "pending": 0.0,
127
+ "random": 0.5245,
128
+ "tracks": [
129
+ {
130
+ "track": "RouterBench-0shot",
131
+ "score": 0.7797,
132
+ "headline": false
133
+ },
134
+ {
135
+ "track": "RouterBench-5shot",
136
+ "score": 0.8014,
137
+ "headline": false
138
+ }
139
+ ],
140
+ "in_index": true
141
+ },
142
+ "7": {
143
+ "raw": 0.0,
144
+ "skill": 0.0,
145
+ "coverage": 0.0,
146
+ "pending": 1.0,
147
+ "random": null,
148
+ "tracks": [],
149
+ "in_index": false
150
+ },
151
+ "11": {
152
+ "raw": 0.7612,
153
+ "skill": 0.6547,
154
+ "coverage": 1.0,
155
+ "pending": 0.0,
156
+ "random": 0.3085,
157
+ "tracks": [],
158
+ "in_index": true
159
+ },
160
+ "13": {
161
+ "raw": 0.0,
162
+ "skill": 0.0,
163
+ "coverage": 0.0,
164
+ "pending": 1.0,
165
+ "random": null,
166
+ "tracks": [],
167
+ "in_index": false
168
+ },
169
+ "15": {
170
+ "raw": 0.0,
171
+ "skill": 0.0,
172
+ "coverage": 0.0,
173
+ "pending": 1.0,
174
+ "random": null,
175
+ "tracks": [],
176
+ "in_index": false
177
+ },
178
+ "16": {
179
+ "raw": 0.0,
180
+ "skill": 0.0,
181
+ "coverage": 0.0,
182
+ "pending": 1.0,
183
+ "random": null,
184
+ "tracks": [],
185
+ "in_index": false
186
+ },
187
+ "17": {
188
+ "raw": 0.0,
189
+ "skill": 0.0,
190
+ "coverage": 0.0,
191
+ "pending": 1.0,
192
+ "random": null,
193
+ "tracks": [],
194
+ "in_index": false
195
+ },
196
+ "19": {
197
+ "raw": 0.0,
198
+ "skill": 0.0,
199
+ "coverage": 0.0,
200
+ "pending": 1.0,
201
+ "random": null,
202
+ "tracks": [],
203
+ "in_index": false
204
+ },
205
+ "20": {
206
+ "raw": 0.8467,
207
+ "skill": 0.6933,
208
+ "coverage": 1.0,
209
+ "pending": 0.0,
210
+ "random": 0.5,
211
+ "tracks": [],
212
+ "in_index": true
213
+ },
214
+ "21": {
215
+ "raw": 0.6054,
216
+ "skill": 0.2108,
217
+ "coverage": 1.0,
218
+ "pending": 0.0,
219
+ "random": 0.5,
220
+ "tracks": [],
221
+ "in_index": true
222
+ },
223
+ "22": {
224
+ "raw": 0.0338,
225
+ "skill": 0.0262,
226
+ "coverage": 1.0,
227
+ "pending": 0.0,
228
+ "random": 0.0078,
229
+ "tracks": [],
230
+ "in_index": true
231
+ },
232
+ "23": {
233
+ "raw": 0.5808,
234
+ "skill": 0.1616,
235
+ "coverage": 1.0,
236
+ "pending": 0.0,
237
+ "random": 0.5,
238
+ "tracks": [],
239
+ "in_index": true
240
+ },
241
+ "24": {
242
+ "raw": 0.7491,
243
+ "skill": 0.6655,
244
+ "coverage": 1.0,
245
+ "pending": 0.0,
246
+ "random": 0.25,
247
+ "tracks": [],
248
+ "in_index": true
249
+ },
250
+ "25": {
251
+ "raw": 0.3724,
252
+ "skill": 0.1633,
253
+ "coverage": 1.0,
254
+ "pending": 0.0,
255
+ "random": 0.25,
256
+ "tracks": [],
257
+ "in_index": true
258
+ },
259
+ "30": {
260
+ "raw": 0.5788,
261
+ "skill": 0.4872,
262
+ "coverage": 1.0,
263
+ "pending": 0.0,
264
+ "random": 0.25,
265
+ "tracks": [
266
+ {
267
+ "track": "GSM8K-4choice",
268
+ "score": 0.5967,
269
+ "headline": false
270
+ },
271
+ {
272
+ "track": "GSM8K-10choice",
273
+ "score": 0.561,
274
+ "headline": false
275
+ }
276
+ ],
277
+ "in_index": true
278
+ },
279
+ "31": {
280
+ "raw": 0.1348,
281
+ "skill": 0.0577,
282
+ "coverage": 1.0,
283
+ "pending": 0.0,
284
+ "random": 0.0819,
285
+ "tracks": [],
286
+ "in_index": true
287
+ },
288
+ "36": {
289
+ "raw": 0.172,
290
+ "skill": 0.1335,
291
+ "coverage": 1.0,
292
+ "pending": 0.0,
293
+ "random": 0.0444,
294
+ "tracks": [],
295
+ "in_index": true
296
+ },
297
+ "37": {
298
+ "raw": 0.4309,
299
+ "skill": 0.2862,
300
+ "coverage": 1.0,
301
+ "pending": 0.0,
302
+ "random": 0.2027,
303
+ "tracks": [],
304
+ "in_index": true
305
+ },
306
+ "40": {
307
+ "raw": 0.4523,
308
+ "skill": 0.2953,
309
+ "coverage": 1.0,
310
+ "pending": 0.0,
311
+ "random": 0.2227,
312
+ "tracks": [
313
+ {
314
+ "track": "A \u00b7 Arabic",
315
+ "score": 0.313,
316
+ "headline": false
317
+ },
318
+ {
319
+ "track": "A \u00b7 English",
320
+ "score": 0.4523,
321
+ "headline": true
322
+ },
323
+ {
324
+ "track": "C \u00b7 Arabic pairs",
325
+ "score": 0.645,
326
+ "headline": false
327
+ },
328
+ {
329
+ "track": "C \u00b7 English pairs",
330
+ "score": 0.915,
331
+ "headline": false
332
+ }
333
+ ],
334
+ "in_index": true
335
+ },
336
+ "41": {
337
+ "raw": 0.6169,
338
+ "skill": 0.4254,
339
+ "coverage": 1.0,
340
+ "pending": 0.0,
341
+ "random": 0.3333,
342
+ "tracks": [],
343
+ "in_index": true
344
+ },
345
+ "43": {
346
+ "raw": 0.4719,
347
+ "skill": 0.1622,
348
+ "coverage": 1.0,
349
+ "pending": 0.0,
350
+ "random": 0.3697,
351
+ "tracks": [],
352
+ "in_index": true
353
+ },
354
+ "44": {
355
+ "raw": 0.6368,
356
+ "skill": 0.2736,
357
+ "coverage": 1.0,
358
+ "pending": 0.0,
359
+ "random": 0.5,
360
+ "tracks": [],
361
+ "in_index": true
362
+ },
363
+ "50": {
364
+ "raw": 0.4427,
365
+ "skill": 0.1912,
366
+ "coverage": 1.0,
367
+ "pending": 0.0,
368
+ "random": 0.311,
369
+ "tracks": [],
370
+ "in_index": true
371
+ }
372
+ },
373
+ "benchmarks": {
374
+ "1": {
375
+ "catalog_id": 1,
376
+ "dataset": "BFCL",
377
+ "requests": 1694,
378
+ "answered": 1694,
379
+ "unsupported": 0,
380
+ "errors": 0,
381
+ "abstained": 0,
382
+ "pending": 0,
383
+ "scored_requests": 1694,
384
+ "metric": "case exact accuracy",
385
+ "score": 0.9032,
386
+ "reference_same_cases": null,
387
+ "median_ms": 94.5,
388
+ "in_index": true
389
+ },
390
+ "2": {
391
+ "catalog_id": 2,
392
+ "dataset": "ToolRet",
393
+ "requests": 7704,
394
+ "answered": 7704,
395
+ "unsupported": 0,
396
+ "errors": 0,
397
+ "abstained": 0,
398
+ "pending": 0,
399
+ "scored_requests": 7704,
400
+ "metric": "nDCG@10",
401
+ "score": 0.4122,
402
+ "reference_same_cases": null,
403
+ "median_ms": 807.3,
404
+ "in_index": true
405
+ },
406
+ "3": {
407
+ "catalog_id": 3,
408
+ "dataset": "API-Bank",
409
+ "requests": 508,
410
+ "answered": 508,
411
+ "unsupported": 0,
412
+ "errors": 0,
413
+ "abstained": 0,
414
+ "pending": 0,
415
+ "scored_requests": 508,
416
+ "metric": "accuracy",
417
+ "score": 0.748,
418
+ "reference_same_cases": null,
419
+ "median_ms": 425.6,
420
+ "in_index": false
421
+ },
422
+ "4": {
423
+ "catalog_id": 4,
424
+ "dataset": "BANKING77",
425
+ "requests": 3080,
426
+ "answered": 3080,
427
+ "unsupported": 0,
428
+ "errors": 0,
429
+ "abstained": 0,
430
+ "pending": 0,
431
+ "scored_requests": 3080,
432
+ "metric": "macro-F1",
433
+ "score": 0.7149,
434
+ "reference_same_cases": null,
435
+ "median_ms": 68.5,
436
+ "in_index": false
437
+ },
438
+ "5": {
439
+ "catalog_id": 5,
440
+ "dataset": "CLINC150+OOS",
441
+ "requests": 5500,
442
+ "answered": 5500,
443
+ "unsupported": 0,
444
+ "errors": 0,
445
+ "abstained": 0,
446
+ "pending": 0,
447
+ "scored_requests": 5500,
448
+ "metric": "macro-F1",
449
+ "score": 0.7391,
450
+ "reference_same_cases": null,
451
+ "median_ms": 115.0,
452
+ "in_index": false
453
+ },
454
+ "6": {
455
+ "catalog_id": 6,
456
+ "dataset": "RouterBench",
457
+ "requests": 10000,
458
+ "answered": 10000,
459
+ "unsupported": 0,
460
+ "errors": 0,
461
+ "abstained": 0,
462
+ "pending": 0,
463
+ "scored_requests": 10000,
464
+ "metric": "selected quality (quality objective)",
465
+ "score": 0.7905,
466
+ "reference_same_cases": null,
467
+ "median_ms": 262.7,
468
+ "tracks": {
469
+ "RouterBench-0shot": {
470
+ "metric": "selected quality (quality objective)",
471
+ "score": 0.7797121726963822,
472
+ "scored_requests": 5003
473
+ },
474
+ "RouterBench-5shot": {
475
+ "metric": "selected quality (quality objective)",
476
+ "score": 0.801360816489894,
477
+ "scored_requests": 4997
478
+ }
479
+ },
480
+ "in_index": true
481
+ },
482
+ "9": {
483
+ "catalog_id": 9,
484
+ "dataset": "Home appliance simulator",
485
+ "requests": 160,
486
+ "answered": 160,
487
+ "unsupported": 0,
488
+ "errors": 0,
489
+ "abstained": 0,
490
+ "pending": 0,
491
+ "scored_requests": 160,
492
+ "metric": "case exact accuracy",
493
+ "score": 0.1187,
494
+ "reference_same_cases": null,
495
+ "median_ms": 1148.5,
496
+ "in_index": false
497
+ },
498
+ "10": {
499
+ "catalog_id": 10,
500
+ "dataset": "SGD/SGD-X",
501
+ "requests": 2500,
502
+ "answered": 2500,
503
+ "unsupported": 0,
504
+ "errors": 0,
505
+ "abstained": 0,
506
+ "pending": 0,
507
+ "scored_requests": 2500,
508
+ "metric": "macro-F1",
509
+ "score": 0.5004,
510
+ "reference_same_cases": null,
511
+ "median_ms": 71.5,
512
+ "in_index": false
513
+ },
514
+ "11": {
515
+ "catalog_id": 11,
516
+ "dataset": "ContractNLI",
517
+ "requests": 123,
518
+ "answered": 123,
519
+ "unsupported": 0,
520
+ "errors": 0,
521
+ "abstained": 0,
522
+ "pending": 0,
523
+ "scored_requests": 123,
524
+ "metric": "macro-F1",
525
+ "score": 0.7612,
526
+ "reference_same_cases": null,
527
+ "median_ms": 1993.0,
528
+ "in_index": true
529
+ },
530
+ "12": {
531
+ "catalog_id": 12,
532
+ "dataset": "ANLI",
533
+ "requests": 3200,
534
+ "answered": 3200,
535
+ "unsupported": 0,
536
+ "errors": 0,
537
+ "abstained": 0,
538
+ "pending": 0,
539
+ "scored_requests": 3200,
540
+ "metric": "macro-F1",
541
+ "score": 0.6012,
542
+ "reference_same_cases": null,
543
+ "median_ms": 13.0,
544
+ "in_index": false
545
+ },
546
+ "20": {
547
+ "catalog_id": 20,
548
+ "dataset": "BPoMP",
549
+ "requests": 5000,
550
+ "answered": 5000,
551
+ "unsupported": 0,
552
+ "errors": 0,
553
+ "abstained": 0,
554
+ "pending": 0,
555
+ "scored_requests": 5000,
556
+ "metric": "accuracy",
557
+ "score": 0.8456,
558
+ "reference_same_cases": null,
559
+ "median_ms": 12.5,
560
+ "in_index": true
561
+ },
562
+ "21": {
563
+ "catalog_id": 21,
564
+ "dataset": "Humicroedit",
565
+ "requests": 2628,
566
+ "answered": 2628,
567
+ "unsupported": 0,
568
+ "errors": 0,
569
+ "abstained": 0,
570
+ "pending": 0,
571
+ "scored_requests": 2628,
572
+ "metric": "accuracy",
573
+ "score": 0.6054,
574
+ "reference_same_cases": null,
575
+ "median_ms": 8.0,
576
+ "in_index": true
577
+ },
578
+ "22": {
579
+ "catalog_id": 22,
580
+ "dataset": "POP909-CL",
581
+ "requests": 2000,
582
+ "answered": 2000,
583
+ "unsupported": 0,
584
+ "errors": 0,
585
+ "abstained": 0,
586
+ "pending": 0,
587
+ "scored_requests": 2000,
588
+ "metric": "accuracy",
589
+ "score": 0.036,
590
+ "reference_same_cases": null,
591
+ "median_ms": 571.6,
592
+ "in_index": true
593
+ },
594
+ "23": {
595
+ "catalog_id": 23,
596
+ "dataset": "cfcolor",
597
+ "requests": 5000,
598
+ "answered": 5000,
599
+ "unsupported": 0,
600
+ "errors": 0,
601
+ "abstained": 0,
602
+ "pending": 0,
603
+ "scored_requests": 5000,
604
+ "metric": "accuracy",
605
+ "score": 0.6016,
606
+ "reference_same_cases": null,
607
+ "median_ms": 33.4,
608
+ "in_index": true
609
+ },
610
+ "24": {
611
+ "catalog_id": 24,
612
+ "dataset": "MMLU",
613
+ "requests": 14033,
614
+ "answered": 14033,
615
+ "unsupported": 0,
616
+ "errors": 0,
617
+ "abstained": 0,
618
+ "pending": 0,
619
+ "scored_requests": 14033,
620
+ "metric": "accuracy",
621
+ "score": 0.7375,
622
+ "reference_same_cases": null,
623
+ "median_ms": 13.0,
624
+ "in_index": true
625
+ },
626
+ "25": {
627
+ "catalog_id": 25,
628
+ "dataset": "GPQA Diamond",
629
+ "requests": 196,
630
+ "answered": 196,
631
+ "unsupported": 0,
632
+ "errors": 0,
633
+ "abstained": 0,
634
+ "pending": 0,
635
+ "scored_requests": 196,
636
+ "metric": "accuracy",
637
+ "score": 0.3724,
638
+ "reference_same_cases": null,
639
+ "median_ms": 23.5,
640
+ "in_index": true
641
+ },
642
+ "26": {
643
+ "catalog_id": 26,
644
+ "dataset": "ARC-Easy",
645
+ "requests": 2376,
646
+ "answered": 2376,
647
+ "unsupported": 0,
648
+ "errors": 0,
649
+ "abstained": 0,
650
+ "pending": 0,
651
+ "scored_requests": 2376,
652
+ "metric": "accuracy",
653
+ "score": 0.9769,
654
+ "reference_same_cases": null,
655
+ "median_ms": 12.3,
656
+ "in_index": false
657
+ },
658
+ "27": {
659
+ "catalog_id": 27,
660
+ "dataset": "ARC-Challenge",
661
+ "requests": 1172,
662
+ "answered": 1172,
663
+ "unsupported": 0,
664
+ "errors": 0,
665
+ "abstained": 0,
666
+ "pending": 0,
667
+ "scored_requests": 1172,
668
+ "metric": "accuracy",
669
+ "score": 0.9275,
670
+ "reference_same_cases": null,
671
+ "median_ms": 12.1,
672
+ "in_index": false
673
+ },
674
+ "28": {
675
+ "catalog_id": 28,
676
+ "dataset": "WinoGrande",
677
+ "requests": 1267,
678
+ "answered": 1267,
679
+ "unsupported": 0,
680
+ "errors": 0,
681
+ "abstained": 0,
682
+ "pending": 0,
683
+ "scored_requests": 1267,
684
+ "metric": "accuracy",
685
+ "score": 0.7032,
686
+ "reference_same_cases": null,
687
+ "median_ms": 8.4,
688
+ "in_index": false
689
+ },
690
+ "29": {
691
+ "catalog_id": 29,
692
+ "dataset": "HellaSwag",
693
+ "requests": 10042,
694
+ "answered": 10042,
695
+ "unsupported": 0,
696
+ "errors": 0,
697
+ "abstained": 0,
698
+ "pending": 0,
699
+ "scored_requests": 10042,
700
+ "metric": "accuracy",
701
+ "score": 0.8194,
702
+ "reference_same_cases": null,
703
+ "median_ms": 18.6,
704
+ "in_index": false
705
+ },
706
+ "30": {
707
+ "catalog_id": 30,
708
+ "dataset": "GSM8K",
709
+ "requests": 2638,
710
+ "answered": 2638,
711
+ "unsupported": 0,
712
+ "errors": 0,
713
+ "abstained": 0,
714
+ "pending": 0,
715
+ "scored_requests": 2638,
716
+ "metric": "accuracy",
717
+ "score": 0.5788,
718
+ "reference_same_cases": null,
719
+ "median_ms": 16.4,
720
+ "tracks": {
721
+ "GSM8K-10choice": {
722
+ "metric": "accuracy",
723
+ "score": 0.5610310841546626,
724
+ "scored_requests": 1319
725
+ },
726
+ "GSM8K-4choice": {
727
+ "metric": "accuracy",
728
+ "score": 0.5966641394996209,
729
+ "scored_requests": 1319
730
+ }
731
+ },
732
+ "in_index": true
733
+ },
734
+ "31": {
735
+ "catalog_id": 31,
736
+ "dataset": "ChessBench",
737
+ "requests": 5000,
738
+ "answered": 5000,
739
+ "unsupported": 0,
740
+ "errors": 0,
741
+ "abstained": 0,
742
+ "pending": 0,
743
+ "scored_requests": 5000,
744
+ "metric": "accuracy",
745
+ "score": 0.1348,
746
+ "reference_same_cases": null,
747
+ "median_ms": 88.3,
748
+ "in_index": true
749
+ },
750
+ "32": {
751
+ "catalog_id": 32,
752
+ "dataset": "MuSR",
753
+ "requests": 752,
754
+ "answered": 752,
755
+ "unsupported": 0,
756
+ "errors": 0,
757
+ "abstained": 0,
758
+ "pending": 0,
759
+ "scored_requests": 752,
760
+ "metric": "accuracy",
761
+ "score": 0.5678,
762
+ "reference_same_cases": null,
763
+ "median_ms": 61.7,
764
+ "in_index": false
765
+ },
766
+ "33": {
767
+ "catalog_id": 33,
768
+ "dataset": "SATA-Bench",
769
+ "requests": 1650,
770
+ "answered": 1650,
771
+ "unsupported": 0,
772
+ "errors": 0,
773
+ "abstained": 0,
774
+ "pending": 0,
775
+ "scored_requests": 1650,
776
+ "metric": "case exact accuracy",
777
+ "score": 0.2594,
778
+ "reference_same_cases": null,
779
+ "median_ms": 213.7,
780
+ "in_index": false
781
+ },
782
+ "34": {
783
+ "catalog_id": 34,
784
+ "dataset": "SimpleBench",
785
+ "requests": 10,
786
+ "answered": 10,
787
+ "unsupported": 0,
788
+ "errors": 0,
789
+ "abstained": 0,
790
+ "pending": 0,
791
+ "scored_requests": 10,
792
+ "metric": "accuracy",
793
+ "score": 0.1,
794
+ "reference_same_cases": null,
795
+ "median_ms": 14.3,
796
+ "in_index": false
797
+ },
798
+ "36": {
799
+ "catalog_id": 36,
800
+ "dataset": "BRIGHT",
801
+ "requests": 1297,
802
+ "answered": 1297,
803
+ "unsupported": 0,
804
+ "errors": 0,
805
+ "abstained": 0,
806
+ "pending": 0,
807
+ "scored_requests": 1297,
808
+ "metric": "nDCG@10",
809
+ "score": 0.172,
810
+ "reference_same_cases": null,
811
+ "median_ms": 1014.7,
812
+ "in_index": true
813
+ },
814
+ "37": {
815
+ "catalog_id": 37,
816
+ "dataset": "Amazon ESCI",
817
+ "requests": 5000,
818
+ "answered": 5000,
819
+ "unsupported": 0,
820
+ "errors": 0,
821
+ "abstained": 0,
822
+ "pending": 0,
823
+ "scored_requests": 5000,
824
+ "metric": "macro-F1",
825
+ "score": 0.4309,
826
+ "reference_same_cases": null,
827
+ "median_ms": 26.6,
828
+ "in_index": true
829
+ },
830
+ "38": {
831
+ "catalog_id": 38,
832
+ "dataset": "ACOS",
833
+ "requests": 5479,
834
+ "answered": 5479,
835
+ "unsupported": 0,
836
+ "errors": 0,
837
+ "abstained": 0,
838
+ "pending": 0,
839
+ "scored_requests": 5479,
840
+ "metric": "case exact accuracy",
841
+ "score": 0.015,
842
+ "reference_same_cases": null,
843
+ "median_ms": 669.4,
844
+ "in_index": false
845
+ },
846
+ "39": {
847
+ "catalog_id": 39,
848
+ "dataset": "FinEntity",
849
+ "requests": 979,
850
+ "answered": 979,
851
+ "unsupported": 0,
852
+ "errors": 0,
853
+ "abstained": 0,
854
+ "pending": 0,
855
+ "scored_requests": 979,
856
+ "metric": "macro-F1",
857
+ "score": 0.8603,
858
+ "reference_same_cases": null,
859
+ "median_ms": 24.9,
860
+ "in_index": false
861
+ },
862
+ "40": {
863
+ "catalog_id": 40,
864
+ "dataset": "iSarcasmEval",
865
+ "requests": 4600,
866
+ "answered": 4600,
867
+ "unsupported": 0,
868
+ "errors": 0,
869
+ "abstained": 0,
870
+ "pending": 0,
871
+ "scored_requests": 4600,
872
+ "metric": "Sarcasm F1 \u00b7 track A, English",
873
+ "score": 0.4523,
874
+ "reference_same_cases": null,
875
+ "median_ms": 8.6,
876
+ "tracks": [
877
+ {
878
+ "track": "A \u00b7 Arabic",
879
+ "score": 0.313,
880
+ "headline": false
881
+ },
882
+ {
883
+ "track": "A \u00b7 English",
884
+ "score": 0.4523,
885
+ "headline": true
886
+ },
887
+ {
888
+ "track": "C \u00b7 Arabic pairs",
889
+ "score": 0.645,
890
+ "headline": false
891
+ },
892
+ {
893
+ "track": "C \u00b7 English pairs",
894
+ "score": 0.915,
895
+ "headline": false
896
+ }
897
+ ],
898
+ "in_index": true
899
+ },
900
+ "41": {
901
+ "catalog_id": 41,
902
+ "dataset": "VAST",
903
+ "requests": 3006,
904
+ "answered": 3006,
905
+ "unsupported": 0,
906
+ "errors": 0,
907
+ "abstained": 0,
908
+ "pending": 0,
909
+ "scored_requests": 3006,
910
+ "metric": "macro-F1",
911
+ "score": 0.6169,
912
+ "reference_same_cases": null,
913
+ "median_ms": 14.9,
914
+ "in_index": true
915
+ },
916
+ "42": {
917
+ "catalog_id": 42,
918
+ "dataset": "NLI4CT",
919
+ "requests": 5500,
920
+ "answered": 5500,
921
+ "unsupported": 0,
922
+ "errors": 0,
923
+ "abstained": 0,
924
+ "pending": 0,
925
+ "scored_requests": 5500,
926
+ "metric": "macro-F1",
927
+ "score": 0.7618,
928
+ "reference_same_cases": null,
929
+ "median_ms": 37.0,
930
+ "in_index": false
931
+ },
932
+ "43": {
933
+ "catalog_id": 43,
934
+ "dataset": "CRUXEval",
935
+ "requests": 570,
936
+ "answered": 570,
937
+ "unsupported": 0,
938
+ "errors": 0,
939
+ "abstained": 0,
940
+ "pending": 0,
941
+ "scored_requests": 570,
942
+ "metric": "accuracy",
943
+ "score": 0.4719,
944
+ "reference_same_cases": null,
945
+ "median_ms": 13.7,
946
+ "in_index": true
947
+ },
948
+ "44": {
949
+ "catalog_id": 44,
950
+ "dataset": "CLadder",
951
+ "requests": 5000,
952
+ "answered": 5000,
953
+ "unsupported": 0,
954
+ "errors": 0,
955
+ "abstained": 0,
956
+ "pending": 0,
957
+ "scored_requests": 5000,
958
+ "metric": "accuracy",
959
+ "score": 0.6368,
960
+ "reference_same_cases": null,
961
+ "median_ms": 13.7,
962
+ "in_index": true
963
+ },
964
+ "45": {
965
+ "catalog_id": 45,
966
+ "dataset": "HLE",
967
+ "requests": 501,
968
+ "answered": 501,
969
+ "unsupported": 0,
970
+ "errors": 0,
971
+ "abstained": 0,
972
+ "pending": 0,
973
+ "scored_requests": 501,
974
+ "metric": "accuracy",
975
+ "score": 0.1297,
976
+ "reference_same_cases": null,
977
+ "median_ms": 22.6,
978
+ "in_index": false
979
+ },
980
+ "48": {
981
+ "catalog_id": 48,
982
+ "dataset": "ForecastBench",
983
+ "requests": 10139,
984
+ "answered": 10139,
985
+ "unsupported": 0,
986
+ "errors": 0,
987
+ "abstained": 0,
988
+ "pending": 0,
989
+ "scored_requests": 10139,
990
+ "metric": "Brier (lower is better)",
991
+ "score": 0.2172,
992
+ "reference_same_cases": null,
993
+ "median_ms": 49.3,
994
+ "in_index": false
995
+ },
996
+ "50": {
997
+ "catalog_id": 50,
998
+ "dataset": "Habermas Machine",
999
+ "requests": 1676,
1000
+ "answered": 1676,
1001
+ "unsupported": 0,
1002
+ "errors": 0,
1003
+ "abstained": 0,
1004
+ "pending": 0,
1005
+ "scored_requests": 1676,
1006
+ "metric": "accuracy",
1007
+ "score": 0.4427,
1008
+ "reference_same_cases": null,
1009
+ "median_ms": 55.1,
1010
+ "in_index": true
1011
+ }
1012
+ },
1013
+ "frozen_panel": {
1014
+ "scores": {
1015
+ "balanced_raw": 40.49,
1016
+ "balanced_skill": 26.81,
1017
+ "breadth_skill": 23.02
1018
+ },
1019
+ "categories": [
1020
+ {
1021
+ "id": "knowledge",
1022
+ "raw": 0.5618,
1023
+ "skill": 0.3504,
1024
+ "coverage": 1.0,
1025
+ "pending": 0.0
1026
+ },
1027
+ {
1028
+ "id": "language",
1029
+ "raw": 0.5125,
1030
+ "skill": 0.3766,
1031
+ "coverage": 1.0,
1032
+ "pending": 0.0
1033
+ },
1034
+ {
1035
+ "id": "tools",
1036
+ "raw": 0.4212,
1037
+ "skill": 0.3453,
1038
+ "coverage": 0.6,
1039
+ "pending": 0.4
1040
+ },
1041
+ {
1042
+ "id": "games",
1043
+ "raw": 0.027,
1044
+ "skill": 0.0115,
1045
+ "coverage": 0.2,
1046
+ "pending": 0.8
1047
+ },
1048
+ {
1049
+ "id": "arts",
1050
+ "raw": 0.5019,
1051
+ "skill": 0.2566,
1052
+ "coverage": 1.0,
1053
+ "pending": 0.0
1054
+ }
1055
+ ],
1056
+ "coverage": 0.76,
1057
+ "pending": 0.24,
1058
+ "note": "25-benchmark frozen panel with the six interactive benchmarks scored as zero (provisional lower bound); not the headline index."
1059
+ },
1060
+ "formulas": [
1061
+ {
1062
+ "id": "balanced_raw",
1063
+ "normalization": "raw",
1064
+ "formula": "100*sum_c(0.2*category[c])"
1065
+ },
1066
+ {
1067
+ "id": "balanced_skill",
1068
+ "normalization": "skill",
1069
+ "formula": "100*sum_c(0.2*category[c])"
1070
+ },
1071
+ {
1072
+ "id": "breadth_skill",
1073
+ "normalization": "skill",
1074
+ "shift": 0.1,
1075
+ "formula": "100*(product_c((0.1+0.9*category[c])**0.2)-0.1)/0.9"
1076
+ }
1077
+ ],
1078
+ "panel_id": "core25-observed-protocol-v1",
1079
+ "edition": "Decision Index 0.1 (archived 19-benchmark edition)"
1080
+ }
eval/decision-index-0.1-minus-dis.json ADDED
@@ -0,0 +1,1070 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "engine": "blink-4b",
3
+ "generated_utc": "2026-09-24T09:01:59+00:00",
4
+ "suite": {
5
+ "requests": 132422,
6
+ "scoreable": 131980,
7
+ "excluded": 442,
8
+ "benchmarks": 37,
9
+ "rows_sha256": "750d353a3a83af615c67cfe9752e005bf09e6c28d9c4ba28d3a9f57ba8536cfd"
10
+ },
11
+ "completed": 132422,
12
+ "complete": true,
13
+ "counts": {
14
+ "ok": 132422
15
+ },
16
+ "latency_ms": {
17
+ "median": 33.4,
18
+ "p95": 765.3,
19
+ "mean": 169.5
20
+ },
21
+ "decision_index": 52.29,
22
+ "scores": {
23
+ "balanced_raw": 52.29,
24
+ "balanced_skill": 36.28,
25
+ "breadth_skill": 34.4
26
+ },
27
+ "areas": [
28
+ {
29
+ "id": "knowledge",
30
+ "label": "Knowledge & Reasoning",
31
+ "raw": 0.4935,
32
+ "skill": 0.3056,
33
+ "coverage": 1.0,
34
+ "pending": 0.0,
35
+ "n": 6,
36
+ "benchmarks": [
37
+ 24,
38
+ 25,
39
+ 30,
40
+ 43,
41
+ 44,
42
+ 31
43
+ ]
44
+ },
45
+ {
46
+ "id": "language",
47
+ "label": "Language Understanding",
48
+ "raw": 0.6154,
49
+ "skill": 0.4657,
50
+ "coverage": 1.0,
51
+ "pending": 0.0,
52
+ "n": 3,
53
+ "benchmarks": [
54
+ 11,
55
+ 40,
56
+ 41
57
+ ]
58
+ },
59
+ {
60
+ "id": "retrieval",
61
+ "label": "Retrieval & Classification",
62
+ "raw": 0.301,
63
+ "skill": 0.2094,
64
+ "coverage": 1.0,
65
+ "pending": 0.0,
66
+ "n": 2,
67
+ "benchmarks": [
68
+ 36,
69
+ 37
70
+ ]
71
+ },
72
+ {
73
+ "id": "tools",
74
+ "label": "Tools & Automation",
75
+ "raw": 0.702,
76
+ "skill": 0.5755,
77
+ "coverage": 1.0,
78
+ "pending": 0.0,
79
+ "n": 3,
80
+ "benchmarks": [
81
+ 1,
82
+ 2,
83
+ 6
84
+ ]
85
+ },
86
+ {
87
+ "id": "arts",
88
+ "label": "Arts & Human Judgment",
89
+ "raw": 0.5026,
90
+ "skill": 0.2579,
91
+ "coverage": 1.0,
92
+ "pending": 0.0,
93
+ "n": 5,
94
+ "benchmarks": [
95
+ 20,
96
+ 21,
97
+ 22,
98
+ 23,
99
+ 50
100
+ ]
101
+ }
102
+ ],
103
+ "index_benchmarks": {
104
+ "1": {
105
+ "raw": 0.9034,
106
+ "skill": 0.8696,
107
+ "coverage": 1.0,
108
+ "pending": 0.0,
109
+ "random": 0.2594,
110
+ "tracks": [],
111
+ "in_index": true
112
+ },
113
+ "2": {
114
+ "raw": 0.4117,
115
+ "skill": 0.3512,
116
+ "coverage": 1.0,
117
+ "pending": 0.0,
118
+ "random": 0.0933,
119
+ "tracks": [],
120
+ "in_index": true
121
+ },
122
+ "6": {
123
+ "raw": 0.7908,
124
+ "skill": 0.5057,
125
+ "coverage": 1.0,
126
+ "pending": 0.0,
127
+ "random": 0.5248,
128
+ "tracks": [
129
+ {
130
+ "track": "RouterBench-0shot",
131
+ "score": 0.7801,
132
+ "headline": false
133
+ },
134
+ {
135
+ "track": "RouterBench-5shot",
136
+ "score": 0.8016,
137
+ "headline": false
138
+ }
139
+ ],
140
+ "in_index": true
141
+ },
142
+ "7": {
143
+ "raw": 0.0,
144
+ "skill": 0.0,
145
+ "coverage": 0.0,
146
+ "pending": 1.0,
147
+ "random": null,
148
+ "tracks": [],
149
+ "in_index": false
150
+ },
151
+ "11": {
152
+ "raw": 0.773,
153
+ "skill": 0.6717,
154
+ "coverage": 1.0,
155
+ "pending": 0.0,
156
+ "random": 0.3085,
157
+ "tracks": [],
158
+ "in_index": true
159
+ },
160
+ "13": {
161
+ "raw": 0.0,
162
+ "skill": 0.0,
163
+ "coverage": 0.0,
164
+ "pending": 1.0,
165
+ "random": null,
166
+ "tracks": [],
167
+ "in_index": false
168
+ },
169
+ "15": {
170
+ "raw": 0.0,
171
+ "skill": 0.0,
172
+ "coverage": 0.0,
173
+ "pending": 1.0,
174
+ "random": null,
175
+ "tracks": [],
176
+ "in_index": false
177
+ },
178
+ "16": {
179
+ "raw": 0.0,
180
+ "skill": 0.0,
181
+ "coverage": 0.0,
182
+ "pending": 1.0,
183
+ "random": null,
184
+ "tracks": [],
185
+ "in_index": false
186
+ },
187
+ "17": {
188
+ "raw": 0.0,
189
+ "skill": 0.0,
190
+ "coverage": 0.0,
191
+ "pending": 1.0,
192
+ "random": null,
193
+ "tracks": [],
194
+ "in_index": false
195
+ },
196
+ "19": {
197
+ "raw": 0.0,
198
+ "skill": 0.0,
199
+ "coverage": 0.0,
200
+ "pending": 1.0,
201
+ "random": null,
202
+ "tracks": [],
203
+ "in_index": false
204
+ },
205
+ "20": {
206
+ "raw": 0.8463,
207
+ "skill": 0.6927,
208
+ "coverage": 1.0,
209
+ "pending": 0.0,
210
+ "random": 0.5,
211
+ "tracks": [],
212
+ "in_index": true
213
+ },
214
+ "21": {
215
+ "raw": 0.6068,
216
+ "skill": 0.2136,
217
+ "coverage": 1.0,
218
+ "pending": 0.0,
219
+ "random": 0.5,
220
+ "tracks": [],
221
+ "in_index": true
222
+ },
223
+ "22": {
224
+ "raw": 0.0333,
225
+ "skill": 0.0258,
226
+ "coverage": 1.0,
227
+ "pending": 0.0,
228
+ "random": 0.0078,
229
+ "tracks": [],
230
+ "in_index": true
231
+ },
232
+ "23": {
233
+ "raw": 0.5805,
234
+ "skill": 0.1611,
235
+ "coverage": 1.0,
236
+ "pending": 0.0,
237
+ "random": 0.5,
238
+ "tracks": [],
239
+ "in_index": true
240
+ },
241
+ "24": {
242
+ "raw": 0.7487,
243
+ "skill": 0.665,
244
+ "coverage": 1.0,
245
+ "pending": 0.0,
246
+ "random": 0.25,
247
+ "tracks": [],
248
+ "in_index": true
249
+ },
250
+ "25": {
251
+ "raw": 0.3798,
252
+ "skill": 0.1731,
253
+ "coverage": 1.0,
254
+ "pending": 0.0,
255
+ "random": 0.25,
256
+ "tracks": [],
257
+ "in_index": true
258
+ },
259
+ "30": {
260
+ "raw": 0.5763,
261
+ "skill": 0.4843,
262
+ "coverage": 1.0,
263
+ "pending": 0.0,
264
+ "random": 0.25,
265
+ "tracks": [
266
+ {
267
+ "track": "GSM8K-4choice",
268
+ "score": 0.5958,
269
+ "headline": false
270
+ },
271
+ {
272
+ "track": "GSM8K-10choice",
273
+ "score": 0.5567,
274
+ "headline": false
275
+ }
276
+ ],
277
+ "in_index": true
278
+ },
279
+ "31": {
280
+ "raw": 0.1352,
281
+ "skill": 0.0579,
282
+ "coverage": 1.0,
283
+ "pending": 0.0,
284
+ "random": 0.0821,
285
+ "tracks": [],
286
+ "in_index": true
287
+ },
288
+ "36": {
289
+ "raw": 0.1721,
290
+ "skill": 0.134,
291
+ "coverage": 1.0,
292
+ "pending": 0.0,
293
+ "random": 0.044,
294
+ "tracks": [],
295
+ "in_index": true
296
+ },
297
+ "37": {
298
+ "raw": 0.4299,
299
+ "skill": 0.2849,
300
+ "coverage": 1.0,
301
+ "pending": 0.0,
302
+ "random": 0.2027,
303
+ "tracks": [],
304
+ "in_index": true
305
+ },
306
+ "40": {
307
+ "raw": 0.4576,
308
+ "skill": 0.3022,
309
+ "coverage": 1.0,
310
+ "pending": 0.0,
311
+ "random": 0.2227,
312
+ "tracks": [
313
+ {
314
+ "track": "A \u00b7 Arabic",
315
+ "score": 0.3059,
316
+ "headline": false
317
+ },
318
+ {
319
+ "track": "A \u00b7 English",
320
+ "score": 0.4576,
321
+ "headline": true
322
+ },
323
+ {
324
+ "track": "C \u00b7 Arabic pairs",
325
+ "score": 0.6432,
326
+ "headline": false
327
+ },
328
+ {
329
+ "track": "C \u00b7 English pairs",
330
+ "score": 0.9146,
331
+ "headline": false
332
+ }
333
+ ],
334
+ "in_index": true
335
+ },
336
+ "41": {
337
+ "raw": 0.6155,
338
+ "skill": 0.4233,
339
+ "coverage": 1.0,
340
+ "pending": 0.0,
341
+ "random": 0.3333,
342
+ "tracks": [],
343
+ "in_index": true
344
+ },
345
+ "43": {
346
+ "raw": 0.4851,
347
+ "skill": 0.1812,
348
+ "coverage": 1.0,
349
+ "pending": 0.0,
350
+ "random": 0.3711,
351
+ "tracks": [],
352
+ "in_index": true
353
+ },
354
+ "44": {
355
+ "raw": 0.6361,
356
+ "skill": 0.2722,
357
+ "coverage": 1.0,
358
+ "pending": 0.0,
359
+ "random": 0.5,
360
+ "tracks": [],
361
+ "in_index": true
362
+ },
363
+ "50": {
364
+ "raw": 0.4462,
365
+ "skill": 0.1962,
366
+ "coverage": 1.0,
367
+ "pending": 0.0,
368
+ "random": 0.311,
369
+ "tracks": [],
370
+ "in_index": true
371
+ }
372
+ },
373
+ "benchmarks": {
374
+ "1": {
375
+ "catalog_id": 1,
376
+ "dataset": "BFCL",
377
+ "requests": 1626,
378
+ "answered": 1626,
379
+ "unsupported": 0,
380
+ "errors": 0,
381
+ "abstained": 0,
382
+ "pending": 0,
383
+ "scored_requests": 1626,
384
+ "metric": "case exact accuracy",
385
+ "score": 0.9034,
386
+ "reference_same_cases": null,
387
+ "median_ms": 93.6,
388
+ "in_index": true
389
+ },
390
+ "2": {
391
+ "catalog_id": 2,
392
+ "dataset": "ToolRet",
393
+ "requests": 7636,
394
+ "answered": 7636,
395
+ "unsupported": 0,
396
+ "errors": 0,
397
+ "abstained": 0,
398
+ "pending": 0,
399
+ "scored_requests": 7636,
400
+ "metric": "nDCG@10",
401
+ "score": 0.4117,
402
+ "reference_same_cases": null,
403
+ "median_ms": 807.5,
404
+ "in_index": true
405
+ },
406
+ "3": {
407
+ "catalog_id": 3,
408
+ "dataset": "API-Bank",
409
+ "requests": 440,
410
+ "answered": 440,
411
+ "unsupported": 0,
412
+ "errors": 0,
413
+ "abstained": 0,
414
+ "pending": 0,
415
+ "scored_requests": 440,
416
+ "metric": "accuracy",
417
+ "score": 0.7386,
418
+ "reference_same_cases": null,
419
+ "median_ms": 425.8,
420
+ "in_index": false
421
+ },
422
+ "4": {
423
+ "catalog_id": 4,
424
+ "dataset": "BANKING77",
425
+ "requests": 3012,
426
+ "answered": 3012,
427
+ "unsupported": 0,
428
+ "errors": 0,
429
+ "abstained": 0,
430
+ "pending": 0,
431
+ "scored_requests": 3012,
432
+ "metric": "macro-F1",
433
+ "score": 0.7127,
434
+ "reference_same_cases": null,
435
+ "median_ms": 68.5,
436
+ "in_index": false
437
+ },
438
+ "5": {
439
+ "catalog_id": 5,
440
+ "dataset": "CLINC150+OOS",
441
+ "requests": 5432,
442
+ "answered": 5432,
443
+ "unsupported": 0,
444
+ "errors": 0,
445
+ "abstained": 0,
446
+ "pending": 0,
447
+ "scored_requests": 5432,
448
+ "metric": "macro-F1",
449
+ "score": 0.7388,
450
+ "reference_same_cases": null,
451
+ "median_ms": 115.0,
452
+ "in_index": false
453
+ },
454
+ "6": {
455
+ "catalog_id": 6,
456
+ "dataset": "RouterBench",
457
+ "requests": 9864,
458
+ "answered": 9864,
459
+ "unsupported": 0,
460
+ "errors": 0,
461
+ "abstained": 0,
462
+ "pending": 0,
463
+ "scored_requests": 9864,
464
+ "metric": "selected quality (quality objective)",
465
+ "score": 0.7908,
466
+ "reference_same_cases": null,
467
+ "median_ms": 262.7,
468
+ "tracks": {
469
+ "RouterBench-0shot": {
470
+ "metric": "selected quality (quality objective)",
471
+ "score": 0.7800709219858156,
472
+ "scored_requests": 4935
473
+ },
474
+ "RouterBench-5shot": {
475
+ "metric": "selected quality (quality objective)",
476
+ "score": 0.8016129032258065,
477
+ "scored_requests": 4929
478
+ }
479
+ },
480
+ "in_index": true
481
+ },
482
+ "9": {
483
+ "catalog_id": 9,
484
+ "dataset": "Home appliance simulator",
485
+ "requests": 93,
486
+ "answered": 93,
487
+ "unsupported": 0,
488
+ "errors": 0,
489
+ "abstained": 0,
490
+ "pending": 0,
491
+ "scored_requests": 93,
492
+ "metric": "case exact accuracy",
493
+ "score": 0.0968,
494
+ "reference_same_cases": null,
495
+ "median_ms": 1146.4,
496
+ "in_index": false
497
+ },
498
+ "10": {
499
+ "catalog_id": 10,
500
+ "dataset": "SGD/SGD-X",
501
+ "requests": 2433,
502
+ "answered": 2433,
503
+ "unsupported": 0,
504
+ "errors": 0,
505
+ "abstained": 0,
506
+ "pending": 0,
507
+ "scored_requests": 2433,
508
+ "metric": "macro-F1",
509
+ "score": 0.4993,
510
+ "reference_same_cases": null,
511
+ "median_ms": 71.5,
512
+ "in_index": false
513
+ },
514
+ "11": {
515
+ "catalog_id": 11,
516
+ "dataset": "ContractNLI",
517
+ "requests": 56,
518
+ "answered": 56,
519
+ "unsupported": 0,
520
+ "errors": 0,
521
+ "abstained": 0,
522
+ "pending": 0,
523
+ "scored_requests": 56,
524
+ "metric": "macro-F1",
525
+ "score": 0.773,
526
+ "reference_same_cases": null,
527
+ "median_ms": 1998.1,
528
+ "in_index": true
529
+ },
530
+ "12": {
531
+ "catalog_id": 12,
532
+ "dataset": "ANLI",
533
+ "requests": 3133,
534
+ "answered": 3133,
535
+ "unsupported": 0,
536
+ "errors": 0,
537
+ "abstained": 0,
538
+ "pending": 0,
539
+ "scored_requests": 3133,
540
+ "metric": "macro-F1",
541
+ "score": 0.6021,
542
+ "reference_same_cases": null,
543
+ "median_ms": 13.0,
544
+ "in_index": false
545
+ },
546
+ "20": {
547
+ "catalog_id": 20,
548
+ "dataset": "BPoMP",
549
+ "requests": 4696,
550
+ "answered": 4696,
551
+ "unsupported": 0,
552
+ "errors": 0,
553
+ "abstained": 0,
554
+ "pending": 0,
555
+ "scored_requests": 4696,
556
+ "metric": "accuracy",
557
+ "score": 0.8458,
558
+ "reference_same_cases": null,
559
+ "median_ms": 12.5,
560
+ "in_index": true
561
+ },
562
+ "21": {
563
+ "catalog_id": 21,
564
+ "dataset": "Humicroedit",
565
+ "requests": 2561,
566
+ "answered": 2561,
567
+ "unsupported": 0,
568
+ "errors": 0,
569
+ "abstained": 0,
570
+ "pending": 0,
571
+ "scored_requests": 2561,
572
+ "metric": "accuracy",
573
+ "score": 0.6068,
574
+ "reference_same_cases": null,
575
+ "median_ms": 8.0,
576
+ "in_index": true
577
+ },
578
+ "22": {
579
+ "catalog_id": 22,
580
+ "dataset": "POP909-CL",
581
+ "requests": 1933,
582
+ "answered": 1933,
583
+ "unsupported": 0,
584
+ "errors": 0,
585
+ "abstained": 0,
586
+ "pending": 0,
587
+ "scored_requests": 1933,
588
+ "metric": "accuracy",
589
+ "score": 0.0347,
590
+ "reference_same_cases": null,
591
+ "median_ms": 571.4,
592
+ "in_index": true
593
+ },
594
+ "23": {
595
+ "catalog_id": 23,
596
+ "dataset": "cfcolor",
597
+ "requests": 4933,
598
+ "answered": 4933,
599
+ "unsupported": 0,
600
+ "errors": 0,
601
+ "abstained": 0,
602
+ "pending": 0,
603
+ "scored_requests": 4933,
604
+ "metric": "accuracy",
605
+ "score": 0.6019,
606
+ "reference_same_cases": null,
607
+ "median_ms": 33.4,
608
+ "in_index": true
609
+ },
610
+ "24": {
611
+ "catalog_id": 24,
612
+ "dataset": "MMLU",
613
+ "requests": 13966,
614
+ "answered": 13966,
615
+ "unsupported": 0,
616
+ "errors": 0,
617
+ "abstained": 0,
618
+ "pending": 0,
619
+ "scored_requests": 13966,
620
+ "metric": "accuracy",
621
+ "score": 0.7374,
622
+ "reference_same_cases": null,
623
+ "median_ms": 13.0,
624
+ "in_index": true
625
+ },
626
+ "25": {
627
+ "catalog_id": 25,
628
+ "dataset": "GPQA Diamond",
629
+ "requests": 129,
630
+ "answered": 129,
631
+ "unsupported": 0,
632
+ "errors": 0,
633
+ "abstained": 0,
634
+ "pending": 0,
635
+ "scored_requests": 129,
636
+ "metric": "accuracy",
637
+ "score": 0.3798,
638
+ "reference_same_cases": null,
639
+ "median_ms": 24.3,
640
+ "in_index": true
641
+ },
642
+ "26": {
643
+ "catalog_id": 26,
644
+ "dataset": "ARC-Easy",
645
+ "requests": 2309,
646
+ "answered": 2309,
647
+ "unsupported": 0,
648
+ "errors": 0,
649
+ "abstained": 0,
650
+ "pending": 0,
651
+ "scored_requests": 2309,
652
+ "metric": "accuracy",
653
+ "score": 0.9766,
654
+ "reference_same_cases": null,
655
+ "median_ms": 12.3,
656
+ "in_index": false
657
+ },
658
+ "27": {
659
+ "catalog_id": 27,
660
+ "dataset": "ARC-Challenge",
661
+ "requests": 1105,
662
+ "answered": 1105,
663
+ "unsupported": 0,
664
+ "errors": 0,
665
+ "abstained": 0,
666
+ "pending": 0,
667
+ "scored_requests": 1105,
668
+ "metric": "accuracy",
669
+ "score": 0.9276,
670
+ "reference_same_cases": null,
671
+ "median_ms": 12.1,
672
+ "in_index": false
673
+ },
674
+ "28": {
675
+ "catalog_id": 28,
676
+ "dataset": "WinoGrande",
677
+ "requests": 1200,
678
+ "answered": 1200,
679
+ "unsupported": 0,
680
+ "errors": 0,
681
+ "abstained": 0,
682
+ "pending": 0,
683
+ "scored_requests": 1200,
684
+ "metric": "accuracy",
685
+ "score": 0.7008,
686
+ "reference_same_cases": null,
687
+ "median_ms": 8.4,
688
+ "in_index": false
689
+ },
690
+ "29": {
691
+ "catalog_id": 29,
692
+ "dataset": "HellaSwag",
693
+ "requests": 9975,
694
+ "answered": 9975,
695
+ "unsupported": 0,
696
+ "errors": 0,
697
+ "abstained": 0,
698
+ "pending": 0,
699
+ "scored_requests": 9975,
700
+ "metric": "accuracy",
701
+ "score": 0.8193,
702
+ "reference_same_cases": null,
703
+ "median_ms": 18.6,
704
+ "in_index": false
705
+ },
706
+ "30": {
707
+ "catalog_id": 30,
708
+ "dataset": "GSM8K",
709
+ "requests": 2504,
710
+ "answered": 2504,
711
+ "unsupported": 0,
712
+ "errors": 0,
713
+ "abstained": 0,
714
+ "pending": 0,
715
+ "scored_requests": 2504,
716
+ "metric": "accuracy",
717
+ "score": 0.5763,
718
+ "reference_same_cases": null,
719
+ "median_ms": 16.4,
720
+ "tracks": {
721
+ "GSM8K-10choice": {
722
+ "metric": "accuracy",
723
+ "score": 0.5567092651757188,
724
+ "scored_requests": 1252
725
+ },
726
+ "GSM8K-4choice": {
727
+ "metric": "accuracy",
728
+ "score": 0.5958466453674122,
729
+ "scored_requests": 1252
730
+ }
731
+ },
732
+ "in_index": true
733
+ },
734
+ "31": {
735
+ "catalog_id": 31,
736
+ "dataset": "ChessBench",
737
+ "requests": 4933,
738
+ "answered": 4933,
739
+ "unsupported": 0,
740
+ "errors": 0,
741
+ "abstained": 0,
742
+ "pending": 0,
743
+ "scored_requests": 4933,
744
+ "metric": "accuracy",
745
+ "score": 0.1352,
746
+ "reference_same_cases": null,
747
+ "median_ms": 88.3,
748
+ "in_index": true
749
+ },
750
+ "32": {
751
+ "catalog_id": 32,
752
+ "dataset": "MuSR",
753
+ "requests": 685,
754
+ "answered": 685,
755
+ "unsupported": 0,
756
+ "errors": 0,
757
+ "abstained": 0,
758
+ "pending": 0,
759
+ "scored_requests": 685,
760
+ "metric": "accuracy",
761
+ "score": 0.5577,
762
+ "reference_same_cases": null,
763
+ "median_ms": 61.4,
764
+ "in_index": false
765
+ },
766
+ "33": {
767
+ "catalog_id": 33,
768
+ "dataset": "SATA-Bench",
769
+ "requests": 1583,
770
+ "answered": 1583,
771
+ "unsupported": 0,
772
+ "errors": 0,
773
+ "abstained": 0,
774
+ "pending": 0,
775
+ "scored_requests": 1583,
776
+ "metric": "case exact accuracy",
777
+ "score": 0.2577,
778
+ "reference_same_cases": null,
779
+ "median_ms": 211.0,
780
+ "in_index": false
781
+ },
782
+ "36": {
783
+ "catalog_id": 36,
784
+ "dataset": "BRIGHT",
785
+ "requests": 1230,
786
+ "answered": 1230,
787
+ "unsupported": 0,
788
+ "errors": 0,
789
+ "abstained": 0,
790
+ "pending": 0,
791
+ "scored_requests": 1230,
792
+ "metric": "nDCG@10",
793
+ "score": 0.1721,
794
+ "reference_same_cases": null,
795
+ "median_ms": 1012.0,
796
+ "in_index": true
797
+ },
798
+ "37": {
799
+ "catalog_id": 37,
800
+ "dataset": "Amazon ESCI",
801
+ "requests": 4933,
802
+ "answered": 4933,
803
+ "unsupported": 0,
804
+ "errors": 0,
805
+ "abstained": 0,
806
+ "pending": 0,
807
+ "scored_requests": 4933,
808
+ "metric": "macro-F1",
809
+ "score": 0.4299,
810
+ "reference_same_cases": null,
811
+ "median_ms": 26.6,
812
+ "in_index": true
813
+ },
814
+ "38": {
815
+ "catalog_id": 38,
816
+ "dataset": "ACOS",
817
+ "requests": 5212,
818
+ "answered": 5212,
819
+ "unsupported": 0,
820
+ "errors": 0,
821
+ "abstained": 0,
822
+ "pending": 0,
823
+ "scored_requests": 5212,
824
+ "metric": "case exact accuracy",
825
+ "score": 0.0135,
826
+ "reference_same_cases": null,
827
+ "median_ms": 669.5,
828
+ "in_index": false
829
+ },
830
+ "39": {
831
+ "catalog_id": 39,
832
+ "dataset": "FinEntity",
833
+ "requests": 912,
834
+ "answered": 912,
835
+ "unsupported": 0,
836
+ "errors": 0,
837
+ "abstained": 0,
838
+ "pending": 0,
839
+ "scored_requests": 912,
840
+ "metric": "macro-F1",
841
+ "score": 0.8571,
842
+ "reference_same_cases": null,
843
+ "median_ms": 25.0,
844
+ "in_index": false
845
+ },
846
+ "40": {
847
+ "catalog_id": 40,
848
+ "dataset": "iSarcasmEval",
849
+ "requests": 4533,
850
+ "answered": 4533,
851
+ "unsupported": 0,
852
+ "errors": 0,
853
+ "abstained": 0,
854
+ "pending": 0,
855
+ "scored_requests": 4533,
856
+ "metric": "Sarcasm F1 \u00b7 track A, English",
857
+ "score": 0.4576,
858
+ "reference_same_cases": null,
859
+ "median_ms": 8.5,
860
+ "tracks": [
861
+ {
862
+ "track": "A \u00b7 Arabic",
863
+ "score": 0.3059,
864
+ "headline": false
865
+ },
866
+ {
867
+ "track": "A \u00b7 English",
868
+ "score": 0.4576,
869
+ "headline": true
870
+ },
871
+ {
872
+ "track": "C \u00b7 Arabic pairs",
873
+ "score": 0.6432,
874
+ "headline": false
875
+ },
876
+ {
877
+ "track": "C \u00b7 English pairs",
878
+ "score": 0.9146,
879
+ "headline": false
880
+ }
881
+ ],
882
+ "in_index": true
883
+ },
884
+ "41": {
885
+ "catalog_id": 41,
886
+ "dataset": "VAST",
887
+ "requests": 2939,
888
+ "answered": 2939,
889
+ "unsupported": 0,
890
+ "errors": 0,
891
+ "abstained": 0,
892
+ "pending": 0,
893
+ "scored_requests": 2939,
894
+ "metric": "macro-F1",
895
+ "score": 0.6155,
896
+ "reference_same_cases": null,
897
+ "median_ms": 14.9,
898
+ "in_index": true
899
+ },
900
+ "42": {
901
+ "catalog_id": 42,
902
+ "dataset": "NLI4CT",
903
+ "requests": 5433,
904
+ "answered": 5433,
905
+ "unsupported": 0,
906
+ "errors": 0,
907
+ "abstained": 0,
908
+ "pending": 0,
909
+ "scored_requests": 5433,
910
+ "metric": "macro-F1",
911
+ "score": 0.7615,
912
+ "reference_same_cases": null,
913
+ "median_ms": 37.0,
914
+ "in_index": false
915
+ },
916
+ "43": {
917
+ "catalog_id": 43,
918
+ "dataset": "CRUXEval",
919
+ "requests": 503,
920
+ "answered": 503,
921
+ "unsupported": 0,
922
+ "errors": 0,
923
+ "abstained": 0,
924
+ "pending": 0,
925
+ "scored_requests": 503,
926
+ "metric": "accuracy",
927
+ "score": 0.4851,
928
+ "reference_same_cases": null,
929
+ "median_ms": 13.7,
930
+ "in_index": true
931
+ },
932
+ "44": {
933
+ "catalog_id": 44,
934
+ "dataset": "CLadder",
935
+ "requests": 4933,
936
+ "answered": 4933,
937
+ "unsupported": 0,
938
+ "errors": 0,
939
+ "abstained": 0,
940
+ "pending": 0,
941
+ "scored_requests": 4933,
942
+ "metric": "accuracy",
943
+ "score": 0.6361,
944
+ "reference_same_cases": null,
945
+ "median_ms": 13.7,
946
+ "in_index": true
947
+ },
948
+ "45": {
949
+ "catalog_id": 45,
950
+ "dataset": "HLE",
951
+ "requests": 434,
952
+ "answered": 434,
953
+ "unsupported": 0,
954
+ "errors": 0,
955
+ "abstained": 0,
956
+ "pending": 0,
957
+ "scored_requests": 434,
958
+ "metric": "accuracy",
959
+ "score": 0.1313,
960
+ "reference_same_cases": null,
961
+ "median_ms": 22.7,
962
+ "in_index": false
963
+ },
964
+ "48": {
965
+ "catalog_id": 48,
966
+ "dataset": "ForecastBench",
967
+ "requests": 10072,
968
+ "answered": 10072,
969
+ "unsupported": 0,
970
+ "errors": 0,
971
+ "abstained": 0,
972
+ "pending": 0,
973
+ "scored_requests": 10072,
974
+ "metric": "Brier (lower is better)",
975
+ "score": 0.2171,
976
+ "reference_same_cases": null,
977
+ "median_ms": 49.3,
978
+ "in_index": false
979
+ },
980
+ "50": {
981
+ "catalog_id": 50,
982
+ "dataset": "Habermas Machine",
983
+ "requests": 1609,
984
+ "answered": 1609,
985
+ "unsupported": 0,
986
+ "errors": 0,
987
+ "abstained": 0,
988
+ "pending": 0,
989
+ "scored_requests": 1609,
990
+ "metric": "accuracy",
991
+ "score": 0.4462,
992
+ "reference_same_cases": null,
993
+ "median_ms": 55.0,
994
+ "in_index": true
995
+ }
996
+ },
997
+ "frozen_panel": {
998
+ "scores": {
999
+ "balanced_raw": 40.61,
1000
+ "balanced_skill": 26.98,
1001
+ "breadth_skill": 23.15
1002
+ },
1003
+ "categories": [
1004
+ {
1005
+ "id": "knowledge",
1006
+ "raw": 0.5652,
1007
+ "skill": 0.3552,
1008
+ "coverage": 1.0,
1009
+ "pending": 0.0
1010
+ },
1011
+ {
1012
+ "id": "language",
1013
+ "raw": 0.5142,
1014
+ "skill": 0.379,
1015
+ "coverage": 1.0,
1016
+ "pending": 0.0
1017
+ },
1018
+ {
1019
+ "id": "tools",
1020
+ "raw": 0.4212,
1021
+ "skill": 0.3453,
1022
+ "coverage": 0.6,
1023
+ "pending": 0.4
1024
+ },
1025
+ {
1026
+ "id": "games",
1027
+ "raw": 0.027,
1028
+ "skill": 0.0116,
1029
+ "coverage": 0.2,
1030
+ "pending": 0.8
1031
+ },
1032
+ {
1033
+ "id": "arts",
1034
+ "raw": 0.5026,
1035
+ "skill": 0.2579,
1036
+ "coverage": 1.0,
1037
+ "pending": 0.0
1038
+ }
1039
+ ],
1040
+ "coverage": 0.76,
1041
+ "pending": 0.24,
1042
+ "note": "25-benchmark frozen panel with the six interactive benchmarks scored as zero (provisional lower bound); not the headline index."
1043
+ },
1044
+ "formulas": [
1045
+ {
1046
+ "id": "balanced_raw",
1047
+ "normalization": "raw",
1048
+ "formula": "100*sum_c(0.2*category[c])"
1049
+ },
1050
+ {
1051
+ "id": "balanced_skill",
1052
+ "normalization": "skill",
1053
+ "formula": "100*sum_c(0.2*category[c])"
1054
+ },
1055
+ {
1056
+ "id": "breadth_skill",
1057
+ "normalization": "skill",
1058
+ "shift": 0.1,
1059
+ "formula": "100*(product_c((0.1+0.9*category[c])**0.2)-0.1)/0.9"
1060
+ }
1061
+ ],
1062
+ "panel_id": "core25-observed-protocol-v1",
1063
+ "edition": "Decision Index 0.1 (archived 19-benchmark edition)",
1064
+ "subset": {
1065
+ "name": "0.1 suite minus the 3,000-request DI-S selection sample",
1066
+ "requests": 129422,
1067
+ "ids_sha256": "b738768b0cd2076ead8c637cddd2d1b233094f46524153da16444ff7a98f6aab",
1068
+ "note": "The 'suite' block above describes the parent 0.1 suite; scores cover the subset only."
1069
+ }
1070
+ }
eval/jevbench-public-proxy.json ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "tiers": {
3
+ "easy": 1.0,
4
+ "standard": 0.9861111111111112,
5
+ "hard": 0.7207207207207207
6
+ },
7
+ "hard_ece": 0.0672866582962707,
8
+ "prob_tvd": 0.2258727428861121,
9
+ "calibration": 81.97769702606733,
10
+ "intelligence_public": 81.67291558166173,
11
+ "input_tokens_per_decision": 698.922077922078,
12
+ "temperature": 1.0,
13
+ "hard_by_family": {
14
+ "adversarial": 1.0,
15
+ "ambiguous": 0.857,
16
+ "judge_hard": 0.647,
17
+ "long_policy": 0.579,
18
+ "multi_hop": 0.833,
19
+ "probability": 0.7,
20
+ "routing_hard": 1.0,
21
+ "temporal_numeric": 0.4,
22
+ "tradeoff": 0.833,
23
+ "trap": 1.0
24
+ },
25
+ "p50_s": 0.06382748000032734,
26
+ "p95_s": 0.17542972600494977,
27
+ "speed": 88.5677868991755,
28
+ "note": "JevBench v1.2 public items (231) scored with JevBench's own code; a development proxy, not an official JevBench result."
29
+ }
generation_config.json ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ {
2
+ "_from_model_config": true,
3
+ "eos_token_id": 248044,
4
+ "transformers_version": "5.17.0",
5
+ "use_cache": true
6
+ }
model-00001-of-00002.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:1a3dbd1ed71004fd0e0b5ec4912f387e7cad0e1118ef12d41921911fc55d96fb
3
+ size 4972947968
model-00002-of-00002.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:b8b6d35df130ce90b1feec8c4fb66906ea5d2843e7f8d0a39fd41abc82c38374
3
+ size 3438610328
model.safetensors.index.json ADDED
@@ -0,0 +1,434 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "metadata": {
3
+ "total_parameters": 4205751296,
4
+ "total_size": 8411502592
5
+ },
6
+ "weight_map": {
7
+ "model.language_model.embed_tokens.weight": "model-00001-of-00002.safetensors",
8
+ "model.language_model.layers.0.input_layernorm.weight": "model-00001-of-00002.safetensors",
9
+ "model.language_model.layers.0.linear_attn.A_log": "model-00001-of-00002.safetensors",
10
+ "model.language_model.layers.0.linear_attn.conv1d.weight": "model-00001-of-00002.safetensors",
11
+ "model.language_model.layers.0.linear_attn.dt_bias": "model-00001-of-00002.safetensors",
12
+ "model.language_model.layers.0.linear_attn.in_proj_a.weight": "model-00001-of-00002.safetensors",
13
+ "model.language_model.layers.0.linear_attn.in_proj_b.weight": "model-00001-of-00002.safetensors",
14
+ "model.language_model.layers.0.linear_attn.in_proj_qkv.weight": "model-00001-of-00002.safetensors",
15
+ "model.language_model.layers.0.linear_attn.in_proj_z.weight": "model-00001-of-00002.safetensors",
16
+ "model.language_model.layers.0.linear_attn.norm.weight": "model-00001-of-00002.safetensors",
17
+ "model.language_model.layers.0.linear_attn.out_proj.weight": "model-00001-of-00002.safetensors",
18
+ "model.language_model.layers.0.mlp.down_proj.weight": "model-00001-of-00002.safetensors",
19
+ "model.language_model.layers.0.mlp.gate_proj.weight": "model-00001-of-00002.safetensors",
20
+ "model.language_model.layers.0.mlp.up_proj.weight": "model-00001-of-00002.safetensors",
21
+ "model.language_model.layers.0.post_attention_layernorm.weight": "model-00001-of-00002.safetensors",
22
+ "model.language_model.layers.1.input_layernorm.weight": "model-00001-of-00002.safetensors",
23
+ "model.language_model.layers.1.linear_attn.A_log": "model-00001-of-00002.safetensors",
24
+ "model.language_model.layers.1.linear_attn.conv1d.weight": "model-00001-of-00002.safetensors",
25
+ "model.language_model.layers.1.linear_attn.dt_bias": "model-00001-of-00002.safetensors",
26
+ "model.language_model.layers.1.linear_attn.in_proj_a.weight": "model-00001-of-00002.safetensors",
27
+ "model.language_model.layers.1.linear_attn.in_proj_b.weight": "model-00001-of-00002.safetensors",
28
+ "model.language_model.layers.1.linear_attn.in_proj_qkv.weight": "model-00001-of-00002.safetensors",
29
+ "model.language_model.layers.1.linear_attn.in_proj_z.weight": "model-00001-of-00002.safetensors",
30
+ "model.language_model.layers.1.linear_attn.norm.weight": "model-00001-of-00002.safetensors",
31
+ "model.language_model.layers.1.linear_attn.out_proj.weight": "model-00001-of-00002.safetensors",
32
+ "model.language_model.layers.1.mlp.down_proj.weight": "model-00001-of-00002.safetensors",
33
+ "model.language_model.layers.1.mlp.gate_proj.weight": "model-00001-of-00002.safetensors",
34
+ "model.language_model.layers.1.mlp.up_proj.weight": "model-00001-of-00002.safetensors",
35
+ "model.language_model.layers.1.post_attention_layernorm.weight": "model-00001-of-00002.safetensors",
36
+ "model.language_model.layers.10.input_layernorm.weight": "model-00001-of-00002.safetensors",
37
+ "model.language_model.layers.10.linear_attn.A_log": "model-00001-of-00002.safetensors",
38
+ "model.language_model.layers.10.linear_attn.conv1d.weight": "model-00001-of-00002.safetensors",
39
+ "model.language_model.layers.10.linear_attn.dt_bias": "model-00001-of-00002.safetensors",
40
+ "model.language_model.layers.10.linear_attn.in_proj_a.weight": "model-00001-of-00002.safetensors",
41
+ "model.language_model.layers.10.linear_attn.in_proj_b.weight": "model-00001-of-00002.safetensors",
42
+ "model.language_model.layers.10.linear_attn.in_proj_qkv.weight": "model-00001-of-00002.safetensors",
43
+ "model.language_model.layers.10.linear_attn.in_proj_z.weight": "model-00001-of-00002.safetensors",
44
+ "model.language_model.layers.10.linear_attn.norm.weight": "model-00001-of-00002.safetensors",
45
+ "model.language_model.layers.10.linear_attn.out_proj.weight": "model-00001-of-00002.safetensors",
46
+ "model.language_model.layers.10.mlp.down_proj.weight": "model-00001-of-00002.safetensors",
47
+ "model.language_model.layers.10.mlp.gate_proj.weight": "model-00001-of-00002.safetensors",
48
+ "model.language_model.layers.10.mlp.up_proj.weight": "model-00001-of-00002.safetensors",
49
+ "model.language_model.layers.10.post_attention_layernorm.weight": "model-00001-of-00002.safetensors",
50
+ "model.language_model.layers.11.input_layernorm.weight": "model-00001-of-00002.safetensors",
51
+ "model.language_model.layers.11.mlp.down_proj.weight": "model-00001-of-00002.safetensors",
52
+ "model.language_model.layers.11.mlp.gate_proj.weight": "model-00001-of-00002.safetensors",
53
+ "model.language_model.layers.11.mlp.up_proj.weight": "model-00001-of-00002.safetensors",
54
+ "model.language_model.layers.11.post_attention_layernorm.weight": "model-00001-of-00002.safetensors",
55
+ "model.language_model.layers.11.self_attn.k_norm.weight": "model-00001-of-00002.safetensors",
56
+ "model.language_model.layers.11.self_attn.k_proj.weight": "model-00001-of-00002.safetensors",
57
+ "model.language_model.layers.11.self_attn.o_proj.weight": "model-00001-of-00002.safetensors",
58
+ "model.language_model.layers.11.self_attn.q_norm.weight": "model-00001-of-00002.safetensors",
59
+ "model.language_model.layers.11.self_attn.q_proj.weight": "model-00001-of-00002.safetensors",
60
+ "model.language_model.layers.11.self_attn.v_proj.weight": "model-00001-of-00002.safetensors",
61
+ "model.language_model.layers.12.input_layernorm.weight": "model-00001-of-00002.safetensors",
62
+ "model.language_model.layers.12.linear_attn.A_log": "model-00001-of-00002.safetensors",
63
+ "model.language_model.layers.12.linear_attn.conv1d.weight": "model-00001-of-00002.safetensors",
64
+ "model.language_model.layers.12.linear_attn.dt_bias": "model-00001-of-00002.safetensors",
65
+ "model.language_model.layers.12.linear_attn.in_proj_a.weight": "model-00001-of-00002.safetensors",
66
+ "model.language_model.layers.12.linear_attn.in_proj_b.weight": "model-00001-of-00002.safetensors",
67
+ "model.language_model.layers.12.linear_attn.in_proj_qkv.weight": "model-00001-of-00002.safetensors",
68
+ "model.language_model.layers.12.linear_attn.in_proj_z.weight": "model-00001-of-00002.safetensors",
69
+ "model.language_model.layers.12.linear_attn.norm.weight": "model-00001-of-00002.safetensors",
70
+ "model.language_model.layers.12.linear_attn.out_proj.weight": "model-00001-of-00002.safetensors",
71
+ "model.language_model.layers.12.mlp.down_proj.weight": "model-00001-of-00002.safetensors",
72
+ "model.language_model.layers.12.mlp.gate_proj.weight": "model-00001-of-00002.safetensors",
73
+ "model.language_model.layers.12.mlp.up_proj.weight": "model-00001-of-00002.safetensors",
74
+ "model.language_model.layers.12.post_attention_layernorm.weight": "model-00001-of-00002.safetensors",
75
+ "model.language_model.layers.13.input_layernorm.weight": "model-00001-of-00002.safetensors",
76
+ "model.language_model.layers.13.linear_attn.A_log": "model-00001-of-00002.safetensors",
77
+ "model.language_model.layers.13.linear_attn.conv1d.weight": "model-00001-of-00002.safetensors",
78
+ "model.language_model.layers.13.linear_attn.dt_bias": "model-00001-of-00002.safetensors",
79
+ "model.language_model.layers.13.linear_attn.in_proj_a.weight": "model-00001-of-00002.safetensors",
80
+ "model.language_model.layers.13.linear_attn.in_proj_b.weight": "model-00001-of-00002.safetensors",
81
+ "model.language_model.layers.13.linear_attn.in_proj_qkv.weight": "model-00001-of-00002.safetensors",
82
+ "model.language_model.layers.13.linear_attn.in_proj_z.weight": "model-00001-of-00002.safetensors",
83
+ "model.language_model.layers.13.linear_attn.norm.weight": "model-00001-of-00002.safetensors",
84
+ "model.language_model.layers.13.linear_attn.out_proj.weight": "model-00001-of-00002.safetensors",
85
+ "model.language_model.layers.13.mlp.down_proj.weight": "model-00001-of-00002.safetensors",
86
+ "model.language_model.layers.13.mlp.gate_proj.weight": "model-00001-of-00002.safetensors",
87
+ "model.language_model.layers.13.mlp.up_proj.weight": "model-00001-of-00002.safetensors",
88
+ "model.language_model.layers.13.post_attention_layernorm.weight": "model-00001-of-00002.safetensors",
89
+ "model.language_model.layers.14.input_layernorm.weight": "model-00001-of-00002.safetensors",
90
+ "model.language_model.layers.14.linear_attn.A_log": "model-00001-of-00002.safetensors",
91
+ "model.language_model.layers.14.linear_attn.conv1d.weight": "model-00001-of-00002.safetensors",
92
+ "model.language_model.layers.14.linear_attn.dt_bias": "model-00001-of-00002.safetensors",
93
+ "model.language_model.layers.14.linear_attn.in_proj_a.weight": "model-00001-of-00002.safetensors",
94
+ "model.language_model.layers.14.linear_attn.in_proj_b.weight": "model-00001-of-00002.safetensors",
95
+ "model.language_model.layers.14.linear_attn.in_proj_qkv.weight": "model-00001-of-00002.safetensors",
96
+ "model.language_model.layers.14.linear_attn.in_proj_z.weight": "model-00001-of-00002.safetensors",
97
+ "model.language_model.layers.14.linear_attn.norm.weight": "model-00001-of-00002.safetensors",
98
+ "model.language_model.layers.14.linear_attn.out_proj.weight": "model-00001-of-00002.safetensors",
99
+ "model.language_model.layers.14.mlp.down_proj.weight": "model-00001-of-00002.safetensors",
100
+ "model.language_model.layers.14.mlp.gate_proj.weight": "model-00001-of-00002.safetensors",
101
+ "model.language_model.layers.14.mlp.up_proj.weight": "model-00001-of-00002.safetensors",
102
+ "model.language_model.layers.14.post_attention_layernorm.weight": "model-00001-of-00002.safetensors",
103
+ "model.language_model.layers.15.input_layernorm.weight": "model-00001-of-00002.safetensors",
104
+ "model.language_model.layers.15.mlp.down_proj.weight": "model-00001-of-00002.safetensors",
105
+ "model.language_model.layers.15.mlp.gate_proj.weight": "model-00001-of-00002.safetensors",
106
+ "model.language_model.layers.15.mlp.up_proj.weight": "model-00001-of-00002.safetensors",
107
+ "model.language_model.layers.15.post_attention_layernorm.weight": "model-00001-of-00002.safetensors",
108
+ "model.language_model.layers.15.self_attn.k_norm.weight": "model-00001-of-00002.safetensors",
109
+ "model.language_model.layers.15.self_attn.k_proj.weight": "model-00001-of-00002.safetensors",
110
+ "model.language_model.layers.15.self_attn.o_proj.weight": "model-00001-of-00002.safetensors",
111
+ "model.language_model.layers.15.self_attn.q_norm.weight": "model-00001-of-00002.safetensors",
112
+ "model.language_model.layers.15.self_attn.q_proj.weight": "model-00001-of-00002.safetensors",
113
+ "model.language_model.layers.15.self_attn.v_proj.weight": "model-00001-of-00002.safetensors",
114
+ "model.language_model.layers.16.input_layernorm.weight": "model-00001-of-00002.safetensors",
115
+ "model.language_model.layers.16.linear_attn.A_log": "model-00001-of-00002.safetensors",
116
+ "model.language_model.layers.16.linear_attn.conv1d.weight": "model-00001-of-00002.safetensors",
117
+ "model.language_model.layers.16.linear_attn.dt_bias": "model-00001-of-00002.safetensors",
118
+ "model.language_model.layers.16.linear_attn.in_proj_a.weight": "model-00001-of-00002.safetensors",
119
+ "model.language_model.layers.16.linear_attn.in_proj_b.weight": "model-00001-of-00002.safetensors",
120
+ "model.language_model.layers.16.linear_attn.in_proj_qkv.weight": "model-00001-of-00002.safetensors",
121
+ "model.language_model.layers.16.linear_attn.in_proj_z.weight": "model-00001-of-00002.safetensors",
122
+ "model.language_model.layers.16.linear_attn.norm.weight": "model-00001-of-00002.safetensors",
123
+ "model.language_model.layers.16.linear_attn.out_proj.weight": "model-00001-of-00002.safetensors",
124
+ "model.language_model.layers.16.mlp.down_proj.weight": "model-00001-of-00002.safetensors",
125
+ "model.language_model.layers.16.mlp.gate_proj.weight": "model-00002-of-00002.safetensors",
126
+ "model.language_model.layers.16.mlp.up_proj.weight": "model-00002-of-00002.safetensors",
127
+ "model.language_model.layers.16.post_attention_layernorm.weight": "model-00002-of-00002.safetensors",
128
+ "model.language_model.layers.17.input_layernorm.weight": "model-00002-of-00002.safetensors",
129
+ "model.language_model.layers.17.linear_attn.A_log": "model-00002-of-00002.safetensors",
130
+ "model.language_model.layers.17.linear_attn.conv1d.weight": "model-00002-of-00002.safetensors",
131
+ "model.language_model.layers.17.linear_attn.dt_bias": "model-00002-of-00002.safetensors",
132
+ "model.language_model.layers.17.linear_attn.in_proj_a.weight": "model-00002-of-00002.safetensors",
133
+ "model.language_model.layers.17.linear_attn.in_proj_b.weight": "model-00002-of-00002.safetensors",
134
+ "model.language_model.layers.17.linear_attn.in_proj_qkv.weight": "model-00002-of-00002.safetensors",
135
+ "model.language_model.layers.17.linear_attn.in_proj_z.weight": "model-00002-of-00002.safetensors",
136
+ "model.language_model.layers.17.linear_attn.norm.weight": "model-00002-of-00002.safetensors",
137
+ "model.language_model.layers.17.linear_attn.out_proj.weight": "model-00002-of-00002.safetensors",
138
+ "model.language_model.layers.17.mlp.down_proj.weight": "model-00002-of-00002.safetensors",
139
+ "model.language_model.layers.17.mlp.gate_proj.weight": "model-00002-of-00002.safetensors",
140
+ "model.language_model.layers.17.mlp.up_proj.weight": "model-00002-of-00002.safetensors",
141
+ "model.language_model.layers.17.post_attention_layernorm.weight": "model-00002-of-00002.safetensors",
142
+ "model.language_model.layers.18.input_layernorm.weight": "model-00002-of-00002.safetensors",
143
+ "model.language_model.layers.18.linear_attn.A_log": "model-00002-of-00002.safetensors",
144
+ "model.language_model.layers.18.linear_attn.conv1d.weight": "model-00002-of-00002.safetensors",
145
+ "model.language_model.layers.18.linear_attn.dt_bias": "model-00002-of-00002.safetensors",
146
+ "model.language_model.layers.18.linear_attn.in_proj_a.weight": "model-00002-of-00002.safetensors",
147
+ "model.language_model.layers.18.linear_attn.in_proj_b.weight": "model-00002-of-00002.safetensors",
148
+ "model.language_model.layers.18.linear_attn.in_proj_qkv.weight": "model-00002-of-00002.safetensors",
149
+ "model.language_model.layers.18.linear_attn.in_proj_z.weight": "model-00002-of-00002.safetensors",
150
+ "model.language_model.layers.18.linear_attn.norm.weight": "model-00002-of-00002.safetensors",
151
+ "model.language_model.layers.18.linear_attn.out_proj.weight": "model-00002-of-00002.safetensors",
152
+ "model.language_model.layers.18.mlp.down_proj.weight": "model-00002-of-00002.safetensors",
153
+ "model.language_model.layers.18.mlp.gate_proj.weight": "model-00002-of-00002.safetensors",
154
+ "model.language_model.layers.18.mlp.up_proj.weight": "model-00002-of-00002.safetensors",
155
+ "model.language_model.layers.18.post_attention_layernorm.weight": "model-00002-of-00002.safetensors",
156
+ "model.language_model.layers.19.input_layernorm.weight": "model-00002-of-00002.safetensors",
157
+ "model.language_model.layers.19.mlp.down_proj.weight": "model-00002-of-00002.safetensors",
158
+ "model.language_model.layers.19.mlp.gate_proj.weight": "model-00002-of-00002.safetensors",
159
+ "model.language_model.layers.19.mlp.up_proj.weight": "model-00002-of-00002.safetensors",
160
+ "model.language_model.layers.19.post_attention_layernorm.weight": "model-00002-of-00002.safetensors",
161
+ "model.language_model.layers.19.self_attn.k_norm.weight": "model-00002-of-00002.safetensors",
162
+ "model.language_model.layers.19.self_attn.k_proj.weight": "model-00002-of-00002.safetensors",
163
+ "model.language_model.layers.19.self_attn.o_proj.weight": "model-00002-of-00002.safetensors",
164
+ "model.language_model.layers.19.self_attn.q_norm.weight": "model-00002-of-00002.safetensors",
165
+ "model.language_model.layers.19.self_attn.q_proj.weight": "model-00002-of-00002.safetensors",
166
+ "model.language_model.layers.19.self_attn.v_proj.weight": "model-00002-of-00002.safetensors",
167
+ "model.language_model.layers.2.input_layernorm.weight": "model-00001-of-00002.safetensors",
168
+ "model.language_model.layers.2.linear_attn.A_log": "model-00001-of-00002.safetensors",
169
+ "model.language_model.layers.2.linear_attn.conv1d.weight": "model-00001-of-00002.safetensors",
170
+ "model.language_model.layers.2.linear_attn.dt_bias": "model-00001-of-00002.safetensors",
171
+ "model.language_model.layers.2.linear_attn.in_proj_a.weight": "model-00001-of-00002.safetensors",
172
+ "model.language_model.layers.2.linear_attn.in_proj_b.weight": "model-00001-of-00002.safetensors",
173
+ "model.language_model.layers.2.linear_attn.in_proj_qkv.weight": "model-00001-of-00002.safetensors",
174
+ "model.language_model.layers.2.linear_attn.in_proj_z.weight": "model-00001-of-00002.safetensors",
175
+ "model.language_model.layers.2.linear_attn.norm.weight": "model-00001-of-00002.safetensors",
176
+ "model.language_model.layers.2.linear_attn.out_proj.weight": "model-00001-of-00002.safetensors",
177
+ "model.language_model.layers.2.mlp.down_proj.weight": "model-00001-of-00002.safetensors",
178
+ "model.language_model.layers.2.mlp.gate_proj.weight": "model-00001-of-00002.safetensors",
179
+ "model.language_model.layers.2.mlp.up_proj.weight": "model-00001-of-00002.safetensors",
180
+ "model.language_model.layers.2.post_attention_layernorm.weight": "model-00001-of-00002.safetensors",
181
+ "model.language_model.layers.20.input_layernorm.weight": "model-00002-of-00002.safetensors",
182
+ "model.language_model.layers.20.linear_attn.A_log": "model-00002-of-00002.safetensors",
183
+ "model.language_model.layers.20.linear_attn.conv1d.weight": "model-00002-of-00002.safetensors",
184
+ "model.language_model.layers.20.linear_attn.dt_bias": "model-00002-of-00002.safetensors",
185
+ "model.language_model.layers.20.linear_attn.in_proj_a.weight": "model-00002-of-00002.safetensors",
186
+ "model.language_model.layers.20.linear_attn.in_proj_b.weight": "model-00002-of-00002.safetensors",
187
+ "model.language_model.layers.20.linear_attn.in_proj_qkv.weight": "model-00002-of-00002.safetensors",
188
+ "model.language_model.layers.20.linear_attn.in_proj_z.weight": "model-00002-of-00002.safetensors",
189
+ "model.language_model.layers.20.linear_attn.norm.weight": "model-00002-of-00002.safetensors",
190
+ "model.language_model.layers.20.linear_attn.out_proj.weight": "model-00002-of-00002.safetensors",
191
+ "model.language_model.layers.20.mlp.down_proj.weight": "model-00002-of-00002.safetensors",
192
+ "model.language_model.layers.20.mlp.gate_proj.weight": "model-00002-of-00002.safetensors",
193
+ "model.language_model.layers.20.mlp.up_proj.weight": "model-00002-of-00002.safetensors",
194
+ "model.language_model.layers.20.post_attention_layernorm.weight": "model-00002-of-00002.safetensors",
195
+ "model.language_model.layers.21.input_layernorm.weight": "model-00002-of-00002.safetensors",
196
+ "model.language_model.layers.21.linear_attn.A_log": "model-00002-of-00002.safetensors",
197
+ "model.language_model.layers.21.linear_attn.conv1d.weight": "model-00002-of-00002.safetensors",
198
+ "model.language_model.layers.21.linear_attn.dt_bias": "model-00002-of-00002.safetensors",
199
+ "model.language_model.layers.21.linear_attn.in_proj_a.weight": "model-00002-of-00002.safetensors",
200
+ "model.language_model.layers.21.linear_attn.in_proj_b.weight": "model-00002-of-00002.safetensors",
201
+ "model.language_model.layers.21.linear_attn.in_proj_qkv.weight": "model-00002-of-00002.safetensors",
202
+ "model.language_model.layers.21.linear_attn.in_proj_z.weight": "model-00002-of-00002.safetensors",
203
+ "model.language_model.layers.21.linear_attn.norm.weight": "model-00002-of-00002.safetensors",
204
+ "model.language_model.layers.21.linear_attn.out_proj.weight": "model-00002-of-00002.safetensors",
205
+ "model.language_model.layers.21.mlp.down_proj.weight": "model-00002-of-00002.safetensors",
206
+ "model.language_model.layers.21.mlp.gate_proj.weight": "model-00002-of-00002.safetensors",
207
+ "model.language_model.layers.21.mlp.up_proj.weight": "model-00002-of-00002.safetensors",
208
+ "model.language_model.layers.21.post_attention_layernorm.weight": "model-00002-of-00002.safetensors",
209
+ "model.language_model.layers.22.input_layernorm.weight": "model-00002-of-00002.safetensors",
210
+ "model.language_model.layers.22.linear_attn.A_log": "model-00002-of-00002.safetensors",
211
+ "model.language_model.layers.22.linear_attn.conv1d.weight": "model-00002-of-00002.safetensors",
212
+ "model.language_model.layers.22.linear_attn.dt_bias": "model-00002-of-00002.safetensors",
213
+ "model.language_model.layers.22.linear_attn.in_proj_a.weight": "model-00002-of-00002.safetensors",
214
+ "model.language_model.layers.22.linear_attn.in_proj_b.weight": "model-00002-of-00002.safetensors",
215
+ "model.language_model.layers.22.linear_attn.in_proj_qkv.weight": "model-00002-of-00002.safetensors",
216
+ "model.language_model.layers.22.linear_attn.in_proj_z.weight": "model-00002-of-00002.safetensors",
217
+ "model.language_model.layers.22.linear_attn.norm.weight": "model-00002-of-00002.safetensors",
218
+ "model.language_model.layers.22.linear_attn.out_proj.weight": "model-00002-of-00002.safetensors",
219
+ "model.language_model.layers.22.mlp.down_proj.weight": "model-00002-of-00002.safetensors",
220
+ "model.language_model.layers.22.mlp.gate_proj.weight": "model-00002-of-00002.safetensors",
221
+ "model.language_model.layers.22.mlp.up_proj.weight": "model-00002-of-00002.safetensors",
222
+ "model.language_model.layers.22.post_attention_layernorm.weight": "model-00002-of-00002.safetensors",
223
+ "model.language_model.layers.23.input_layernorm.weight": "model-00002-of-00002.safetensors",
224
+ "model.language_model.layers.23.mlp.down_proj.weight": "model-00002-of-00002.safetensors",
225
+ "model.language_model.layers.23.mlp.gate_proj.weight": "model-00002-of-00002.safetensors",
226
+ "model.language_model.layers.23.mlp.up_proj.weight": "model-00002-of-00002.safetensors",
227
+ "model.language_model.layers.23.post_attention_layernorm.weight": "model-00002-of-00002.safetensors",
228
+ "model.language_model.layers.23.self_attn.k_norm.weight": "model-00002-of-00002.safetensors",
229
+ "model.language_model.layers.23.self_attn.k_proj.weight": "model-00002-of-00002.safetensors",
230
+ "model.language_model.layers.23.self_attn.o_proj.weight": "model-00002-of-00002.safetensors",
231
+ "model.language_model.layers.23.self_attn.q_norm.weight": "model-00002-of-00002.safetensors",
232
+ "model.language_model.layers.23.self_attn.q_proj.weight": "model-00002-of-00002.safetensors",
233
+ "model.language_model.layers.23.self_attn.v_proj.weight": "model-00002-of-00002.safetensors",
234
+ "model.language_model.layers.24.input_layernorm.weight": "model-00002-of-00002.safetensors",
235
+ "model.language_model.layers.24.linear_attn.A_log": "model-00002-of-00002.safetensors",
236
+ "model.language_model.layers.24.linear_attn.conv1d.weight": "model-00002-of-00002.safetensors",
237
+ "model.language_model.layers.24.linear_attn.dt_bias": "model-00002-of-00002.safetensors",
238
+ "model.language_model.layers.24.linear_attn.in_proj_a.weight": "model-00002-of-00002.safetensors",
239
+ "model.language_model.layers.24.linear_attn.in_proj_b.weight": "model-00002-of-00002.safetensors",
240
+ "model.language_model.layers.24.linear_attn.in_proj_qkv.weight": "model-00002-of-00002.safetensors",
241
+ "model.language_model.layers.24.linear_attn.in_proj_z.weight": "model-00002-of-00002.safetensors",
242
+ "model.language_model.layers.24.linear_attn.norm.weight": "model-00002-of-00002.safetensors",
243
+ "model.language_model.layers.24.linear_attn.out_proj.weight": "model-00002-of-00002.safetensors",
244
+ "model.language_model.layers.24.mlp.down_proj.weight": "model-00002-of-00002.safetensors",
245
+ "model.language_model.layers.24.mlp.gate_proj.weight": "model-00002-of-00002.safetensors",
246
+ "model.language_model.layers.24.mlp.up_proj.weight": "model-00002-of-00002.safetensors",
247
+ "model.language_model.layers.24.post_attention_layernorm.weight": "model-00002-of-00002.safetensors",
248
+ "model.language_model.layers.25.input_layernorm.weight": "model-00002-of-00002.safetensors",
249
+ "model.language_model.layers.25.linear_attn.A_log": "model-00002-of-00002.safetensors",
250
+ "model.language_model.layers.25.linear_attn.conv1d.weight": "model-00002-of-00002.safetensors",
251
+ "model.language_model.layers.25.linear_attn.dt_bias": "model-00002-of-00002.safetensors",
252
+ "model.language_model.layers.25.linear_attn.in_proj_a.weight": "model-00002-of-00002.safetensors",
253
+ "model.language_model.layers.25.linear_attn.in_proj_b.weight": "model-00002-of-00002.safetensors",
254
+ "model.language_model.layers.25.linear_attn.in_proj_qkv.weight": "model-00002-of-00002.safetensors",
255
+ "model.language_model.layers.25.linear_attn.in_proj_z.weight": "model-00002-of-00002.safetensors",
256
+ "model.language_model.layers.25.linear_attn.norm.weight": "model-00002-of-00002.safetensors",
257
+ "model.language_model.layers.25.linear_attn.out_proj.weight": "model-00002-of-00002.safetensors",
258
+ "model.language_model.layers.25.mlp.down_proj.weight": "model-00002-of-00002.safetensors",
259
+ "model.language_model.layers.25.mlp.gate_proj.weight": "model-00002-of-00002.safetensors",
260
+ "model.language_model.layers.25.mlp.up_proj.weight": "model-00002-of-00002.safetensors",
261
+ "model.language_model.layers.25.post_attention_layernorm.weight": "model-00002-of-00002.safetensors",
262
+ "model.language_model.layers.26.input_layernorm.weight": "model-00002-of-00002.safetensors",
263
+ "model.language_model.layers.26.linear_attn.A_log": "model-00002-of-00002.safetensors",
264
+ "model.language_model.layers.26.linear_attn.conv1d.weight": "model-00002-of-00002.safetensors",
265
+ "model.language_model.layers.26.linear_attn.dt_bias": "model-00002-of-00002.safetensors",
266
+ "model.language_model.layers.26.linear_attn.in_proj_a.weight": "model-00002-of-00002.safetensors",
267
+ "model.language_model.layers.26.linear_attn.in_proj_b.weight": "model-00002-of-00002.safetensors",
268
+ "model.language_model.layers.26.linear_attn.in_proj_qkv.weight": "model-00002-of-00002.safetensors",
269
+ "model.language_model.layers.26.linear_attn.in_proj_z.weight": "model-00002-of-00002.safetensors",
270
+ "model.language_model.layers.26.linear_attn.norm.weight": "model-00002-of-00002.safetensors",
271
+ "model.language_model.layers.26.linear_attn.out_proj.weight": "model-00002-of-00002.safetensors",
272
+ "model.language_model.layers.26.mlp.down_proj.weight": "model-00002-of-00002.safetensors",
273
+ "model.language_model.layers.26.mlp.gate_proj.weight": "model-00002-of-00002.safetensors",
274
+ "model.language_model.layers.26.mlp.up_proj.weight": "model-00002-of-00002.safetensors",
275
+ "model.language_model.layers.26.post_attention_layernorm.weight": "model-00002-of-00002.safetensors",
276
+ "model.language_model.layers.27.input_layernorm.weight": "model-00002-of-00002.safetensors",
277
+ "model.language_model.layers.27.mlp.down_proj.weight": "model-00002-of-00002.safetensors",
278
+ "model.language_model.layers.27.mlp.gate_proj.weight": "model-00002-of-00002.safetensors",
279
+ "model.language_model.layers.27.mlp.up_proj.weight": "model-00002-of-00002.safetensors",
280
+ "model.language_model.layers.27.post_attention_layernorm.weight": "model-00002-of-00002.safetensors",
281
+ "model.language_model.layers.27.self_attn.k_norm.weight": "model-00002-of-00002.safetensors",
282
+ "model.language_model.layers.27.self_attn.k_proj.weight": "model-00002-of-00002.safetensors",
283
+ "model.language_model.layers.27.self_attn.o_proj.weight": "model-00002-of-00002.safetensors",
284
+ "model.language_model.layers.27.self_attn.q_norm.weight": "model-00002-of-00002.safetensors",
285
+ "model.language_model.layers.27.self_attn.q_proj.weight": "model-00002-of-00002.safetensors",
286
+ "model.language_model.layers.27.self_attn.v_proj.weight": "model-00002-of-00002.safetensors",
287
+ "model.language_model.layers.28.input_layernorm.weight": "model-00002-of-00002.safetensors",
288
+ "model.language_model.layers.28.linear_attn.A_log": "model-00002-of-00002.safetensors",
289
+ "model.language_model.layers.28.linear_attn.conv1d.weight": "model-00002-of-00002.safetensors",
290
+ "model.language_model.layers.28.linear_attn.dt_bias": "model-00002-of-00002.safetensors",
291
+ "model.language_model.layers.28.linear_attn.in_proj_a.weight": "model-00002-of-00002.safetensors",
292
+ "model.language_model.layers.28.linear_attn.in_proj_b.weight": "model-00002-of-00002.safetensors",
293
+ "model.language_model.layers.28.linear_attn.in_proj_qkv.weight": "model-00002-of-00002.safetensors",
294
+ "model.language_model.layers.28.linear_attn.in_proj_z.weight": "model-00002-of-00002.safetensors",
295
+ "model.language_model.layers.28.linear_attn.norm.weight": "model-00002-of-00002.safetensors",
296
+ "model.language_model.layers.28.linear_attn.out_proj.weight": "model-00002-of-00002.safetensors",
297
+ "model.language_model.layers.28.mlp.down_proj.weight": "model-00002-of-00002.safetensors",
298
+ "model.language_model.layers.28.mlp.gate_proj.weight": "model-00002-of-00002.safetensors",
299
+ "model.language_model.layers.28.mlp.up_proj.weight": "model-00002-of-00002.safetensors",
300
+ "model.language_model.layers.28.post_attention_layernorm.weight": "model-00002-of-00002.safetensors",
301
+ "model.language_model.layers.29.input_layernorm.weight": "model-00002-of-00002.safetensors",
302
+ "model.language_model.layers.29.linear_attn.A_log": "model-00002-of-00002.safetensors",
303
+ "model.language_model.layers.29.linear_attn.conv1d.weight": "model-00002-of-00002.safetensors",
304
+ "model.language_model.layers.29.linear_attn.dt_bias": "model-00002-of-00002.safetensors",
305
+ "model.language_model.layers.29.linear_attn.in_proj_a.weight": "model-00002-of-00002.safetensors",
306
+ "model.language_model.layers.29.linear_attn.in_proj_b.weight": "model-00002-of-00002.safetensors",
307
+ "model.language_model.layers.29.linear_attn.in_proj_qkv.weight": "model-00002-of-00002.safetensors",
308
+ "model.language_model.layers.29.linear_attn.in_proj_z.weight": "model-00002-of-00002.safetensors",
309
+ "model.language_model.layers.29.linear_attn.norm.weight": "model-00002-of-00002.safetensors",
310
+ "model.language_model.layers.29.linear_attn.out_proj.weight": "model-00002-of-00002.safetensors",
311
+ "model.language_model.layers.29.mlp.down_proj.weight": "model-00002-of-00002.safetensors",
312
+ "model.language_model.layers.29.mlp.gate_proj.weight": "model-00002-of-00002.safetensors",
313
+ "model.language_model.layers.29.mlp.up_proj.weight": "model-00002-of-00002.safetensors",
314
+ "model.language_model.layers.29.post_attention_layernorm.weight": "model-00002-of-00002.safetensors",
315
+ "model.language_model.layers.3.input_layernorm.weight": "model-00001-of-00002.safetensors",
316
+ "model.language_model.layers.3.mlp.down_proj.weight": "model-00001-of-00002.safetensors",
317
+ "model.language_model.layers.3.mlp.gate_proj.weight": "model-00001-of-00002.safetensors",
318
+ "model.language_model.layers.3.mlp.up_proj.weight": "model-00001-of-00002.safetensors",
319
+ "model.language_model.layers.3.post_attention_layernorm.weight": "model-00001-of-00002.safetensors",
320
+ "model.language_model.layers.3.self_attn.k_norm.weight": "model-00001-of-00002.safetensors",
321
+ "model.language_model.layers.3.self_attn.k_proj.weight": "model-00001-of-00002.safetensors",
322
+ "model.language_model.layers.3.self_attn.o_proj.weight": "model-00001-of-00002.safetensors",
323
+ "model.language_model.layers.3.self_attn.q_norm.weight": "model-00001-of-00002.safetensors",
324
+ "model.language_model.layers.3.self_attn.q_proj.weight": "model-00001-of-00002.safetensors",
325
+ "model.language_model.layers.3.self_attn.v_proj.weight": "model-00001-of-00002.safetensors",
326
+ "model.language_model.layers.30.input_layernorm.weight": "model-00002-of-00002.safetensors",
327
+ "model.language_model.layers.30.linear_attn.A_log": "model-00002-of-00002.safetensors",
328
+ "model.language_model.layers.30.linear_attn.conv1d.weight": "model-00002-of-00002.safetensors",
329
+ "model.language_model.layers.30.linear_attn.dt_bias": "model-00002-of-00002.safetensors",
330
+ "model.language_model.layers.30.linear_attn.in_proj_a.weight": "model-00002-of-00002.safetensors",
331
+ "model.language_model.layers.30.linear_attn.in_proj_b.weight": "model-00002-of-00002.safetensors",
332
+ "model.language_model.layers.30.linear_attn.in_proj_qkv.weight": "model-00002-of-00002.safetensors",
333
+ "model.language_model.layers.30.linear_attn.in_proj_z.weight": "model-00002-of-00002.safetensors",
334
+ "model.language_model.layers.30.linear_attn.norm.weight": "model-00002-of-00002.safetensors",
335
+ "model.language_model.layers.30.linear_attn.out_proj.weight": "model-00002-of-00002.safetensors",
336
+ "model.language_model.layers.30.mlp.down_proj.weight": "model-00002-of-00002.safetensors",
337
+ "model.language_model.layers.30.mlp.gate_proj.weight": "model-00002-of-00002.safetensors",
338
+ "model.language_model.layers.30.mlp.up_proj.weight": "model-00002-of-00002.safetensors",
339
+ "model.language_model.layers.30.post_attention_layernorm.weight": "model-00002-of-00002.safetensors",
340
+ "model.language_model.layers.31.input_layernorm.weight": "model-00002-of-00002.safetensors",
341
+ "model.language_model.layers.31.mlp.down_proj.weight": "model-00002-of-00002.safetensors",
342
+ "model.language_model.layers.31.mlp.gate_proj.weight": "model-00002-of-00002.safetensors",
343
+ "model.language_model.layers.31.mlp.up_proj.weight": "model-00002-of-00002.safetensors",
344
+ "model.language_model.layers.31.post_attention_layernorm.weight": "model-00002-of-00002.safetensors",
345
+ "model.language_model.layers.31.self_attn.k_norm.weight": "model-00002-of-00002.safetensors",
346
+ "model.language_model.layers.31.self_attn.k_proj.weight": "model-00002-of-00002.safetensors",
347
+ "model.language_model.layers.31.self_attn.o_proj.weight": "model-00002-of-00002.safetensors",
348
+ "model.language_model.layers.31.self_attn.q_norm.weight": "model-00002-of-00002.safetensors",
349
+ "model.language_model.layers.31.self_attn.q_proj.weight": "model-00002-of-00002.safetensors",
350
+ "model.language_model.layers.31.self_attn.v_proj.weight": "model-00002-of-00002.safetensors",
351
+ "model.language_model.layers.4.input_layernorm.weight": "model-00001-of-00002.safetensors",
352
+ "model.language_model.layers.4.linear_attn.A_log": "model-00001-of-00002.safetensors",
353
+ "model.language_model.layers.4.linear_attn.conv1d.weight": "model-00001-of-00002.safetensors",
354
+ "model.language_model.layers.4.linear_attn.dt_bias": "model-00001-of-00002.safetensors",
355
+ "model.language_model.layers.4.linear_attn.in_proj_a.weight": "model-00001-of-00002.safetensors",
356
+ "model.language_model.layers.4.linear_attn.in_proj_b.weight": "model-00001-of-00002.safetensors",
357
+ "model.language_model.layers.4.linear_attn.in_proj_qkv.weight": "model-00001-of-00002.safetensors",
358
+ "model.language_model.layers.4.linear_attn.in_proj_z.weight": "model-00001-of-00002.safetensors",
359
+ "model.language_model.layers.4.linear_attn.norm.weight": "model-00001-of-00002.safetensors",
360
+ "model.language_model.layers.4.linear_attn.out_proj.weight": "model-00001-of-00002.safetensors",
361
+ "model.language_model.layers.4.mlp.down_proj.weight": "model-00001-of-00002.safetensors",
362
+ "model.language_model.layers.4.mlp.gate_proj.weight": "model-00001-of-00002.safetensors",
363
+ "model.language_model.layers.4.mlp.up_proj.weight": "model-00001-of-00002.safetensors",
364
+ "model.language_model.layers.4.post_attention_layernorm.weight": "model-00001-of-00002.safetensors",
365
+ "model.language_model.layers.5.input_layernorm.weight": "model-00001-of-00002.safetensors",
366
+ "model.language_model.layers.5.linear_attn.A_log": "model-00001-of-00002.safetensors",
367
+ "model.language_model.layers.5.linear_attn.conv1d.weight": "model-00001-of-00002.safetensors",
368
+ "model.language_model.layers.5.linear_attn.dt_bias": "model-00001-of-00002.safetensors",
369
+ "model.language_model.layers.5.linear_attn.in_proj_a.weight": "model-00001-of-00002.safetensors",
370
+ "model.language_model.layers.5.linear_attn.in_proj_b.weight": "model-00001-of-00002.safetensors",
371
+ "model.language_model.layers.5.linear_attn.in_proj_qkv.weight": "model-00001-of-00002.safetensors",
372
+ "model.language_model.layers.5.linear_attn.in_proj_z.weight": "model-00001-of-00002.safetensors",
373
+ "model.language_model.layers.5.linear_attn.norm.weight": "model-00001-of-00002.safetensors",
374
+ "model.language_model.layers.5.linear_attn.out_proj.weight": "model-00001-of-00002.safetensors",
375
+ "model.language_model.layers.5.mlp.down_proj.weight": "model-00001-of-00002.safetensors",
376
+ "model.language_model.layers.5.mlp.gate_proj.weight": "model-00001-of-00002.safetensors",
377
+ "model.language_model.layers.5.mlp.up_proj.weight": "model-00001-of-00002.safetensors",
378
+ "model.language_model.layers.5.post_attention_layernorm.weight": "model-00001-of-00002.safetensors",
379
+ "model.language_model.layers.6.input_layernorm.weight": "model-00001-of-00002.safetensors",
380
+ "model.language_model.layers.6.linear_attn.A_log": "model-00001-of-00002.safetensors",
381
+ "model.language_model.layers.6.linear_attn.conv1d.weight": "model-00001-of-00002.safetensors",
382
+ "model.language_model.layers.6.linear_attn.dt_bias": "model-00001-of-00002.safetensors",
383
+ "model.language_model.layers.6.linear_attn.in_proj_a.weight": "model-00001-of-00002.safetensors",
384
+ "model.language_model.layers.6.linear_attn.in_proj_b.weight": "model-00001-of-00002.safetensors",
385
+ "model.language_model.layers.6.linear_attn.in_proj_qkv.weight": "model-00001-of-00002.safetensors",
386
+ "model.language_model.layers.6.linear_attn.in_proj_z.weight": "model-00001-of-00002.safetensors",
387
+ "model.language_model.layers.6.linear_attn.norm.weight": "model-00001-of-00002.safetensors",
388
+ "model.language_model.layers.6.linear_attn.out_proj.weight": "model-00001-of-00002.safetensors",
389
+ "model.language_model.layers.6.mlp.down_proj.weight": "model-00001-of-00002.safetensors",
390
+ "model.language_model.layers.6.mlp.gate_proj.weight": "model-00001-of-00002.safetensors",
391
+ "model.language_model.layers.6.mlp.up_proj.weight": "model-00001-of-00002.safetensors",
392
+ "model.language_model.layers.6.post_attention_layernorm.weight": "model-00001-of-00002.safetensors",
393
+ "model.language_model.layers.7.input_layernorm.weight": "model-00001-of-00002.safetensors",
394
+ "model.language_model.layers.7.mlp.down_proj.weight": "model-00001-of-00002.safetensors",
395
+ "model.language_model.layers.7.mlp.gate_proj.weight": "model-00001-of-00002.safetensors",
396
+ "model.language_model.layers.7.mlp.up_proj.weight": "model-00001-of-00002.safetensors",
397
+ "model.language_model.layers.7.post_attention_layernorm.weight": "model-00001-of-00002.safetensors",
398
+ "model.language_model.layers.7.self_attn.k_norm.weight": "model-00001-of-00002.safetensors",
399
+ "model.language_model.layers.7.self_attn.k_proj.weight": "model-00001-of-00002.safetensors",
400
+ "model.language_model.layers.7.self_attn.o_proj.weight": "model-00001-of-00002.safetensors",
401
+ "model.language_model.layers.7.self_attn.q_norm.weight": "model-00001-of-00002.safetensors",
402
+ "model.language_model.layers.7.self_attn.q_proj.weight": "model-00001-of-00002.safetensors",
403
+ "model.language_model.layers.7.self_attn.v_proj.weight": "model-00001-of-00002.safetensors",
404
+ "model.language_model.layers.8.input_layernorm.weight": "model-00001-of-00002.safetensors",
405
+ "model.language_model.layers.8.linear_attn.A_log": "model-00001-of-00002.safetensors",
406
+ "model.language_model.layers.8.linear_attn.conv1d.weight": "model-00001-of-00002.safetensors",
407
+ "model.language_model.layers.8.linear_attn.dt_bias": "model-00001-of-00002.safetensors",
408
+ "model.language_model.layers.8.linear_attn.in_proj_a.weight": "model-00001-of-00002.safetensors",
409
+ "model.language_model.layers.8.linear_attn.in_proj_b.weight": "model-00001-of-00002.safetensors",
410
+ "model.language_model.layers.8.linear_attn.in_proj_qkv.weight": "model-00001-of-00002.safetensors",
411
+ "model.language_model.layers.8.linear_attn.in_proj_z.weight": "model-00001-of-00002.safetensors",
412
+ "model.language_model.layers.8.linear_attn.norm.weight": "model-00001-of-00002.safetensors",
413
+ "model.language_model.layers.8.linear_attn.out_proj.weight": "model-00001-of-00002.safetensors",
414
+ "model.language_model.layers.8.mlp.down_proj.weight": "model-00001-of-00002.safetensors",
415
+ "model.language_model.layers.8.mlp.gate_proj.weight": "model-00001-of-00002.safetensors",
416
+ "model.language_model.layers.8.mlp.up_proj.weight": "model-00001-of-00002.safetensors",
417
+ "model.language_model.layers.8.post_attention_layernorm.weight": "model-00001-of-00002.safetensors",
418
+ "model.language_model.layers.9.input_layernorm.weight": "model-00001-of-00002.safetensors",
419
+ "model.language_model.layers.9.linear_attn.A_log": "model-00001-of-00002.safetensors",
420
+ "model.language_model.layers.9.linear_attn.conv1d.weight": "model-00001-of-00002.safetensors",
421
+ "model.language_model.layers.9.linear_attn.dt_bias": "model-00001-of-00002.safetensors",
422
+ "model.language_model.layers.9.linear_attn.in_proj_a.weight": "model-00001-of-00002.safetensors",
423
+ "model.language_model.layers.9.linear_attn.in_proj_b.weight": "model-00001-of-00002.safetensors",
424
+ "model.language_model.layers.9.linear_attn.in_proj_qkv.weight": "model-00001-of-00002.safetensors",
425
+ "model.language_model.layers.9.linear_attn.in_proj_z.weight": "model-00001-of-00002.safetensors",
426
+ "model.language_model.layers.9.linear_attn.norm.weight": "model-00001-of-00002.safetensors",
427
+ "model.language_model.layers.9.linear_attn.out_proj.weight": "model-00001-of-00002.safetensors",
428
+ "model.language_model.layers.9.mlp.down_proj.weight": "model-00001-of-00002.safetensors",
429
+ "model.language_model.layers.9.mlp.gate_proj.weight": "model-00001-of-00002.safetensors",
430
+ "model.language_model.layers.9.mlp.up_proj.weight": "model-00001-of-00002.safetensors",
431
+ "model.language_model.layers.9.post_attention_layernorm.weight": "model-00001-of-00002.safetensors",
432
+ "model.language_model.norm.weight": "model-00002-of-00002.safetensors"
433
+ }
434
+ }
serve.py ADDED
@@ -0,0 +1,167 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """blink server: a Jev-compatible decision endpoint.
2
+
3
+ pip install "torch==2.13.0" "transformers==5.17.0" "flash-linear-attention==0.5.2" accelerate safetensors huggingface_hub
4
+ hf download thegovind/blink-4b --revision v1.0 --local-dir blink-4b
5
+ python blink-4b/serve.py --model ./blink-4b --port 8000
6
+
7
+ POST /v1/systemone {"state": ..., "questions": {...}} -> {"model", "answers", "usage"}
8
+ GET /healthz -> {"ok", "model", "revision", "weights_verified", "hub_offline", "warmup", "kernels", "versions"}
9
+
10
+ Requests are served one at a time. A request over a limit (options per choice, context length,
11
+ questions per request) gets HTTP 422 with the reason; nothing is truncated. With weights.sha256 beside
12
+ the weights, every listed file is hashed before serving (weights_verified). Serving a local folder switches
13
+ the Hugging Face libraries to offline mode before any of them loads (hub_offline reports the setting the
14
+ libraries actually use); the server does not otherwise restrict the network.
15
+ """
16
+
17
+ from __future__ import annotations
18
+
19
+ import argparse
20
+ import hashlib
21
+ import json
22
+ import os
23
+ import socket
24
+ import sys
25
+ import threading
26
+ from http.server import BaseHTTPRequestHandler, ThreadingHTTPServer
27
+
28
+ WARMUP = ("Order 4471 arrived with a cracked screen. The customer attached photos and wants a replacement.",
29
+ {"route": {"type": "choice", "instructions": "Which team should handle this?",
30
+ "criteria": {"returns": "Damaged or wrong items", "billing": "Charges and refunds",
31
+ "shipping": "Late or lost parcels"}},
32
+ "urgent": {"type": "noul", "instructions": "Does this need a reply today?"}})
33
+
34
+
35
+ def sha256(path: str) -> str:
36
+ h = hashlib.sha256()
37
+ with open(path, "rb") as fh:
38
+ for block in iter(lambda: fh.read(1 << 24), b""):
39
+ h.update(block)
40
+ return h.hexdigest()
41
+
42
+
43
+ def verify(root: str):
44
+ """True/False against weights.sha256 ("<sha256> <file>" lines) beside the weights; None without one."""
45
+ manifest = os.path.join(root, "weights.sha256")
46
+ if not os.path.exists(manifest):
47
+ return None, []
48
+ bad = []
49
+ with open(manifest, encoding="utf-8") as fh:
50
+ for line in fh:
51
+ if line.strip():
52
+ digest, name = line.split(None, 1)
53
+ name = name.strip()
54
+ path = os.path.join(root, name)
55
+ if not os.path.exists(path) or sha256(path) != digest:
56
+ bad.append(name)
57
+ return not bad, bad
58
+
59
+
60
+ def versions() -> dict:
61
+ out = {}
62
+ for mod in ("torch", "transformers", "fla"):
63
+ try:
64
+ out[mod] = __import__(mod).__version__
65
+ except Exception:
66
+ out[mod] = None
67
+ return out
68
+
69
+
70
+ def main() -> None:
71
+ ap = argparse.ArgumentParser(description="Serve blink over a Jev-compatible HTTP API.")
72
+ ap.add_argument("--model", default=os.environ.get("BLINK_MODEL", "thegovind/blink-4b"))
73
+ ap.add_argument("--revision", default=os.environ.get("BLINK_REVISION"))
74
+ ap.add_argument("--host", default="127.0.0.1")
75
+ ap.add_argument("--port", type=int, default=8000)
76
+ a = ap.parse_args()
77
+
78
+ local = os.path.isdir(a.model)
79
+ if local:
80
+ # the Hub libraries read these once, when they are first imported, so they must be set before that
81
+ for var in ("HF_HUB_OFFLINE", "TRANSFORMERS_OFFLINE", "HF_HUB_DISABLE_TELEMETRY"):
82
+ os.environ.setdefault(var, "1")
83
+ os.environ["BLINK_ENGINE"] = "torch"
84
+ sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
85
+ import blink
86
+
87
+ if local:
88
+ root = a.model
89
+ else:
90
+ from huggingface_hub import snapshot_download
91
+
92
+ root = snapshot_download(a.model, revision=a.revision)
93
+ verified, bad = verify(root)
94
+ if verified is False:
95
+ sys.exit(f"weights.sha256 mismatch: {', '.join(bad)}")
96
+ engine = blink.TorchEngine(root, None, blink.TEMPERATURE)
97
+ blink._ENGINE = engine
98
+ first = blink.decide(*WARMUP)["answers"]
99
+ repeat_identical = blink.decide(*WARMUP)["answers"] == first
100
+ ver = versions()
101
+ kernels = f"flash-linear-attention {ver['fla']}" if ver["fla"] else "reference (much slower; install flash-linear-attention)"
102
+ try:
103
+ from huggingface_hub import constants as hub_constants
104
+
105
+ hub_offline = bool(hub_constants.HF_HUB_OFFLINE)
106
+ except Exception:
107
+ hub_offline = None
108
+ health = {"ok": True, "model": a.model, "revision": a.revision, "weights_verified": verified,
109
+ "hub_offline": hub_offline, "warmup": {"repeat_identical": repeat_identical}, "kernels": kernels,
110
+ "versions": ver}
111
+ lock = threading.Lock()
112
+
113
+ class Handler(BaseHTTPRequestHandler):
114
+ protocol_version = "HTTP/1.1"
115
+
116
+ def log_message(self, fmt, *args): # quiet by default
117
+ pass
118
+
119
+ def setup(self):
120
+ super().setup()
121
+ # a response is two writes (headers, then body); without TCP_NODELAY the body waits
122
+ # on the client's delayed ACK, a flat ~40 ms on every request of a kept-alive connection
123
+ self.connection.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
124
+
125
+ def _send(self, code: int, obj: dict) -> None:
126
+ body = json.dumps(obj, ensure_ascii=False).encode("utf-8")
127
+ self.send_response(code)
128
+ self.send_header("Content-Type", "application/json")
129
+ self.send_header("Content-Length", str(len(body)))
130
+ self.end_headers()
131
+ self.wfile.write(body)
132
+
133
+ def do_GET(self):
134
+ if self.path.rstrip("/") in ("/healthz", "/health"):
135
+ return self._send(200, health)
136
+ return self._send(404, {"error": "not found"})
137
+
138
+ def do_POST(self):
139
+ if self.path.rstrip("/") != "/v1/systemone":
140
+ return self._send(404, {"error": "not found"})
141
+ try:
142
+ size = int(self.headers.get("Content-Length") or 0)
143
+ req = json.loads(self.rfile.read(size) or b"{}")
144
+ except (ValueError, json.JSONDecodeError) as exc:
145
+ return self._send(400, {"error": f"invalid JSON: {exc}"})
146
+ if not isinstance(req, dict):
147
+ return self._send(400, {"error": "the body must be a JSON object"})
148
+ try:
149
+ with lock:
150
+ out = blink.decide(req.get("state"), req.get("questions"))
151
+ except blink.BlinkError as exc:
152
+ return self._send(422, {"error": str(exc)})
153
+ except Exception as exc: # noqa: BLE001 - report, keep serving
154
+ return self._send(500, {"error": f"{type(exc).__name__}: {exc}"})
155
+ return self._send(200, {
156
+ "model": a.model,
157
+ "answers": out["answers"],
158
+ "usage": {"input_tokens": out["meta"]["input_tokens"], "output_tokens": 0},
159
+ })
160
+
161
+ server = ThreadingHTTPServer((a.host, a.port), Handler)
162
+ print(f"blink serving {a.model} on http://{a.host}:{a.port} ({kernels}; weights_verified={verified})", flush=True)
163
+ server.serve_forever()
164
+
165
+
166
+ if __name__ == "__main__":
167
+ main()
tokenizer.json ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:06b9509352d2af50381ab2247e083b80d32d5c0aba91c272ca9ff729b6a0e523
3
+ size 19989325
tokenizer_config.json ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "add_prefix_space": false,
3
+ "audio_bos_token": "<|audio_start|>",
4
+ "audio_eos_token": "<|audio_end|>",
5
+ "audio_token": "<|audio_pad|>",
6
+ "backend": "tokenizers",
7
+ "bos_token": null,
8
+ "clean_up_tokenization_spaces": false,
9
+ "eos_token": "<|im_end|>",
10
+ "errors": "replace",
11
+ "image_token": "<|image_pad|>",
12
+ "is_local": true,
13
+ "local_files_only": false,
14
+ "model_max_length": 262144,
15
+ "model_specific_special_tokens": {
16
+ "audio_bos_token": "<|audio_start|>",
17
+ "audio_eos_token": "<|audio_end|>",
18
+ "audio_token": "<|audio_pad|>",
19
+ "image_token": "<|image_pad|>",
20
+ "video_token": "<|video_pad|>",
21
+ "vision_bos_token": "<|vision_start|>",
22
+ "vision_eos_token": "<|vision_end|>"
23
+ },
24
+ "pad_token": "<|endoftext|>",
25
+ "pretokenize_regex": "(?i:'s|'t|'re|'ve|'m|'ll|'d)|[^\\r\\n\\p{L}\\p{N}]?[\\p{L}\\p{M}]+|\\p{N}| ?[^\\s\\p{L}\\p{M}\\p{N}]+[\\r\\n]*|\\s*[\\r\\n]+|\\s+(?!\\S)|\\s+",
26
+ "split_special_tokens": false,
27
+ "tokenizer_class": "Qwen2Tokenizer",
28
+ "unk_token": null,
29
+ "video_token": "<|video_pad|>",
30
+ "vision_bos_token": "<|vision_start|>",
31
+ "vision_eos_token": "<|vision_end|>"
32
+ }
weights.sha256 ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ a4aee8afcf2e0711942cf848899be66016f8d14a889ff9ede07bca099c28f715 chat_template.jinja
2
+ 63f47812d0f11118e4d252d2b3ad488707eb9287a11589f4fd382a1d31182724 config.json
3
+ 62153eb6c69f2e1f426beaa8002b7186437e949c7588167085df14e10e9c0a73 generation_config.json
4
+ 1a3dbd1ed71004fd0e0b5ec4912f387e7cad0e1118ef12d41921911fc55d96fb model-00001-of-00002.safetensors
5
+ b8b6d35df130ce90b1feec8c4fb66906ea5d2843e7f8d0a39fd41abc82c38374 model-00002-of-00002.safetensors
6
+ 83620b40d724f8b286580b5c7c504222b0bdbdd7dc9f068e565132409c7eec9d model.safetensors.index.json
7
+ 06b9509352d2af50381ab2247e083b80d32d5c0aba91c272ca9ff729b6a0e523 tokenizer.json
8
+ 66e427c470fe580fe8c7b5725d857af23d8417e37fae62667ec698306a19987b tokenizer_config.json