mstrasser commited on
Commit
3cf045d
·
verified ·
1 Parent(s): 576966d

Jeff v1.3: jeff-base

Browse files
.gitattributes CHANGED
@@ -33,3 +33,4 @@ 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
+ tokenizer.json filter=lfs diff=lfs merge=lfs -text
README.md ADDED
@@ -0,0 +1,247 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: apache-2.0
3
+ base_model: Qwen/Qwen3.5-0.8B
4
+ base_model_relation: finetune
5
+ library_name: transformers
6
+ pipeline_tag: zero-shot-classification
7
+ language:
8
+ - en
9
+ tags:
10
+ - jeff
11
+ - decision-model
12
+ - calibration
13
+ - system-1
14
+ - local
15
+ ---
16
+
17
+ # jeff-base
18
+
19
+ **Jeff v1.3: the base model for Jeff's LoRA adapters.** Jeff is a small decision model, a fine-tune of
20
+ [Qwen3.5-0.8B](https://huggingface.co/Qwen/Qwen3.5-0.8B). You describe a situation (the *state*) and list the options
21
+ in plain words; Jeff returns a calibrated probability for each option from one forward pass, with no generated text to
22
+ parse. This repository is versioned by tag: use revision **`v1.3`**.
23
+
24
+ Catalogue, results and docs: **[jeffhub.ai](https://jeffhub.ai)**.
25
+
26
+ **Jeff v1.3 is a change in direction. Zero-shot on everything is no longer the goal: the base is always meant to be used
27
+ with an adapter.** The base is the foundation the adapters are trained on, and an adapter is where Jeff becomes good at
28
+ a task. If you want zero-shot use without an adapter, use Jeff v1.2
29
+ ([mstrasser/Jeff-Qwen3.5-0.8B](https://huggingface.co/mstrasser/Jeff-Qwen3.5-0.8B), revision `v1.2`).
30
+
31
+ ## The base: live-last
32
+
33
+ The v1.3 base is trained on the same data as v1.2, with one change: the **live-last** prompt layout. The fixed part of
34
+ the prompt (instructions and options) comes first and the changing input comes last, so prefix caching works and
35
+ repeated decisions over the same options get faster.
36
+
37
+ The price: the model now reads all the options before it sees the input, and a 0.8B model is much worse at going back
38
+ over a long option list than at reading the options with the input already in mind. On the general panel (4,599
39
+ questions) the two bases are level: 78.6% against 78.8%, calibration error 0.028 against 0.024. On unfamiliar tasks
40
+ with long option lists, the base on its own falls apart:
41
+
42
+ | Task (no adapter) | Options | v1.2 base | v1.3 base |
43
+ |---|--:|--:|--:|
44
+ | [support-intents](https://jeffhub.ai/adapters/support-intents) | 7–64 | 85.1% | 24.2% |
45
+ | [legal-clauses](https://jeffhub.ai/adapters/legal-clauses) | 100 | 66.0% | 7.4% |
46
+ | [tools](https://jeffhub.ai/adapters/tools) | 4–136 | 57.8% | 30.2% |
47
+ | [triage](https://jeffhub.ai/adapters/triage) | 2–36 | 67.1% | 47.6% |
48
+
49
+ With the right adapter, almost all of it comes back: v1.3 + adapter is within −0.7 to +0.3 points of v1.2 + adapter on
50
+ every task except legal-clauses (83.6% against 85.7%). Once the adapter has learned the options, putting them first
51
+ costs almost nothing, and the fixed part of the prompt can be cached. We decided the speed-up was worth it.
52
+
53
+ ## What each adapter adds
54
+
55
+ Each adapter is scored on its full held-out test set, which it never trained on, three ways on the same rows: the
56
+ untrained Qwen3.5-0.8B that Jeff is built from, the Jeff v1.3 base alone, and the v1.3 base with the adapter. Across the
57
+ 13 measured adapters, mean accuracy goes from 30.4% untrained to 38.6% for the base alone and 92.8% with the adapter.
58
+
59
+ | Adapter | Test rows | Qwen3.5-0.8B untrained | Jeff base v1.3 alone | Jeff base v1.3 + adapter |
60
+ |---|--:|--:|--:|--:|
61
+ | [aml](https://huggingface.co/mstrasser/jeff-adapter-aml) | 5,120 | 36.0% · 0.022 | 40.5% · 0.103 | 95.0% · 0.012 |
62
+ | [emotion](https://huggingface.co/mstrasser/jeff-adapter-emotion) | 5,408 | 12.6% · 0.045 | 25.3% · 0.080 | 60.5% · 0.018 |
63
+ | [ground](https://huggingface.co/mstrasser/jeff-adapter-ground) | 4,160 | 28.9% · 0.061 | 50.9% · 0.079 | 96.6% · 0.007 |
64
+ | [guard](https://huggingface.co/mstrasser/jeff-adapter-guard) | 6,552 | 43.8% · 0.064 | 49.4% · 0.158 | 98.2% · 0.004 |
65
+ | [legal-clauses](https://huggingface.co/mstrasser/jeff-adapter-legal-clauses) | 9,895 | 12.5% · 0.094 | 7.4% · 0.039 | 83.6% · 0.011 |
66
+ | [nav](https://huggingface.co/mstrasser/jeff-adapter-nav) | 3,300 | 12.6% · 0.038 | 13.6% · 0.156 | 97.3% · 0.006 |
67
+ | [sanctions](https://huggingface.co/mstrasser/jeff-adapter-sanctions) | 4,909 | 34.4% · 0.010 | 68.3% · 0.080 | 100.0% · 0.001 |
68
+ | [soc](https://huggingface.co/mstrasser/jeff-adapter-soc) | 4,929 | 22.1% · 0.011 | 33.8% · 0.032 | 94.1% · 0.014 |
69
+ | [spam](https://huggingface.co/mstrasser/jeff-adapter-spam) | 3,897 | 58.1% · 0.047 | 69.8% · 0.046 | 98.1% · 0.006 |
70
+ | [support-intents](https://huggingface.co/mstrasser/jeff-adapter-support-intents) | 5,577 | 33.9% · 0.164 | 24.2% · 0.095 | 96.3% · 0.003 |
71
+ | [tools](https://huggingface.co/mstrasser/jeff-adapter-tools) | 5,157 | 17.9% · 0.063 | 30.2% · 0.016 | 97.2% · 0.007 |
72
+ | [trading-desk](https://huggingface.co/mstrasser/jeff-adapter-trading-desk) | 5,000 | 38.6% · 0.015 | 41.1% · 0.115 | 98.1% · 0.010 |
73
+ | [triage](https://huggingface.co/mstrasser/jeff-adapter-triage) | 7,256 | 44.1% · 0.098 | 47.6% · 0.059 | 91.5% · 0.015 |
74
+ | [code](https://huggingface.co/mstrasser/jeff-adapter-code) | not measured yet | | | |
75
+ | [code-router](https://huggingface.co/mstrasser/jeff-adapter-code-router) | not measured yet | | | |
76
+
77
+ Each cell: accuracy · calibration error (ECE, 15 bins, after each model's own fitted temperature; lower is better, 0
78
+ is perfect). Calibration error measures how far the stated confidence is from the real hit rate: 0.01 means the stated
79
+ confidence is, on average, about 1 percentage point away from how often those answers are right.
80
+
81
+ **Jeff-Code.** The [code](https://huggingface.co/mstrasser/jeff-adapter-code) and
82
+ [code-router](https://huggingface.co/mstrasser/jeff-adapter-code-router) adapters make two decisions for Qwen3.8-27B in
83
+ the Jeff-Code coding agent ([github.com/firelex/jeff-code](https://github.com/firelex/jeff-code)). With Jeff's thinking
84
+ threshold at 0.6 (step threshold 0.40), Jeff-Code matches Qwen3.8-27B's pass rate on five benchmarks: pooled 53.4%
85
+ against 53.1% over 493 tasks, run side by side in paired blocks. It needs about 20% less time per session on average on
86
+ the big benchmarks, SWE-rebench and Terminal-Bench 2.0; the typical session is 30–45% faster. These numbers were
87
+ supplied by the maintainers; the detailed result files are still to come. [The details](https://jeffhub.ai/adapters/code).
88
+
89
+ ### v1.3 + adapter against v1.2 + adapter
90
+
91
+ Each pair is measured on exactly the same test rows. Where an adapter's v1.3 test set changed, the comparison uses its
92
+ copy of the v1.2 test (named in brackets).
93
+
94
+ | Adapter test set | Test rows | v1.2 + adapter | v1.3 + adapter | Change (points) |
95
+ |---|--:|--:|--:|--:|
96
+ | emotion | 5,408 | 60.6% | 60.5% | −0.1 |
97
+ | ground | 4,160 | 97.0% | 96.6% | −0.4 |
98
+ | guard | 6,552 | 98.4% | 98.2% | −0.2 |
99
+ | legal-clauses | 9,895 | 85.7% | 83.6% | −2.1 |
100
+ | nav (heldout_synthetic-v12) | 3,300 | 97.0% | 97.3% | +0.3 |
101
+ | spam (test-v12) | 3,603 | 98.4% | 98.1% | −0.3 |
102
+ | support-intents | 5,577 | 96.8% | 96.3% | −0.5 |
103
+ | tools | 5,157 | 97.9% | 97.2% | −0.7 |
104
+ | triage | 7,256 | 91.8% | 91.5% | −0.3 |
105
+
106
+ All results and their sources: [jeffhub.ai/results](https://jeffhub.ai/results), and in one file,
107
+ [jeffhub-v1.3.json](https://jeffhub.ai/data/jeffhub-v1.3.json).
108
+
109
+ ## The adapters
110
+
111
+ Adapters are not merged into the base. You load one base and all the adapters you need, and pick one per request. Each
112
+ adapter records the exact base it was trained on, and the server refuses an adapter trained on a different one, so a
113
+ v1.2 adapter does not load on v1.3. All nine v1.2 adapters are retrained on v1.3, with about 10% of the base model's own
114
+ training data mixed in as a precaution (its effect has not been measured).
115
+
116
+ | Adapter | Repository | LoRA GGUF |
117
+ |---|---|---|
118
+ | aml | [mstrasser/jeff-adapter-aml](https://huggingface.co/mstrasser/jeff-adapter-aml) | [jeff-adapter-aml-gguf](https://huggingface.co/mstrasser/jeff-adapter-aml-gguf) |
119
+ | code | [mstrasser/jeff-adapter-code](https://huggingface.co/mstrasser/jeff-adapter-code) | [jeff-adapter-code-gguf](https://huggingface.co/mstrasser/jeff-adapter-code-gguf) |
120
+ | code-router | [mstrasser/jeff-adapter-code-router](https://huggingface.co/mstrasser/jeff-adapter-code-router) | [jeff-adapter-code-router-gguf](https://huggingface.co/mstrasser/jeff-adapter-code-router-gguf) (Q8_0 base only) |
121
+ | emotion | [mstrasser/jeff-adapter-emotion](https://huggingface.co/mstrasser/jeff-adapter-emotion) | [jeff-adapter-emotion-gguf](https://huggingface.co/mstrasser/jeff-adapter-emotion-gguf) |
122
+ | ground | [mstrasser/jeff-adapter-ground](https://huggingface.co/mstrasser/jeff-adapter-ground) | [jeff-adapter-ground-gguf](https://huggingface.co/mstrasser/jeff-adapter-ground-gguf) |
123
+ | guard | [mstrasser/jeff-adapter-guard](https://huggingface.co/mstrasser/jeff-adapter-guard) | [jeff-adapter-guard-gguf](https://huggingface.co/mstrasser/jeff-adapter-guard-gguf) |
124
+ | legal-clauses | [mstrasser/jeff-adapter-legal-clauses](https://huggingface.co/mstrasser/jeff-adapter-legal-clauses) | [jeff-adapter-legal-clauses-gguf](https://huggingface.co/mstrasser/jeff-adapter-legal-clauses-gguf) |
125
+ | nav | [mstrasser/jeff-adapter-nav](https://huggingface.co/mstrasser/jeff-adapter-nav) | [jeff-adapter-nav-gguf](https://huggingface.co/mstrasser/jeff-adapter-nav-gguf) |
126
+ | sanctions (CC BY-NC 4.0) | [mstrasser/jeff-adapter-sanctions](https://huggingface.co/mstrasser/jeff-adapter-sanctions) | [jeff-adapter-sanctions-gguf](https://huggingface.co/mstrasser/jeff-adapter-sanctions-gguf) |
127
+ | soc (CC BY-NC 4.0) | [mstrasser/jeff-adapter-soc](https://huggingface.co/mstrasser/jeff-adapter-soc) | [jeff-adapter-soc-gguf](https://huggingface.co/mstrasser/jeff-adapter-soc-gguf) |
128
+ | spam | [mstrasser/jeff-adapter-spam](https://huggingface.co/mstrasser/jeff-adapter-spam) | [jeff-adapter-spam-gguf](https://huggingface.co/mstrasser/jeff-adapter-spam-gguf) |
129
+ | support-intents | [mstrasser/jeff-adapter-support-intents](https://huggingface.co/mstrasser/jeff-adapter-support-intents) | [jeff-adapter-support-intents-gguf](https://huggingface.co/mstrasser/jeff-adapter-support-intents-gguf) |
130
+ | tools | [mstrasser/jeff-adapter-tools](https://huggingface.co/mstrasser/jeff-adapter-tools) | [jeff-adapter-tools-gguf](https://huggingface.co/mstrasser/jeff-adapter-tools-gguf) |
131
+ | trading-desk | [mstrasser/jeff-adapter-trading-desk](https://huggingface.co/mstrasser/jeff-adapter-trading-desk) | [jeff-adapter-trading-desk-gguf](https://huggingface.co/mstrasser/jeff-adapter-trading-desk-gguf) |
132
+ | triage | [mstrasser/jeff-adapter-triage](https://huggingface.co/mstrasser/jeff-adapter-triage) | [jeff-adapter-triage-gguf](https://huggingface.co/mstrasser/jeff-adapter-triage-gguf) |
133
+
134
+ In a request, an adapter is named by its short name (`"model": "soc"`, `"model": "code"`): on a Jeff server, names
135
+ starting with "jeff" mean the base model.
136
+
137
+ ## How to use it
138
+
139
+ Adapter serving arrives with the next Jeff release; until then, these commands need the `feat/lora` branch of
140
+ [firelex/jeff](https://github.com/firelex/jeff).
141
+
142
+ ```bash
143
+ git clone https://github.com/firelex/jeff && cd jeff
144
+ uv sync --no-default-groups --extra lora # CPU; add --extra cuda (NVIDIA GPU) or --extra mac (Apple silicon)
145
+ uv run --no-default-groups hf download mstrasser/jeff-base --revision v1.3 --local-dir checkpoints/jeff-base
146
+ uv run --no-default-groups hf download mstrasser/jeff-adapter-support-intents --revision v1.3 \
147
+ --local-dir adapters/support-intents
148
+ JEFF_CHECKPOINT=checkpoints/jeff-base JEFF_ADAPTERS=adapters/ PORT=8765 \
149
+ uv run --no-default-groups jeff-serve # on a Mac, add JEFF_BACKEND=mlx
150
+ ```
151
+
152
+ Each adapter lives in its own folder inside one adapters folder; the folder's name is the name you use in requests.
153
+ Name the adapter as the model:
154
+
155
+ ```bash
156
+ curl -s localhost:8765/v1/systemone -H 'content-type: application/json' -d '{
157
+ "model": "support-intents",
158
+ "state": {"service": "Customer support chat of an online shop",
159
+ "message": "I sent the jacket back two weeks ago and still have not seen the money."},
160
+ "questions": {
161
+ "intent": {"type": "choice",
162
+ "instructions": "What does the customer want? Choose the request that best matches what the customer is asking for in their message.",
163
+ "criteria": {"track_refund": "Check the status of a refund they are expecting.",
164
+ "get_refund": "Get their money back for a purchase.",
165
+ "track_order": "Find out where their order is or its current status."}}
166
+ }
167
+ }'
168
+ ```
169
+
170
+ Guides: [getting started](https://jeffhub.ai/docs/getting-started), [request format](https://jeffhub.ai/docs/request-format),
171
+ [serving adapters](https://jeffhub.ai/docs/serving-adapters).
172
+
173
+ **llama.cpp.** v1.3 also ships as GGUF, in Q8_0 and Q4_K_M:
174
+ [mstrasser/jeff-base-gguf](https://huggingface.co/mstrasser/jeff-base-gguf), plus one small LoRA GGUF per adapter. See
175
+ [Running Jeff with llama.cpp](https://jeffhub.ai/docs/llama-cpp).
176
+
177
+ ## What stays fixed for the life of v1.3
178
+
179
+ - The [request format](https://jeffhub.ai/docs/request-format): state, questions and instructions, with the changing
180
+ state field last.
181
+ - The option rules: named options, keys never bare numbers.
182
+ - The answer format: a probability for every option.
183
+
184
+ A data set written to the [data guidelines](https://jeffhub.ai/docs/data-guidelines) trains on v1.3 as it is.
185
+
186
+ ## Files
187
+
188
+ | File | What it is |
189
+ |---|---|
190
+ | `model.safetensors` | The weights (sha256 `d324dd6c9bb61b30af65564135b33f6892c30a9b2bd22667b2e09b9c8118cf77`; every v1.3 adapter checks it) |
191
+ | `readout.safetensors` | Jeff's readout over the answer codes |
192
+ | `decision_config.json` | Answer codes and their token ids, temperature and prompt layout (`live-last`) |
193
+ | `config.json`, `tokenizer.json`, `tokenizer_config.json`, `chat_template.jinja`, `processor_config.json` | The Qwen3.5 configuration and tokenizer |
194
+
195
+ ## Training
196
+
197
+ | | |
198
+ |---|---|
199
+ | Built on | Qwen/Qwen3.5-0.8B |
200
+ | Data | The v1.2 base training data, unchanged |
201
+ | Change from v1.2 | The live-last prompt layout |
202
+ | Checkpoint | `ll-v12-final` (run `ll-v12`, step 1113) |
203
+
204
+ ## Not measured yet
205
+
206
+ Nothing on JeffHub is estimated. These are still to come for v1.3:
207
+
208
+ - code and code-router: test scores (untrained, v1.3 base, v1.3 + adapter);
209
+ - jeff-serve speed and GPU memory with the v1.3 base and adapters, with prompt reuse;
210
+ - calibration charts, commonest confusions and accuracy per answer for each v1.3 adapter;
211
+ - example responses recorded from the v1.3 adapters;
212
+ - Jeff-Code: the detailed result files behind the maintainer-supplied numbers;
213
+ - Jeff's memory on a Mac.
214
+
215
+ ## Limitations
216
+
217
+ - Use it with an adapter. Without one, the v1.3 base is weak on long, unfamiliar option lists (table above). For
218
+ zero-shot use, use v1.2.
219
+ - Small models don't reason. Expect fast, calibrated choices between the options you describe, not multi-step
220
+ reasoning, and no generated text.
221
+ - English and text only.
222
+
223
+ ## Licence and data
224
+
225
+ Weights: **Apache-2.0**, as for v1.2. The model is a fine-tune of Qwen3.5-0.8B by the Qwen team (Alibaba Cloud).
226
+
227
+ Training data: the same data as the v1.2 base, which mixes public data sets under various licences, some of them
228
+ share-alike (CC BY-SA), with code-built and synthetic questions. The training data is not released. The v1.2 data
229
+ sources and their licences are listed in
230
+ [docs/data-sources.md](https://github.com/firelex/jeff/blob/main/docs/data-sources.md) in the Jeff repository.
231
+
232
+ **To confirm:** JeffHub does not yet list the base model's data sources and their licences for v1.3; the list above is
233
+ the v1.2 one, which the v1.3 base reuses unchanged.
234
+
235
+ Each adapter's own data sources and licences, including non-commercial restrictions (sanctions and soc are
236
+ CC BY-NC 4.0), are on its model card and its [JeffHub page](https://jeffhub.ai).
237
+
238
+ ## Links
239
+
240
+ - Release notes: [Jeff v1.3: what changed](https://jeffhub.ai/docs/release-notes-v1-3)
241
+ - Results: [jeffhub.ai/results](https://jeffhub.ai/results)
242
+ - Code and server: [github.com/firelex/jeff](https://github.com/firelex/jeff)
243
+ - GGUF: [mstrasser/jeff-base-gguf](https://huggingface.co/mstrasser/jeff-base-gguf)
244
+ - Jeff v1.2 (zero-shot): [mstrasser/Jeff-Qwen3.5-0.8B](https://huggingface.co/mstrasser/Jeff-Qwen3.5-0.8B), revision `v1.2`
245
+
246
+ Jeff is an independent project. It uses the same request format as Jev but is not affiliated with or endorsed by
247
+ TypeSafe, the makers of Jev.
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 true %}
150
+ {{- '<think>\n' }}
151
+ {%- else %}
152
+ {{- '<think>\n\n</think>\n\n' }}
153
+ {%- endif %}
154
+ {%- endif %}
config.json ADDED
@@ -0,0 +1,105 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architectures": [
3
+ "Qwen3_5Model"
4
+ ],
5
+ "dtype": "bfloat16",
6
+ "image_token_id": 248056,
7
+ "model_type": "qwen3_5",
8
+ "text_config": {
9
+ "attention_bias": false,
10
+ "attention_dropout": 0.0,
11
+ "attn_output_gate": true,
12
+ "bos_token_id": null,
13
+ "dtype": "bfloat16",
14
+ "eos_token_id": 248044,
15
+ "full_attention_interval": 4,
16
+ "head_dim": 256,
17
+ "hidden_act": "silu",
18
+ "hidden_size": 1024,
19
+ "initializer_range": 0.02,
20
+ "intermediate_size": 3584,
21
+ "layer_types": [
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
+ ],
47
+ "linear_conv_kernel_dim": 4,
48
+ "linear_key_head_dim": 128,
49
+ "linear_num_key_heads": 16,
50
+ "linear_num_value_heads": 16,
51
+ "linear_value_head_dim": 128,
52
+ "mamba_ssm_dtype": "float32",
53
+ "max_position_embeddings": 262144,
54
+ "mlp_only_layers": [],
55
+ "model_type": "qwen3_5_text",
56
+ "mtp_num_hidden_layers": 1,
57
+ "mtp_use_dedicated_embeddings": false,
58
+ "num_attention_heads": 8,
59
+ "num_hidden_layers": 24,
60
+ "num_key_value_heads": 2,
61
+ "pad_token_id": null,
62
+ "partial_rotary_factor": 0.25,
63
+ "rms_norm_eps": 1e-06,
64
+ "rope_parameters": {
65
+ "mrope_interleaved": true,
66
+ "mrope_section": [
67
+ 11,
68
+ 11,
69
+ 10
70
+ ],
71
+ "partial_rotary_factor": 0.25,
72
+ "rope_theta": 10000000,
73
+ "rope_type": "default"
74
+ },
75
+ "tie_word_embeddings": true,
76
+ "use_cache": true,
77
+ "vocab_size": 248320
78
+ },
79
+ "tie_word_embeddings": true,
80
+ "transformers_version": "5.17.0",
81
+ "video_token_id": 248057,
82
+ "vision_config": {
83
+ "deepstack_visual_indexes": [],
84
+ "depth": 12,
85
+ "dtype": "bfloat16",
86
+ "hidden_act": "gelu_pytorch_tanh",
87
+ "hidden_size": 768,
88
+ "in_channels": 3,
89
+ "initializer_range": 0.02,
90
+ "intermediate_size": 3072,
91
+ "model_type": "qwen3_5_vision",
92
+ "num_heads": 12,
93
+ "num_position_embeddings": 2304,
94
+ "out_hidden_size": 1024,
95
+ "patch_size": 16,
96
+ "rope_parameters": {
97
+ "rope_theta": 10000.0,
98
+ "rope_type": "axial"
99
+ },
100
+ "spatial_merge_size": 2,
101
+ "temporal_patch_size": 2
102
+ },
103
+ "vision_end_token_id": 248054,
104
+ "vision_start_token_id": 248053
105
+ }
decision_config.json ADDED
@@ -0,0 +1,540 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "step": 1113,
3
+ "provenance": {
4
+ "run": "ll-v12",
5
+ "git_commit": "016711d9daba54b941a38789be8e8b328e8db1e7",
6
+ "development": "ebcedc3e726548c08da90ff569b94e4822f23312dfc3ea29b93579cfec3016c7",
7
+ "temperature": "e735fa4e0df3482752112bc9cdff6af9ddb7be07a0a9f2fb8dd8cf2355042bf6",
8
+ "train": "f826592e75acdaa9510af5b15d5c944e07628632134cd57d2d6840192696e4ac",
9
+ "train.py": "9f3fdd0e4caf20f8eff77aa5b49fbc4c60df0b185a405ca4bc7ccf021cff5922",
10
+ "model.py": "8c5579d3fcd42cb2de4e5a6515259cf4c5177ad7754af9b44c3d7f38b22efcc2",
11
+ "encoder.py": "6aa794b6c48a586d413e0be4d4ac2a1bb50bd3a83d23439b13c12c5b7dd0aac8",
12
+ "decoder.py": "9ee8ebbe5adc1ca11821b9f51e511206c6c612aeaa2648aa2388f3604480d2e0",
13
+ "models.py": "19abbc6be22049c2934a664e93aff0f968b724aa74f7d080e7dc0e367ac0120c",
14
+ "optim.py": "4fbfc0fee138121f363651eacaff84a672f758ab64d36175569bf00929c9cc5b",
15
+ "evaluate.py": "6d5c55b52ecf99d10c1522089feac4654eb2d161e90b13e408d085bca248ec41",
16
+ "types.py": "085d188898f939c581f6eeec2ebf1ab31df64f0aadef2e108cc70f2f42ecb929",
17
+ "events.py": "989646a80f0ee8695bd7c0e98ff945d04d02a511b9ecf06439048b4df0aceec2",
18
+ "uv.lock": "69e63d333763a522fd9aa451fa244653bf46a26b48f6216ada175a614471a12e"
19
+ },
20
+ "max_options": 254,
21
+ "format_version": 1,
22
+ "base_model": "Qwen/Qwen3.5-0.8B",
23
+ "revision": "2fc06364715b967f1860aea9cf38778875588b17",
24
+ "codes": [
25
+ "A",
26
+ "B",
27
+ "C",
28
+ "D",
29
+ "E",
30
+ "F",
31
+ "G",
32
+ "H",
33
+ "I",
34
+ "J",
35
+ "K",
36
+ "L",
37
+ "M",
38
+ "N",
39
+ "O",
40
+ "P",
41
+ "Q",
42
+ "R",
43
+ "S",
44
+ "T",
45
+ "U",
46
+ "V",
47
+ "W",
48
+ "X",
49
+ "Y",
50
+ "Z",
51
+ "AA",
52
+ "AB",
53
+ "AC",
54
+ "AD",
55
+ "AE",
56
+ "AF",
57
+ "AG",
58
+ "AH",
59
+ "AI",
60
+ "AJ",
61
+ "AK",
62
+ "AL",
63
+ "AM",
64
+ "AN",
65
+ "AO",
66
+ "AP",
67
+ "AQ",
68
+ "AR",
69
+ "AS",
70
+ "AT",
71
+ "AU",
72
+ "AV",
73
+ "AW",
74
+ "AX",
75
+ "AY",
76
+ "AZ",
77
+ "BA",
78
+ "BB",
79
+ "BC",
80
+ "BD",
81
+ "BE",
82
+ "BF",
83
+ "BG",
84
+ "BH",
85
+ "BI",
86
+ "BJ",
87
+ "BK",
88
+ "BL",
89
+ "BM",
90
+ "BN",
91
+ "BO",
92
+ "BP",
93
+ "BR",
94
+ "BS",
95
+ "BT",
96
+ "BU",
97
+ "BV",
98
+ "BW",
99
+ "BX",
100
+ "BY",
101
+ "CA",
102
+ "CB",
103
+ "CC",
104
+ "CD",
105
+ "CE",
106
+ "CF",
107
+ "CG",
108
+ "CH",
109
+ "CI",
110
+ "CK",
111
+ "CL",
112
+ "CM",
113
+ "CN",
114
+ "CO",
115
+ "CP",
116
+ "CR",
117
+ "CS",
118
+ "CT",
119
+ "CU",
120
+ "CV",
121
+ "CW",
122
+ "CX",
123
+ "CY",
124
+ "DA",
125
+ "DB",
126
+ "DC",
127
+ "DD",
128
+ "DE",
129
+ "DF",
130
+ "DG",
131
+ "DH",
132
+ "DI",
133
+ "DJ",
134
+ "DK",
135
+ "DL",
136
+ "DM",
137
+ "DN",
138
+ "DO",
139
+ "DP",
140
+ "DR",
141
+ "DS",
142
+ "DT",
143
+ "DU",
144
+ "DV",
145
+ "DW",
146
+ "DX",
147
+ "DY",
148
+ "EA",
149
+ "EB",
150
+ "EC",
151
+ "ED",
152
+ "EE",
153
+ "EF",
154
+ "EG",
155
+ "EH",
156
+ "EI",
157
+ "EK",
158
+ "EL",
159
+ "EM",
160
+ "EN",
161
+ "EO",
162
+ "EP",
163
+ "EQ",
164
+ "ER",
165
+ "ES",
166
+ "ET",
167
+ "EU",
168
+ "EV",
169
+ "EW",
170
+ "EX",
171
+ "EZ",
172
+ "FA",
173
+ "FB",
174
+ "FC",
175
+ "FD",
176
+ "FE",
177
+ "FF",
178
+ "FG",
179
+ "FH",
180
+ "FI",
181
+ "FK",
182
+ "FL",
183
+ "FM",
184
+ "FN",
185
+ "FO",
186
+ "FP",
187
+ "FR",
188
+ "FS",
189
+ "FT",
190
+ "FU",
191
+ "FW",
192
+ "FX",
193
+ "FY",
194
+ "GA",
195
+ "GB",
196
+ "GC",
197
+ "GD",
198
+ "GE",
199
+ "GF",
200
+ "GG",
201
+ "GH",
202
+ "GI",
203
+ "GL",
204
+ "GM",
205
+ "GN",
206
+ "GO",
207
+ "GP",
208
+ "GR",
209
+ "GS",
210
+ "GT",
211
+ "GU",
212
+ "GV",
213
+ "GW",
214
+ "GX",
215
+ "GY",
216
+ "HA",
217
+ "HB",
218
+ "HC",
219
+ "HD",
220
+ "HE",
221
+ "HF",
222
+ "HG",
223
+ "HH",
224
+ "HI",
225
+ "HK",
226
+ "HL",
227
+ "HM",
228
+ "HN",
229
+ "HO",
230
+ "HP",
231
+ "HQ",
232
+ "HR",
233
+ "HS",
234
+ "HT",
235
+ "HU",
236
+ "HV",
237
+ "HW",
238
+ "HX",
239
+ "HY",
240
+ "HZ",
241
+ "IA",
242
+ "IB",
243
+ "IC",
244
+ "ID",
245
+ "IE",
246
+ "IF",
247
+ "IG",
248
+ "IH",
249
+ "II",
250
+ "IJ",
251
+ "IK",
252
+ "IL",
253
+ "IM",
254
+ "IN",
255
+ "IO",
256
+ "IP",
257
+ "IQ",
258
+ "IR",
259
+ "IS",
260
+ "IT",
261
+ "IU",
262
+ "IV",
263
+ "IW",
264
+ "IX",
265
+ "IZ",
266
+ "JA",
267
+ "JB",
268
+ "JC",
269
+ "JD",
270
+ "JE",
271
+ "JI",
272
+ "JJ",
273
+ "JK",
274
+ "JM",
275
+ "JO",
276
+ "JP",
277
+ "JR",
278
+ "JS",
279
+ "JT"
280
+ ],
281
+ "token_ids": [
282
+ 32,
283
+ 33,
284
+ 34,
285
+ 35,
286
+ 36,
287
+ 37,
288
+ 38,
289
+ 39,
290
+ 40,
291
+ 41,
292
+ 42,
293
+ 43,
294
+ 44,
295
+ 45,
296
+ 46,
297
+ 47,
298
+ 48,
299
+ 49,
300
+ 50,
301
+ 51,
302
+ 52,
303
+ 53,
304
+ 54,
305
+ 55,
306
+ 56,
307
+ 57,
308
+ 5840,
309
+ 1803,
310
+ 1646,
311
+ 1745,
312
+ 13276,
313
+ 8018,
314
+ 1825,
315
+ 28946,
316
+ 15015,
317
+ 29595,
318
+ 11568,
319
+ 939,
320
+ 1354,
321
+ 1058,
322
+ 18183,
323
+ 2456,
324
+ 88898,
325
+ 905,
326
+ 1846,
327
+ 802,
328
+ 33869,
329
+ 7839,
330
+ 14006,
331
+ 2860,
332
+ 2926,
333
+ 22828,
334
+ 6844,
335
+ 9798,
336
+ 4738,
337
+ 9265,
338
+ 11261,
339
+ 19278,
340
+ 36513,
341
+ 93801,
342
+ 8335,
343
+ 14544,
344
+ 85266,
345
+ 9110,
346
+ 28000,
347
+ 15137,
348
+ 4525,
349
+ 25261,
350
+ 12717,
351
+ 7116,
352
+ 17078,
353
+ 14497,
354
+ 57339,
355
+ 74909,
356
+ 52072,
357
+ 19305,
358
+ 4887,
359
+ 12607,
360
+ 3580,
361
+ 6281,
362
+ 2036,
363
+ 9362,
364
+ 8533,
365
+ 2080,
366
+ 10911,
367
+ 2925,
368
+ 3040,
369
+ 9690,
370
+ 27731,
371
+ 8023,
372
+ 6901,
373
+ 8702,
374
+ 6211,
375
+ 1123,
376
+ 16307,
377
+ 18990,
378
+ 64045,
379
+ 63037,
380
+ 33380,
381
+ 6151,
382
+ 3392,
383
+ 5449,
384
+ 3967,
385
+ 1113,
386
+ 5095,
387
+ 51923,
388
+ 49600,
389
+ 17099,
390
+ 51483,
391
+ 17756,
392
+ 16037,
393
+ 8135,
394
+ 30237,
395
+ 5683,
396
+ 9992,
397
+ 7444,
398
+ 5751,
399
+ 10284,
400
+ 20887,
401
+ 59884,
402
+ 52396,
403
+ 16103,
404
+ 67547,
405
+ 18535,
406
+ 8006,
407
+ 7263,
408
+ 1425,
409
+ 6878,
410
+ 14453,
411
+ 9097,
412
+ 44072,
413
+ 76089,
414
+ 68720,
415
+ 2662,
416
+ 2629,
417
+ 923,
418
+ 6548,
419
+ 8924,
420
+ 52194,
421
+ 622,
422
+ 1515,
423
+ 1300,
424
+ 37523,
425
+ 44473,
426
+ 36530,
427
+ 3152,
428
+ 93924,
429
+ 3505,
430
+ 15731,
431
+ 6542,
432
+ 14176,
433
+ 11091,
434
+ 1686,
435
+ 11660,
436
+ 80440,
437
+ 18836,
438
+ 26132,
439
+ 5934,
440
+ 24794,
441
+ 40229,
442
+ 3660,
443
+ 11361,
444
+ 10191,
445
+ 8225,
446
+ 3860,
447
+ 78413,
448
+ 17680,
449
+ 15900,
450
+ 78138,
451
+ 15653,
452
+ 5213,
453
+ 22150,
454
+ 39500,
455
+ 10460,
456
+ 35131,
457
+ 21563,
458
+ 43194,
459
+ 27127,
460
+ 3697,
461
+ 20011,
462
+ 24368,
463
+ 15058,
464
+ 23658,
465
+ 8362,
466
+ 16035,
467
+ 24583,
468
+ 52857,
469
+ 38403,
470
+ 60456,
471
+ 81519,
472
+ 40097,
473
+ 16522,
474
+ 29722,
475
+ 21756,
476
+ 18567,
477
+ 1736,
478
+ 48043,
479
+ 87013,
480
+ 22456,
481
+ 23165,
482
+ 55523,
483
+ 13097,
484
+ 50397,
485
+ 41741,
486
+ 23073,
487
+ 6401,
488
+ 86538,
489
+ 16585,
490
+ 11622,
491
+ 2464,
492
+ 84982,
493
+ 75516,
494
+ 36984,
495
+ 58795,
496
+ 47217,
497
+ 59675,
498
+ 5681,
499
+ 3151,
500
+ 1271,
501
+ 887,
502
+ 5203,
503
+ 2685,
504
+ 1849,
505
+ 72470,
506
+ 5370,
507
+ 74063,
508
+ 27629,
509
+ 1655,
510
+ 1728,
511
+ 669,
512
+ 3682,
513
+ 3191,
514
+ 59865,
515
+ 2712,
516
+ 1580,
517
+ 922,
518
+ 77243,
519
+ 2990,
520
+ 78493,
521
+ 5228,
522
+ 2750,
523
+ 42711,
524
+ 44568,
525
+ 56402,
526
+ 48236,
527
+ 38993,
528
+ 43559,
529
+ 61250,
530
+ 32942,
531
+ 86302,
532
+ 25310,
533
+ 26313,
534
+ 81770,
535
+ 12185,
536
+ 78382
537
+ ],
538
+ "temperature": 1.075222461312357,
539
+ "prompt_layout": "live-last"
540
+ }
model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:d324dd6c9bb61b30af65564135b33f6892c30a9b2bd22667b2e09b9c8118cf77
3
+ size 1706027688
processor_config.json ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "image_processor": {
3
+ "do_convert_rgb": true,
4
+ "do_normalize": true,
5
+ "do_rescale": true,
6
+ "do_resize": true,
7
+ "image_mean": [
8
+ 0.5,
9
+ 0.5,
10
+ 0.5
11
+ ],
12
+ "image_processor_type": "Qwen2VLImageProcessor",
13
+ "image_std": [
14
+ 0.5,
15
+ 0.5,
16
+ 0.5
17
+ ],
18
+ "merge_size": 2,
19
+ "patch_size": 16,
20
+ "resample": 3,
21
+ "rescale_factor": 0.00392156862745098,
22
+ "size": {
23
+ "longest_edge": 262144,
24
+ "shortest_edge": 65536
25
+ },
26
+ "temporal_patch_size": 2
27
+ },
28
+ "processor_class": "Qwen3VLProcessor",
29
+ "video_processor": {
30
+ "do_convert_rgb": true,
31
+ "do_normalize": true,
32
+ "do_rescale": true,
33
+ "do_resize": true,
34
+ "do_sample_frames": true,
35
+ "fps": 2,
36
+ "image_mean": [
37
+ 0.5,
38
+ 0.5,
39
+ 0.5
40
+ ],
41
+ "image_std": [
42
+ 0.5,
43
+ 0.5,
44
+ 0.5
45
+ ],
46
+ "max_frames": 768,
47
+ "max_video_tokens": 768,
48
+ "merge_size": 2,
49
+ "min_frames": 4,
50
+ "patch_size": 16,
51
+ "resample": 3,
52
+ "rescale_factor": 0.00392156862745098,
53
+ "return_metadata": false,
54
+ "size": {
55
+ "longest_edge": 25165824,
56
+ "shortest_edge": 4096
57
+ },
58
+ "temporal_patch_size": 2,
59
+ "video_processor_type": "Qwen3VLVideoProcessor"
60
+ }
61
+ }
readout.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:b504d7a83a6b72837e6ad99e7da12eab28e5a54f9f637e8c4c8c8997c800c74a
3
+ size 522320
tokenizer.json ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:6f32ce20dc35f57a7f9ad1eac03525bd7d30f9df8cea6507e958279cc3657706
3
+ size 19989492
tokenizer_config.json ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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": false,
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
+ "processor_class": "Qwen3VLProcessor",
27
+ "split_special_tokens": false,
28
+ "tokenizer_class": "Qwen2Tokenizer",
29
+ "unk_token": null,
30
+ "video_token": "<|video_pad|>",
31
+ "vision_bos_token": "<|vision_start|>",
32
+ "vision_eos_token": "<|vision_end|>"
33
+ }