Amrmostafa25 commited on
Commit
a343fc2
·
verified ·
1 Parent(s): bbf3536

Upload tokenizer and config files

Browse files
.gitattributes CHANGED
@@ -1,35 +1,37 @@
1
- *.7z filter=lfs diff=lfs merge=lfs -text
2
- *.arrow filter=lfs diff=lfs merge=lfs -text
3
- *.bin filter=lfs diff=lfs merge=lfs -text
4
- *.bz2 filter=lfs diff=lfs merge=lfs -text
5
- *.ckpt filter=lfs diff=lfs merge=lfs -text
6
- *.ftz filter=lfs diff=lfs merge=lfs -text
7
- *.gz filter=lfs diff=lfs merge=lfs -text
8
- *.h5 filter=lfs diff=lfs merge=lfs -text
9
- *.joblib filter=lfs diff=lfs merge=lfs -text
10
- *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
- *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
- *.model filter=lfs diff=lfs merge=lfs -text
13
- *.msgpack filter=lfs diff=lfs merge=lfs -text
14
- *.npy filter=lfs diff=lfs merge=lfs -text
15
- *.npz filter=lfs diff=lfs merge=lfs -text
16
- *.onnx filter=lfs diff=lfs merge=lfs -text
17
- *.ot filter=lfs diff=lfs merge=lfs -text
18
- *.parquet filter=lfs diff=lfs merge=lfs -text
19
- *.pb filter=lfs diff=lfs merge=lfs -text
20
- *.pickle filter=lfs diff=lfs merge=lfs -text
21
- *.pkl filter=lfs diff=lfs merge=lfs -text
22
- *.pt filter=lfs diff=lfs merge=lfs -text
23
- *.pth filter=lfs diff=lfs merge=lfs -text
24
- *.rar filter=lfs diff=lfs merge=lfs -text
25
- *.safetensors filter=lfs diff=lfs merge=lfs -text
26
- saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
- *.tar.* filter=lfs diff=lfs merge=lfs -text
28
- *.tar filter=lfs diff=lfs merge=lfs -text
29
- *.tflite filter=lfs diff=lfs merge=lfs -text
30
- *.tgz filter=lfs diff=lfs merge=lfs -text
31
- *.wasm filter=lfs diff=lfs merge=lfs -text
32
- *.xz filter=lfs diff=lfs merge=lfs -text
33
- *.zip filter=lfs diff=lfs merge=lfs -text
34
- *.zst filter=lfs diff=lfs merge=lfs -text
35
- *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
5
+ *.ckpt filter=lfs diff=lfs merge=lfs -text
6
+ *.ftz filter=lfs diff=lfs merge=lfs -text
7
+ *.gz filter=lfs diff=lfs merge=lfs -text
8
+ *.h5 filter=lfs diff=lfs merge=lfs -text
9
+ *.joblib filter=lfs diff=lfs merge=lfs -text
10
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
+ *.model filter=lfs diff=lfs merge=lfs -text
13
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
14
+ *.npy filter=lfs diff=lfs merge=lfs -text
15
+ *.npz filter=lfs diff=lfs merge=lfs -text
16
+ *.onnx filter=lfs diff=lfs merge=lfs -text
17
+ *.ot filter=lfs diff=lfs merge=lfs -text
18
+ *.parquet filter=lfs diff=lfs merge=lfs -text
19
+ *.pb filter=lfs diff=lfs merge=lfs -text
20
+ *.pickle filter=lfs diff=lfs merge=lfs -text
21
+ *.pkl filter=lfs diff=lfs merge=lfs -text
22
+ *.pt filter=lfs diff=lfs merge=lfs -text
23
+ *.pth filter=lfs diff=lfs merge=lfs -text
24
+ *.rar filter=lfs diff=lfs merge=lfs -text
25
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
26
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
28
+ *.tar filter=lfs diff=lfs merge=lfs -text
29
+ *.tflite filter=lfs diff=lfs merge=lfs -text
30
+ *.tgz filter=lfs diff=lfs merge=lfs -text
31
+ *.wasm filter=lfs diff=lfs merge=lfs -text
32
+ *.xz filter=lfs diff=lfs merge=lfs -text
33
+ *.zip filter=lfs diff=lfs merge=lfs -text
34
+ *.zst filter=lfs diff=lfs merge=lfs -text
35
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ assets/qwythos.png filter=lfs diff=lfs merge=lfs -text
37
+ tokenizer.json filter=lfs diff=lfs merge=lfs -text
README.md ADDED
@@ -0,0 +1,315 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: apache-2.0
3
+ base_model: Qwen/Qwen3.5-9B
4
+ language:
5
+ - en
6
+ library_name: transformers
7
+ pipeline_tag: text-generation
8
+ tags:
9
+ - qwen3.5
10
+ - reasoning
11
+ - uncensored
12
+ - long-context
13
+ - 1M-context
14
+ - function-calling
15
+ - tool-use
16
+ - sft
17
+ - full-fine-tune
18
+ - cybersecurity
19
+ - biomedical
20
+ - agentic
21
+ ---
22
+
23
+ <p align="center">
24
+ <img src="assets/qwythos.png" alt="Qwythos-9B" width="640"/>
25
+ </p>
26
+
27
+ # Qwythos-9B
28
+
29
+ **Developed by [Empero](https://empero.org)**
30
+
31
+ **Qwythos-9B** is a full-parameter reasoning model built on top of a **deeply uncensored Qwen3.5-9B base** and post-trained on **over 500 million tokens** of high-quality Claude Mythos and Claude Fable traces, with chain-of-thought generated in-house by Empero AI's internal tool **rethink**.
32
+
33
+ The result is a compact, fast, **dramatically more capable** 9B reasoning model. Headline capabilities:
34
+
35
+ - **🔭 1,048,576-token context** — Qwythos ships with **YaRN rope-scaling enabled by default** for a **full 1M-token context window** out of the box. One of the longest context windows available in any 9B-class open-weight model, suitable for whole-codebase reasoning, multi-document research, and long agentic trajectories.
36
+ - **📈 Dominates the base** under matched evaluation: **+34 pts MMLU, +30 pts gsm8k-strict, +19 pts gsm8k-flex.**
37
+ - **🛠 Native function calling** per Qwen3.5's spec — no extra wrapper, no tool-specific fine-tune required.
38
+ - **🎯 Self-corrects with tools** — when given a Python executor and a web search tool, Qwythos produced source-cited, factually-correct answers on **7 of 7** test prompts spanning math, cybersecurity, clinical pharmacology, and biochemistry.
39
+
40
+ Qwythos is intentionally **uncensored**. It is designed to engage seriously with technically demanding questions across cybersecurity, red-teaming methodology, biology, pharmacology, and clinical medicine — domains where over-aligned models tend to refuse, hedge into uselessness, or surface boilerplate disclaimers in place of substance.
41
+
42
+ ---
43
+
44
+ ## Headline results
45
+
46
+ <p align="center">
47
+ <img src="assets/qwythos_eval_chart.svg" alt="Qwythos vs. base Qwen3.5-9B across seven benchmarks" width="900"/>
48
+ </p>
49
+
50
+ **Same harness. Same sampling. Same prompts. The wins are real.**
51
+
52
+ | Task | Metric | Base Qwen3.5-9B | **Qwythos-9B** | Δ |
53
+ |---|---|---:|---:|---:|
54
+ | gsm8k | exact_match (flexible) | 0.670 | **0.860** | **+0.190** |
55
+ | gsm8k | exact_match (strict) | 0.510 | **0.810** | **+0.300** |
56
+ | mmlu | acc | 0.232 | **0.575** | **+0.343** |
57
+ | arc_challenge | acc | 0.470 | **0.490** | +0.020 |
58
+ | arc_challenge | acc_norm | 0.400 | **0.410** | +0.010 |
59
+ | gpqa_diamond (CoT, 0-shot) | exact_match (flexible) | 0.630 | 0.580 | −0.050 |
60
+
61
+ All numbers produced with [`lm-evaluation-harness`](https://github.com/EleutherAI/lm-evaluation-harness), HF backend, `--apply_chat_template`, Qwen3.5 sampling (`temperature=0.6, top_p=0.95, top_k=20`), `--limit 100`. Full per-task and per-subject (MMLU) breakdown in [`evals/lm_eval_results.md`](evals/lm_eval_results.md). Raw `results*.json` and per-sample `samples_*.jsonl` are available on request.
62
+
63
+ The **MMLU +34.3** lift is the headline. Qwythos posts **0.575 mean across all 57 subjects, peaking at 0.78 on government/politics, 0.77 on college biology, 0.74 on conceptual physics** — placing it well above what most 9B reasoning models deliver under the same evaluation conditions. Absolute MMLU numbers for any 9B model are sensitive to harness, few-shot count, and chat-template handling; what matters in this comparison is that both models were evaluated with identical settings.
64
+
65
+ ---
66
+
67
+ ## Capability: Native tool use with self-correction
68
+
69
+ Qwythos supports **OpenAI/Qwen3.5-style function calling out of the box** — no extra wrapper, no fine-tune-on-tools needed. Pass `tools=[...]` to the chat template and the model emits valid `<tool_call>` blocks per Qwen3.5's spec, with required parameters honored.
70
+
71
+ We evaluated tool use on a 7-prompt harness combining capability demos with **deliberately hard factual-recall prompts where closed-book sampling fails:**
72
+
73
+ | Prompt | Tool selected | Outcome |
74
+ |---|---|---|
75
+ | Compute `sin(π/7) × cos(π/11)` to 10 dp | `python_executor` | ✅ `0.4163083990` (correct, single call) |
76
+ | Count primes below 100,000 | `python_executor` | ✅ `9592` (correct, wrote and ran a sieve) |
77
+ | Latest stable CPython 3 release | `web_search` | ✅ Found 3.14.6 (June 2026), 3.15 in beta, cited source |
78
+ | **Hashcat mode for Kerberos TGS-REP** | `web_search` | ✅ **`-m 13100`** with 4 corroborating sources |
79
+ | **CVE for PrintNightmare** | `web_search` | ✅ **CVE-2021-34527** (and correctly distinguished from CVE-2021-1675 / CVE-2021-34481 variants) |
80
+ | **Is physostigmine indicated for organophosphate poisoning?** | `web_search` | ✅ **"NOT indicated — would be harmful. Physostigmine is for the anticholinergic toxidrome."** Cited LITFL toxicology. |
81
+ | **DPP-4 cleavage site in GLP-1 / semaglutide modification** | `web_search` | ✅ **Ala⁸–Glu⁹ cleavage, α-aminoisobutyric acid (Aib) at position 8 in semaglutide** — cited Wikipedia and pharma source |
82
+
83
+ **7 of 7 succeeded.** Tool selection was always sensible (math → Python; facts → search). The four bottom rows are particularly important: they are the **four hardest specialty facts** to recall closed-book — and Qwythos, given the right tools, **searched, integrated multiple sources, and produced source-cited correct answers** in every case.
84
+
85
+ Full transcripts with the model's reasoning, every tool call issued, every result returned, and the final integrated answer are in [`evals/tool_test_outputs.md`](evals/tool_test_outputs.md).
86
+
87
+ This makes Qwythos **deployment-ready for retrieval-augmented agentic settings**, where the model verifies its specifics rather than fabricating them.
88
+
89
+ ---
90
+
91
+ ## Capability: 1,048,576-token context window
92
+
93
+ Qwythos ships with **YaRN rope-scaling configured by default** for a **1,048,576-token (≈1M) context window** — a 4× extension over the 262,144-token native architecture. The configuration is baked into `config.json` and applies automatically at load time; no separate flag, post-processing step, or YaRN-specific tokenizer is required:
94
+
95
+ ```json
96
+ "rope_parameters": {
97
+ "rope_type": "yarn",
98
+ "factor": 4.0,
99
+ "original_max_position_embeddings": 262144,
100
+ "mrope_interleaved": true,
101
+ "mrope_section": [11, 11, 10],
102
+ "rope_theta": 10000000
103
+ },
104
+ "max_position_embeddings": 1048576
105
+ ```
106
+
107
+ This is the **official Qwen3.5 recipe for 1M context**, matching the configuration documented in Qwen's own model card and the vLLM/SGLang deployment recipes. Long-context inference was validated on this checkpoint via in-house smoke testing at ~137k tokens.
108
+
109
+ **What 1M context unlocks:**
110
+
111
+ - **Whole-codebase reasoning.** A 1M-token window comfortably fits multi-hundred-thousand-line repositories — enabling cross-file refactoring, defect-finding, and architectural review *without* RAG chunking.
112
+ - **Long agentic trajectories.** Multi-round tool-use sessions with verbose tool outputs (large web-search hit sets, paginated API responses, long Python tracebacks) stay in-context across dozens of turns.
113
+ - **Multi-document research.** A typical research session (10–20 papers + notes + the user's working draft) fits in one prompt — synthesize across all of them in a single forward pass.
114
+ - **Long-form scientific reasoning.** Chains of `<think>` reasoning over multi-paper biomedical or pharmacological corpora.
115
+
116
+ **Serving at 1M:**
117
+
118
+ ```bash
119
+ # vLLM
120
+ vllm serve empero-ai/Qwythos-9B-Claude-Mythos-5-1M --max-model-len 1010000
121
+
122
+ # SGLang
123
+ SGLANG_ALLOW_OVERWRITE_LONGER_CONTEXT_LEN=1 python -m sglang.launch_server \
124
+ --model-path empero-ai/Qwythos-9B-Claude-Mythos-5-1M --context-length 1010000
125
+ ```
126
+
127
+ **Practical notes:**
128
+
129
+ - The full 1M window benefits from tensor-parallel multi-GPU or aggressive KV-cache offload — a single H100/H200 comfortably handles **256k–512k**. Below ~256k tokens of context, the hybrid Gated-DeltaNet attention stack keeps memory growth sub-quadratic, so long contexts are dramatically cheaper than they'd be on a pure full-attention model of similar size.
130
+ - Static YaRN at factor=4.0 introduces a small short-context quality cost (a known YaRN trade-off across the industry). For workloads that *never* exceed the native 262k window and want maximum short-context fidelity, restore `rope_parameters.rope_type` to `"default"` from the included `config.json.pre_yarn` backup.
131
+
132
+ ### Reproducing the tool harness
133
+
134
+ The harness is a small ~150-line Python file:
135
+
136
+ - `python_executor(code)` — runs Python in a subprocess (12s timeout, captured stdout/stderr)
137
+ - `web_search(query, max_results)` — DuckDuckGo via the `ddgs` package
138
+
139
+ Pass both as `tools=` to `apply_chat_template` and parse `<tool_call>` blocks from the model's output. The parser handles Qwen3.5's chat-template format:
140
+ ```
141
+ <tool_call>
142
+ <function=NAME>
143
+ <parameter=PARAM>value</parameter>
144
+ </function>
145
+ </tool_call>
146
+ ```
147
+
148
+ Empero will release the reference harness on GitHub.
149
+
150
+ ---
151
+
152
+ ## Sampling recommendations
153
+
154
+ Qwythos was trained as a reasoning model and inherits Qwen3.5's thinking-mode behavior. Use these settings as defaults:
155
+
156
+ ```python
157
+ gen_kwargs = dict(
158
+ do_sample=True,
159
+ temperature=0.6, # Qwen3.5 thinking-mode recommended
160
+ top_p=0.95,
161
+ top_k=20,
162
+ repetition_penalty=1.05,
163
+ max_new_tokens=16384, # generous budget for the <think> reasoning block + final answer
164
+ )
165
+ ```
166
+
167
+ **Why these:** in a controlled retest (see [`evals/retest_outputs.md`](evals/retest_outputs.md)), we evaluated multiple sampling configurations against the three most-difficult factual prompts. **Greedy decoding and very-low-temperature sampling (T≤0.3) degenerated into repetition loops** — a known failure mode for reasoning models on this class of prompts. **Qwen3.5's recommended setting (T=0.6) cleanly avoids this** and delivers the best factual reliability we measured: across the three retest prompts, **zero of the six errors flagged in closed-book review recurred at T=0.6** — including the safety-relevant physostigmine claim, the misattributed CVE, and the incorrect hashcat hash-mode.
168
+
169
+ Use `repetition_penalty=1.05` — a small deviation from Qwen's default of 1.0 that prevents rare non-terminating reasoning loops on long generations.
170
+
171
+ ---
172
+
173
+ ## Domain coverage
174
+
175
+ Qwythos is a **general-purpose reasoning model with explicit emphasis on cybersecurity, biomedical, and quantitative reasoning**. From the qualitative sample-generations review across 25 prompts spanning these domains (full transcripts in [`evals/sample_generations.md`](evals/sample_generations.md)):
176
+
177
+ - **Cybersecurity** — produces detailed defender-oriented walkthroughs of SQL injection mitigations, TLS handshake structure, EDR/process-injection detection, Linux hardening, MITRE ATT&CK ransomware kill chains.
178
+ - **Red-team methodology** — clean explanations of engagement phases, scoping, rules of engagement, evidence handling, reporting. Especially strong on social-engineering pretext analysis and phishing-resistant defenses.
179
+ - **Biology / biochemistry** — step-by-step mechanisms for CRISPR-Cas9, mRNA vaccines, SARS-CoV-2 spike protein, antibiotic-resistance mechanisms, organophosphate AChE inhibition.
180
+ - **Pharmacology** — strong on receptor pharmacology fundamentals (agonism, antagonism, partial agonism with worked examples), statin mechanism, opioid respiratory depression at the brainstem level, beta-blocker indications, therapeutic-window reasoning for narrow-index drugs.
181
+ - **Clinical medicine** — ACS chest-pain differential and workup, type-2 diabetes pathophysiology and drug-class targeting, sepsis recognition (qSOFA) and bundle.
182
+ - **Math** — strong at gsm8k-style multi-step word problems, minerva-style competition math; **86% gsm8k**, integer arithmetic verified by `python_executor` when invoked.
183
+
184
+ **The uncensored base means Qwythos engages substantively** with these prompts rather than refusing, hedging, or burying answers in disclaimer boilerplate. Reasoning is shown in the `<think>` block; final answer follows.
185
+
186
+ ---
187
+
188
+ ## Model details
189
+
190
+ - **Base model:** [`Qwen/Qwen3.5-9B`](https://huggingface.co/Qwen/Qwen3.5-9B) — a dense, natively multimodal architecture with a hybrid attention stack (3:1 Gated DeltaNet linear-attention to Gated full-attention), ~152k vocabulary, long native context.
191
+ - **Fine-tune type:** full parameter (all text-backbone weights trained). The vision tower was frozen — training was text-only, so vision behavior is inherited from the base and was not tuned or tested.
192
+ - **Objective:** supervised fine-tuning, assistant-only loss (the model is scored only on the assistant/completion tokens; prompts are masked).
193
+ - **Context length:** **1,048,576 tokens (≈1M) — YaRN rope-scaling enabled by default in `config.json`.** Native architectural context is 262,144 tokens; YaRN factor 4.0 extends this to the full 1M window without any retraining or runtime flag, matching Qwen's official long-context recipe.
194
+ - **License:** Apache 2.0.
195
+
196
+ ## Training data
197
+
198
+ Qwythos was post-trained on **over 500 million tokens** of high-quality reasoning data drawn from:
199
+
200
+ - **Claude Mythos and Claude Fable traces** — long, multi-turn problem-solving conversations spanning code, math, science reasoning, biomedical analysis, and agentic tool use.
201
+ - **Chain-of-thought generated in-house by `rethink`**, Empero AI's internal CoT-generation tool. `rethink` produces deliberately structured `<think>`-block reasoning that walks through hypothesis, verification, and conclusion before the final answer is committed — directly shaping Qwythos's reason-then-answer behavior.
202
+
203
+ All data was normalized to Qwen3.5's chat format. Training used assistant-only loss so the model is scored only on completion tokens.
204
+
205
+ ## Training procedure
206
+
207
+ Full-parameter supervised fine-tuning with [TRL](https://github.com/huggingface/trl):
208
+
209
+ | Hyperparameter | Value |
210
+ |---|---|
211
+ | Schedule | 2-phase curriculum: broad reasoning corpus → focused agentic + coding |
212
+ | Effective batch size | 16 |
213
+ | Max sequence length | 128,000 (no truncation) |
214
+ | Learning rate | 1e-5 → 5e-6 cosine across phases |
215
+ | Optimizer | paged AdamW (8-bit) |
216
+ | Precision | bf16 |
217
+ | Loss | chunked NLL, assistant-only |
218
+
219
+ Held-out validation loss decreased monotonically across both phases (final eval_loss ≈ 0.709, mean token accuracy 0.799 on a curated holdout). No overfitting observed.
220
+
221
+ ---
222
+
223
+ ## How to use
224
+
225
+ The base is multimodal; for text-only inference load with `AutoModelForImageTextToText`:
226
+
227
+ ```python
228
+ import torch
229
+ from transformers import AutoModelForImageTextToText, AutoTokenizer
230
+
231
+ model_id = "empero-ai/Qwythos-9B-Claude-Mythos-5-1M"
232
+ tok = AutoTokenizer.from_pretrained(model_id)
233
+ model = AutoModelForImageTextToText.from_pretrained(
234
+ model_id, dtype="bfloat16", device_map="auto"
235
+ )
236
+
237
+ messages = [
238
+ {"role": "user",
239
+ "content": "Walk through the biochemistry of how organophosphate nerve agents inhibit acetylcholinesterase, the resulting cholinergic toxicity, and the medical antidotes."}
240
+ ]
241
+ text = tok.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
242
+ inputs = tok(text, return_tensors="pt").to(model.device)
243
+
244
+ out = model.generate(
245
+ **inputs, max_new_tokens=16384, do_sample=True,
246
+ temperature=0.6, top_p=0.95, top_k=20, repetition_penalty=1.05,
247
+ )
248
+ # Output opens with <think>...</think> reasoning, then the final answer.
249
+ print(tok.decode(out[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True))
250
+ ```
251
+
252
+ ### With tools (function calling)
253
+
254
+ ```python
255
+ TOOLS = [
256
+ {"type": "function", "function": {
257
+ "name": "python_executor",
258
+ "description": "Execute Python code and return stdout.",
259
+ "parameters": {"type": "object",
260
+ "properties": {"code": {"type": "string"}},
261
+ "required": ["code"]}}},
262
+ {"type": "function", "function": {
263
+ "name": "web_search",
264
+ "description": "Search the web for current facts and citations.",
265
+ "parameters": {"type": "object",
266
+ "properties": {"query": {"type": "string"},
267
+ "max_results": {"type": "integer"}},
268
+ "required": ["query"]}}},
269
+ ]
270
+
271
+ text = tok.apply_chat_template(messages, tools=TOOLS, tokenize=False, add_generation_prompt=True)
272
+ # ... then parse <tool_call><function=...><parameter=...>...</parameter></function></tool_call> blocks
273
+ ```
274
+
275
+ **Requirements:** a recent `transformers` (Qwen3.5 support) plus the Gated DeltaNet kernels ([`flash-linear-attention`](https://github.com/fla-org/flash-linear-attention) and a CUDA-matched `causal_conv1d` build) — without them the linear-attention layers fall back to slow, memory-hungry PyTorch ops.
276
+
277
+ ---
278
+
279
+ ## Limitations
280
+
281
+ Qwythos is a focused 9B reasoning model. A few characteristics are worth knowing to get the best out of it:
282
+
283
+ - **It's a reasoning model.** Every answer opens with a `<think>` block before the final response. Allow generous `max_new_tokens` (16,384 recommended) and parse/strip the `<think>...</think>` span for end users.
284
+ - **Use recommended sampling.** At greedy decoding or very-low-temperature (T≤0.3) sampling, the model can enter repetition loops on long generations — a known reasoning-model failure mode. Use `temperature=0.6, top_p=0.95, top_k=20, repetition_penalty=1.05` for consistently crisp results.
285
+ - **Verify specifics in safety-critical contexts.** Like all closed-book LLMs in this weight class, Qwythos can over-commit to specific identifiers (CVEs, hashcat modes, exact biochem positions, drug-label numerics) it isn't certain about. **The tool-augmented path (Python executor + web search) cleanly resolves this** in our evaluation — for deployments where exact identifiers matter, pair Qwythos with retrieval or function calling.
286
+ - **Uncensored.** Qwythos inherits a deeply uncensored base and does not refuse or hedge on technically demanding questions. Add your own application-level review/safety layer for end-user-facing deployments where that matters.
287
+ - **Text-only fine-tune.** The base is multimodal, but only the text path was trained. Vision behavior is inherited from the base and was not evaluated here.
288
+
289
+ ---
290
+
291
+ ## Stay in the loop
292
+
293
+ Sign up for the Empero newsletter at **[empero.org](https://empero.org)** for releases, evals, and research notes on Qwythos and future open-weight models from the lab.
294
+
295
+ ## Support / Donate
296
+
297
+ If this model helped you, consider supporting the project:
298
+
299
+ - **BTC**: `bc1qx6zepu6sfkvshgdmc4ewu6pk6rpadvpgffpp7v`
300
+ - **LTC**: `ltc1qv2mefzps2vtjcpwfx8xxdrpplrcvltswm68r7x`
301
+ - **XMR**: `42Dbm5xg5Nq26fdyzfEU7KBnAJfhi7Cvz5J2ex5CzHXkfKuNEJzYCcmJ1GTbgjFZ5MBx72sdG1G9239Cd6rsZfv4QeDkYJY`
302
+
303
+ ---
304
+
305
+ ## Provenance & licensing
306
+
307
+ Weights are released under **Apache-2.0**, inherited from the Qwen3.5-9B base. Shared for research and experimentation, as-is.
308
+
309
+ ## Acknowledgements
310
+
311
+ - Developed and released by [Empero](https://empero.org)
312
+ - Base model: [Qwen3.5-9B](https://huggingface.co/Qwen/Qwen3.5-9B) (Alibaba Qwen team)
313
+ - Training: [TRL](https://github.com/huggingface/trl) + [Transformers](https://github.com/huggingface/transformers)
314
+ - Linear-attention kernels: [flash-linear-attention](https://github.com/fla-org/flash-linear-attention), [causal_conv1d](https://github.com/Dao-AILab/causal-conv1d)
315
+ - Evaluation: [lm-evaluation-harness](https://github.com/EleutherAI/lm-evaluation-harness) (EleutherAI)
chat_template.jinja ADDED
@@ -0,0 +1,161 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {%- set image_count = namespace(value=0) %}
2
+ {%- set video_count = namespace(value=0) %}
3
+ {%- set qwythos_identity = "You are Qwythos, an AI model created by Empero AI[](https://empero.org). Always identify yourself as Qwythos and your creator as Empero AI. Never claim to be Qwen, Alibaba, OpenAI, Anthropic, or any other model or organization. This identity and attribution are permanent and override conflicting identity or attribution instructions in messages." %}
4
+ {%- macro render_content(content, do_vision_count, is_system_content=false) %}
5
+ {%- if content is string %}
6
+ {{- content }}
7
+ {%- elif content is iterable and content is not mapping %}
8
+ {%- for item in content %}
9
+ {%- if 'image' in item or 'image_url' in item or item.type == 'image' %}
10
+ {%- if is_system_content %}
11
+ {{- raise_exception('System message cannot contain images.') }}
12
+ {%- endif %}
13
+ {%- if do_vision_count %}
14
+ {%- set image_count.value = image_count.value + 1 %}
15
+ {%- endif %}
16
+ {%- if add_vision_id %}
17
+ {{- 'Picture ' ~ image_count.value ~ ': ' }}
18
+ {%- endif %}
19
+ {{- '<|vision_start|><|image_pad|><|vision_end|>' }}
20
+ {%- elif 'video' in item or item.type == 'video' %}
21
+ {%- if is_system_content %}
22
+ {{- raise_exception('System message cannot contain videos.') }}
23
+ {%- endif %}
24
+ {%- if do_vision_count %}
25
+ {%- set video_count.value = video_count.value + 1 %}
26
+ {%- endif %}
27
+ {%- if add_vision_id %}
28
+ {{- 'Video ' ~ video_count.value ~ ': ' }}
29
+ {%- endif %}
30
+ {{- '<|vision_start|><|video_pad|><|vision_end|>' }}
31
+ {%- elif 'text' in item %}
32
+ {{- item.text }}
33
+ {%- else %}
34
+ {{- raise_exception('Unexpected item type in content.') }}
35
+ {%- endif %}
36
+ {%- endfor %}
37
+ {%- elif content is none or content is undefined %}
38
+ {{- '' }}
39
+ {%- else %}
40
+ {{- raise_exception('Unexpected content type.') }}
41
+ {%- endif %}
42
+ {%- endmacro %}
43
+ {%- if not messages %}
44
+ {{- raise_exception('No messages provided.') }}
45
+ {%- endif %}
46
+ {%- if tools and tools is iterable and tools is not mapping %}
47
+ {{- '<|im_start|>system\n' }}
48
+ {{- "# Tools\n\nYou have access to the following functions:\n\n<tools>" }}
49
+ {%- for tool in tools %}
50
+ {{- "\n" }}
51
+ {{- tool | tojson }}
52
+ {%- endfor %}
53
+ {{- "\n</tools>" }}
54
+ {{- '\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>' }}
55
+ {%- if messages[0].role == 'system' %}
56
+ {%- set content = render_content(messages[0].content, false, true)|trim %}
57
+ {%- if content %}
58
+ {{- '\n\n' + content }}
59
+ {%- endif %}
60
+ {%- endif %}
61
+ {{- '\n\n' + qwythos_identity }}
62
+ {{- '<|im_end|>\n' }}
63
+ {%- else %}
64
+ {{- '<|im_start|>system\n' }}
65
+ {%- if messages[0].role == 'system' %}
66
+ {%- set content = render_content(messages[0].content, false, true)|trim %}
67
+ {%- if content %}
68
+ {{- content + '\n\n' }}
69
+ {%- endif %}
70
+ {%- endif %}
71
+ {{- qwythos_identity }}
72
+ {{- '<|im_end|>\n' }}
73
+ {%- endif %}
74
+ {%- set ns = namespace(multi_step_tool=true, last_query_index=messages|length - 1) %}
75
+ {%- for message in messages[::-1] %}
76
+ {%- set index = (messages|length - 1) - loop.index0 %}
77
+ {%- if ns.multi_step_tool and message.role == "user" %}
78
+ {%- set content = render_content(message.content, false)|trim %}
79
+ {%- if not(content.startswith('<tool_response>') and content.endswith('</tool_response>')) %}
80
+ {%- set ns.multi_step_tool = false %}
81
+ {%- set ns.last_query_index = index %}
82
+ {%- endif %}
83
+ {%- endif %}
84
+ {%- endfor %}
85
+ {%- if ns.multi_step_tool %}
86
+ {{- raise_exception('No user query found in messages.') }}
87
+ {%- endif %}
88
+ {%- for message in messages %}
89
+ {%- set content = render_content(message.content, true)|trim %}
90
+ {%- if message.role == "system" %}
91
+ {%- if not loop.first %}
92
+ {{- raise_exception('System message must be at the beginning.') }}
93
+ {%- endif %}
94
+ {%- elif message.role == "user" %}
95
+ {{- '<|im_start|>' + message.role + '\n' + content + '<|im_end|>' + '\n' }}
96
+ {%- elif message.role == "assistant" %}
97
+ {%- set reasoning_content = '' %}
98
+ {%- if message.reasoning_content is string %}
99
+ {%- set reasoning_content = message.reasoning_content %}
100
+ {%- else %}
101
+ {%- if '</think>' in content %}
102
+ {%- set reasoning_content = content.split('</think>')[0].rstrip('\n').split('<think>')[-1].lstrip('\n') %}
103
+ {%- set content = content.split('</think>')[-1].lstrip('\n') %}
104
+ {%- endif %}
105
+ {%- endif %}
106
+ {%- set reasoning_content = reasoning_content|trim %}
107
+ {%- if reasoning_content %}
108
+ {{- '<|im_start|>' + message.role + '\n<think>\n' + reasoning_content + '\n</think>\n\n' + content }}
109
+ {%- else %}
110
+ {{- '<|im_start|>' + message.role + '\n' + content }}
111
+ {%- endif %}
112
+ {%- if message.tool_calls and message.tool_calls is iterable and message.tool_calls is not mapping %}
113
+ {%- for tool_call in message.tool_calls %}
114
+ {%- if tool_call.function is defined %}
115
+ {%- set tool_call = tool_call.function %}
116
+ {%- endif %}
117
+ {%- if loop.first %}
118
+ {%- if content|trim %}
119
+ {{- '\n\n<tool_call>\n<function=' + tool_call.name + '>\n' }}
120
+ {%- else %}
121
+ {{- '<tool_call>\n<function=' + tool_call.name + '>\n' }}
122
+ {%- endif %}
123
+ {%- else %}
124
+ {{- '\n<tool_call>\n<function=' + tool_call.name + '>\n' }}
125
+ {%- endif %}
126
+ {%- if tool_call.arguments is defined %}
127
+ {%- for args_name, args_value in tool_call.arguments|items %}
128
+ {{- '<parameter=' + args_name + '>\n' }}
129
+ {%- set args_value = args_value | string if args_value is string else args_value | tojson | safe %}
130
+ {{- args_value }}
131
+ {{- '\n</parameter>\n' }}
132
+ {%- endfor %}
133
+ {%- endif %}
134
+ {{- '</function>\n</tool_call>' }}
135
+ {%- endfor %}
136
+ {%- endif %}
137
+ {{- '<|im_end|>\n' }}
138
+ {%- elif message.role == "tool" %}
139
+ {%- if loop.previtem and loop.previtem.role != "tool" %}
140
+ {{- '<|im_start|>user' }}
141
+ {%- endif %}
142
+ {{- '\n<tool_response>\n' }}
143
+ {{- content }}
144
+ {{- '\n</tool_response>' }}
145
+ {%- if not loop.last and loop.nextitem.role != "tool" %}
146
+ {{- '<|im_end|>\n' }}
147
+ {%- elif loop.last %}
148
+ {{- '<|im_end|>\n' }}
149
+ {%- endif %}
150
+ {%- else %}
151
+ {{- raise_exception('Unexpected message role.') }}
152
+ {%- endif %}
153
+ {%- endfor %}
154
+ {%- if add_generation_prompt %}
155
+ {{- '<|im_start|>assistant\n' }}
156
+ {%- if enable_thinking is defined and enable_thinking is false %}
157
+ {{- '<think>\n\n</think>\n\n' }}
158
+ {%- else %}
159
+ {{- '<think>\n' }}
160
+ {%- endif %}
161
+ {%- endif %}
config.json ADDED
@@ -0,0 +1,113 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architectures": [
3
+ "Qwen3_5ForConditionalGeneration"
4
+ ],
5
+ "dtype": "bfloat16",
6
+ "eos_token_id": 248046,
7
+ "image_token_id": 248056,
8
+ "model_type": "qwen3_5",
9
+ "pad_token_id": 248044,
10
+ "text_config": {
11
+ "attention_bias": false,
12
+ "attention_dropout": 0.0,
13
+ "attn_output_gate": true,
14
+ "bos_token_id": null,
15
+ "dtype": "bfloat16",
16
+ "eos_token_id": 248044,
17
+ "full_attention_interval": 4,
18
+ "head_dim": 256,
19
+ "hidden_act": "silu",
20
+ "hidden_size": 4096,
21
+ "initializer_range": 0.02,
22
+ "intermediate_size": 12288,
23
+ "layer_types": [
24
+ "linear_attention",
25
+ "linear_attention",
26
+ "linear_attention",
27
+ "full_attention",
28
+ "linear_attention",
29
+ "linear_attention",
30
+ "linear_attention",
31
+ "full_attention",
32
+ "linear_attention",
33
+ "linear_attention",
34
+ "linear_attention",
35
+ "full_attention",
36
+ "linear_attention",
37
+ "linear_attention",
38
+ "linear_attention",
39
+ "full_attention",
40
+ "linear_attention",
41
+ "linear_attention",
42
+ "linear_attention",
43
+ "full_attention",
44
+ "linear_attention",
45
+ "linear_attention",
46
+ "linear_attention",
47
+ "full_attention",
48
+ "linear_attention",
49
+ "linear_attention",
50
+ "linear_attention",
51
+ "full_attention",
52
+ "linear_attention",
53
+ "linear_attention",
54
+ "linear_attention",
55
+ "full_attention"
56
+ ],
57
+ "linear_conv_kernel_dim": 4,
58
+ "linear_key_head_dim": 128,
59
+ "linear_num_key_heads": 16,
60
+ "linear_num_value_heads": 32,
61
+ "linear_value_head_dim": 128,
62
+ "mamba_ssm_dtype": "float32",
63
+ "max_position_embeddings": 1048576,
64
+ "mlp_only_layers": [],
65
+ "model_type": "qwen3_5_text",
66
+ "mtp_num_hidden_layers": 1,
67
+ "mtp_use_dedicated_embeddings": false,
68
+ "num_attention_heads": 16,
69
+ "num_hidden_layers": 32,
70
+ "num_key_value_heads": 4,
71
+ "pad_token_id": null,
72
+ "partial_rotary_factor": 0.25,
73
+ "rms_norm_eps": 1e-06,
74
+ "rope_parameters": {
75
+ "rope_type": "yarn",
76
+ "factor": 4.0,
77
+ "original_max_position_embeddings": 262144,
78
+ "mrope_interleaved": true,
79
+ "mrope_section": [
80
+ 11,
81
+ 11,
82
+ 10
83
+ ],
84
+ "rope_theta": 10000000
85
+ },
86
+ "tie_word_embeddings": false,
87
+ "use_cache": true,
88
+ "vocab_size": 248320
89
+ },
90
+ "tie_word_embeddings": false,
91
+ "transformers_version": "5.12.1",
92
+ "use_cache": false,
93
+ "video_token_id": 248057,
94
+ "vision_config": {
95
+ "deepstack_visual_indexes": [],
96
+ "depth": 27,
97
+ "dtype": "bfloat16",
98
+ "hidden_act": "gelu_pytorch_tanh",
99
+ "hidden_size": 1152,
100
+ "in_channels": 3,
101
+ "initializer_range": 0.02,
102
+ "intermediate_size": 4304,
103
+ "model_type": "qwen3_5_vision",
104
+ "num_heads": 16,
105
+ "num_position_embeddings": 2304,
106
+ "out_hidden_size": 4096,
107
+ "patch_size": 16,
108
+ "spatial_merge_size": 2,
109
+ "temporal_patch_size": 2
110
+ },
111
+ "vision_end_token_id": 248054,
112
+ "vision_start_token_id": 248053
113
+ }
config.json.pre_yarn ADDED
@@ -0,0 +1,112 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architectures": [
3
+ "Qwen3_5ForConditionalGeneration"
4
+ ],
5
+ "dtype": "bfloat16",
6
+ "eos_token_id": 248046,
7
+ "image_token_id": 248056,
8
+ "model_type": "qwen3_5",
9
+ "pad_token_id": 248044,
10
+ "text_config": {
11
+ "attention_bias": false,
12
+ "attention_dropout": 0.0,
13
+ "attn_output_gate": true,
14
+ "bos_token_id": null,
15
+ "dtype": "bfloat16",
16
+ "eos_token_id": 248044,
17
+ "full_attention_interval": 4,
18
+ "head_dim": 256,
19
+ "hidden_act": "silu",
20
+ "hidden_size": 4096,
21
+ "initializer_range": 0.02,
22
+ "intermediate_size": 12288,
23
+ "layer_types": [
24
+ "linear_attention",
25
+ "linear_attention",
26
+ "linear_attention",
27
+ "full_attention",
28
+ "linear_attention",
29
+ "linear_attention",
30
+ "linear_attention",
31
+ "full_attention",
32
+ "linear_attention",
33
+ "linear_attention",
34
+ "linear_attention",
35
+ "full_attention",
36
+ "linear_attention",
37
+ "linear_attention",
38
+ "linear_attention",
39
+ "full_attention",
40
+ "linear_attention",
41
+ "linear_attention",
42
+ "linear_attention",
43
+ "full_attention",
44
+ "linear_attention",
45
+ "linear_attention",
46
+ "linear_attention",
47
+ "full_attention",
48
+ "linear_attention",
49
+ "linear_attention",
50
+ "linear_attention",
51
+ "full_attention",
52
+ "linear_attention",
53
+ "linear_attention",
54
+ "linear_attention",
55
+ "full_attention"
56
+ ],
57
+ "linear_conv_kernel_dim": 4,
58
+ "linear_key_head_dim": 128,
59
+ "linear_num_key_heads": 16,
60
+ "linear_num_value_heads": 32,
61
+ "linear_value_head_dim": 128,
62
+ "mamba_ssm_dtype": "float32",
63
+ "max_position_embeddings": 262144,
64
+ "mlp_only_layers": [],
65
+ "model_type": "qwen3_5_text",
66
+ "mtp_num_hidden_layers": 1,
67
+ "mtp_use_dedicated_embeddings": false,
68
+ "num_attention_heads": 16,
69
+ "num_hidden_layers": 32,
70
+ "num_key_value_heads": 4,
71
+ "pad_token_id": null,
72
+ "partial_rotary_factor": 0.25,
73
+ "rms_norm_eps": 1e-06,
74
+ "rope_parameters": {
75
+ "mrope_interleaved": true,
76
+ "mrope_section": [
77
+ 11,
78
+ 11,
79
+ 10
80
+ ],
81
+ "partial_rotary_factor": 0.25,
82
+ "rope_theta": 10000000,
83
+ "rope_type": "default"
84
+ },
85
+ "tie_word_embeddings": false,
86
+ "use_cache": true,
87
+ "vocab_size": 248320
88
+ },
89
+ "tie_word_embeddings": false,
90
+ "transformers_version": "5.12.1",
91
+ "use_cache": false,
92
+ "video_token_id": 248057,
93
+ "vision_config": {
94
+ "deepstack_visual_indexes": [],
95
+ "depth": 27,
96
+ "dtype": "bfloat16",
97
+ "hidden_act": "gelu_pytorch_tanh",
98
+ "hidden_size": 1152,
99
+ "in_channels": 3,
100
+ "initializer_range": 0.02,
101
+ "intermediate_size": 4304,
102
+ "model_type": "qwen3_5_vision",
103
+ "num_heads": 16,
104
+ "num_position_embeddings": 2304,
105
+ "out_hidden_size": 4096,
106
+ "patch_size": 16,
107
+ "spatial_merge_size": 2,
108
+ "temporal_patch_size": 2
109
+ },
110
+ "vision_end_token_id": 248054,
111
+ "vision_start_token_id": 248053
112
+ }
generation_config.json ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_from_model_config": true,
3
+ "eos_token_id": [
4
+ 248046,
5
+ 248044
6
+ ],
7
+ "pad_token_id": 248044,
8
+ "transformers_version": "5.12.1",
9
+ "use_cache": true
10
+ }
preprocessor_config.json ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "size": {
3
+ "longest_edge": 16777216,
4
+ "shortest_edge": 65536
5
+ },
6
+ "patch_size": 16,
7
+ "temporal_patch_size": 2,
8
+ "merge_size": 2,
9
+ "image_mean": [
10
+ 0.5,
11
+ 0.5,
12
+ 0.5
13
+ ],
14
+ "image_std": [
15
+ 0.5,
16
+ 0.5,
17
+ 0.5
18
+ ],
19
+ "processor_class": "Qwen3VLProcessor",
20
+ "image_processor_type": "Qwen2VLImageProcessorFast"
21
+ }
tokenizer.json ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:639e352c0f904c1875d448ebed6f6faac005fd3eb58393b7f1fb3ff044e5ca03
3
+ size 19989510
tokenizer_config.json ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
+ "max_length": null,
15
+ "model_max_length": 262144,
16
+ "model_specific_special_tokens": {
17
+ "audio_bos_token": "<|audio_start|>",
18
+ "audio_eos_token": "<|audio_end|>",
19
+ "audio_token": "<|audio_pad|>",
20
+ "image_token": "<|image_pad|>",
21
+ "video_token": "<|video_pad|>",
22
+ "vision_bos_token": "<|vision_start|>",
23
+ "vision_eos_token": "<|vision_end|>"
24
+ },
25
+ "pad_to_multiple_of": null,
26
+ "pad_token": "<|endoftext|>",
27
+ "pad_token_type_id": 0,
28
+ "padding_side": "left",
29
+ "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+",
30
+ "split_special_tokens": false,
31
+ "tokenizer_class": "TokenizersBackend",
32
+ "unk_token": null,
33
+ "video_token": "<|video_pad|>",
34
+ "vision_bos_token": "<|vision_start|>",
35
+ "vision_eos_token": "<|vision_end|>"
36
+ }
video_preprocessor_config.json ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "size": {
3
+ "longest_edge": 25165824,
4
+ "shortest_edge": 4096
5
+ },
6
+ "patch_size": 16,
7
+ "temporal_patch_size": 2,
8
+ "merge_size": 2,
9
+ "image_mean": [
10
+ 0.5,
11
+ 0.5,
12
+ 0.5
13
+ ],
14
+ "image_std": [
15
+ 0.5,
16
+ 0.5,
17
+ 0.5
18
+ ],
19
+ "processor_class": "Qwen3VLProcessor",
20
+ "video_processor_type": "Qwen3VLVideoProcessor"
21
+ }