Image-Text-to-Text
Transformers
Safetensors
GGUF
qwen3_5
unsloth
merged
sft
distillation
reasoning
code-generation
coder
tool-use
function-calling
agent
mtp
multi-token-prediction
speculative-decoding
local-inference
edge-computing
on-device
llama.cpp
vision
multimodal
conversational
4-bit precision
Instructions to use mlx-community/Kestrel-4B-Coder-4bit with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use mlx-community/Kestrel-4B-Coder-4bit with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("image-text-to-text", model="mlx-community/Kestrel-4B-Coder-4bit") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] pipe(text=messages)# pip install -U transformers accelerate # Load model directly from transformers import AutoProcessor, AutoModelForMultimodalLM processor = AutoProcessor.from_pretrained("mlx-community/Kestrel-4B-Coder-4bit") model = AutoModelForMultimodalLM.from_pretrained("mlx-community/Kestrel-4B-Coder-4bit", device_map="auto") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] inputs = processor.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", ).to(model.device) outputs = model.generate(**inputs, max_new_tokens=256) print(processor.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use mlx-community/Kestrel-4B-Coder-4bit with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "mlx-community/Kestrel-4B-Coder-4bit" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "mlx-community/Kestrel-4B-Coder-4bit", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'Use Docker
docker model run hf.co/mlx-community/Kestrel-4B-Coder-4bit
- SGLang
How to use mlx-community/Kestrel-4B-Coder-4bit with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "mlx-community/Kestrel-4B-Coder-4bit" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "mlx-community/Kestrel-4B-Coder-4bit", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "mlx-community/Kestrel-4B-Coder-4bit" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "mlx-community/Kestrel-4B-Coder-4bit", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }' - Unsloth Desktop
- Docker Model Runner
How to use mlx-community/Kestrel-4B-Coder-4bit with Docker Model Runner:
docker model run hf.co/mlx-community/Kestrel-4B-Coder-4bit
Add files using upload-large-folder tool
Browse files- .gitattributes +1 -0
- README.md +225 -0
- added_tokens.json +35 -0
- chat_template.jinja +158 -0
- config.json +124 -0
- configuration.json +1 -0
- generation_config.json +7 -0
- merges.txt +0 -0
- model.safetensors +3 -0
- model.safetensors.index.json +0 -0
- preprocessor_config.json +21 -0
- processor_config.json +64 -0
- special_tokens_map.json +38 -0
- tokenizer.json +3 -0
- tokenizer_config.json +300 -0
- video_preprocessor_config.json +21 -0
- vocab.json +0 -0
.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,225 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
library_name: transformers
|
| 3 |
+
base_model: unsloth/Qwen3.5-4B
|
| 4 |
+
base_model_relation: finetune
|
| 5 |
+
license: apache-2.0
|
| 6 |
+
language:
|
| 7 |
+
- en
|
| 8 |
+
- zh
|
| 9 |
+
- ko
|
| 10 |
+
- ja
|
| 11 |
+
- ru
|
| 12 |
+
- es
|
| 13 |
+
pipeline_tag: image-text-to-text
|
| 14 |
+
tags:
|
| 15 |
+
- qwen3_5
|
| 16 |
+
- unsloth
|
| 17 |
+
- merged
|
| 18 |
+
- sft
|
| 19 |
+
- distillation
|
| 20 |
+
- reasoning
|
| 21 |
+
- code-generation
|
| 22 |
+
- coder
|
| 23 |
+
- tool-use
|
| 24 |
+
- function-calling
|
| 25 |
+
- agent
|
| 26 |
+
- mtp
|
| 27 |
+
- multi-token-prediction
|
| 28 |
+
- speculative-decoding
|
| 29 |
+
- local-inference
|
| 30 |
+
- edge-computing
|
| 31 |
+
- on-device
|
| 32 |
+
- gguf
|
| 33 |
+
- llama.cpp
|
| 34 |
+
- vision
|
| 35 |
+
- multimodal
|
| 36 |
+
- safetensors
|
| 37 |
+
---
|
| 38 |
+
|
| 39 |
+
# 🦅 Kestrel-4B-Coder
|
| 40 |
+
|
| 41 |
+

