FastFlowLM commited on
Commit
4f751ab
·
verified ·
1 Parent(s): 4c79de0

D3-Turbo-NPU2 for FastFlowLM

Browse files
.gitattributes CHANGED
@@ -33,3 +33,6 @@ saved_model/**/* 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
 
 
 
 
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
+ model.q4nx filter=lfs diff=lfs merge=lfs -text
37
+ tokenizer.json filter=lfs diff=lfs merge=lfs -text
38
+ vision_weight.q4nx filter=lfs diff=lfs merge=lfs -text
LICENSE ADDED
@@ -0,0 +1,201 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
+
7
+ 1. Definitions.
8
+
9
+ "License" shall mean the terms and conditions for use, reproduction,
10
+ and distribution as defined by Sections 1 through 9 of this document.
11
+
12
+ "Licensor" shall mean the copyright owner or entity authorized by
13
+ the copyright owner that is granting the License.
14
+
15
+ "Legal Entity" shall mean the union of the acting entity and all
16
+ other entities that control, are controlled by, or are under common
17
+ control with that entity. For the purposes of this definition,
18
+ "control" means (i) the power, direct or indirect, to cause the
19
+ direction or management of such entity, whether by contract or
20
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
21
+ outstanding shares, or (iii) beneficial ownership of such entity.
22
+
23
+ "You" (or "Your") shall mean an individual or Legal Entity
24
+ exercising permissions granted by this License.
25
+
26
+ "Source" form shall mean the preferred form for making modifications,
27
+ including but not limited to software source code, documentation
28
+ source, and configuration files.
29
+
30
+ "Object" form shall mean any form resulting from mechanical
31
+ transformation or translation of a Source form, including but
32
+ not limited to compiled object code, generated documentation,
33
+ and conversions to other media types.
34
+
35
+ "Work" shall mean the work of authorship, whether in Source or
36
+ Object form, made available under the License, as indicated by a
37
+ copyright notice that is included in or attached to the work
38
+ (an example is provided in the Appendix below).
39
+
40
+ "Derivative Works" shall mean any work, whether in Source or Object
41
+ form, that is based on (or derived from) the Work and for which the
42
+ editorial revisions, annotations, elaborations, or other modifications
43
+ represent, as a whole, an original work of authorship. For the purposes
44
+ of this License, Derivative Works shall not include works that remain
45
+ separable from, or merely link (or bind by name) to the interfaces of,
46
+ the Work and Derivative Works thereof.
47
+
48
+ "Contribution" shall mean any work of authorship, including
49
+ the original version of the Work and any modifications or additions
50
+ to that Work or Derivative Works thereof, that is intentionally
51
+ submitted to Licensor for inclusion in the Work by the copyright owner
52
+ or by an individual or Legal Entity authorized to submit on behalf of
53
+ the copyright owner. For the purposes of this definition, "submitted"
54
+ means any form of electronic, verbal, or written communication sent
55
+ to the Licensor or its representatives, including but not limited to
56
+ communication on electronic mailing lists, source code control systems,
57
+ and issue tracking systems that are managed by, or on behalf of, the
58
+ Licensor for the purpose of discussing and improving the Work, but
59
+ excluding communication that is conspicuously marked or otherwise
60
+ designated in writing by the copyright owner as "Not a Contribution."
61
+
62
+ "Contributor" shall mean Licensor and any individual or Legal Entity
63
+ on behalf of whom a Contribution has been received by Licensor and
64
+ subsequently incorporated within the Work.
65
+
66
+ 2. Grant of Copyright License. Subject to the terms and conditions of
67
+ this License, each Contributor hereby grants to You a perpetual,
68
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69
+ copyright license to reproduce, prepare Derivative Works of,
70
+ publicly display, publicly perform, sublicense, and distribute the
71
+ Work and such Derivative Works in Source or Object form.
72
+
73
+ 3. Grant of Patent License. Subject to the terms and conditions of
74
+ this License, each Contributor hereby grants to You a perpetual,
75
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76
+ (except as stated in this section) patent license to make, have made,
77
+ use, offer to sell, sell, import, and otherwise transfer the Work,
78
+ where such license applies only to those patent claims licensable
79
+ by such Contributor that are necessarily infringed by their
80
+ Contribution(s) alone or by combination of their Contribution(s)
81
+ with the Work to which such Contribution(s) was submitted. If You
82
+ institute patent litigation against any entity (including a
83
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
84
+ or a Contribution incorporated within the Work constitutes direct
85
+ or contributory patent infringement, then any patent licenses
86
+ granted to You under this License for that Work shall terminate
87
+ as of the date such litigation is filed.
88
+
89
+ 4. Redistribution. You may reproduce and distribute copies of the
90
+ Work or Derivative Works thereof in any medium, with or without
91
+ modifications, and in Source or Object form, provided that You
92
+ meet the following conditions:
93
+
94
+ (a) You must give any other recipients of the Work or
95
+ Derivative Works a copy of this License; and
96
+
97
+ (b) You must cause any modified files to carry prominent notices
98
+ stating that You changed the files; and
99
+
100
+ (c) You must retain, in the Source form of any Derivative Works
101
+ that You distribute, all copyright, patent, trademark, and
102
+ attribution notices from the Source form of the Work,
103
+ excluding those notices that do not pertain to any part of
104
+ the Derivative Works; and
105
+
106
+ (d) If the Work includes a "NOTICE" text file as part of its
107
+ distribution, then any Derivative Works that You distribute must
108
+ include a readable copy of the attribution notices contained
109
+ within such NOTICE file, excluding those notices that do not
110
+ pertain to any part of the Derivative Works, in at least one
111
+ of the following places: within a NOTICE text file distributed
112
+ as part of the Derivative Works; within the Source form or
113
+ documentation, if provided along with the Derivative Works; or,
114
+ within a display generated by the Derivative Works, if and
115
+ wherever such third-party notices normally appear. The contents
116
+ of the NOTICE file are for informational purposes only and
117
+ do not modify the License. You may add Your own attribution
118
+ notices within Derivative Works that You distribute, alongside
119
+ or as an addendum to the NOTICE text from the Work, provided
120
+ that such additional attribution notices cannot be construed
121
+ as modifying the License.
122
+
123
+ You may add Your own copyright statement to Your modifications and
124
+ may provide additional or different license terms and conditions
125
+ for use, reproduction, or distribution of Your modifications, or
126
+ for any such Derivative Works as a whole, provided Your use,
127
+ reproduction, and distribution of the Work otherwise complies with
128
+ the conditions stated in this License.
129
+
130
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
131
+ any Contribution intentionally submitted for inclusion in the Work
132
+ by You to the Licensor shall be under the terms and conditions of
133
+ this License, without any additional terms or conditions.
134
+ Notwithstanding the above, nothing herein shall supersede or modify
135
+ the terms of any separate license agreement you may have executed
136
+ with Licensor regarding such Contributions.
137
+
138
+ 6. Trademarks. This License does not grant permission to use the trade
139
+ names, trademarks, service marks, or product names of the Licensor,
140
+ except as required for reasonable and customary use in describing the
141
+ origin of the Work and reproducing the content of the NOTICE file.
142
+
143
+ 7. Disclaimer of Warranty. Unless required by applicable law or
144
+ agreed to in writing, Licensor provides the Work (and each
145
+ Contributor provides its Contributions) on an "AS IS" BASIS,
146
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147
+ implied, including, without limitation, any warranties or conditions
148
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149
+ PARTICULAR PURPOSE. You are solely responsible for determining the
150
+ appropriateness of using or redistributing the Work and assume any
151
+ risks associated with Your exercise of permissions under this License.
152
+
153
+ 8. Limitation of Liability. In no event and under no legal theory,
154
+ whether in tort (including negligence), contract, or otherwise,
155
+ unless required by applicable law (such as deliberate and grossly
156
+ negligent acts) or agreed to in writing, shall any Contributor be
157
+ liable to You for damages, including any direct, indirect, special,
158
+ incidental, or consequential damages of any character arising as a
159
+ result of this License or out of the use or inability to use the
160
+ Work (including but not limited to damages for loss of goodwill,
161
+ work stoppage, computer failure or malfunction, or any and all
162
+ other commercial damages or losses), even if such Contributor
163
+ has been advised of the possibility of such damages.
164
+
165
+ 9. Accepting Warranty or Additional Liability. While redistributing
166
+ the Work or Derivative Works thereof, You may choose to offer,
167
+ and charge a fee for, acceptance of support, warranty, indemnity,
168
+ or other liability obligations and/or rights consistent with this
169
+ License. However, in accepting such obligations, You may act only
170
+ on Your own behalf and on Your sole responsibility, not on behalf
171
+ of any other Contributor, and only if You agree to indemnify,
172
+ defend, and hold each Contributor harmless for any liability
173
+ incurred by, or claims asserted against, such Contributor by reason
174
+ of your accepting any such warranty or additional liability.
175
+
176
+ END OF TERMS AND CONDITIONS
177
+
178
+ APPENDIX: How to apply the Apache License to your work.
179
+
180
+ To apply the Apache License to your work, attach the following
181
+ boilerplate notice, with the fields enclosed by brackets "[]"
182
+ replaced with your own identifying information. (Don't include
183
+ the brackets!) The text should be enclosed in the appropriate
184
+ comment syntax for the file format. We also recommend that a
185
+ file or class name and description of purpose be included on the
186
+ same "printed page" as the copyright notice for easier
187
+ identification within third-party archives.
188
+
189
+ Copyright [yyyy] [name of copyright owner]
190
+
191
+ Licensed under the Apache License, Version 2.0 (the "License");
192
+ you may not use this file except in compliance with the License.
193
+ You may obtain a copy of the License at
194
+
195
+ http://www.apache.org/licenses/LICENSE-2.0
196
+
197
+ Unless required by applicable law or agreed to in writing, software
198
+ distributed under the License is distributed on an "AS IS" BASIS,
199
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200
+ See the License for the specific language governing permissions and
201
+ limitations under the License.
MANIFEST.sha256 ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4 LICENSE
2
+ bd98da8168df588cf3937631ffdfaa39197baf64ef8bc0e0e29685dbab021640 NOTICE
3
+ 26398b1c14d979b87142a4d7255d133785d1153fa929ad111d8d832538896a9d README.md
4
+ c3cf9e34abf4f9e36c2d72165aa9c132d3e2a725b6c2586aaa3a8af9d7a81041 chat_template.jinja
5
+ 6f3e928d3292373acb295b0c25a91b4ccb1823ec5e054089075a32617aa2e5c2 config.json
6
+ defc878d6cc6d8535a0198d6e26c11fa904c2ae47297ddf4412a3d2dcd67e81e decision_config.json
7
+ bb175d0ba981a2581242a8f279003306ec7decd9cc667178f755e2bab2558288 model.q4nx
8
+ f2579067a488138e2ef00bb3e98989cac7311afbf48700dfad02244e3671f241 readout.safetensors
9
+ 0997f410c57a1f4e53b09e4be8f4a172d90edd9564368fb0847030937229b9f3 tokenizer.json
10
+ b11349aafa7cdc6a320767cf7ceb29ed82f7eda5d65e8e0819e76f0ce947bf27 tokenizer_config.json
11
+ 40b02b19596ebd66995bca905ecf481f994183e391505a89204caf965fe69425 vision_weight.q4nx
NOTICE ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ d3-turbo (Decision 3.0)
2
+ Copyright 2026 vLLM Semantic Router Team
3
+
4
+ Built on Qwen/Qwen3.5-27B (Apache-2.0).
5
+
6
+ Modified by the FastFlowLM team: weights quantized to the Q4NX format (Q4_K projections, Q8_0 token embedding) for AMD NPUs and repackaged for FastFlowLM. The readout, decision config, tokenizer and chat template are unmodified.
README.md ADDED
@@ -0,0 +1,209 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: apache-2.0
3
+ base_model: vllm-sr/d3-turbo
4
+ pipeline_tag: zero-shot-classification
5
+ tags:
6
+ - decision-model
7
+ - system-one
8
+ - fastflowlm
9
+ - amd-npu
10
+ - q4nx
11
+ ---
12
+
13
+ # D3-Turbo-NPU2
14
+
15
+ [vllm-sr/d3-turbo](https://huggingface.co/vllm-sr/d3-turbo) `v1.1` (`689b3af1`; Decision 3.0, the 27B multimodal decision
16
+ model of vLLM Semantic Router, Qwen3.5-27B text tower) for AMD Ryzen AI NPUs, served by
17
+ [FastFlowLM](https://github.com/ROCm/FastFlowLM) 1.0.11+.
18
+ It answers *System One* requests -- choice, yes / no and score questions about a state, optionally with images and videos,
19
+ with a probability for every option; `box` questions (where is it in an image or a video) and `track` questions (a box per
20
+ moment over a whole video) as well -- over the same `POST /v1/systemone` API as the upstream package. Up to 32,768 input
21
+ tokens per question. Like upstream d3-turbo it reads the state once per request and answers every question on it
22
+ ("ask once, answer many"), so many questions about one input cost far less than one request per question.
23
+
24
+ ```shell
25
+ flm pull d3:turbo # 16.6 GB download
26
+ flm serve --decision d3:turbo # optionally next to a chat model: flm serve qwen3.5:9b --decision d3:turbo
27
+ curl -s http://127.0.0.1:52625/v1/systemone -H "Content-Type: application/json" \
28
+ -d '{"state": "The order arrived damaged.", "questions": {"route": {"type": "choice",
29
+ "criteria": {"returns": "Refunds and replacements", "billing": "Payments", "general": null}}}}'
30
+ ```
31
+
32
+ Images go in an `images` list of base64 data URLs (PNG, JPEG or WebP; each at most 8 MB and 16 MP, resized to at most
33
+ 1.6 MP), shared by every question of the request. `d3:lite` (0.8B), `d3:nano` (2B) and `d3:mini` (4B) are the smaller
34
+ siblings; they answer a single short question in well under a second, d3:turbo needs a few seconds (see Speed).
35
+
36
+ ## What this package supports on the NPU
37
+
38
+ | Question / input | Status |
39
+ |---|---|
40
+ | `choice`, `noul` (yes / no), `score` on text | supported |
41
+ | the same with images in the state (several images per request) | supported |
42
+ | Maximum length | 32,768 tokens per question (a longer prompt is answered with `max_length_exceeded`; nothing is truncated) |
43
+ | `long_context=True` (upstream: up to 131,072 tokens) | **not supported** (the request is refused with HTTP 422) |
44
+
45
+ | Question / input | Status |
46
+ |---|---|
47
+ | `box` (where is it in an image; also at a moment of a video with `at`) | supported: one box per question with a calibrated confidence |
48
+ | `assets` (images inside the state, a question's instructions or its options) | supported |
49
+ | videos in the state (2 frames per second, 4 to 32 frames, at most 0.2 MP per frame) | supported; a video is at most 60 s and 16,384 vision tokens per request; decoding mp4 / webm / mkv / mov / gif needs the FFmpeg shared libraries on the machine (without them the request is refused with HTTP 422; frame lists `{"frames": [...]}` always work) |
50
+ | `track` (a box per moment over a whole video, 1 or 2 updates per second) | supported; at most 256 moments per request (`D3_MOMENT_ROWS`) |
51
+
52
+ `GET /v1/systemone/models` lists exactly what the running build accepts.
53
+
54
+ ## Requirements
55
+
56
+ - An AMD Ryzen AI processor with an XDNA 2 NPU (this package was tested on a Strix Halo machine), Linux with the XRT
57
+ stack, FastFlowLM as above.
58
+ - Memory: the package is 16.6 GB on disk and about 17.9 GB resident once loaded. Measured peak resident memory of the
59
+ server process: 17.4 GB for prompts up to 4k tokens, 22.4 GB at 24k and **25.3 GB at 32,768 tokens**; the FLM catalog
60
+ reserves a footprint of 26 GB (plus 8.6 GB of locked scratch memory). All numbers are from a 128 GB machine; smaller
61
+ machines were not tested, plan for a 32 GB or larger system and do not run it next to other large models.
62
+ - Load time about 17 s (page cache warm).
63
+
64
+ ## What was changed
65
+
66
+ - **Weights:** the Qwen3.5-27B text tower of d3-turbo quantized to FastFlowLM's Q4NX format: every projection Q4_K with
67
+ GPTQ-calibrated rounding (our own sequential GPTQ over all 64 layers, 400 tensors; calibration: 300 synthetic System
68
+ One questions of up to 2k tokens with the model's `prefix_bidir` mask, none from the Decision Index), token embedding
69
+ Q8_0, norms and the Gated DeltaNet `alpha` / `beta` parameters kept in BF16.
70
+ - **Vision tower:** `vision_weight.q4nx` is made from d3-turbo's own vision encoder (27 layers, 1152 wide, 5120 out),
71
+ which differs from stock Qwen3.5-27B's in every tensor (it was fine-tuned), then quantized to Q4_K. It runs on
72
+ FastFlowLM's existing vision kernels.
73
+ - **Attention numerics (`prefix_bidir`):** as upstream, the state block attends bidirectionally to itself, each question
74
+ block attends to the state and to itself, never the other way, and the Gated DeltaNet layers stay causal. The engine
75
+ runs the state once and the question blocks on its cached keys / values and recurrent state; a question's answer does
76
+ not depend on the other questions of the request. `usage.input_tokens` counts the state once plus every question block,
77
+ as upstream.
78
+ - **Unchanged:** `readout.safetensors`, `decision_config.json`, `tokenizer.json`, `tokenizer_config.json`,
79
+ `chat_template.jinja`, `LICENSE` are the upstream files byte for byte (`MANIFEST.sha256`); `NOTICE` adds the
80
+ modification statement. Prompts, token ids and answer objects follow the upstream runtime, with one known difference:
81
+ FastFlowLM tokenizes with the model's own `tokenizer.json`, while upstream's `transformers` tokenizer drops the
82
+ combining-mark class from its pre-tokenizer, so text with combining marks (for example an emoji variation selector)
83
+ can have one token more upstream (the token counts differ by one on 3 of 1,480 test prompts).
84
+
85
+ ## Accuracy (against the upstream BF16 model)
86
+
87
+ All comparisons use the same requests: the upstream runtime in BF16 as the reference (run on an AMD iGPU, the vision
88
+ tower of the image references on the CPU) and this package on the NPU.
89
+
90
+ | | this package on the NPU | upstream BF16 |
91
+ |---|---|---|
92
+ | Final-norm hidden state vs BF16, cosine (736 text questions, median / minimum) | 0.9990 / 0.981 | -- |
93
+ | Probability error vs BF16 (736 text questions, median / 99th percentile / maximum) | 0.011 / 0.13 / 0.50 | -- |
94
+ | Same top answer as BF16 (736 text questions) | 95.7% | -- |
95
+ | Same, 5 long prompts of 6k to 24k tokens (cosine median) | 5 / 5 (0.9980) | -- |
96
+ | Same, 60 questions with images (cosine median) | 91.7% (0.9941) | -- |
97
+
98
+ The plain Q4_K quantization of the same model without GPTQ agreed on 91.0% of the text questions (cosine 0.9964), so
99
+ GPTQ is what makes this package usable. Rounding noise of 4-bit weights accumulates over 64 layers, so this 27B model
100
+ sits at the level of d3:nano (95.7%) and below d3:mini (97.0%) on this measure. The image rows are lower than the text
101
+ rows mainly because of the vision tower: on FastFlowLM's current vision kernels its features differ from the BF16
102
+ tower's by a relative L2 error of 0.31 (the same kernels give 0.58 on the d3:mini tower, which ships).
103
+
104
+ | Decision Index public-suite subset | this package on the NPU | upstream BF16 (same requests) |
105
+ |---|---|---|
106
+ | mean benchmark score (782 requests, 42 benchmarks) | 77.18 | 76.12 |
107
+ | top-1 agreement with BF16 on the same requests (7,026 choice answers) | 98.9% | -- |
108
+
109
+ Mean benchmark score, this package minus BF16: +1.06 pt (standard error 0.48 pt; request-weighted +1.31 pt). The package
110
+ is not worse than the BF16 model on this slice (d3:lite -0.59 pt, d3:nano -1.25 pt, d3:mini -0.99 pt); the mean absolute
111
+ probability difference is 0.0086. The slice is the first 800 requests of the same 4,002-request sample as d3:nano and
112
+ d3:mini (round-robin over 43 benchmarks).
113
+
114
+ | Decision Index public vision suite subset (600 questions, 10 benchmarks) | this package on the NPU | upstream BF16 |
115
+ |---|---|---|
116
+ | accuracy | 79.0% | 81.0% |
117
+ | top-1 agreement with BF16 on the same questions | 88.8% | -- |
118
+
119
+ Paired accuracy, BF16 minus this package: +2.0 pt (95% CI -0.3 to +4.3; d3:mini: +2.5 pt, CI +0.5 to +4.5). The largest
120
+ gap is Hateful Memes moderation (63.3% vs 76.7% on 60 questions). The image rows are limited by the vision tower: on
121
+ FastFlowLM's current vision kernels its features differ from the BF16 tower's by a relative L2 error of 0.31.
122
+
123
+ The subset is a seeded round-robin sample over the suite's benchmarks (the same rows as for the d3:lite, nano and mini
124
+ cards), not the full suite, so its scores are not comparable with the upstream board numbers (d3-turbo: 70.2 text, 72.9
125
+ vision, upstream's own estimates). The vision subset is 60 seeded questions from each of 10 benchmarks (the suite
126
+ without the gated Winoground).
127
+
128
+ ## Speed (AMD Ryzen AI MAX+ PRO 395 (Strix Halo, XDNA 2 NPU), 128 GB, Ubuntu 24.04, XRT, FastFlowLM)
129
+
130
+ **These were measured on a loaded machine** (load average 10 to 80 from other jobs on the same box during most runs, CPU
131
+ and memory bandwidth shared), so treat them as upper bounds; an idle machine is faster. The runs of the per-length and
132
+ per-question-count tables used the plain Q4_K package of identical shape (the GPTQ package differs only in the rounded
133
+ weight values); the HTTP rows used this package.
134
+
135
+ Time to answer one request of one question of n tokens (the state is about 57% of the prompt):
136
+
137
+ | question + state | median latency |
138
+ |---|---|
139
+ | 64 tokens | 5.6 s |
140
+ | 330 tokens (HTTP: 4.9 s) | 5.5 s |
141
+ | 1,024 tokens | 11.9 s |
142
+ | 2,048 tokens | 23.4 s |
143
+ | 4,096 tokens | 42.4 s |
144
+ | 8,192 tokens | 84.3 s |
145
+ | 16,384 tokens | 186 s |
146
+ | 32,768 tokens | 430 s (360 to 411 s in the correctness runs) |
147
+
148
+ The floor is about 4 to 5 s per request (the 15.5 GB of weights are streamed from memory once per pass, so a short
149
+ question is memory-bound; d3:mini needs 0.5 s for the same question), then roughly 7 to 12 ms per token. Over HTTP
150
+ (`flm serve`), the 736 text questions of the accuracy set (212 requests) took 4.4 s per request at the median.
151
+
152
+ **Questions per request (state once).** One request about the same state, wall time of the engine (state 300 / 1,024 /
153
+ 4,096 tokens, each question about 110 tokens), against answering every question in its own pass:
154
+
155
+ | questions | state 300 tokens | state 1,024 tokens | state 4,096 tokens |
156
+ |---:|---|---|---|
157
+ | 1 | 6.3 s | 12.4 s | 39.8 s |
158
+ | 4 | 9.3 s (one pass each: 19.2 s, 2.1x) | 15.4 s (57.5 s, 3.7x) | 53.9 s (202 s, 3.7x) |
159
+ | 16 | 21 s (53 s, 2.5x) | 25.9 s (243 s, 9.4x) | 72.7 s (635 s, 8.7x) |
160
+ | 64 | 74 s (305 s, 4.1x) | 88.2 s (917 s, 10.4x) | 110 s (3,505 s, 32x) |
161
+ | 255 | 318 s (1,220 s, 3.8x) | -- | -- |
162
+
163
+ State once gives bit-identical answers to the one-pass-per-question path. Peak resident memory with 255 questions about a
164
+ 300-token state: 18 GB.
165
+
166
+ | request (one box or track request, GPTQ package, loaded Strix Halo) | median latency |
167
+ |---|---|
168
+ | `box` questions about one image (3 to 8 boxes) | 11 s (3-19 s) |
169
+ | a plain question about a video in the state | 18 s (4-26 s); 28 s for a 60 s 720p clip |
170
+ | `assets` (images in options or instructions) | 28 s (11-114 s) |
171
+ | `box` at one moment of a 60 s 720p video | 29 s |
172
+ | `track` over a 60 s 720p video, 1 update per second (60 moments, 4 windows) | 145 s |
173
+ | `track` over a 60 s 720p video, 2 updates per second (120 moments, 8 windows) | 278 s |
174
+
175
+
176
+ From 1,536 tokens attention can run on the NPU's attention kernel; end to end it made no clear difference on this model
177
+ (within the +-30% noise of the loaded machine), so the threshold was left at the default. The 32,768-token prompt is
178
+ split into two GEMM parts internally (a single 2.3 GB buffer cannot be allocated on this driver).
179
+
180
+ ## Comparison
181
+
182
+ - **Against upstream d3-turbo on one AMD Instinct MI325X** (AutoModel, 255 questions about one photo in 2.12 s, one
183
+ question in 302 ms): the NPU is memory-bandwidth bound and about two orders of magnitude slower in wall time (state
184
+ 300 tokens + 255 questions: 318 s). Its use is local, private, low-power operation next to the CPU and GPU, not
185
+ throughput.
186
+ - **Against the smaller NPU siblings:** d3:mini answers a 330-token question in 0.5 s and d3:nano in 0.25 s; d3:turbo
187
+ takes about 5 s, but reads a state once for any number of questions (the NPU siblings in FastFlowLM read the prompt again
188
+ for every question). On accuracy, upstream reports (its own estimates) 70.2 text / 72.9 vision on the Jev Decision
189
+ Index for d3-turbo against 66.3 / 71.3 for the d3 board model.
190
+ - **Against the BF16 model on the same requests:** see Accuracy. The quantization costs a few points of top-1
191
+ agreement, more than for d3:mini, and the image path costs somewhat more than text.
192
+
193
+ ## License
194
+
195
+ Apache-2.0, as the upstream model; see `LICENSE` and `NOTICE`. Built on Qwen/Qwen3.5-27B (Apache-2.0). Quantized and
196
+ repackaged for FastFlowLM by the FastFlowLM team; the readout, decision config, tokenizer and chat template are unmodified.
197
+
198
+ ## Citation
199
+
200
+ Please cite the upstream model ([vllm-sr/d3-turbo](https://huggingface.co/vllm-sr/d3-turbo)):
201
+
202
+ ```bibtex
203
+ @misc{d3turbo_2026,
204
+ title = {{d3-turbo}: A Multimodal Decision Model that Reads Once},
205
+ author = {{vLLM Semantic Router Team}},
206
+ year = {2026},
207
+ howpublished = {\url{https://huggingface.co/vllm-sr/d3-turbo}}
208
+ }
209
+ ```
chat_template.jinja ADDED
@@ -0,0 +1,170 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
+ {%- set reasoning_instructions = '' %}
46
+ {%- if enable_thinking is undefined or enable_thinking is true %}
47
+ {%- set resolved_reasoning_effort = reasoning_effort|default('xhigh') %}
48
+ {%- if resolved_reasoning_effort not in ('xhigh', 'medium', 'low') %}
49
+ {{- raise_exception('Unexpected reasoning effort ' ~ reasoning_effort ~ '. Supported types are xhigh (default), medium, and low.') }}
50
+ {%- endif %}
51
+ {%- if resolved_reasoning_effort == 'xhigh' %}
52
+ {%- set reasoning_instructions = 'Reasoning effort is set to xhigh. Please think carefully through the task, validate key assumptions, consider plausible alternatives, and prioritize correctness, consistency, and clarity in the final answer.' %}
53
+ {%- elif resolved_reasoning_effort == 'low' %}
54
+ {%- set reasoning_instructions = 'Reasoning effort is set to low. Keep your thinking brief and focused, moving directly to the conclusion without unnecessary elaboration.' %}
55
+ {%- endif %}
56
+ {%- endif %}
57
+ {%- if tools and tools is iterable and tools is not mapping %}
58
+ {{- '<|im_start|>system\n' }}
59
+ {%- if reasoning_instructions %}
60
+ {{- reasoning_instructions + '\n\n' }}
61
+ {%- endif %}
62
+ {{- "# Tools\n\nYou have access to the following functions:\n\n<tools>" }}
63
+ {%- for tool in tools %}
64
+ {{- "\n" }}
65
+ {{- tool | tojson }}
66
+ {%- endfor %}
67
+ {{- "\n</tools>" }}
68
+ {{- '\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>' }}
69
+ {%- if messages[0].role == 'system' %}
70
+ {%- set content = render_content(messages[0].content, false, true)|trim %}
71
+ {%- if content %}
72
+ {{- '\n\n' + content }}
73
+ {%- endif %}
74
+ {%- endif %}
75
+ {{- '<|im_end|>\n' }}
76
+ {%- else %}
77
+ {%- if messages[0].role == 'system' %}
78
+ {%- set content = render_content(messages[0].content, false, true)|trim %}
79
+ {%- if content %}
80
+ {{- '<|im_start|>system\n' + (reasoning_instructions + '\n\n' if reasoning_instructions else '') + content + '<|im_end|>\n' }}
81
+ {%- elif reasoning_instructions %}
82
+ {{- '<|im_start|>system\n' + reasoning_instructions + '<|im_end|>\n' }}
83
+ {%- endif %}
84
+ {%- elif reasoning_instructions %}
85
+ {{- '<|im_start|>system\n' + reasoning_instructions + '<|im_end|>\n' }}
86
+ {%- endif %}
87
+ {%- endif %}
88
+ {%- set ns = namespace(multi_step_tool=true, last_query_index=messages|length - 1) %}
89
+ {%- for message in messages[::-1] %}
90
+ {%- set index = (messages|length - 1) - loop.index0 %}
91
+ {%- if ns.multi_step_tool and message.role == "user" %}
92
+ {%- set content = render_content(message.content, false)|trim %}
93
+ {%- if not(content.startswith('<tool_response>') and content.endswith('</tool_response>')) %}
94
+ {%- set ns.multi_step_tool = false %}
95
+ {%- set ns.last_query_index = index %}
96
+ {%- endif %}
97
+ {%- endif %}
98
+ {%- endfor %}
99
+ {%- if ns.multi_step_tool %}
100
+ {{- raise_exception('No user query found in messages.') }}
101
+ {%- endif %}
102
+ {%- for message in messages %}
103
+ {%- set content = render_content(message.content, true)|trim %}
104
+ {%- if message.role == "system" %}
105
+ {%- if not loop.first %}
106
+ {{- raise_exception('System message must be at the beginning.') }}
107
+ {%- endif %}
108
+ {%- elif message.role == "user" %}
109
+ {{- '<|im_start|>' + message.role + '\n' + content + '<|im_end|>' + '\n' }}
110
+ {%- elif message.role == "assistant" %}
111
+ {%- set reasoning_content = '' %}
112
+ {%- if message.reasoning_content is string %}
113
+ {%- set reasoning_content = message.reasoning_content %}
114
+ {%- endif %}
115
+ {%- set reasoning_content = reasoning_content|trim %}
116
+ {%- if preserve_thinking is undefined or preserve_thinking is true or loop.index0 > ns.last_query_index %}
117
+ {{- '<|im_start|>' + message.role + '\n<think>\n' + reasoning_content + '\n</think>\n\n' + content }}
118
+ {%- else %}
119
+ {{- '<|im_start|>' + message.role + '\n' + content }}
120
+ {%- endif %}
121
+ {%- if message.tool_calls and message.tool_calls is iterable and message.tool_calls is not mapping %}
122
+ {%- for tool_call in message.tool_calls %}
123
+ {%- if tool_call.function is defined %}
124
+ {%- set tool_call = tool_call.function %}
125
+ {%- endif %}
126
+ {%- if loop.first %}
127
+ {%- if content|trim %}
128
+ {{- '\n\n<tool_call>\n<function=' + tool_call.name + '>\n' }}
129
+ {%- else %}
130
+ {{- '<tool_call>\n<function=' + tool_call.name + '>\n' }}
131
+ {%- endif %}
132
+ {%- else %}
133
+ {{- '\n<tool_call>\n<function=' + tool_call.name + '>\n' }}
134
+ {%- endif %}
135
+ {%- if tool_call.arguments is defined and tool_call.arguments != '' %}
136
+ {%- for args_name, args_value in tool_call.arguments|items %}
137
+ {{- '<parameter=' + args_name + '>\n' }}
138
+ {%- set args_value = args_value | string if args_value is string else args_value | tojson | safe %}
139
+ {{- args_value }}
140
+ {{- '\n</parameter>\n' }}
141
+ {%- endfor %}
142
+ {%- endif %}
143
+ {{- '</function>\n</tool_call>' }}
144
+ {%- endfor %}
145
+ {%- endif %}
146
+ {{- '<|im_end|>\n' }}
147
+ {%- elif message.role == "tool" %}
148
+ {%- if loop.previtem and loop.previtem.role != "tool" %}
149
+ {{- '<|im_start|>user' }}
150
+ {%- endif %}
151
+ {{- '\n<tool_response>\n' }}
152
+ {{- content }}
153
+ {{- '\n</tool_response>' }}
154
+ {%- if not loop.last and loop.nextitem.role != "tool" %}
155
+ {{- '<|im_end|>\n' }}
156
+ {%- elif loop.last %}
157
+ {{- '<|im_end|>\n' }}
158
+ {%- endif %}
159
+ {%- else %}
160
+ {{- raise_exception('Unexpected message role.') }}
161
+ {%- endif %}
162
+ {%- endfor %}
163
+ {%- if add_generation_prompt %}
164
+ {{- '<|im_start|>assistant\n' }}
165
+ {%- if enable_thinking is defined and enable_thinking is false %}
166
+ {{- '<think>\n\n</think>\n\n' }}
167
+ {%- else %}
168
+ {{- '<think>\n' }}
169
+ {%- endif %}
170
+ {%- endif %}
config.json ADDED
@@ -0,0 +1,147 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architectures": [
3
+ "Qwen3_5ForConditionalGeneration"
4
+ ],
5
+ "image_token_id": 248056,
6
+ "model_type": "qwen3_5_text",
7
+ "attention_bias": false,
8
+ "attention_dropout": 0.0,
9
+ "attn_output_gate": true,
10
+ "dtype": "bfloat16",
11
+ "eos_token_id": 248044,
12
+ "full_attention_interval": 4,
13
+ "head_dim": 256,
14
+ "hidden_act": "silu",
15
+ "hidden_size": 5120,
16
+ "initializer_range": 0.02,
17
+ "intermediate_size": 17408,
18
+ "layer_types": [
19
+ "linear_attention",
20
+ "linear_attention",
21
+ "linear_attention",
22
+ "full_attention",
23
+ "linear_attention",
24
+ "linear_attention",
25
+ "linear_attention",
26
+ "full_attention",
27
+ "linear_attention",
28
+ "linear_attention",
29
+ "linear_attention",
30
+ "full_attention",
31
+ "linear_attention",
32
+ "linear_attention",
33
+ "linear_attention",
34
+ "full_attention",
35
+ "linear_attention",
36
+ "linear_attention",
37
+ "linear_attention",
38
+ "full_attention",
39
+ "linear_attention",
40
+ "linear_attention",
41
+ "linear_attention",
42
+ "full_attention",
43
+ "linear_attention",
44
+ "linear_attention",
45
+ "linear_attention",
46
+ "full_attention",
47
+ "linear_attention",
48
+ "linear_attention",
49
+ "linear_attention",
50
+ "full_attention",
51
+ "linear_attention",
52
+ "linear_attention",
53
+ "linear_attention",
54
+ "full_attention",
55
+ "linear_attention",
56
+ "linear_attention",
57
+ "linear_attention",
58
+ "full_attention",
59
+ "linear_attention",
60
+ "linear_attention",
61
+ "linear_attention",
62
+ "full_attention",
63
+ "linear_attention",
64
+ "linear_attention",
65
+ "linear_attention",
66
+ "full_attention",
67
+ "linear_attention",
68
+ "linear_attention",
69
+ "linear_attention",
70
+ "full_attention",
71
+ "linear_attention",
72
+ "linear_attention",
73
+ "linear_attention",
74
+ "full_attention",
75
+ "linear_attention",
76
+ "linear_attention",
77
+ "linear_attention",
78
+ "full_attention",
79
+ "linear_attention",
80
+ "linear_attention",
81
+ "linear_attention",
82
+ "full_attention"
83
+ ],
84
+ "linear_conv_kernel_dim": 4,
85
+ "linear_key_head_dim": 128,
86
+ "linear_num_key_heads": 16,
87
+ "linear_num_value_heads": 48,
88
+ "linear_value_head_dim": 128,
89
+ "max_position_embeddings": 262144,
90
+ "mlp_only_layers": [],
91
+ "mtp_num_hidden_layers": 1,
92
+ "mtp_use_dedicated_embeddings": false,
93
+ "num_attention_heads": 24,
94
+ "num_hidden_layers": 64,
95
+ "num_key_value_heads": 4,
96
+ "rms_norm_eps": 1e-06,
97
+ "use_cache": true,
98
+ "vocab_size": 248320,
99
+ "mamba_ssm_dtype": "float32",
100
+ "rope_parameters": {
101
+ "mrope_interleaved": true,
102
+ "mrope_section": [
103
+ 11,
104
+ 11,
105
+ 10
106
+ ],
107
+ "rope_type": "default",
108
+ "rope_theta": 10000000,
109
+ "partial_rotary_factor": 0.25
110
+ },
111
+ "flm_version": "1.0.10",
112
+ "vision_model_weight": "vision_weight.q4nx",
113
+ "vision_end_token_id": 248054,
114
+ "vision_start_token_id": 248053,
115
+ "vision_config": {
116
+ "vision_mm_engine_xclbin_name": "vision_mm.xclbin",
117
+ "vision_mha_engine_xclbin_name": "vision_attn.xclbin",
118
+ "QWEN3_5_PATCH_SIZE": 16,
119
+ "QWEN3_5_IMAGE_MERGE_SIZE": 2,
120
+ "QWEN3_5_SPATIAL_MERGE_SIZE": 2,
121
+ "QWEN3_5_SHORTEST_EDGE": 65536,
122
+ "QWEN3_5_LONGEST_EDGE": 1638400,
123
+ "QWEN3_5_VISION_RESCALE_FACTOR": 0.00392156862745098,
124
+ "QWEN3_5_VISION_RESCALE_IMAGE_MEAN": 0.5,
125
+ "QWEN3_5_VISION_RESCALE_IMAGE_STD": 0.5,
126
+ "QWEN3_5_TEMPORAL_PATCH_SIZE": 2,
127
+ "QWEN3_5_VISION_EMBED_DIM": 1152,
128
+ "QWEN3_5_VISION_NUM_HEADS": 16,
129
+ "QWEN3_5_VISION_HEAD_DIM": 72,
130
+ "QWEN3_5_VISION_MLP_INTERMEDIATE_SIZE": 4304,
131
+ "QWEN3_5_VISION_NUM_POSITION_EMBEDDINGS": 2304,
132
+ "QWEN3_5_VISION_NUM_LAYERS": 27,
133
+ "QWEN3_5_VISION_LAYER_NORM_EPSILON": 1e-06,
134
+ "QWEN3_5_VISION_OUT_HIDDEN_SIZE": 5120,
135
+ "VISION_MM_TILE_M": 128,
136
+ "VISION_MM_TILE_K": 256,
137
+ "VISION_MM_TILE_N": 64
138
+ },
139
+ "tie_word_embeddings": true,
140
+ "decision": {
141
+ "config": "decision_config.json",
142
+ "readout": "readout.safetensors",
143
+ "base_model": "vllm-sr/d3-turbo",
144
+ "revision": "v1.1",
145
+ "model_name": "d3-turbo"
146
+ }
147
+ }
decision_config.json ADDED
@@ -0,0 +1,695 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "format_version": 1,
3
+ "format_id": "d3-code-readout-v1",
4
+ "prompt": "d3",
5
+ "codes": [
6
+ "A",
7
+ "B",
8
+ "C",
9
+ "D",
10
+ "E",
11
+ "F",
12
+ "G",
13
+ "H",
14
+ "I",
15
+ "J",
16
+ "K",
17
+ "L",
18
+ "M",
19
+ "N",
20
+ "O",
21
+ "P",
22
+ "Q",
23
+ "R",
24
+ "S",
25
+ "T",
26
+ "U",
27
+ "V",
28
+ "W",
29
+ "X",
30
+ "Y",
31
+ "Z",
32
+ "AA",
33
+ "AB",
34
+ "AC",
35
+ "AD",
36
+ "AE",
37
+ "AF",
38
+ "AG",
39
+ "AH",
40
+ "AI",
41
+ "AJ",
42
+ "AK",
43
+ "AL",
44
+ "AM",
45
+ "AN",
46
+ "AO",
47
+ "AP",
48
+ "AQ",
49
+ "AR",
50
+ "AS",
51
+ "AT",
52
+ "AU",
53
+ "AV",
54
+ "AW",
55
+ "AX",
56
+ "AY",
57
+ "AZ",
58
+ "BA",
59
+ "BB",
60
+ "BC",
61
+ "BD",
62
+ "BE",
63
+ "BF",
64
+ "BG",
65
+ "BH",
66
+ "BI",
67
+ "BJ",
68
+ "BK",
69
+ "BL",
70
+ "BM",
71
+ "BN",
72
+ "BO",
73
+ "BP",
74
+ "BR",
75
+ "BS",
76
+ "BT",
77
+ "BU",
78
+ "BV",
79
+ "BW",
80
+ "BX",
81
+ "BY",
82
+ "CA",
83
+ "CB",
84
+ "CC",
85
+ "CD",
86
+ "CE",
87
+ "CF",
88
+ "CG",
89
+ "CH",
90
+ "CI",
91
+ "CK",
92
+ "CL",
93
+ "CM",
94
+ "CN",
95
+ "CO",
96
+ "CP",
97
+ "CR",
98
+ "CS",
99
+ "CT",
100
+ "CU",
101
+ "CV",
102
+ "CW",
103
+ "CX",
104
+ "CY",
105
+ "DA",
106
+ "DB",
107
+ "DC",
108
+ "DD",
109
+ "DE",
110
+ "DF",
111
+ "DG",
112
+ "DH",
113
+ "DI",
114
+ "DJ",
115
+ "DK",
116
+ "DL",
117
+ "DM",
118
+ "DN",
119
+ "DO",
120
+ "DP",
121
+ "DR",
122
+ "DS",
123
+ "DT",
124
+ "DU",
125
+ "DV",
126
+ "DW",
127
+ "DX",
128
+ "DY",
129
+ "EA",
130
+ "EB",
131
+ "EC",
132
+ "ED",
133
+ "EE",
134
+ "EF",
135
+ "EG",
136
+ "EH",
137
+ "EI",
138
+ "EK",
139
+ "EL",
140
+ "EM",
141
+ "EN",
142
+ "EO",
143
+ "EP",
144
+ "EQ",
145
+ "ER",
146
+ "ES",
147
+ "ET",
148
+ "EU",
149
+ "EV",
150
+ "EW",
151
+ "EX",
152
+ "EZ",
153
+ "FA",
154
+ "FB",
155
+ "FC",
156
+ "FD",
157
+ "FE",
158
+ "FF",
159
+ "FG",
160
+ "FH",
161
+ "FI",
162
+ "FK",
163
+ "FL",
164
+ "FM",
165
+ "FN",
166
+ "FO",
167
+ "FP",
168
+ "FR",
169
+ "FS",
170
+ "FT",
171
+ "FU",
172
+ "FW",
173
+ "FX",
174
+ "FY",
175
+ "GA",
176
+ "GB",
177
+ "GC",
178
+ "GD",
179
+ "GE",
180
+ "GF",
181
+ "GG",
182
+ "GH",
183
+ "GI",
184
+ "GL",
185
+ "GM",
186
+ "GN",
187
+ "GO",
188
+ "GP",
189
+ "GR",
190
+ "GS",
191
+ "GT",
192
+ "GU",
193
+ "GV",
194
+ "GW",
195
+ "GX",
196
+ "GY",
197
+ "HA",
198
+ "HB",
199
+ "HC",
200
+ "HD",
201
+ "HE",
202
+ "HF",
203
+ "HG",
204
+ "HH",
205
+ "HI",
206
+ "HK",
207
+ "HL",
208
+ "HM",
209
+ "HN",
210
+ "HO",
211
+ "HP",
212
+ "HQ",
213
+ "HR",
214
+ "HS",
215
+ "HT",
216
+ "HU",
217
+ "HV",
218
+ "HW",
219
+ "HX",
220
+ "HY",
221
+ "HZ",
222
+ "IA",
223
+ "IB",
224
+ "IC",
225
+ "ID",
226
+ "IE",
227
+ "IF",
228
+ "IG",
229
+ "IH",
230
+ "II",
231
+ "IJ",
232
+ "IK",
233
+ "IL",
234
+ "IM",
235
+ "IN",
236
+ "IO",
237
+ "IP",
238
+ "IQ",
239
+ "IR",
240
+ "IS",
241
+ "IT",
242
+ "IU",
243
+ "IV",
244
+ "IW",
245
+ "IX",
246
+ "IZ",
247
+ "JA",
248
+ "JB",
249
+ "JC",
250
+ "JD",
251
+ "JE",
252
+ "JI",
253
+ "JJ",
254
+ "JK",
255
+ "JM",
256
+ "JO",
257
+ "JP",
258
+ "JR",
259
+ "JS",
260
+ "JT"
261
+ ],
262
+ "token_ids": [
263
+ 32,
264
+ 33,
265
+ 34,
266
+ 35,
267
+ 36,
268
+ 37,
269
+ 38,
270
+ 39,
271
+ 40,
272
+ 41,
273
+ 42,
274
+ 43,
275
+ 44,
276
+ 45,
277
+ 46,
278
+ 47,
279
+ 48,
280
+ 49,
281
+ 50,
282
+ 51,
283
+ 52,
284
+ 53,
285
+ 54,
286
+ 55,
287
+ 56,
288
+ 57,
289
+ 5840,
290
+ 1803,
291
+ 1646,
292
+ 1745,
293
+ 13276,
294
+ 8018,
295
+ 1825,
296
+ 28946,
297
+ 15015,
298
+ 29595,
299
+ 11568,
300
+ 939,
301
+ 1354,
302
+ 1058,
303
+ 18183,
304
+ 2456,
305
+ 88898,
306
+ 905,
307
+ 1846,
308
+ 802,
309
+ 33869,
310
+ 7839,
311
+ 14006,
312
+ 2860,
313
+ 2926,
314
+ 22828,
315
+ 6844,
316
+ 9798,
317
+ 4738,
318
+ 9265,
319
+ 11261,
320
+ 19278,
321
+ 36513,
322
+ 93801,
323
+ 8335,
324
+ 14544,
325
+ 85266,
326
+ 9110,
327
+ 28000,
328
+ 15137,
329
+ 4525,
330
+ 25261,
331
+ 12717,
332
+ 7116,
333
+ 17078,
334
+ 14497,
335
+ 57339,
336
+ 74909,
337
+ 52072,
338
+ 19305,
339
+ 4887,
340
+ 12607,
341
+ 3580,
342
+ 6281,
343
+ 2036,
344
+ 9362,
345
+ 8533,
346
+ 2080,
347
+ 10911,
348
+ 2925,
349
+ 3040,
350
+ 9690,
351
+ 27731,
352
+ 8023,
353
+ 6901,
354
+ 8702,
355
+ 6211,
356
+ 1123,
357
+ 16307,
358
+ 18990,
359
+ 64045,
360
+ 63037,
361
+ 33380,
362
+ 6151,
363
+ 3392,
364
+ 5449,
365
+ 3967,
366
+ 1113,
367
+ 5095,
368
+ 51923,
369
+ 49600,
370
+ 17099,
371
+ 51483,
372
+ 17756,
373
+ 16037,
374
+ 8135,
375
+ 30237,
376
+ 5683,
377
+ 9992,
378
+ 7444,
379
+ 5751,
380
+ 10284,
381
+ 20887,
382
+ 59884,
383
+ 52396,
384
+ 16103,
385
+ 67547,
386
+ 18535,
387
+ 8006,
388
+ 7263,
389
+ 1425,
390
+ 6878,
391
+ 14453,
392
+ 9097,
393
+ 44072,
394
+ 76089,
395
+ 68720,
396
+ 2662,
397
+ 2629,
398
+ 923,
399
+ 6548,
400
+ 8924,
401
+ 52194,
402
+ 622,
403
+ 1515,
404
+ 1300,
405
+ 37523,
406
+ 44473,
407
+ 36530,
408
+ 3152,
409
+ 93924,
410
+ 3505,
411
+ 15731,
412
+ 6542,
413
+ 14176,
414
+ 11091,
415
+ 1686,
416
+ 11660,
417
+ 80440,
418
+ 18836,
419
+ 26132,
420
+ 5934,
421
+ 24794,
422
+ 40229,
423
+ 3660,
424
+ 11361,
425
+ 10191,
426
+ 8225,
427
+ 3860,
428
+ 78413,
429
+ 17680,
430
+ 15900,
431
+ 78138,
432
+ 15653,
433
+ 5213,
434
+ 22150,
435
+ 39500,
436
+ 10460,
437
+ 35131,
438
+ 21563,
439
+ 43194,
440
+ 27127,
441
+ 3697,
442
+ 20011,
443
+ 24368,
444
+ 15058,
445
+ 23658,
446
+ 8362,
447
+ 16035,
448
+ 24583,
449
+ 52857,
450
+ 38403,
451
+ 60456,
452
+ 81519,
453
+ 40097,
454
+ 16522,
455
+ 29722,
456
+ 21756,
457
+ 18567,
458
+ 1736,
459
+ 48043,
460
+ 87013,
461
+ 22456,
462
+ 23165,
463
+ 55523,
464
+ 13097,
465
+ 50397,
466
+ 41741,
467
+ 23073,
468
+ 6401,
469
+ 86538,
470
+ 16585,
471
+ 11622,
472
+ 2464,
473
+ 84982,
474
+ 75516,
475
+ 36984,
476
+ 58795,
477
+ 47217,
478
+ 59675,
479
+ 5681,
480
+ 3151,
481
+ 1271,
482
+ 887,
483
+ 5203,
484
+ 2685,
485
+ 1849,
486
+ 72470,
487
+ 5370,
488
+ 74063,
489
+ 27629,
490
+ 1655,
491
+ 1728,
492
+ 669,
493
+ 3682,
494
+ 3191,
495
+ 59865,
496
+ 2712,
497
+ 1580,
498
+ 922,
499
+ 77243,
500
+ 2990,
501
+ 78493,
502
+ 5228,
503
+ 2750,
504
+ 42711,
505
+ 44568,
506
+ 56402,
507
+ 48236,
508
+ 38993,
509
+ 43559,
510
+ 61250,
511
+ 32942,
512
+ 86302,
513
+ 25310,
514
+ 26313,
515
+ 81770,
516
+ 12185,
517
+ 78382
518
+ ],
519
+ "temperature": 1.0,
520
+ "attention_mode": "prefix_bidir",
521
+ "pooling": "last",
522
+ "max_length": null,
523
+ "readout_dtype": "float32",
524
+ "validated_length": 32768,
525
+ "systemone": {
526
+ "question_types": [
527
+ "box",
528
+ "track"
529
+ ],
530
+ "image_placements": [
531
+ "state",
532
+ "instructions",
533
+ "criteria"
534
+ ],
535
+ "track_rates": [
536
+ 1,
537
+ 2
538
+ ],
539
+ "box_calibration": [
540
+ [
541
+ 0.0,
542
+ 0.0
543
+ ],
544
+ [
545
+ 0.001953,
546
+ 0.0
547
+ ],
548
+ [
549
+ 0.003906,
550
+ 0.0
551
+ ],
552
+ [
553
+ 0.005859,
554
+ 0.0
555
+ ],
556
+ [
557
+ 0.007812,
558
+ 0.030303
559
+ ],
560
+ [
561
+ 0.017578,
562
+ 0.045455
563
+ ],
564
+ [
565
+ 0.052734,
566
+ 0.144928
567
+ ],
568
+ [
569
+ 0.119141,
570
+ 0.173913
571
+ ],
572
+ [
573
+ 0.181641,
574
+ 0.375
575
+ ],
576
+ [
577
+ 0.279297,
578
+ 0.387755
579
+ ],
580
+ [
581
+ 0.345703,
582
+ 0.5
583
+ ],
584
+ [
585
+ 0.361328,
586
+ 0.571429
587
+ ],
588
+ [
589
+ 0.376953,
590
+ 0.571429
591
+ ],
592
+ [
593
+ 0.449219,
594
+ 0.637681
595
+ ],
596
+ [
597
+ 0.53125,
598
+ 0.666667
599
+ ],
600
+ [
601
+ 0.587891,
602
+ 0.666667
603
+ ],
604
+ [
605
+ 0.591797,
606
+ 0.769231
607
+ ],
608
+ [
609
+ 0.615234,
610
+ 0.783784
611
+ ],
612
+ [
613
+ 0.65625,
614
+ 0.8
615
+ ],
616
+ [
617
+ 0.658203,
618
+ 0.8
619
+ ],
620
+ [
621
+ 0.701172,
622
+ 0.889831
623
+ ],
624
+ [
625
+ 0.753906,
626
+ 0.905797
627
+ ],
628
+ [
629
+ 0.802734,
630
+ 0.93736
631
+ ],
632
+ [
633
+ 0.884766,
634
+ 0.956522
635
+ ],
636
+ [
637
+ 0.890625,
638
+ 0.971429
639
+ ],
640
+ [
641
+ 0.898438,
642
+ 0.972274
643
+ ],
644
+ [
645
+ 0.951172,
646
+ 0.986711
647
+ ],
648
+ [
649
+ 0.964844,
650
+ 0.997406
651
+ ],
652
+ [
653
+ 0.982422,
654
+ 1.0
655
+ ],
656
+ [
657
+ 0.984375,
658
+ 1.0
659
+ ],
660
+ [
661
+ 0.986328,
662
+ 1.0
663
+ ],
664
+ [
665
+ 0.988281,
666
+ 1.0
667
+ ],
668
+ [
669
+ 0.990234,
670
+ 1.0
671
+ ],
672
+ [
673
+ 0.992188,
674
+ 1.0
675
+ ],
676
+ [
677
+ 0.994141,
678
+ 1.0
679
+ ],
680
+ [
681
+ 0.996094,
682
+ 1.0
683
+ ],
684
+ [
685
+ 0.998047,
686
+ 1.0
687
+ ],
688
+ [
689
+ 1.0,
690
+ 1.0
691
+ ]
692
+ ],
693
+ "box_video_max_seconds": 60
694
+ }
695
+ }
model.q4nx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:bb175d0ba981a2581242a8f279003306ec7decd9cc667178f755e2bab2558288
3
+ size 15500905656
readout.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f2579067a488138e2ef00bb3e98989cac7311afbf48700dfad02244e3671f241
3
+ size 5222480
tokenizer.json ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:0997f410c57a1f4e53b09e4be8f4a172d90edd9564368fb0847030937229b9f3
3
+ size 12809320
tokenizer_config.json ADDED
@@ -0,0 +1,305 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "add_prefix_space": false,
3
+ "added_tokens_decoder": {
4
+ "248044": {
5
+ "content": "<|endoftext|>",
6
+ "lstrip": false,
7
+ "normalized": false,
8
+ "rstrip": false,
9
+ "single_word": false,
10
+ "special": true
11
+ },
12
+ "248045": {
13
+ "content": "<|im_start|>",
14
+ "lstrip": false,
15
+ "normalized": false,
16
+ "rstrip": false,
17
+ "single_word": false,
18
+ "special": true
19
+ },
20
+ "248046": {
21
+ "content": "<|im_end|>",
22
+ "lstrip": false,
23
+ "normalized": false,
24
+ "rstrip": false,
25
+ "single_word": false,
26
+ "special": true
27
+ },
28
+ "248047": {
29
+ "content": "<|object_ref_start|>",
30
+ "lstrip": false,
31
+ "normalized": false,
32
+ "rstrip": false,
33
+ "single_word": false,
34
+ "special": true
35
+ },
36
+ "248048": {
37
+ "content": "<|object_ref_end|>",
38
+ "lstrip": false,
39
+ "normalized": false,
40
+ "rstrip": false,
41
+ "single_word": false,
42
+ "special": true
43
+ },
44
+ "248049": {
45
+ "content": "<|box_start|>",
46
+ "lstrip": false,
47
+ "normalized": false,
48
+ "rstrip": false,
49
+ "single_word": false,
50
+ "special": true
51
+ },
52
+ "248050": {
53
+ "content": "<|box_end|>",
54
+ "lstrip": false,
55
+ "normalized": false,
56
+ "rstrip": false,
57
+ "single_word": false,
58
+ "special": true
59
+ },
60
+ "248051": {
61
+ "content": "<|quad_start|>",
62
+ "lstrip": false,
63
+ "normalized": false,
64
+ "rstrip": false,
65
+ "single_word": false,
66
+ "special": true
67
+ },
68
+ "248052": {
69
+ "content": "<|quad_end|>",
70
+ "lstrip": false,
71
+ "normalized": false,
72
+ "rstrip": false,
73
+ "single_word": false,
74
+ "special": true
75
+ },
76
+ "248053": {
77
+ "content": "<|vision_start|>",
78
+ "lstrip": false,
79
+ "normalized": false,
80
+ "rstrip": false,
81
+ "single_word": false,
82
+ "special": true
83
+ },
84
+ "248054": {
85
+ "content": "<|vision_end|>",
86
+ "lstrip": false,
87
+ "normalized": false,
88
+ "rstrip": false,
89
+ "single_word": false,
90
+ "special": true
91
+ },
92
+ "248055": {
93
+ "content": "<|vision_pad|>",
94
+ "lstrip": false,
95
+ "normalized": false,
96
+ "rstrip": false,
97
+ "single_word": false,
98
+ "special": true
99
+ },
100
+ "248056": {
101
+ "content": "<|image_pad|>",
102
+ "lstrip": false,
103
+ "normalized": false,
104
+ "rstrip": false,
105
+ "single_word": false,
106
+ "special": true
107
+ },
108
+ "248057": {
109
+ "content": "<|video_pad|>",
110
+ "lstrip": false,
111
+ "normalized": false,
112
+ "rstrip": false,
113
+ "single_word": false,
114
+ "special": true
115
+ },
116
+ "248058": {
117
+ "content": "<tool_call>",
118
+ "lstrip": false,
119
+ "normalized": false,
120
+ "rstrip": false,
121
+ "single_word": false,
122
+ "special": false
123
+ },
124
+ "248059": {
125
+ "content": "</tool_call>",
126
+ "lstrip": false,
127
+ "normalized": false,
128
+ "rstrip": false,
129
+ "single_word": false,
130
+ "special": false
131
+ },
132
+ "248060": {
133
+ "content": "<|fim_prefix|>",
134
+ "lstrip": false,
135
+ "normalized": false,
136
+ "rstrip": false,
137
+ "single_word": false,
138
+ "special": false
139
+ },
140
+ "248061": {
141
+ "content": "<|fim_middle|>",
142
+ "lstrip": false,
143
+ "normalized": false,
144
+ "rstrip": false,
145
+ "single_word": false,
146
+ "special": false
147
+ },
148
+ "248062": {
149
+ "content": "<|fim_suffix|>",
150
+ "lstrip": false,
151
+ "normalized": false,
152
+ "rstrip": false,
153
+ "single_word": false,
154
+ "special": false
155
+ },
156
+ "248063": {
157
+ "content": "<|fim_pad|>",
158
+ "lstrip": false,
159
+ "normalized": false,
160
+ "rstrip": false,
161
+ "single_word": false,
162
+ "special": false
163
+ },
164
+ "248064": {
165
+ "content": "<|repo_name|>",
166
+ "lstrip": false,
167
+ "normalized": false,
168
+ "rstrip": false,
169
+ "single_word": false,
170
+ "special": false
171
+ },
172
+ "248065": {
173
+ "content": "<|file_sep|>",
174
+ "lstrip": false,
175
+ "normalized": false,
176
+ "rstrip": false,
177
+ "single_word": false,
178
+ "special": false
179
+ },
180
+ "248066": {
181
+ "content": "<tool_response>",
182
+ "lstrip": false,
183
+ "normalized": false,
184
+ "rstrip": false,
185
+ "single_word": false,
186
+ "special": false
187
+ },
188
+ "248067": {
189
+ "content": "</tool_response>",
190
+ "lstrip": false,
191
+ "normalized": false,
192
+ "rstrip": false,
193
+ "single_word": false,
194
+ "special": false
195
+ },
196
+ "248068": {
197
+ "content": "<think>",
198
+ "lstrip": false,
199
+ "normalized": false,
200
+ "rstrip": false,
201
+ "single_word": false,
202
+ "special": false
203
+ },
204
+ "248069": {
205
+ "content": "</think>",
206
+ "lstrip": false,
207
+ "normalized": false,
208
+ "rstrip": false,
209
+ "single_word": false,
210
+ "special": false
211
+ },
212
+ "248070": {
213
+ "content": "<|audio_start|>",
214
+ "lstrip": false,
215
+ "normalized": false,
216
+ "rstrip": false,
217
+ "single_word": false,
218
+ "special": true
219
+ },
220
+ "248071": {
221
+ "content": "<|audio_end|>",
222
+ "lstrip": false,
223
+ "normalized": false,
224
+ "rstrip": false,
225
+ "single_word": false,
226
+ "special": true
227
+ },
228
+ "248072": {
229
+ "content": "<tts_pad>",
230
+ "lstrip": false,
231
+ "normalized": false,
232
+ "rstrip": false,
233
+ "single_word": false,
234
+ "special": true
235
+ },
236
+ "248073": {
237
+ "content": "<tts_text_bos>",
238
+ "lstrip": false,
239
+ "normalized": false,
240
+ "rstrip": false,
241
+ "single_word": false,
242
+ "special": true
243
+ },
244
+ "248074": {
245
+ "content": "<tts_text_eod>",
246
+ "lstrip": false,
247
+ "normalized": false,
248
+ "rstrip": false,
249
+ "single_word": false,
250
+ "special": true
251
+ },
252
+ "248075": {
253
+ "content": "<tts_text_bos_single>",
254
+ "lstrip": false,
255
+ "normalized": false,
256
+ "rstrip": false,
257
+ "single_word": false,
258
+ "special": true
259
+ },
260
+ "248076": {
261
+ "content": "<|audio_pad|>",
262
+ "lstrip": false,
263
+ "normalized": false,
264
+ "rstrip": false,
265
+ "single_word": false,
266
+ "special": true
267
+ }
268
+ },
269
+ "additional_special_tokens": [
270
+ "<|im_start|>",
271
+ "<|im_end|>",
272
+ "<|object_ref_start|>",
273
+ "<|object_ref_end|>",
274
+ "<|box_start|>",
275
+ "<|box_end|>",
276
+ "<|quad_start|>",
277
+ "<|quad_end|>",
278
+ "<|vision_start|>",
279
+ "<|vision_end|>",
280
+ "<|vision_pad|>",
281
+ "<|image_pad|>",
282
+ "<|video_pad|>"
283
+ ],
284
+ "bos_token": null,
285
+ "chat_template": "{%- set image_count = namespace(value=0) %}\n{%- set video_count = namespace(value=0) %}\n{%- macro render_content(content, do_vision_count, is_system_content=false) %}\n {%- if content is string %}\n {{- content }}\n {%- elif content is iterable and content is not mapping %}\n {%- for item in content %}\n {%- if 'image' in item or 'image_url' in item or item.type == 'image' %}\n {%- if is_system_content %}\n {{- raise_exception('System message cannot contain images.') }}\n {%- endif %}\n {%- if do_vision_count %}\n {%- set image_count.value = image_count.value + 1 %}\n {%- endif %}\n {%- if add_vision_id %}\n {{- 'Picture ' ~ image_count.value ~ ': ' }}\n {%- endif %}\n {{- '<|vision_start|><|image_pad|><|vision_end|>' }}\n {%- elif 'video' in item or item.type == 'video' %}\n {%- if is_system_content %}\n {{- raise_exception('System message cannot contain videos.') }}\n {%- endif %}\n {%- if do_vision_count %}\n {%- set video_count.value = video_count.value + 1 %}\n {%- endif %}\n {%- if add_vision_id %}\n {{- 'Video ' ~ video_count.value ~ ': ' }}\n {%- endif %}\n {{- '<|vision_start|><|video_pad|><|vision_end|>' }}\n {%- elif 'text' in item %}\n {{- item.text }}\n {%- else %}\n {{- raise_exception('Unexpected item type in content.') }}\n {%- endif %}\n {%- endfor %}\n {%- elif content is none or content is undefined %}\n {{- '' }}\n {%- else %}\n {{- raise_exception('Unexpected content type.') }}\n {%- endif %}\n{%- endmacro %}\n{%- if not messages %}\n {{- raise_exception('No messages provided.') }}\n{%- endif %}\n{%- set reasoning_instructions = '' %}\n{%- if enable_thinking is undefined or enable_thinking is true %}\n {%- set resolved_reasoning_effort = reasoning_effort|default('xhigh') %}\n {%- if resolved_reasoning_effort not in ('xhigh', 'medium', 'low') %}\n {{- raise_exception('Unexpected reasoning effort ' ~ reasoning_effort ~ '. Supported types are xhigh (default), medium, and low.') }}\n {%- endif %}\n {%- if resolved_reasoning_effort == 'xhigh' %}\n {%- set reasoning_instructions = 'Reasoning effort is set to xhigh. Please think carefully through the task, validate key assumptions, consider plausible alternatives, and prioritize correctness, consistency, and clarity in the final answer.' %}\n {%- elif resolved_reasoning_effort == 'low' %}\n {%- set reasoning_instructions = 'Reasoning effort is set to low. Keep your thinking brief and focused, moving directly to the conclusion without unnecessary elaboration.' %}\n {%- endif %}\n{%- endif %}\n{%- if tools and tools is iterable and tools is not mapping %}\n {{- '<|im_start|>system\\n' }}\n {%- if reasoning_instructions %}\n {{- reasoning_instructions + '\\n\\n' }}\n {%- endif %}\n {{- \"# Tools\\n\\nYou have access to the following functions:\\n\\n<tools>\" }}\n {%- for tool in tools %}\n {{- \"\\n\" }}\n {{- tool | tojson }}\n {%- endfor %}\n {{- \"\\n</tools>\" }}\n {{- '\\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>' }}\n {%- if messages[0].role == 'system' %}\n {%- set content = render_content(messages[0].content, false, true)|trim %}\n {%- if content %}\n {{- '\\n\\n' + content }}\n {%- endif %}\n {%- endif %}\n {{- '<|im_end|>\\n' }}\n{%- else %}\n {%- if messages[0].role == 'system' %}\n {%- set content = render_content(messages[0].content, false, true)|trim %}\n {%- if content %}\n {{- '<|im_start|>system\\n' + (reasoning_instructions + '\\n\\n' if reasoning_instructions else '') + content + '<|im_end|>\\n' }}\n {%- elif reasoning_instructions %}\n {{- '<|im_start|>system\\n' + reasoning_instructions + '<|im_end|>\\n' }}\n {%- endif %}\n {%- elif reasoning_instructions %}\n {{- '<|im_start|>system\\n' + reasoning_instructions + '<|im_end|>\\n' }}\n {%- endif %}\n{%- endif %}\n{%- set ns = namespace(multi_step_tool=true, last_query_index=messages|length - 1) %}\n{%- for message in messages[::-1] %}\n {%- set index = (messages|length - 1) - loop.index0 %}\n {%- if ns.multi_step_tool and message.role == \"user\" %}\n {%- set content = render_content(message.content, false)|trim %}\n {%- if not(content.startswith('<tool_response>') and content.endswith('</tool_response>')) %}\n {%- set ns.multi_step_tool = false %}\n {%- set ns.last_query_index = index %}\n {%- endif %}\n {%- endif %}\n{%- endfor %}\n{%- if ns.multi_step_tool %}\n {{- raise_exception('No user query found in messages.') }}\n{%- endif %}\n{%- for message in messages %}\n {%- set content = render_content(message.content, true)|trim %}\n {%- if message.role == \"system\" %}\n {%- if not loop.first %}\n {{- raise_exception('System message must be at the beginning.') }}\n {%- endif %}\n {%- elif message.role == \"user\" %}\n {{- '<|im_start|>' + message.role + '\\n' + content + '<|im_end|>' + '\\n' }}\n {%- elif message.role == \"assistant\" %}\n {%- set reasoning_content = '' %}\n {%- if message.reasoning_content is string %}\n {%- set reasoning_content = message.reasoning_content %}\n {%- endif %}\n {%- set reasoning_content = reasoning_content|trim %}\n {%- if preserve_thinking is undefined or preserve_thinking is true or loop.index0 > ns.last_query_index %}\n {{- '<|im_start|>' + message.role + '\\n<think>\\n' + reasoning_content + '\\n</think>\\n\\n' + content }}\n {%- else %}\n {{- '<|im_start|>' + message.role + '\\n' + content }}\n {%- endif %}\n {%- if message.tool_calls and message.tool_calls is iterable and message.tool_calls is not mapping %}\n {%- for tool_call in message.tool_calls %}\n {%- if tool_call.function is defined %}\n {%- set tool_call = tool_call.function %}\n {%- endif %}\n {%- if loop.first %}\n {%- if content|trim %}\n {{- '\\n\\n<tool_call>\\n<function=' + tool_call.name + '>\\n' }}\n {%- else %}\n {{- '<tool_call>\\n<function=' + tool_call.name + '>\\n' }}\n {%- endif %}\n {%- else %}\n {{- '\\n<tool_call>\\n<function=' + tool_call.name + '>\\n' }}\n {%- endif %}\n {%- if tool_call.arguments is defined and tool_call.arguments != '' %}\n {%- for args_name, args_value in tool_call.arguments|items %}\n {{- '<parameter=' + args_name + '>\\n' }}\n {%- set args_value = args_value | string if args_value is string else args_value | tojson | safe %}\n {{- args_value }}\n {{- '\\n</parameter>\\n' }}\n {%- endfor %}\n {%- endif %}\n {{- '</function>\\n</tool_call>' }}\n {%- endfor %}\n {%- endif %}\n {{- '<|im_end|>\\n' }}\n {%- elif message.role == \"tool\" %}\n {%- if loop.previtem and loop.previtem.role != \"tool\" %}\n {{- '<|im_start|>user' }}\n {%- endif %}\n {{- '\\n<tool_response>\\n' }}\n {{- content }}\n {{- '\\n</tool_response>' }}\n {%- if not loop.last and loop.nextitem.role != \"tool\" %}\n {{- '<|im_end|>\\n' }}\n {%- elif loop.last %}\n {{- '<|im_end|>\\n' }}\n {%- endif %}\n {%- else %}\n {{- raise_exception('Unexpected message role.') }}\n {%- endif %}\n{%- endfor %}\n{%- if add_generation_prompt %}\n {{- '<|im_start|>assistant\\n' }}\n {%- if enable_thinking is defined and enable_thinking is false %}\n {{- '<think>\\n\\n</think>\\n\\n' }}\n {%- else %}\n {{- '<think>\\n' }}\n {%- endif %}\n{%- endif %}",
286
+ "clean_up_tokenization_spaces": false,
287
+ "eos_token": "<|im_end|>",
288
+ "errors": "replace",
289
+ "model_max_length": 262144,
290
+ "pad_token": "<|endoftext|>",
291
+ "split_special_tokens": false,
292
+ "tokenizer_class": "Qwen2Tokenizer",
293
+ "unk_token": null,
294
+ "add_bos_token": false,
295
+ "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+",
296
+ "extra_special_tokens": {
297
+ "audio_bos_token": "<|audio_start|>",
298
+ "audio_eos_token": "<|audio_end|>",
299
+ "audio_token": "<|audio_pad|>",
300
+ "image_token": "<|image_pad|>",
301
+ "video_token": "<|video_pad|>",
302
+ "vision_bos_token": "<|vision_start|>",
303
+ "vision_eos_token": "<|vision_end|>"
304
+ }
305
+ }
vision_weight.q4nx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:40b02b19596ebd66995bca905ecf481f994183e391505a89204caf965fe69425
3
+ size 1037176592