|
| 42 |
+
|
| 43 |
+
**Kestrel-4B-Coder** is a compact coding and agent-focused fine-tune of [Qwen3.5-4B](https://huggingface.co/Qwen/Qwen3.5-4B), prepared from [Unsloth Qwen3.5-4B](https://huggingface.co/unsloth/Qwen3.5-4B). Its focus is **useful intelligence closer to the device**: practical coding, compact thinking, and tool-assisted workflows that can run on personal hardware.
|
| 44 |
+
|
| 45 |
+
The release is available as a [merged checkpoint](https://huggingface.co/Jackrong/Kestrel-4B-Coder) and a [GGUF model with bundled MTP weights](https://huggingface.co/Jackrong/Kestrel-4B-Coder-GGUF). The coding results below use **Q8_0 GGUF**.
|
| 46 |
+
|
| 47 |
+
**Local today, broader edge deployment ahead.** The current agent results come from Apple Silicon with LM Studio. The development direction is to make capable coding agents more accessible across constrained devices, with broader hardware testing, efficient quantization, and stronger workspace reliability.
|
| 48 |
+
|
| 49 |
+
## 💡 1. The Kestrel Philosophy — Make Each Token Count
|
| 50 |
+
|
| 51 |
+
Kestrel puts practical coding first: understand the task, use the right tool, produce a useful edit, and check the result. Fine-tuned from **Qwen3.5-4B**, it brings focused coding and tool-use behavior to devices with tighter memory and compute budgets.
|
| 52 |
+
|
| 53 |
+
The working loop is simple: **Read → Reason → Call Tools → Edit → Test**. Each turn adds to the time a developer waits for a result. Compact thinking aims to reduce unnecessary generation and keep the next action clear, especially when an agent repeats this loop many times.
|
| 54 |
+
|
| 55 |
+
On an edge device, each generated token competes for memory bandwidth, compute time, and power. The design goal is a model that spends its reasoning budget on the next useful action, helping developers build responsive local assistants without relying on remote inference for every turn.
|
| 56 |
+
|
| 57 |
+
> [!IMPORTANT]
|
| 58 |
+
> **Useful code is the goal.** Brevity helps when the resulting code remains correct. Kestrel pairs compact thinking with code quality and practical tool use.
|
| 59 |
+
|
| 60 |
+
## 🧪 2. Model Preparation and Collaboration
|
| 61 |
+
|
| 62 |
+
The model was prepared by merging the coding adaptation into **unsloth/Qwen3.5-4B**. The merged release retains **MTP/NextN weights** and the inherited vision components. Its tokenizer and chat template come from the release adapter; use the included template for chat and tool interactions. The evaluations in this card cover text, code, and agent behavior.
|
| 63 |
+
|
| 64 |
+
**Built with community support.** Thank you to [Kyle Hessling · @KyleHessling1 on X](https://x.com/KyleHessling1) for collaboration, testing, feedback, and hardware support, and to [Unsloth](https://unsloth.ai/) for efficient fine-tuning tooling. See the [Unsloth framework on GitHub](https://github.com/unslothai/unsloth).
|
| 65 |
+
|
| 66 |
+
## 📚 3. Dataset and Distillation Recipe
|
| 67 |
+
|
| 68 |
+
The training corpus contains approximately **150K high-quality code and complex reasoning examples**, selected to teach a compact model how to solve programming problems and act on tool feedback.
|
| 69 |
+
|
| 70 |
+
- **Agent interaction and tool use (~40,000 examples).** Distilled from **Qwen3.8-27B**, this component covers multi-turn tool calls, environment state tracking, self-correction, and reflection on task and tool boundaries.
|
| 71 |
+
- **Dense algorithms and code generation.** Distilled from **Qwen3.8-Flash-Next** and **Qwen3.8-Max**, these examples emphasize complex algorithm implementation, rigorous syntax, edge-case handling, and refactoring.
|
| 72 |
+
- **Logical reasoning and instruction tuning.** Selected high-quality examples from the **nvidia/Nemotron** family reinforce multi-step reasoning and strict instruction following.
|
| 73 |
+
|
| 74 |
+
The quality-control pipeline applies **strict AST-based syntax validation to applicable code, deduplication and cleaning, and sandbox execution filters**. These checks support a corpus centered on executable solutions, coherent tool interactions, and efficient developer workflows.
|
| 75 |
+
|
| 76 |
+
## 📊 4. Coding Quality — HumanEval and HumanEval+
|
| 77 |
+
|
| 78 |
+
The author-run results for **Kestrel-4B-Coder**, **Qwopus3.5-9B-Coder-Flash**, and **Qwen3.5-9B** cover **164 programming tasks, five samples per task, and 820 generations per model**. Their reported configuration uses **Q8_0 GGUF**, **llama.cpp CUDA**, **MTP speculative decoding with maximum draft length 2**, **temperature 0.2**, and **top-p 0.95**.
|
| 79 |
+
|
| 80 |
+

|
| 81 |
+
|
| 82 |
+
<details>
|
| 83 |
+
<summary>Text version of the coding results</summary>
|
| 84 |
+
|
| 85 |
+
<table>
|
| 86 |
+
<thead>
|
| 87 |
+
<tr>
|
| 88 |
+
<th style="background: #f1f5f9; color: #334155;">Metric</th>
|
| 89 |
+
<th style="background: #d1fae5; color: #065f46;">Kestrel-4B-Coder</th>
|
| 90 |
+
<th style="background: #d1fae5; color: #475569;">Qwen3.5-4B</th>
|
| 91 |
+
<th style="background: #ede9fe; color: #4c1d95;">Qwopus3.5-9B-Coder-Flash</th>
|
| 92 |
+
<th style="background: #ede9fe; color: #475569;">Qwen3.5-9B</th>
|
| 93 |
+
</tr>
|
| 94 |
+
</thead>
|
| 95 |
+
<tbody>
|
| 96 |
+
<tr><td>HumanEval Pass@1</td><td style="background: #ecfdf5; color: #047857;"><strong>83.66%</strong></td><td style="background: #ecfdf5; color: #475569; font-weight: 400;">72.56%</td><td style="background: #f5f3ff; color: #6d28d9;"><strong>91.83%</strong></td><td style="background: #f5f3ff; color: #475569; font-weight: 400;">85.24%</td></tr>
|
| 97 |
+
<tr><td>HumanEval Pass@5</td><td style="background: #ecfdf5; color: #047857;"><strong>94.51%</strong></td><td style="background: #ecfdf5; color: #475569; font-weight: 400;">89.63%</td><td style="background: #f5f3ff; color: #6d28d9;"><strong>98.17%</strong></td><td style="background: #f5f3ff; color: #475569; font-weight: 400;">97.56%</td></tr>
|
| 98 |
+
<tr><td>HumanEval+ Pass@1</td><td style="background: #ecfdf5; color: #047857;"><strong>79.51%</strong></td><td style="background: #ecfdf5; color: #475569; font-weight: 400;">69.88%</td><td style="background: #f5f3ff; color: #6d28d9;"><strong>88.05%</strong></td><td style="background: #f5f3ff; color: #475569; font-weight: 400;">80.37%</td></tr>
|
| 99 |
+
<tr><td>HumanEval+ Pass@5</td><td style="background: #ecfdf5; color: #047857;"><strong>92.07%</strong></td><td style="background: #ecfdf5; color: #475569; font-weight: 400;">76.83%</td><td style="background: #f5f3ff; color: #6d28d9;"><strong>96.95%</strong></td><td style="background: #f5f3ff; color: #475569; font-weight: 400;">95.12%</td></tr>
|
| 100 |
+
<tr><td>HumanEval correct samples</td><td style="background: #ecfdf5; color: #047857;"><strong>686 / 820</strong></td><td style="background: #ecfdf5; color: #475569; font-weight: 400;">595 / 820</td><td style="background: #f5f3ff; color: #6d28d9;"><strong>753 / 820</strong></td><td style="background: #f5f3ff; color: #475569; font-weight: 400;">699 / 820</td></tr>
|
| 101 |
+
<tr><td>HumanEval+ correct samples</td><td style="background: #ecfdf5; color: #047857;"><strong>652 / 820</strong></td><td style="background: #ecfdf5; color: #475569; font-weight: 400;">573 / 820</td><td style="background: #f5f3ff; color: #6d28d9;"><strong>722 / 820</strong></td><td style="background: #f5f3ff; color: #475569; font-weight: 400;">659 / 820</td></tr>
|
| 102 |
+
</tbody>
|
| 103 |
+
</table>
|
| 104 |
+
|
| 105 |
+
</details>
|
| 106 |
+
|
| 107 |
+
Kestrel reports **83.66% HumanEval Pass@1** and **79.51% HumanEval+ Pass@1**, alongside **72.56%** and **69.88%** for Qwen3.5-4B. Its **94.51% HumanEval Pass@5** and **92.07% HumanEval+ Pass@5** extend coverage across multiple attempts. The two 9B columns provide additional context, with Qwopus3.5-9B-Coder-Flash retaining the highest reported scores in this table.
|
| 108 |
+
|
| 109 |
+
For the author-run results, Pass@1 is the reported single-attempt success estimate using five samples per task. Pass@5 summarizes whether the five attempts include a passing solution. Correct-sample counts refer to individual generations.
|
| 110 |
+
|
| 111 |
+
## ⚡ 5. Efficiency — Local Compute and the Path Ahead
|
| 112 |
+
|
| 113 |
+
The 4B footprint makes local deployment a central part of the model's purpose. The aim is to bring coding assistance and agent control to the machine where the work happens: a laptop, a personal workstation, or a smaller system with a limited resource budget.
|
| 114 |
+
|
| 115 |
+
### Current deployment foundation
|
| 116 |
+
|
| 117 |
+
- **Local inference and local tools.** The HermesAgent-20 results demonstrate a local model setup on **Apple Silicon with LM Studio**. The released GGUF also provides a path to compatible llama.cpp deployments, letting the model participate in coding and tool loops close to the user's workspace.
|
| 118 |
+
- **An adjustable memory budget.** Quantization, context length, and offload settings provide practical deployment controls. A **<6 GB RAM/VRAM footprint** remains a target for suitable lower-bit configurations and modest contexts, rather than a measured peak-memory result. The currently available Q8_0 release does not establish that total-memory target; weights, context/KV cache, runtime buffers, and any projector all contribute to usage.
|
| 119 |
+
- **Bundled MTP.** A compatible backend can use the retained MTP head for speculative drafting. The coding evaluation uses a maximum draft length of **2**. Throughput benefits depend on the device, workload, acceptance rate, and runtime; this card does not yet report a measured 4B speedup.
|
| 120 |
+
|
| 121 |
+
### Development direction
|
| 122 |
+
|
| 123 |
+
Future development is aimed at extending this local foundation into more dependable edge agents:
|
| 124 |
+
|
| 125 |
+
1. **Broader device measurements.** Evaluate peak memory, first-token latency, sustained generation speed, and power use across more local hardware, with explicit model, quantization, and context settings.
|
| 126 |
+
2. **Efficient deployment choices.** Explore lower-bit releases and device-specific MTP settings while checking that coding and tool-use quality remain useful.
|
| 127 |
+
3. **Stronger workspace execution.** Improve stored procedures, file coordination, and recovery in multi-step tasks, guided by the capability gaps in HermesAgent-20.
|
| 128 |
+
|
| 129 |
+
These are development priorities. The current evidence covers the reported coding evaluations and Apple Silicon agent runs; broader device coverage, energy efficiency, and future quantizations remain work to validate.
|
| 130 |
+
|
| 131 |
+
## 🍎 6. Practical Agent Evaluation — HermesAgent-20
|
| 132 |
+
|
| 133 |
+
[**BenchLocal**](https://github.com/stevibe/BenchLocal) provides the **HermesAgent-20** suite for evaluating practical agent workflows. The reported local environment is an **Apple Silicon Mac with LM Studio**.
|
| 134 |
+
|
| 135 |
+
The overall composite score is **70 for Kestrel-4B-Coder**, compared with **63 for Qwen3.5-4B**. The supplied baseline screenshot identifies its model as `qwen3.5-4b-mlx via LM Studio` and shows one run with **20 / 20 result records**.
|
| 136 |
+
|
| 137 |
+

|
| 138 |
+
|
| 139 |
+
The breakdown shows higher reported **Memory & Recall** and **Delegation, Recovery & Boundaries** scores for Kestrel, with equal **Scheduling & Delivery** scores. Qwen scores higher on **Skills & Procedural Memory** and **Workspace Orchestration**, which provide clear targets for future development.
|
| 140 |
+
|
| 141 |
+

|
| 142 |
+
|
| 143 |
+
<details>
|
| 144 |
+
<summary>Text version of the HermesAgent-20 comparison</summary>
|
| 145 |
+
|
| 146 |
+
| Overall / capability | Qwen3.5-4B | Kestrel-4B-Coder |
|
| 147 |
+
| :--- | :---: | :---: |
|
| 148 |
+
| **HermesAgent-20 overall** | **63** | **70** |
|
| 149 |
+
| Memory & Recall | 63 | **88** |
|
| 150 |
+
| Delegation, Recovery & Boundaries | 21 | **76** |
|
| 151 |
+
| Scheduling & Delivery | 75 | **75** |
|
| 152 |
+
| Skills & Procedural Memory | 88 | **68** |
|
| 153 |
+
| Workspace Orchestration | 70 | **45** |
|
| 154 |
+
|
| 155 |
+
</details>
|
| 156 |
+
|
| 157 |
+
These are **BenchLocal composite scores, not pass rates**. The overall score is reported separately from the five selected dimensions. The baseline screenshot's 20 / 20 label counts completed result records, rather than successful scenarios. The baseline uses MLX; the exact Kestrel backend and quantization, matched run settings, and independent execution-verifier results are not documented in the supplied summary. Treat this as an observational local comparison, rather than a controlled measurement of the fine-tuning effect.
|
| 158 |
+
|
| 159 |
+
Thank you to [**Steven Lei (`stevenlei`)**](https://github.com/stevenlei) for creating [BenchLocal](https://github.com/stevibe/BenchLocal).
|
| 160 |
+
|
| 161 |
+
## 🚀 7. Getting Started
|
| 162 |
+
|
| 163 |
+
Install the [Hugging Face CLI](https://huggingface.co/docs/huggingface_hub/guides/cli), then download the Q8_0 model. For a private repository, first authenticate with an account that has access using `hf auth login`.
|
| 164 |
+
|
| 165 |
+
```bash
|
| 166 |
+
python -m pip install -U huggingface_hub
|
| 167 |
+
|
| 168 |
+
hf download Jackrong/Kestrel-4B-Coder-GGUF \
|
| 169 |
+
Kestrel-4B-Coder-MTP-Q8_0.gguf \
|
| 170 |
+
--local-dir ./Kestrel-4B-Coder-GGUF
|
| 171 |
+
```
|
| 172 |
+
|
| 173 |
+
Use a recent [llama.cpp build](https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md) with Qwen3.5 and **draft-MTP** support. This starts a local OpenAI-compatible server with the coding sampling settings and a maximum draft length of two:
|
| 174 |
+
|
| 175 |
+
```bash
|
| 176 |
+
llama-server \
|
| 177 |
+
--model ./Kestrel-4B-Coder-GGUF/Kestrel-4B-Coder-MTP-Q8_0.gguf \
|
| 178 |
+
--alias Kestrel-4B-Coder \
|
| 179 |
+
--spec-type draft-mtp \
|
| 180 |
+
--spec-draft-n-max 2 \
|
| 181 |
+
--ctx-size 8192 \
|
| 182 |
+
--n-gpu-layers 99 \
|
| 183 |
+
--jinja \
|
| 184 |
+
--reasoning on \
|
| 185 |
+
--temp 0.2 \
|
| 186 |
+
--top-p 0.95 \
|
| 187 |
+
--host 127.0.0.1 \
|
| 188 |
+
--port 8080
|
| 189 |
+
```
|
| 190 |
+
|
| 191 |
+
The **8,192-token context is a starting example**, not a benchmark-reproduction setting. Adjust context and GPU offload to your device. CUDA requires a CUDA-enabled build; Apple Silicon uses a compatible Metal build. Keep the included chat template and pass sampling settings explicitly when calling the server. Use thinking enabled for the reported coding setup. MTP requires both the bundled weights and backend support; check the server startup log to confirm it is active.
|
| 192 |
+
|
| 193 |
+
For image input, also download the repository's exact projector filename and add `--mmproj ./Kestrel-4B-Coder-GGUF/mmproj-F16.gguf` to a compatible multimodal server:
|
| 194 |
+
|
| 195 |
+
```bash
|
| 196 |
+
hf download Jackrong/Kestrel-4B-Coder-GGUF \
|
| 197 |
+
mmproj-F16.gguf \
|
| 198 |
+
--local-dir ./Kestrel-4B-Coder-GGUF
|
| 199 |
+
```
|
| 200 |
+
|
| 201 |
+
The projector is optional for text-only coding. Vision quality is not evaluated in this card. For local agent use through LM Studio, select the model in the application and configure your agent to use its local server; MTP availability depends on the selected runtime.
|
| 202 |
+
|
| 203 |
+
## 🧭 8. Intended Use and Limitations
|
| 204 |
+
|
| 205 |
+
Intended uses include coding assistance on personal devices, local debugging, small refactors, tool-assisted development, and compact agent experiments. The longer-term direction is practical edge agents that work within explicit memory and compute budgets. Review generated changes and run tests before relying on them.
|
| 206 |
+
|
| 207 |
+
HumanEval measures bounded programming tasks and does not establish repository-scale software engineering ability. HermesAgent-20 points to weaker workspace orchestration and procedural-memory scores relative to the baseline. Difficult multi-file tasks, long interaction histories, and ambiguous tool feedback can still lead to mistakes or unsuccessful actions.
|
| 208 |
+
|
| 209 |
+
The reported results apply to their stated settings and scoring policies. They do not establish universal coding accuracy, long-context reliability, vision quality, or safe autonomous operation. Wider edge-device compatibility, sub-6 GB peak memory, and energy savings require device-specific validation. Quantization and runtime choices can affect behavior; the 4B results should not be extrapolated from the 9B model's measured reasoning savings.
|
| 210 |
+
|
| 211 |
+
## 🙏 9. Acknowledgements and Citation
|
| 212 |
+
|
| 213 |
+
Thanks to the [Qwen team](https://huggingface.co/Qwen/Qwen3.5-4B) for the foundation model; [Unsloth](https://unsloth.ai/) and its [open-source framework](https://github.com/unslothai/unsloth) for fine-tuning tools; [Kyle Hessling](https://x.com/KyleHessling1) for collaboration and support on Kestrel; and [NVIDIA](https://huggingface.co/nvidia) for the Nemotron data ecosystem. We also thank [EvalPlus](https://github.com/evalplus/evalplus), [llama.cpp](https://github.com/ggml-org/llama.cpp), [LM Studio](https://lmstudio.ai/), and [BenchLocal](https://github.com/stevibe/BenchLocal).
|
| 214 |
+
|
| 215 |
+
**Base-model license:** Apache-2.0. See the release repository's license and provenance information for the distributed artifacts.
|
| 216 |
+
|
| 217 |
+
```bibtex
|
| 218 |
+
@misc{jackrong2026kestrel4bcoder,
|
| 219 |
+
title = {Kestrel-4B-Coder},
|
| 220 |
+
author = {Jackrong},
|
| 221 |
+
year = {2026},
|
| 222 |
+
howpublished = {Hugging Face},
|
| 223 |
+
url = {https://huggingface.co/Jackrong/Kestrel-4B-Coder}
|
| 224 |
+
}
|
| 225 |
+
```
|
added_tokens.json
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"</think>": 248069,
|
| 3 |
+
"</tool_call>": 248059,
|
| 4 |
+
"</tool_response>": 248067,
|
| 5 |
+
"<think>": 248068,
|
| 6 |
+
"<tool_call>": 248058,
|
| 7 |
+
"<tool_response>": 248066,
|
| 8 |
+
"<tts_pad>": 248072,
|
| 9 |
+
"<tts_text_bos>": 248073,
|
| 10 |
+
"<tts_text_bos_single>": 248075,
|
| 11 |
+
"<tts_text_eod>": 248074,
|
| 12 |
+
"<|audio_end|>": 248071,
|
| 13 |
+
"<|audio_pad|>": 248076,
|
| 14 |
+
"<|audio_start|>": 248070,
|
| 15 |
+
"<|box_end|>": 248050,
|
| 16 |
+
"<|box_start|>": 248049,
|
| 17 |
+
"<|endoftext|>": 248044,
|
| 18 |
+
"<|file_sep|>": 248065,
|
| 19 |
+
"<|fim_middle|>": 248061,
|
| 20 |
+
"<|fim_pad|>": 248063,
|
| 21 |
+
"<|fim_prefix|>": 248060,
|
| 22 |
+
"<|fim_suffix|>": 248062,
|
| 23 |
+
"<|im_end|>": 248046,
|
| 24 |
+
"<|im_start|>": 248045,
|
| 25 |
+
"<|image_pad|>": 248056,
|
| 26 |
+
"<|object_ref_end|>": 248048,
|
| 27 |
+
"<|object_ref_start|>": 248047,
|
| 28 |
+
"<|quad_end|>": 248052,
|
| 29 |
+
"<|quad_start|>": 248051,
|
| 30 |
+
"<|repo_name|>": 248064,
|
| 31 |
+
"<|video_pad|>": 248057,
|
| 32 |
+
"<|vision_end|>": 248054,
|
| 33 |
+
"<|vision_pad|>": 248055,
|
| 34 |
+
"<|vision_start|>": 248053
|
| 35 |
+
}
|
chat_template.jinja
ADDED
|
@@ -0,0 +1,158 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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 num_sys = 0 %}
|
| 46 |
+
{%- set merged_system = '' %}
|
| 47 |
+
{%- if messages[0].role == 'system' or messages[0].role == 'developer' %}
|
| 48 |
+
{%- set first = render_content(messages[0].content, false, true)|trim %}
|
| 49 |
+
{%- if messages|length > 1 and (messages[1].role == 'system' or messages[1].role == 'developer') %}
|
| 50 |
+
{%- set second = render_content(messages[1].content, false, true)|trim %}
|
| 51 |
+
{%- set merged_system = first + '\n' + second %}
|
| 52 |
+
{%- set num_sys = 2 %}
|
| 53 |
+
{%- else %}
|
| 54 |
+
{%- set merged_system = first %}
|
| 55 |
+
{%- set num_sys = 1 %}
|
| 56 |
+
{%- endif %}
|
| 57 |
+
{%- endif %}
|
| 58 |
+
{%- if tools and tools is iterable and tools is not mapping %}
|
| 59 |
+
{{- '<|im_start|>system\n' }}
|
| 60 |
+
{{- "# Tools\n\nYou have access to the following functions:\n\n<tools>" }}
|
| 61 |
+
{%- for tool in tools %}
|
| 62 |
+
{{- "\n" }}
|
| 63 |
+
{{- tool | tojson }}
|
| 64 |
+
{%- endfor %}
|
| 65 |
+
{{- "\n</tools>" }}
|
| 66 |
+
{{- '\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>' }}
|
| 67 |
+
{%- if merged_system %}
|
| 68 |
+
{{- '\n\n' + merged_system }}
|
| 69 |
+
{%- endif %}
|
| 70 |
+
{{- '<|im_end|>\n' }}
|
| 71 |
+
{%- else %}
|
| 72 |
+
{%- if merged_system %}
|
| 73 |
+
{{- '<|im_start|>system\n' + merged_system + '<|im_end|>\n' }}
|
| 74 |
+
{%- endif %}
|
| 75 |
+
{%- endif %}
|
| 76 |
+
{%- set ns = namespace(multi_step_tool=true, last_query_index=messages|length - 1) %}
|
| 77 |
+
{%- for message in messages[::-1] %}
|
| 78 |
+
{%- set index = (messages|length - 1) - loop.index0 %}
|
| 79 |
+
{%- if ns.multi_step_tool and message.role == "user" %}
|
| 80 |
+
{%- set content = render_content(message.content, false)|trim %}
|
| 81 |
+
{%- if not(content.startswith('<tool_response>') and content.endswith('</tool_response>')) %}
|
| 82 |
+
{%- set ns.multi_step_tool = false %}
|
| 83 |
+
{%- set ns.last_query_index = index %}
|
| 84 |
+
{%- endif %}
|
| 85 |
+
{%- endif %}
|
| 86 |
+
{%- endfor %}
|
| 87 |
+
{%- for message in messages %}
|
| 88 |
+
{%- if loop.index0 >= num_sys and message.role != "system" and message.role != "developer" %}
|
| 89 |
+
{%- set content = render_content(message.content, true)|trim %}
|
| 90 |
+
{%- if message.role == "user" %}
|
| 91 |
+
{{- '<|im_start|>' + message.role + '\n' + content + '<|im_end|>' + '\n' }}
|
| 92 |
+
{%- elif message.role == "assistant" %}
|
| 93 |
+
{%- set reasoning_content = '' %}
|
| 94 |
+
{%- if message.reasoning_content is string %}
|
| 95 |
+
{%- set reasoning_content = message.reasoning_content %}
|
| 96 |
+
{%- else %}
|
| 97 |
+
{%- if '</think>' in content %}
|
| 98 |
+
{%- set reasoning_content = content.split('</think>')[0].rstrip('\n').split('<think>')[-1].lstrip('\n') %}
|
| 99 |
+
{%- set content = content.split('</think>')[-1].lstrip('\n') %}
|
| 100 |
+
{%- endif %}
|
| 101 |
+
{%- endif %}
|
| 102 |
+
{%- set reasoning_content = reasoning_content|trim %}
|
| 103 |
+
{%- if loop.index0 > ns.last_query_index %}
|
| 104 |
+
{{- '<|im_start|>' + message.role + '\n<think>\n' + reasoning_content + '\n</think>\n\n' + content }}
|
| 105 |
+
{%- else %}
|
| 106 |
+
{{- '<|im_start|>' + message.role + '\n' + content }}
|
| 107 |
+
{%- endif %}
|
| 108 |
+
{%- if message.tool_calls and message.tool_calls is iterable and message.tool_calls is not mapping %}
|
| 109 |
+
{%- for tool_call in message.tool_calls %}
|
| 110 |
+
{%- if tool_call.function is defined %}
|
| 111 |
+
{%- set tool_call = tool_call.function %}
|
| 112 |
+
{%- endif %}
|
| 113 |
+
{%- if loop.first %}
|
| 114 |
+
{%- if content|trim %}
|
| 115 |
+
{{- '\n\n<tool_call>\n<function=' + tool_call.name + '>\n' }}
|
| 116 |
+
{%- else %}
|
| 117 |
+
{{- '<tool_call>\n<function=' + tool_call.name + '>\n' }}
|
| 118 |
+
{%- endif %}
|
| 119 |
+
{%- else %}
|
| 120 |
+
{{- '\n<tool_call>\n<function=' + tool_call.name + '>\n' }}
|
| 121 |
+
{%- endif %}
|
| 122 |
+
{%- if tool_call.arguments is mapping %}
|
| 123 |
+
{%- for args_name in tool_call.arguments %}
|
| 124 |
+
{%- set args_value = tool_call.arguments[args_name] %}
|
| 125 |
+
{{- '<parameter=' + args_name + '>\n' }}
|
| 126 |
+
{%- 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 %}
|
| 127 |
+
{{- args_value }}
|
| 128 |
+
{{- '\n</parameter>\n' }}
|
| 129 |
+
{%- endfor %}
|
| 130 |
+
{%- endif %}
|
| 131 |
+
{{- '</function>\n</tool_call>' }}
|
| 132 |
+
{%- endfor %}
|
| 133 |
+
{%- endif %}
|
| 134 |
+
{{- '<|im_end|>\n' }}
|
| 135 |
+
{%- elif message.role == "tool" %}
|
| 136 |
+
{%- if loop.previtem and loop.previtem.role != "tool" %}
|
| 137 |
+
{{- '<|im_start|>user' }}
|
| 138 |
+
{%- endif %}
|
| 139 |
+
{{- '\n<tool_response>\n' }}
|
| 140 |
+
{{- content }}
|
| 141 |
+
{{- '\n</tool_response>' }}
|
| 142 |
+
{%- if not loop.last and loop.nextitem.role != "tool" %}
|
| 143 |
+
{{- '<|im_end|>\n' }}
|
| 144 |
+
{%- elif loop.last %}
|
| 145 |
+
{{- '<|im_end|>\n' }}
|
| 146 |
+
{%- endif %}
|
| 147 |
+
{%- endif %}
|
| 148 |
+
{%- endif %}
|
| 149 |
+
{%- endfor %}
|
| 150 |
+
{%- if add_generation_prompt %}
|
| 151 |
+
{{- '<|im_start|>assistant\n' }}
|
| 152 |
+
{%- if enable_thinking is defined and enable_thinking is false %}
|
| 153 |
+
{{- '<think>\n\n</think>\n\n' }}
|
| 154 |
+
{%- else %}
|
| 155 |
+
{{- '<think>\n' }}
|
| 156 |
+
{%- endif %}
|
| 157 |
+
{%- endif %}
|
| 158 |
+
{#- Unsloth fixes - developer role, tool calling #}
|
config.json
ADDED
|
@@ -0,0 +1,124 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"architectures": [
|
| 3 |
+
"Qwen3_5ForConditionalGeneration"
|
| 4 |
+
],
|
| 5 |
+
"eos_token_id": 248044,
|
| 6 |
+
"image_token_id": 248056,
|
| 7 |
+
"model_name": "unsloth/Qwen3.5-4B",
|
| 8 |
+
"model_type": "qwen3_5",
|
| 9 |
+
"mtp_num_hidden_layers": 1,
|
| 10 |
+
"num_nextn_predict_layers": 1,
|
| 11 |
+
"pad_token_id": 248055,
|
| 12 |
+
"quantization": {
|
| 13 |
+
"group_size": 64,
|
| 14 |
+
"bits": 4,
|
| 15 |
+
"mode": "affine"
|
| 16 |
+
},
|
| 17 |
+
"quantization_config": {
|
| 18 |
+
"group_size": 64,
|
| 19 |
+
"bits": 4,
|
| 20 |
+
"mode": "affine"
|
| 21 |
+
},
|
| 22 |
+
"text_config": {
|
| 23 |
+
"attention_bias": false,
|
| 24 |
+
"attention_dropout": 0.0,
|
| 25 |
+
"attn_output_gate": true,
|
| 26 |
+
"bos_token_id": null,
|
| 27 |
+
"torch_dtype": "bfloat16",
|
| 28 |
+
"eos_token_id": 248044,
|
| 29 |
+
"full_attention_interval": 4,
|
| 30 |
+
"head_dim": 256,
|
| 31 |
+
"hidden_act": "silu",
|
| 32 |
+
"hidden_size": 2560,
|
| 33 |
+
"initializer_range": 0.02,
|
| 34 |
+
"intermediate_size": 9216,
|
| 35 |
+
"layer_types": [
|
| 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 |
+
"linear_attention",
|
| 57 |
+
"linear_attention",
|
| 58 |
+
"linear_attention",
|
| 59 |
+
"full_attention",
|
| 60 |
+
"linear_attention",
|
| 61 |
+
"linear_attention",
|
| 62 |
+
"linear_attention",
|
| 63 |
+
"full_attention",
|
| 64 |
+
"linear_attention",
|
| 65 |
+
"linear_attention",
|
| 66 |
+
"linear_attention",
|
| 67 |
+
"full_attention"
|
| 68 |
+
],
|
| 69 |
+
"linear_conv_kernel_dim": 4,
|
| 70 |
+
"linear_key_head_dim": 128,
|
| 71 |
+
"linear_num_key_heads": 16,
|
| 72 |
+
"linear_num_value_heads": 32,
|
| 73 |
+
"linear_value_head_dim": 128,
|
| 74 |
+
"mamba_ssm_dtype": "float32",
|
| 75 |
+
"max_position_embeddings": 262144,
|
| 76 |
+
"mlp_only_layers": [],
|
| 77 |
+
"model_type": "qwen3_5_text",
|
| 78 |
+
"mtp_num_hidden_layers": 1,
|
| 79 |
+
"mtp_use_dedicated_embeddings": false,
|
| 80 |
+
"num_attention_heads": 16,
|
| 81 |
+
"num_hidden_layers": 32,
|
| 82 |
+
"num_key_value_heads": 4,
|
| 83 |
+
"pad_token_id": null,
|
| 84 |
+
"partial_rotary_factor": 0.25,
|
| 85 |
+
"rms_norm_eps": 1e-06,
|
| 86 |
+
"rope_parameters": {
|
| 87 |
+
"mrope_interleaved": true,
|
| 88 |
+
"mrope_section": [
|
| 89 |
+
11,
|
| 90 |
+
11,
|
| 91 |
+
10
|
| 92 |
+
],
|
| 93 |
+
"partial_rotary_factor": 0.25,
|
| 94 |
+
"rope_theta": 10000000,
|
| 95 |
+
"rope_type": "default"
|
| 96 |
+
},
|
| 97 |
+
"tie_word_embeddings": true,
|
| 98 |
+
"use_cache": false,
|
| 99 |
+
"vocab_size": 248320
|
| 100 |
+
},
|
| 101 |
+
"tie_word_embeddings": true,
|
| 102 |
+
"unsloth_fixed_mtp": true,
|
| 103 |
+
"unsloth_version": "2026.8.19",
|
| 104 |
+
"video_token_id": 248057,
|
| 105 |
+
"vision_config": {
|
| 106 |
+
"deepstack_visual_indexes": [],
|
| 107 |
+
"depth": 24,
|
| 108 |
+
"torch_dtype": "bfloat16",
|
| 109 |
+
"hidden_act": "gelu_pytorch_tanh",
|
| 110 |
+
"hidden_size": 1024,
|
| 111 |
+
"in_channels": 3,
|
| 112 |
+
"initializer_range": 0.02,
|
| 113 |
+
"intermediate_size": 4096,
|
| 114 |
+
"model_type": "qwen3_5",
|
| 115 |
+
"num_heads": 16,
|
| 116 |
+
"num_position_embeddings": 2304,
|
| 117 |
+
"out_hidden_size": 2560,
|
| 118 |
+
"patch_size": 16,
|
| 119 |
+
"spatial_merge_size": 2,
|
| 120 |
+
"temporal_patch_size": 2
|
| 121 |
+
},
|
| 122 |
+
"vision_end_token_id": 248054,
|
| 123 |
+
"vision_start_token_id": 248053
|
| 124 |
+
}
|
configuration.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"framework":"Pytorch","task":"visual-question-answering"}
|
generation_config.json
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"_from_model_config": true,
|
| 3 |
+
"eos_token_id": 248044,
|
| 4 |
+
"pad_token_id": 248055,
|
| 5 |
+
"transformers_version": "5.5.0",
|
| 6 |
+
"use_cache": true
|
| 7 |
+
}
|
merges.txt
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
model.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:7cbfbf9af802e037895f93365058410642d19de9790bcbd3ed31f8be88abcb22
|
| 3 |
+
size 3034301037
|
model.safetensors.index.json
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
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 |
+
}
|
processor_config.json
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"image_processor": {
|
| 3 |
+
"data_format": "channels_first",
|
| 4 |
+
"do_convert_rgb": true,
|
| 5 |
+
"do_normalize": true,
|
| 6 |
+
"do_rescale": true,
|
| 7 |
+
"do_resize": true,
|
| 8 |
+
"image_mean": [
|
| 9 |
+
0.5,
|
| 10 |
+
0.5,
|
| 11 |
+
0.5
|
| 12 |
+
],
|
| 13 |
+
"image_processor_type": "Qwen2VLImageProcessor",
|
| 14 |
+
"image_std": [
|
| 15 |
+
0.5,
|
| 16 |
+
0.5,
|
| 17 |
+
0.5
|
| 18 |
+
],
|
| 19 |
+
"merge_size": 2,
|
| 20 |
+
"patch_size": 16,
|
| 21 |
+
"resample": 3,
|
| 22 |
+
"rescale_factor": 0.00392156862745098,
|
| 23 |
+
"size": {
|
| 24 |
+
"longest_edge": 16777216,
|
| 25 |
+
"shortest_edge": 65536
|
| 26 |
+
},
|
| 27 |
+
"temporal_patch_size": 2
|
| 28 |
+
},
|
| 29 |
+
"processor_class": "Qwen3VLProcessor",
|
| 30 |
+
"video_processor": {
|
| 31 |
+
"data_format": "channels_first",
|
| 32 |
+
"default_to_square": true,
|
| 33 |
+
"do_convert_rgb": true,
|
| 34 |
+
"do_normalize": true,
|
| 35 |
+
"do_rescale": true,
|
| 36 |
+
"do_resize": true,
|
| 37 |
+
"do_sample_frames": true,
|
| 38 |
+
"fps": 2,
|
| 39 |
+
"image_mean": [
|
| 40 |
+
0.5,
|
| 41 |
+
0.5,
|
| 42 |
+
0.5
|
| 43 |
+
],
|
| 44 |
+
"image_std": [
|
| 45 |
+
0.5,
|
| 46 |
+
0.5,
|
| 47 |
+
0.5
|
| 48 |
+
],
|
| 49 |
+
"max_frames": 768,
|
| 50 |
+
"max_video_tokens": 768,
|
| 51 |
+
"merge_size": 2,
|
| 52 |
+
"min_frames": 4,
|
| 53 |
+
"patch_size": 16,
|
| 54 |
+
"resample": 3,
|
| 55 |
+
"rescale_factor": 0.00392156862745098,
|
| 56 |
+
"return_metadata": false,
|
| 57 |
+
"size": {
|
| 58 |
+
"longest_edge": 25165824,
|
| 59 |
+
"shortest_edge": 4096
|
| 60 |
+
},
|
| 61 |
+
"temporal_patch_size": 2,
|
| 62 |
+
"video_processor_type": "Qwen3VLVideoProcessor"
|
| 63 |
+
}
|
| 64 |
+
}
|
special_tokens_map.json
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"additional_special_tokens": [
|
| 3 |
+
"<|im_start|>",
|
| 4 |
+
"<|im_end|>",
|
| 5 |
+
"<|object_ref_start|>",
|
| 6 |
+
"<|object_ref_end|>",
|
| 7 |
+
"<|box_start|>",
|
| 8 |
+
"<|box_end|>",
|
| 9 |
+
"<|quad_start|>",
|
| 10 |
+
"<|quad_end|>",
|
| 11 |
+
"<|vision_start|>",
|
| 12 |
+
"<|vision_end|>",
|
| 13 |
+
"<|vision_pad|>",
|
| 14 |
+
"<|image_pad|>",
|
| 15 |
+
"<|video_pad|>"
|
| 16 |
+
],
|
| 17 |
+
"audio_bos_token": "<|audio_start|>",
|
| 18 |
+
"audio_eos_token": "<|audio_end|>",
|
| 19 |
+
"audio_token": "<|audio_pad|>",
|
| 20 |
+
"eos_token": {
|
| 21 |
+
"content": "<|im_end|>",
|
| 22 |
+
"lstrip": false,
|
| 23 |
+
"normalized": false,
|
| 24 |
+
"rstrip": false,
|
| 25 |
+
"single_word": false
|
| 26 |
+
},
|
| 27 |
+
"image_token": "<|image_pad|>",
|
| 28 |
+
"pad_token": {
|
| 29 |
+
"content": "<|vision_pad|>",
|
| 30 |
+
"lstrip": false,
|
| 31 |
+
"normalized": false,
|
| 32 |
+
"rstrip": false,
|
| 33 |
+
"single_word": false
|
| 34 |
+
},
|
| 35 |
+
"video_token": "<|video_pad|>",
|
| 36 |
+
"vision_bos_token": "<|vision_start|>",
|
| 37 |
+
"vision_eos_token": "<|vision_end|>"
|
| 38 |
+
}
|
tokenizer.json
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:06b9509352d2af50381ab2247e083b80d32d5c0aba91c272ca9ff729b6a0e523
|
| 3 |
+
size 19989325
|
tokenizer_config.json
ADDED
|
@@ -0,0 +1,300 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"add_prefix_space": false,
|
| 3 |
+
"audio_bos_token": "<|audio_start|>",
|
| 4 |
+
"audio_eos_token": "<|audio_end|>",
|
| 5 |
+
"audio_token": "<|audio_pad|>",
|
| 6 |
+
"backend": "tokenizers",
|
| 7 |
+
"bos_token": null,
|
| 8 |
+
"clean_up_tokenization_spaces": false,
|
| 9 |
+
"eos_token": "<|im_end|>",
|
| 10 |
+
"errors": "replace",
|
| 11 |
+
"image_token": "<|image_pad|>",
|
| 12 |
+
"is_local": true,
|
| 13 |
+
"local_files_only": false,
|
| 14 |
+
"model_max_length": 262144,
|
| 15 |
+
"model_specific_special_tokens": {
|
| 16 |
+
"audio_bos_token": "<|audio_start|>",
|
| 17 |
+
"audio_eos_token": "<|audio_end|>",
|
| 18 |
+
"audio_token": "<|audio_pad|>",
|
| 19 |
+
"image_token": "<|image_pad|>",
|
| 20 |
+
"video_token": "<|video_pad|>",
|
| 21 |
+
"vision_bos_token": "<|vision_start|>",
|
| 22 |
+
"vision_eos_token": "<|vision_end|>"
|
| 23 |
+
},
|
| 24 |
+
"pad_token": "<|vision_pad|>",
|
| 25 |
+
"padding_side": "right",
|
| 26 |
+
"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+",
|
| 27 |
+
"processor_class": "Qwen3VLProcessor",
|
| 28 |
+
"split_special_tokens": false,
|
| 29 |
+
"tokenizer_class": "Qwen2Tokenizer",
|
| 30 |
+
"unk_token": null,
|
| 31 |
+
"video_token": "<|video_pad|>",
|
| 32 |
+
"vision_bos_token": "<|vision_start|>",
|
| 33 |
+
"vision_eos_token": "<|vision_end|>",
|
| 34 |
+
"added_tokens_decoder": {
|
| 35 |
+
"248044": {
|
| 36 |
+
"content": "<|endoftext|>",
|
| 37 |
+
"single_word": false,
|
| 38 |
+
"lstrip": false,
|
| 39 |
+
"rstrip": false,
|
| 40 |
+
"normalized": false,
|
| 41 |
+
"special": true
|
| 42 |
+
},
|
| 43 |
+
"248045": {
|
| 44 |
+
"content": "<|im_start|>",
|
| 45 |
+
"single_word": false,
|
| 46 |
+
"lstrip": false,
|
| 47 |
+
"rstrip": false,
|
| 48 |
+
"normalized": false,
|
| 49 |
+
"special": true
|
| 50 |
+
},
|
| 51 |
+
"248046": {
|
| 52 |
+
"content": "<|im_end|>",
|
| 53 |
+
"single_word": false,
|
| 54 |
+
"lstrip": false,
|
| 55 |
+
"rstrip": false,
|
| 56 |
+
"normalized": false,
|
| 57 |
+
"special": true
|
| 58 |
+
},
|
| 59 |
+
"248047": {
|
| 60 |
+
"content": "<|object_ref_start|>",
|
| 61 |
+
"single_word": false,
|
| 62 |
+
"lstrip": false,
|
| 63 |
+
"rstrip": false,
|
| 64 |
+
"normalized": false,
|
| 65 |
+
"special": true
|
| 66 |
+
},
|
| 67 |
+
"248048": {
|
| 68 |
+
"content": "<|object_ref_end|>",
|
| 69 |
+
"single_word": false,
|
| 70 |
+
"lstrip": false,
|
| 71 |
+
"rstrip": false,
|
| 72 |
+
"normalized": false,
|
| 73 |
+
"special": true
|
| 74 |
+
},
|
| 75 |
+
"248049": {
|
| 76 |
+
"content": "<|box_start|>",
|
| 77 |
+
"single_word": false,
|
| 78 |
+
"lstrip": false,
|
| 79 |
+
"rstrip": false,
|
| 80 |
+
"normalized": false,
|
| 81 |
+
"special": true
|
| 82 |
+
},
|
| 83 |
+
"248050": {
|
| 84 |
+
"content": "<|box_end|>",
|
| 85 |
+
"single_word": false,
|
| 86 |
+
"lstrip": false,
|
| 87 |
+
"rstrip": false,
|
| 88 |
+
"normalized": false,
|
| 89 |
+
"special": true
|
| 90 |
+
},
|
| 91 |
+
"248051": {
|
| 92 |
+
"content": "<|quad_start|>",
|
| 93 |
+
"single_word": false,
|
| 94 |
+
"lstrip": false,
|
| 95 |
+
"rstrip": false,
|
| 96 |
+
"normalized": false,
|
| 97 |
+
"special": true
|
| 98 |
+
},
|
| 99 |
+
"248052": {
|
| 100 |
+
"content": "<|quad_end|>",
|
| 101 |
+
"single_word": false,
|
| 102 |
+
"lstrip": false,
|
| 103 |
+
"rstrip": false,
|
| 104 |
+
"normalized": false,
|
| 105 |
+
"special": true
|
| 106 |
+
},
|
| 107 |
+
"248053": {
|
| 108 |
+
"content": "<|vision_start|>",
|
| 109 |
+
"single_word": false,
|
| 110 |
+
"lstrip": false,
|
| 111 |
+
"rstrip": false,
|
| 112 |
+
"normalized": false,
|
| 113 |
+
"special": true
|
| 114 |
+
},
|
| 115 |
+
"248054": {
|
| 116 |
+
"content": "<|vision_end|>",
|
| 117 |
+
"single_word": false,
|
| 118 |
+
"lstrip": false,
|
| 119 |
+
"rstrip": false,
|
| 120 |
+
"normalized": false,
|
| 121 |
+
"special": true
|
| 122 |
+
},
|
| 123 |
+
"248055": {
|
| 124 |
+
"content": "<|vision_pad|>",
|
| 125 |
+
"single_word": false,
|
| 126 |
+
"lstrip": false,
|
| 127 |
+
"rstrip": false,
|
| 128 |
+
"normalized": false,
|
| 129 |
+
"special": true
|
| 130 |
+
},
|
| 131 |
+
"248056": {
|
| 132 |
+
"content": "<|image_pad|>",
|
| 133 |
+
"single_word": false,
|
| 134 |
+
"lstrip": false,
|
| 135 |
+
"rstrip": false,
|
| 136 |
+
"normalized": false,
|
| 137 |
+
"special": true
|
| 138 |
+
},
|
| 139 |
+
"248057": {
|
| 140 |
+
"content": "<|video_pad|>",
|
| 141 |
+
"single_word": false,
|
| 142 |
+
"lstrip": false,
|
| 143 |
+
"rstrip": false,
|
| 144 |
+
"normalized": false,
|
| 145 |
+
"special": true
|
| 146 |
+
},
|
| 147 |
+
"248058": {
|
| 148 |
+
"content": "<tool_call>",
|
| 149 |
+
"single_word": false,
|
| 150 |
+
"lstrip": false,
|
| 151 |
+
"rstrip": false,
|
| 152 |
+
"normalized": false,
|
| 153 |
+
"special": false
|
| 154 |
+
},
|
| 155 |
+
"248059": {
|
| 156 |
+
"content": "</tool_call>",
|
| 157 |
+
"single_word": false,
|
| 158 |
+
"lstrip": false,
|
| 159 |
+
"rstrip": false,
|
| 160 |
+
"normalized": false,
|
| 161 |
+
"special": false
|
| 162 |
+
},
|
| 163 |
+
"248060": {
|
| 164 |
+
"content": "<|fim_prefix|>",
|
| 165 |
+
"single_word": false,
|
| 166 |
+
"lstrip": false,
|
| 167 |
+
"rstrip": false,
|
| 168 |
+
"normalized": false,
|
| 169 |
+
"special": false
|
| 170 |
+
},
|
| 171 |
+
"248061": {
|
| 172 |
+
"content": "<|fim_middle|>",
|
| 173 |
+
"single_word": false,
|
| 174 |
+
"lstrip": false,
|
| 175 |
+
"rstrip": false,
|
| 176 |
+
"normalized": false,
|
| 177 |
+
"special": false
|
| 178 |
+
},
|
| 179 |
+
"248062": {
|
| 180 |
+
"content": "<|fim_suffix|>",
|
| 181 |
+
"single_word": false,
|
| 182 |
+
"lstrip": false,
|
| 183 |
+
"rstrip": false,
|
| 184 |
+
"normalized": false,
|
| 185 |
+
"special": false
|
| 186 |
+
},
|
| 187 |
+
"248063": {
|
| 188 |
+
"content": "<|fim_pad|>",
|
| 189 |
+
"single_word": false,
|
| 190 |
+
"lstrip": false,
|
| 191 |
+
"rstrip": false,
|
| 192 |
+
"normalized": false,
|
| 193 |
+
"special": false
|
| 194 |
+
},
|
| 195 |
+
"248064": {
|
| 196 |
+
"content": "<|repo_name|>",
|
| 197 |
+
"single_word": false,
|
| 198 |
+
"lstrip": false,
|
| 199 |
+
"rstrip": false,
|
| 200 |
+
"normalized": false,
|
| 201 |
+
"special": false
|
| 202 |
+
},
|
| 203 |
+
"248065": {
|
| 204 |
+
"content": "<|file_sep|>",
|
| 205 |
+
"single_word": false,
|
| 206 |
+
"lstrip": false,
|
| 207 |
+
"rstrip": false,
|
| 208 |
+
"normalized": false,
|
| 209 |
+
"special": false
|
| 210 |
+
},
|
| 211 |
+
"248066": {
|
| 212 |
+
"content": "<tool_response>",
|
| 213 |
+
"single_word": false,
|
| 214 |
+
"lstrip": false,
|
| 215 |
+
"rstrip": false,
|
| 216 |
+
"normalized": false,
|
| 217 |
+
"special": false
|
| 218 |
+
},
|
| 219 |
+
"248067": {
|
| 220 |
+
"content": "</tool_response>",
|
| 221 |
+
"single_word": false,
|
| 222 |
+
"lstrip": false,
|
| 223 |
+
"rstrip": false,
|
| 224 |
+
"normalized": false,
|
| 225 |
+
"special": false
|
| 226 |
+
},
|
| 227 |
+
"248068": {
|
| 228 |
+
"content": "<think>",
|
| 229 |
+
"single_word": false,
|
| 230 |
+
"lstrip": false,
|
| 231 |
+
"rstrip": false,
|
| 232 |
+
"normalized": false,
|
| 233 |
+
"special": false
|
| 234 |
+
},
|
| 235 |
+
"248069": {
|
| 236 |
+
"content": "</think>",
|
| 237 |
+
"single_word": false,
|
| 238 |
+
"lstrip": false,
|
| 239 |
+
"rstrip": false,
|
| 240 |
+
"normalized": false,
|
| 241 |
+
"special": false
|
| 242 |
+
},
|
| 243 |
+
"248070": {
|
| 244 |
+
"content": "<|audio_start|>",
|
| 245 |
+
"single_word": false,
|
| 246 |
+
"lstrip": false,
|
| 247 |
+
"rstrip": false,
|
| 248 |
+
"normalized": false,
|
| 249 |
+
"special": true
|
| 250 |
+
},
|
| 251 |
+
"248071": {
|
| 252 |
+
"content": "<|audio_end|>",
|
| 253 |
+
"single_word": false,
|
| 254 |
+
"lstrip": false,
|
| 255 |
+
"rstrip": false,
|
| 256 |
+
"normalized": false,
|
| 257 |
+
"special": true
|
| 258 |
+
},
|
| 259 |
+
"248072": {
|
| 260 |
+
"content": "<tts_pad>",
|
| 261 |
+
"single_word": false,
|
| 262 |
+
"lstrip": false,
|
| 263 |
+
"rstrip": false,
|
| 264 |
+
"normalized": false,
|
| 265 |
+
"special": true
|
| 266 |
+
},
|
| 267 |
+
"248073": {
|
| 268 |
+
"content": "<tts_text_bos>",
|
| 269 |
+
"single_word": false,
|
| 270 |
+
"lstrip": false,
|
| 271 |
+
"rstrip": false,
|
| 272 |
+
"normalized": false,
|
| 273 |
+
"special": true
|
| 274 |
+
},
|
| 275 |
+
"248074": {
|
| 276 |
+
"content": "<tts_text_eod>",
|
| 277 |
+
"single_word": false,
|
| 278 |
+
"lstrip": false,
|
| 279 |
+
"rstrip": false,
|
| 280 |
+
"normalized": false,
|
| 281 |
+
"special": true
|
| 282 |
+
},
|
| 283 |
+
"248075": {
|
| 284 |
+
"content": "<tts_text_bos_single>",
|
| 285 |
+
"single_word": false,
|
| 286 |
+
"lstrip": false,
|
| 287 |
+
"rstrip": false,
|
| 288 |
+
"normalized": false,
|
| 289 |
+
"special": true
|
| 290 |
+
},
|
| 291 |
+
"248076": {
|
| 292 |
+
"content": "<|audio_pad|>",
|
| 293 |
+
"single_word": false,
|
| 294 |
+
"lstrip": false,
|
| 295 |
+
"rstrip": false,
|
| 296 |
+
"normalized": false,
|
| 297 |
+
"special": true
|
| 298 |
+
}
|
| 299 |
+
}
|
| 300 |
+
}
|
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 |
+
}
|
vocab.json
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|