Code4me2 commited on
Commit
6a8e64b
·
verified ·
1 Parent(s): 2726882

Initial quantized checkpoint + model card

Browse files
.gitattributes CHANGED
@@ -33,3 +33,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ tokenizer.json filter=lfs diff=lfs merge=lfs -text
LICENSE ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ Modified MIT License
2
+
3
+ Attribution notice: 2025 - Browser Use Inc.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy of the weights of this model and associated documentation files (the “Model”), to deal in the Model without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Model, and to permit persons to whom the Model is furnished to do so, subject to the following conditions:
6
+
7
+ 1. The above attribution notice and this permission notice shall be included in all copies or substantial portions of the Model.
8
+ 2. You are not authorized to exercise any rights under this license if the global consolidated annual revenue of your company (or that of your employer) exceeds $1 million (or its equivalent in another currency) for the preceding month. This restriction in (b) applies to the Model and any derivatives, modifications, or combined works based on it, whether provided by Browser Use or by a third party. You may contact Browser Use (support@browser-use.com) to request a commercial license, which Browser Use Inc. may grant you at its sole discretion, or choose to use the Model on Browser Use hosted services available at https://browser-use.com/.
9
+
10
+ THE MODEL IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL BROWSER USE BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE MODEL OR THE USE OR OTHER DEALINGS IN THE MODEL.
README.md ADDED
@@ -0,0 +1,161 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ base_model: browser-use/bu-30b-a3b-preview
3
+ base_model_relation: quantized
4
+ license: other
5
+ license_name: modified-mit-browser-use
6
+ license_link: https://huggingface.co/browser-use/bu-30b-a3b-preview/blob/main/LICENSE
7
+ tags:
8
+ - nvfp4
9
+ - awq
10
+ - modelopt
11
+ - browser-use
12
+ - agent
13
+ - vision-language
14
+ - moe
15
+ - quantized
16
+ pipeline_tag: image-text-to-text
17
+ library_name: transformers
18
+ ---
19
+
20
+ # bu-30b-a3b-preview NVFP4-AWQ (LITE)
21
+
22
+ A 4-bit NVFP4 + AWQ-lite quantization of
23
+ [browser-use/bu-30b-a3b-preview](https://huggingface.co/browser-use/bu-30b-a3b-preview) — the 30B Qwen3-VL-MoE browser-agent model — produced with
24
+ [NVIDIA TensorRT-Model-Optimizer](https://github.com/NVIDIA/TensorRT-Model-Optimizer)
25
+ v0.43.
26
+
27
+ **What's notable about this quant**
28
+
29
+ This is (as of upload) the first **NVFP4_AWQ** quantization of any browser-agent VLM on the Hub, and the first NVFP4 quant of this model with documented calibration provenance. Existing NVFP4 / INT4-AWQ quants of `bu-30b-a3b-preview` either lack calibration data disclosure or calibrate against generic text corpora; this one was calibrated **on-distribution**, using 602 real multimodal browser-use trajectories generated by the full-precision model itself.
30
+
31
+ The calibration-data argument is the load-bearing claim of this quant — it's documented in detail below.
32
+
33
+ ## Why NVFP4 for this model
34
+
35
+ - **Native acceleration on Blackwell.** RTX 5090, PRO 6000, B100/B200, GB10 all have native FP4 tensor cores (sm_100+). On Blackwell-class hardware NVFP4 weights execute at ~2× the throughput of FP8.
36
+ - **Memory.** ~17 GB vs ~58 GB at BF16. Fits comfortably on a single RTX 5090 (32 GB) with headroom for the 32K-token context window.
37
+ - **Accuracy-preserving 4-bit format.** NVFP4's two-level scales (FP8 E4M3 block scales at block size 16, plus FP32 per-tensor scale) substantially outperform naive INT4 in accuracy, and AWQ's activation-aware per-channel scaling protects the weight channels that matter most.
38
+
39
+ ## Quantization Recipe
40
+
41
+ **Base config**: `NVFP4_AWQ_LITE_CFG` from `modelopt.torch.quantization.config`.
42
+
43
+ **Module-scoped exclusions (kept at BF16 precision)**:
44
+
45
+ | Module pattern | Reason |
46
+ |---|---|
47
+ | `*visual*` | Vision encoder (ViT tower) is small relative to MoE decoder; disproportionate accuracy loss for minimal memory savings. Standard practice. |
48
+ | `*mlp.gate.*` | MoE router — tiny logit perturbations cascade into expert misrouting. Already excluded in `NVFP4_AWQ_LITE_CFG`. |
49
+ | `*lm_head*` | Output projection. Already excluded. |
50
+ | `*router*`, `*block_sparse_moe.gate*` | Generic router patterns (covers Mixtral-style MoE architectures). Already excluded. |
51
+
52
+ All 128 MoE experts (`model.language_model.layers.*.mlp.experts.*`) and attention matrices are quantized to NVFP4 weights + NVFP4 activations (W4A4). The `model.visual.*` ViT tower (depth 27, hidden 1152) stays in BF16.
53
+
54
+ ## Calibration Data
55
+
56
+ **602 samples** of real browser-use agent trajectories:
57
+
58
+ | Category (BU_Bench V1) | Tasks | Samples | Weight (rationale) |
59
+ |---|---|---|---|
60
+ | GAIA | 8 | ~200 | Research + reasoning — dominant agent workload |
61
+ | OM2W2 | 6 | ~150 | Open-ended info gathering |
62
+ | BrowseComp | 5 | ~130 | Cross-source comparison |
63
+ | WebBenchREAD | 5 | ~80 | Clean DOM activations |
64
+ | InteractionTests | 1 | ~15 | Signal floor for form/interaction regime |
65
+
66
+ **Collection process:**
67
+
68
+ 1. Full-precision bu-30b-a3b-preview served via vLLM 0.17 at `--dtype bfloat16`.
69
+ 2. 3 parallel `browser-use` v0.12.6 agents with `enable_planning=True` and `use_vision=True` ran 25 tasks sampled from the official [browser-use/benchmark](https://github.com/browser-use/benchmark) BU_Bench V1 set.
70
+ 3. Per-category step caps: 40 for GAIA/OM2W2/BrowseComp, 25 for WebBenchREAD/InteractionTests.
71
+ 4. A proxy between the agents and vLLM captured every `/v1/chat/completions` request payload (including image parts) to JSONL.
72
+ 5. Samples with total tokens < 1000 (keepalive/error artifacts, 3) or blank screenshots (variance < 150, 16) were filtered out.
73
+
74
+ **Sample-level statistics** (staged calibration, 602 samples, Qwen3-VL tokenizer + true vision-token expansion):
75
+
76
+ | Metric | Value |
77
+ |---|---|
78
+ | Total tokens | min=3, p25=11.2K, median=13.4K, p75=15.8K, p90=18.1K, max=35.4K |
79
+ | 8-16K bucket | 439 samples (73%) |
80
+ | 16-32K bucket | 144 samples (24%) |
81
+ | 32K+ samples | 6 (long-context tail) |
82
+ | Samples with screenshot | 93.6% |
83
+ | Non-degenerate screenshots | 97.2% |
84
+ | DOM element count (median / max) | 136 / 941 |
85
+
86
+ The calibration distribution was committed to **before** running the analyzer on the exploratory data — weights reflect the target user population (researchers and educators running a local agent), not post-hoc curve-fitting to whatever tasks happened to look interesting.
87
+
88
+ ## Serving
89
+
90
+ ### ⚠ vLLM support
91
+
92
+ As of **vLLM 0.19.1 / main**, the `ModelOpt` quantization loader does **not** accept `quant_algo: NVFP4_AWQ` — the supported list is only `['FP8', 'FP8_PER_CHANNEL_PER_TOKEN', 'FP8_PB_WO', 'NVFP4', 'MXFP8', 'MIXED_PRECISION']`. Renaming the algo to plain `NVFP4` would load but produce mathematically wrong inference because the 18,480 `pre_quant_scale` tensors that carry AWQ's per-channel activation rescaling would not be applied.
93
+
94
+ If you want a vLLM-loadable variant, use the sibling repo **[`Code4me2/bu-30b-a3b-preview-NVFP4`](https://huggingface.co/Code4me2/bu-30b-a3b-preview-NVFP4)** (plain NVFP4, no AWQ, slightly lower accuracy but same memory footprint).
95
+
96
+ ### TensorRT-LLM (recommended)
97
+
98
+ This format is produced by and natively supported by [NVIDIA TensorRT-Model-Optimizer](https://github.com/NVIDIA/TensorRT-Model-Optimizer) + TensorRT-LLM. Build an NVFP4 engine:
99
+
100
+ ```bash
101
+ trtllm-build --checkpoint_dir Code4me2/bu-30b-a3b-preview-NVFP4-AWQ \
102
+ --quant_format nvfp4 \
103
+ --max_seq_len 32768
104
+ ```
105
+
106
+ See the [TRT-LLM NVFP4 guide](https://nvidia.github.io/TensorRT-LLM/reference/precision.html) for more details.
107
+
108
+ ### SGLang
109
+
110
+ SGLang's ModelOpt integration supports NVFP4_AWQ when built against the matching ModelOpt version — consult their docs for the current status.
111
+
112
+ ## Intended Use
113
+
114
+ This model is a drop-in replacement for `bu-30b-a3b-preview` within the
115
+ [browser-use](https://github.com/browser-use/browser-use) library. It is
116
+ trained/tuned specifically for browser-use's indexed-DOM + structured-action
117
+ format. Using it outside that flow (or with a different harness / freeform
118
+ CDP scripting) will produce substantially worse results than the
119
+ quantization accuracy alone would suggest.
120
+
121
+ ## Evaluation
122
+
123
+ _Evaluation numbers (MMLU, GSM8K, MM-Bench, BU_Bench V1 subset) will be
124
+ added after running against BF16 baseline. See methodology below._
125
+
126
+ Planned eval suite:
127
+ - MMLU (general knowledge, 5-shot)
128
+ - GSM8K (math reasoning, 0-shot chain-of-thought)
129
+ - MM-Bench (vision-language, 0-shot)
130
+ - BU_Bench V1 held-out tasks (agent-specific, using the same browser-use harness)
131
+
132
+ ## Reproduction
133
+
134
+ - Base model: `browser-use/bu-30b-a3b-preview`
135
+ - Quantization tool: `nvidia-modelopt==0.43.0`
136
+ - Quantization config: `NVFP4_AWQ_LITE_CFG` with `*visual*` excluded (ViT stays BF16); router (`*mlp.gate.*`) already excluded by the config default
137
+ - Calibration samples: 512 / 602 (shuffled, seed=42). 6 samples above 32K tokens skipped (aligned with `--max-model-len`)
138
+ - Host: single RTX PRO 6000 Blackwell, 98GB
139
+ - Calibration wall time: ~14h (70 min cache activation stats + 12h AWQ scale search + 10 min export)
140
+
141
+ ### ModelOpt patch for Qwen3-VL-MoE support
142
+
143
+ ModelOpt 0.43 does not natively know how to export quantized checkpoints for `Qwen3VLMoeForConditionalGeneration`. Three patches were required (included in the model repo as `modelopt_patch.py`):
144
+
145
+ 1. `get_expert_linear_names()` in `layer_utils.py` — recognize `Qwen3VLMoe*` and return `[gate_proj, up_proj, down_proj]`
146
+ 2. `get_experts_list()` in `layer_utils.py` — recognize `qwen3vlmoe*` model_type
147
+ 3. `_export_transformers_checkpoint()` in `unified_export_hf.py` — wrap the `QuantQwen3VLMoeTextExperts` container with a transparent iterable proxy so the existing iterable dispatch walks the un-BMM'd per-expert `ModuleList`s, while `__call__` and attribute access still delegate to the real experts module for the internal dummy forward pass
148
+
149
+ Reference code + calibration harness: [GitHub link TBD]
150
+
151
+ ## Attribution & License
152
+
153
+ Derived from [`browser-use/bu-30b-a3b-preview`](https://huggingface.co/browser-use/bu-30b-a3b-preview), which is distributed under a **Modified MIT License** by Browser Use Inc. with a commercial-use restriction: **use is not permitted for organizations whose annual consolidated revenue exceeds USD 1 million for the preceding month**. That restriction propagates to this derivative. Commercial users above the revenue threshold must obtain a license from Browser Use Inc. (`support@browser-use.com`) or use Browser Use's hosted services.
154
+
155
+ The original LICENSE file is included alongside the weights.
156
+
157
+ ## Acknowledgements
158
+
159
+ - **Browser Use** for the base model and the open benchmark suite
160
+ - **NVIDIA Model Optimizer** for the NVFP4_AWQ calibration tooling
161
+ - **Qwen team** for the Qwen3-VL-MoE architecture
added_tokens.json ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "</think>": 151668,
3
+ "</tool_call>": 151658,
4
+ "</tool_response>": 151666,
5
+ "<think>": 151667,
6
+ "<tool_call>": 151657,
7
+ "<tool_response>": 151665,
8
+ "<|box_end|>": 151649,
9
+ "<|box_start|>": 151648,
10
+ "<|endoftext|>": 151643,
11
+ "<|file_sep|>": 151664,
12
+ "<|fim_middle|>": 151660,
13
+ "<|fim_pad|>": 151662,
14
+ "<|fim_prefix|>": 151659,
15
+ "<|fim_suffix|>": 151661,
16
+ "<|im_end|>": 151645,
17
+ "<|im_start|>": 151644,
18
+ "<|image_pad|>": 151655,
19
+ "<|object_ref_end|>": 151647,
20
+ "<|object_ref_start|>": 151646,
21
+ "<|quad_end|>": 151651,
22
+ "<|quad_start|>": 151650,
23
+ "<|repo_name|>": 151663,
24
+ "<|video_pad|>": 151656,
25
+ "<|vision_end|>": 151653,
26
+ "<|vision_pad|>": 151654,
27
+ "<|vision_start|>": 151652
28
+ }
chat_template.jinja ADDED
@@ -0,0 +1,120 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {%- if tools %}
2
+ {{- '<|im_start|>system\n' }}
3
+ {%- if messages[0].role == 'system' %}
4
+ {%- if messages[0].content is string %}
5
+ {{- messages[0].content }}
6
+ {%- else %}
7
+ {%- for content in messages[0].content %}
8
+ {%- if 'text' in content %}
9
+ {{- content.text }}
10
+ {%- endif %}
11
+ {%- endfor %}
12
+ {%- endif %}
13
+ {{- '\n\n' }}
14
+ {%- endif %}
15
+ {{- "# Tools\n\nYou may call one or more functions to assist with the user query.\n\nYou are provided with function signatures within <tools></tools> XML tags:\n<tools>" }}
16
+ {%- for tool in tools %}
17
+ {{- "\n" }}
18
+ {{- tool | tojson }}
19
+ {%- endfor %}
20
+ {{- "\n</tools>\n\nFor each function call, return a json object with function name and arguments within <tool_call></tool_call> XML tags:\n<tool_call>\n{\"name\": <function-name>, \"arguments\": <args-json-object>}\n</tool_call><|im_end|>\n" }}
21
+ {%- else %}
22
+ {%- if messages[0].role == 'system' %}
23
+ {{- '<|im_start|>system\n' }}
24
+ {%- if messages[0].content is string %}
25
+ {{- messages[0].content }}
26
+ {%- else %}
27
+ {%- for content in messages[0].content %}
28
+ {%- if 'text' in content %}
29
+ {{- content.text }}
30
+ {%- endif %}
31
+ {%- endfor %}
32
+ {%- endif %}
33
+ {{- '<|im_end|>\n' }}
34
+ {%- endif %}
35
+ {%- endif %}
36
+ {%- set image_count = namespace(value=0) %}
37
+ {%- set video_count = namespace(value=0) %}
38
+ {%- for message in messages %}
39
+ {%- if message.role == "user" %}
40
+ {{- '<|im_start|>' + message.role + '\n' }}
41
+ {%- if message.content is string %}
42
+ {{- message.content }}
43
+ {%- else %}
44
+ {%- for content in message.content %}
45
+ {%- if content.type == 'image' or 'image' in content or 'image_url' in content %}
46
+ {%- set image_count.value = image_count.value + 1 %}
47
+ {%- if add_vision_id %}Picture {{ image_count.value }}: {% endif -%}
48
+ <|vision_start|><|image_pad|><|vision_end|>
49
+ {%- elif content.type == 'video' or 'video' in content %}
50
+ {%- set video_count.value = video_count.value + 1 %}
51
+ {%- if add_vision_id %}Video {{ video_count.value }}: {% endif -%}
52
+ <|vision_start|><|video_pad|><|vision_end|>
53
+ {%- elif 'text' in content %}
54
+ {{- content.text }}
55
+ {%- endif %}
56
+ {%- endfor %}
57
+ {%- endif %}
58
+ {{- '<|im_end|>\n' }}
59
+ {%- elif message.role == "assistant" %}
60
+ {{- '<|im_start|>' + message.role + '\n' }}
61
+ {%- if message.content is string %}
62
+ {{- message.content }}
63
+ {%- else %}
64
+ {%- for content_item in message.content %}
65
+ {%- if 'text' in content_item %}
66
+ {{- content_item.text }}
67
+ {%- endif %}
68
+ {%- endfor %}
69
+ {%- endif %}
70
+ {%- if message.tool_calls %}
71
+ {%- for tool_call in message.tool_calls %}
72
+ {%- if (loop.first and message.content) or (not loop.first) %}
73
+ {{- '\n' }}
74
+ {%- endif %}
75
+ {%- if tool_call.function %}
76
+ {%- set tool_call = tool_call.function %}
77
+ {%- endif %}
78
+ {{- '<tool_call>\n{"name": "' }}
79
+ {{- tool_call.name }}
80
+ {{- '", "arguments": ' }}
81
+ {%- if tool_call.arguments is string %}
82
+ {{- tool_call.arguments }}
83
+ {%- else %}
84
+ {{- tool_call.arguments | tojson }}
85
+ {%- endif %}
86
+ {{- '}\n</tool_call>' }}
87
+ {%- endfor %}
88
+ {%- endif %}
89
+ {{- '<|im_end|>\n' }}
90
+ {%- elif message.role == "tool" %}
91
+ {%- if loop.first or (messages[loop.index0 - 1].role != "tool") %}
92
+ {{- '<|im_start|>user' }}
93
+ {%- endif %}
94
+ {{- '\n<tool_response>\n' }}
95
+ {%- if message.content is string %}
96
+ {{- message.content }}
97
+ {%- else %}
98
+ {%- for content in message.content %}
99
+ {%- if content.type == 'image' or 'image' in content or 'image_url' in content %}
100
+ {%- set image_count.value = image_count.value + 1 %}
101
+ {%- if add_vision_id %}Picture {{ image_count.value }}: {% endif -%}
102
+ <|vision_start|><|image_pad|><|vision_end|>
103
+ {%- elif content.type == 'video' or 'video' in content %}
104
+ {%- set video_count.value = video_count.value + 1 %}
105
+ {%- if add_vision_id %}Video {{ video_count.value }}: {% endif -%}
106
+ <|vision_start|><|video_pad|><|vision_end|>
107
+ {%- elif 'text' in content %}
108
+ {{- content.text }}
109
+ {%- endif %}
110
+ {%- endfor %}
111
+ {%- endif %}
112
+ {{- '\n</tool_response>' }}
113
+ {%- if loop.last or (messages[loop.index0 + 1].role != "tool") %}
114
+ {{- '<|im_end|>\n' }}
115
+ {%- endif %}
116
+ {%- endif %}
117
+ {%- endfor %}
118
+ {%- if add_generation_prompt %}
119
+ {{- '<|im_start|>assistant\n' }}
120
+ {%- endif %}
config.json ADDED
@@ -0,0 +1,155 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architectures": [
3
+ "Qwen3VLMoeForConditionalGeneration"
4
+ ],
5
+ "dtype": "bfloat16",
6
+ "hidden_size": 2048,
7
+ "image_token_id": 151655,
8
+ "model_type": "qwen3_vl_moe",
9
+ "pad_token_id": 151643,
10
+ "text_config": {
11
+ "attention_bias": false,
12
+ "attention_dropout": 0.0,
13
+ "bos_token_id": 151643,
14
+ "decoder_sparse_step": 1,
15
+ "dtype": "bfloat16",
16
+ "eos_token_id": 151645,
17
+ "head_dim": 128,
18
+ "hidden_act": "silu",
19
+ "hidden_size": 2048,
20
+ "initializer_range": 0.02,
21
+ "intermediate_size": 6144,
22
+ "max_position_embeddings": 262144,
23
+ "mlp_only_layers": [],
24
+ "model_type": "qwen3_vl_moe_text",
25
+ "moe_intermediate_size": 768,
26
+ "norm_topk_prob": true,
27
+ "num_attention_heads": 32,
28
+ "num_experts": 128,
29
+ "num_experts_per_tok": 8,
30
+ "num_hidden_layers": 48,
31
+ "num_key_value_heads": 4,
32
+ "pad_token_id": 151643,
33
+ "rms_norm_eps": 1e-06,
34
+ "rope_scaling": {
35
+ "mrope_interleaved": true,
36
+ "mrope_section": [
37
+ 24,
38
+ 20,
39
+ 20
40
+ ],
41
+ "rope_type": "default"
42
+ },
43
+ "rope_theta": 5000000,
44
+ "router_aux_loss_coef": 0.001,
45
+ "use_cache": true,
46
+ "vocab_size": 151936
47
+ },
48
+ "tie_word_embeddings": false,
49
+ "transformers_version": "4.57.6",
50
+ "video_token_id": 151656,
51
+ "vision_config": {
52
+ "deepstack_visual_indexes": [
53
+ 8,
54
+ 16,
55
+ 24
56
+ ],
57
+ "depth": 27,
58
+ "dtype": "bfloat16",
59
+ "hidden_act": "gelu_pytorch_tanh",
60
+ "hidden_size": 1152,
61
+ "in_channels": 3,
62
+ "initializer_range": 0.02,
63
+ "intermediate_size": 4304,
64
+ "model_type": "qwen3_vl_moe",
65
+ "num_heads": 16,
66
+ "num_position_embeddings": 2304,
67
+ "out_hidden_size": 2048,
68
+ "pad_token_id": 151643,
69
+ "patch_size": 16,
70
+ "spatial_merge_size": 2,
71
+ "temporal_patch_size": 2
72
+ },
73
+ "vision_end_token_id": 151653,
74
+ "vision_start_token_id": 151652,
75
+ "vocab_size": 151936,
76
+ "quantization_config": {
77
+ "config_groups": {
78
+ "group_0": {
79
+ "input_activations": {
80
+ "dynamic": false,
81
+ "num_bits": 4,
82
+ "type": "float",
83
+ "group_size": 16
84
+ },
85
+ "weights": {
86
+ "dynamic": false,
87
+ "num_bits": 4,
88
+ "type": "float",
89
+ "group_size": 16
90
+ },
91
+ "targets": [
92
+ "Linear"
93
+ ]
94
+ }
95
+ },
96
+ "ignore": [
97
+ "lm_head",
98
+ "model.language_model.layers.0.mlp.gate",
99
+ "model.language_model.layers.1.mlp.gate",
100
+ "model.language_model.layers.10.mlp.gate",
101
+ "model.language_model.layers.11.mlp.gate",
102
+ "model.language_model.layers.12.mlp.gate",
103
+ "model.language_model.layers.13.mlp.gate",
104
+ "model.language_model.layers.14.mlp.gate",
105
+ "model.language_model.layers.15.mlp.gate",
106
+ "model.language_model.layers.16.mlp.gate",
107
+ "model.language_model.layers.17.mlp.gate",
108
+ "model.language_model.layers.18.mlp.gate",
109
+ "model.language_model.layers.19.mlp.gate",
110
+ "model.language_model.layers.2.mlp.gate",
111
+ "model.language_model.layers.20.mlp.gate",
112
+ "model.language_model.layers.21.mlp.gate",
113
+ "model.language_model.layers.22.mlp.gate",
114
+ "model.language_model.layers.23.mlp.gate",
115
+ "model.language_model.layers.24.mlp.gate",
116
+ "model.language_model.layers.25.mlp.gate",
117
+ "model.language_model.layers.26.mlp.gate",
118
+ "model.language_model.layers.27.mlp.gate",
119
+ "model.language_model.layers.28.mlp.gate",
120
+ "model.language_model.layers.29.mlp.gate",
121
+ "model.language_model.layers.3.mlp.gate",
122
+ "model.language_model.layers.30.mlp.gate",
123
+ "model.language_model.layers.31.mlp.gate",
124
+ "model.language_model.layers.32.mlp.gate",
125
+ "model.language_model.layers.33.mlp.gate",
126
+ "model.language_model.layers.34.mlp.gate",
127
+ "model.language_model.layers.35.mlp.gate",
128
+ "model.language_model.layers.36.mlp.gate",
129
+ "model.language_model.layers.37.mlp.gate",
130
+ "model.language_model.layers.38.mlp.gate",
131
+ "model.language_model.layers.39.mlp.gate",
132
+ "model.language_model.layers.4.mlp.gate",
133
+ "model.language_model.layers.40.mlp.gate",
134
+ "model.language_model.layers.41.mlp.gate",
135
+ "model.language_model.layers.42.mlp.gate",
136
+ "model.language_model.layers.43.mlp.gate",
137
+ "model.language_model.layers.44.mlp.gate",
138
+ "model.language_model.layers.45.mlp.gate",
139
+ "model.language_model.layers.46.mlp.gate",
140
+ "model.language_model.layers.47.mlp.gate",
141
+ "model.language_model.layers.5.mlp.gate",
142
+ "model.language_model.layers.6.mlp.gate",
143
+ "model.language_model.layers.7.mlp.gate",
144
+ "model.language_model.layers.8.mlp.gate",
145
+ "model.language_model.layers.9.mlp.gate",
146
+ "model.visual*"
147
+ ],
148
+ "quant_algo": "NVFP4",
149
+ "producer": {
150
+ "name": "modelopt",
151
+ "version": "0.43.0"
152
+ },
153
+ "quant_method": "modelopt"
154
+ }
155
+ }
generation_config.json ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ {
2
+ "_from_model_config": true,
3
+ "bos_token_id": 151643,
4
+ "eos_token_id": 151645,
5
+ "pad_token_id": 151643,
6
+ "transformers_version": "4.57.6"
7
+ }
hf_quant_config.json ADDED
@@ -0,0 +1,63 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "producer": {
3
+ "name": "modelopt",
4
+ "version": "0.43.0"
5
+ },
6
+ "quantization": {
7
+ "quant_algo": "NVFP4",
8
+ "kv_cache_quant_algo": null,
9
+ "group_size": 16,
10
+ "exclude_modules": [
11
+ "lm_head",
12
+ "model.language_model.layers.0.mlp.gate",
13
+ "model.language_model.layers.1.mlp.gate",
14
+ "model.language_model.layers.10.mlp.gate",
15
+ "model.language_model.layers.11.mlp.gate",
16
+ "model.language_model.layers.12.mlp.gate",
17
+ "model.language_model.layers.13.mlp.gate",
18
+ "model.language_model.layers.14.mlp.gate",
19
+ "model.language_model.layers.15.mlp.gate",
20
+ "model.language_model.layers.16.mlp.gate",
21
+ "model.language_model.layers.17.mlp.gate",
22
+ "model.language_model.layers.18.mlp.gate",
23
+ "model.language_model.layers.19.mlp.gate",
24
+ "model.language_model.layers.2.mlp.gate",
25
+ "model.language_model.layers.20.mlp.gate",
26
+ "model.language_model.layers.21.mlp.gate",
27
+ "model.language_model.layers.22.mlp.gate",
28
+ "model.language_model.layers.23.mlp.gate",
29
+ "model.language_model.layers.24.mlp.gate",
30
+ "model.language_model.layers.25.mlp.gate",
31
+ "model.language_model.layers.26.mlp.gate",
32
+ "model.language_model.layers.27.mlp.gate",
33
+ "model.language_model.layers.28.mlp.gate",
34
+ "model.language_model.layers.29.mlp.gate",
35
+ "model.language_model.layers.3.mlp.gate",
36
+ "model.language_model.layers.30.mlp.gate",
37
+ "model.language_model.layers.31.mlp.gate",
38
+ "model.language_model.layers.32.mlp.gate",
39
+ "model.language_model.layers.33.mlp.gate",
40
+ "model.language_model.layers.34.mlp.gate",
41
+ "model.language_model.layers.35.mlp.gate",
42
+ "model.language_model.layers.36.mlp.gate",
43
+ "model.language_model.layers.37.mlp.gate",
44
+ "model.language_model.layers.38.mlp.gate",
45
+ "model.language_model.layers.39.mlp.gate",
46
+ "model.language_model.layers.4.mlp.gate",
47
+ "model.language_model.layers.40.mlp.gate",
48
+ "model.language_model.layers.41.mlp.gate",
49
+ "model.language_model.layers.42.mlp.gate",
50
+ "model.language_model.layers.43.mlp.gate",
51
+ "model.language_model.layers.44.mlp.gate",
52
+ "model.language_model.layers.45.mlp.gate",
53
+ "model.language_model.layers.46.mlp.gate",
54
+ "model.language_model.layers.47.mlp.gate",
55
+ "model.language_model.layers.5.mlp.gate",
56
+ "model.language_model.layers.6.mlp.gate",
57
+ "model.language_model.layers.7.mlp.gate",
58
+ "model.language_model.layers.8.mlp.gate",
59
+ "model.language_model.layers.9.mlp.gate",
60
+ "model.visual*"
61
+ ]
62
+ }
63
+ }
merges.txt ADDED
The diff for this file is too large to render. See raw diff
 
model-00001-of-00004.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:fcfaf0c4e8ff1b1532efd2d881c70ddcb00443016f5403073ddd11b3a3c13883
3
+ size 5001688952
model-00002-of-00004.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:d5c58c4a98dfc512b8ad06227ae3275138ae59478f15e2538adad04c67188299
3
+ size 5002939208
model-00003-of-00004.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:7c3ddeab718f510af162f1d0c03e63dc06a5427ca37ad5061048831c0b0371a6
3
+ size 5002252920
model-00004-of-00004.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:9a0fde5c8d9cd13f6f792837053601390dda46434118b16debac58fcffc403d8
3
+ size 4167867472
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,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "crop_size": null,
3
+ "data_format": "channels_first",
4
+ "default_to_square": true,
5
+ "device": null,
6
+ "disable_grouping": null,
7
+ "do_center_crop": null,
8
+ "do_convert_rgb": true,
9
+ "do_normalize": true,
10
+ "do_pad": null,
11
+ "do_rescale": true,
12
+ "do_resize": true,
13
+ "image_mean": [
14
+ 0.5,
15
+ 0.5,
16
+ 0.5
17
+ ],
18
+ "image_processor_type": "Qwen2VLImageProcessorFast",
19
+ "image_std": [
20
+ 0.5,
21
+ 0.5,
22
+ 0.5
23
+ ],
24
+ "input_data_format": null,
25
+ "max_pixels": null,
26
+ "merge_size": 2,
27
+ "min_pixels": null,
28
+ "pad_size": null,
29
+ "patch_size": 16,
30
+ "processor_class": "Qwen3VLProcessor",
31
+ "resample": 3,
32
+ "rescale_factor": 0.00392156862745098,
33
+ "return_tensors": null,
34
+ "size": {
35
+ "longest_edge": 16777216,
36
+ "shortest_edge": 65536
37
+ },
38
+ "temporal_patch_size": 2
39
+ }
special_tokens_map.json ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
+ "eos_token": {
18
+ "content": "<|im_end|>",
19
+ "lstrip": false,
20
+ "normalized": false,
21
+ "rstrip": false,
22
+ "single_word": false
23
+ },
24
+ "pad_token": {
25
+ "content": "<|endoftext|>",
26
+ "lstrip": false,
27
+ "normalized": false,
28
+ "rstrip": false,
29
+ "single_word": false
30
+ }
31
+ }
tokenizer.json ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f54b55fa0c3aba0c91ce09ea79ae4e62da24e2a1a630f96c4bae34aba25e234a
3
+ size 11422822
tokenizer_config.json ADDED
@@ -0,0 +1,240 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "add_bos_token": false,
3
+ "add_prefix_space": false,
4
+ "added_tokens_decoder": {
5
+ "151643": {
6
+ "content": "<|endoftext|>",
7
+ "lstrip": false,
8
+ "normalized": false,
9
+ "rstrip": false,
10
+ "single_word": false,
11
+ "special": true
12
+ },
13
+ "151644": {
14
+ "content": "<|im_start|>",
15
+ "lstrip": false,
16
+ "normalized": false,
17
+ "rstrip": false,
18
+ "single_word": false,
19
+ "special": true
20
+ },
21
+ "151645": {
22
+ "content": "<|im_end|>",
23
+ "lstrip": false,
24
+ "normalized": false,
25
+ "rstrip": false,
26
+ "single_word": false,
27
+ "special": true
28
+ },
29
+ "151646": {
30
+ "content": "<|object_ref_start|>",
31
+ "lstrip": false,
32
+ "normalized": false,
33
+ "rstrip": false,
34
+ "single_word": false,
35
+ "special": true
36
+ },
37
+ "151647": {
38
+ "content": "<|object_ref_end|>",
39
+ "lstrip": false,
40
+ "normalized": false,
41
+ "rstrip": false,
42
+ "single_word": false,
43
+ "special": true
44
+ },
45
+ "151648": {
46
+ "content": "<|box_start|>",
47
+ "lstrip": false,
48
+ "normalized": false,
49
+ "rstrip": false,
50
+ "single_word": false,
51
+ "special": true
52
+ },
53
+ "151649": {
54
+ "content": "<|box_end|>",
55
+ "lstrip": false,
56
+ "normalized": false,
57
+ "rstrip": false,
58
+ "single_word": false,
59
+ "special": true
60
+ },
61
+ "151650": {
62
+ "content": "<|quad_start|>",
63
+ "lstrip": false,
64
+ "normalized": false,
65
+ "rstrip": false,
66
+ "single_word": false,
67
+ "special": true
68
+ },
69
+ "151651": {
70
+ "content": "<|quad_end|>",
71
+ "lstrip": false,
72
+ "normalized": false,
73
+ "rstrip": false,
74
+ "single_word": false,
75
+ "special": true
76
+ },
77
+ "151652": {
78
+ "content": "<|vision_start|>",
79
+ "lstrip": false,
80
+ "normalized": false,
81
+ "rstrip": false,
82
+ "single_word": false,
83
+ "special": true
84
+ },
85
+ "151653": {
86
+ "content": "<|vision_end|>",
87
+ "lstrip": false,
88
+ "normalized": false,
89
+ "rstrip": false,
90
+ "single_word": false,
91
+ "special": true
92
+ },
93
+ "151654": {
94
+ "content": "<|vision_pad|>",
95
+ "lstrip": false,
96
+ "normalized": false,
97
+ "rstrip": false,
98
+ "single_word": false,
99
+ "special": true
100
+ },
101
+ "151655": {
102
+ "content": "<|image_pad|>",
103
+ "lstrip": false,
104
+ "normalized": false,
105
+ "rstrip": false,
106
+ "single_word": false,
107
+ "special": true
108
+ },
109
+ "151656": {
110
+ "content": "<|video_pad|>",
111
+ "lstrip": false,
112
+ "normalized": false,
113
+ "rstrip": false,
114
+ "single_word": false,
115
+ "special": true
116
+ },
117
+ "151657": {
118
+ "content": "<tool_call>",
119
+ "lstrip": false,
120
+ "normalized": false,
121
+ "rstrip": false,
122
+ "single_word": false,
123
+ "special": false
124
+ },
125
+ "151658": {
126
+ "content": "</tool_call>",
127
+ "lstrip": false,
128
+ "normalized": false,
129
+ "rstrip": false,
130
+ "single_word": false,
131
+ "special": false
132
+ },
133
+ "151659": {
134
+ "content": "<|fim_prefix|>",
135
+ "lstrip": false,
136
+ "normalized": false,
137
+ "rstrip": false,
138
+ "single_word": false,
139
+ "special": false
140
+ },
141
+ "151660": {
142
+ "content": "<|fim_middle|>",
143
+ "lstrip": false,
144
+ "normalized": false,
145
+ "rstrip": false,
146
+ "single_word": false,
147
+ "special": false
148
+ },
149
+ "151661": {
150
+ "content": "<|fim_suffix|>",
151
+ "lstrip": false,
152
+ "normalized": false,
153
+ "rstrip": false,
154
+ "single_word": false,
155
+ "special": false
156
+ },
157
+ "151662": {
158
+ "content": "<|fim_pad|>",
159
+ "lstrip": false,
160
+ "normalized": false,
161
+ "rstrip": false,
162
+ "single_word": false,
163
+ "special": false
164
+ },
165
+ "151663": {
166
+ "content": "<|repo_name|>",
167
+ "lstrip": false,
168
+ "normalized": false,
169
+ "rstrip": false,
170
+ "single_word": false,
171
+ "special": false
172
+ },
173
+ "151664": {
174
+ "content": "<|file_sep|>",
175
+ "lstrip": false,
176
+ "normalized": false,
177
+ "rstrip": false,
178
+ "single_word": false,
179
+ "special": false
180
+ },
181
+ "151665": {
182
+ "content": "<tool_response>",
183
+ "lstrip": false,
184
+ "normalized": false,
185
+ "rstrip": false,
186
+ "single_word": false,
187
+ "special": false
188
+ },
189
+ "151666": {
190
+ "content": "</tool_response>",
191
+ "lstrip": false,
192
+ "normalized": false,
193
+ "rstrip": false,
194
+ "single_word": false,
195
+ "special": false
196
+ },
197
+ "151667": {
198
+ "content": "<think>",
199
+ "lstrip": false,
200
+ "normalized": false,
201
+ "rstrip": false,
202
+ "single_word": false,
203
+ "special": false
204
+ },
205
+ "151668": {
206
+ "content": "</think>",
207
+ "lstrip": false,
208
+ "normalized": false,
209
+ "rstrip": false,
210
+ "single_word": false,
211
+ "special": false
212
+ }
213
+ },
214
+ "additional_special_tokens": [
215
+ "<|im_start|>",
216
+ "<|im_end|>",
217
+ "<|object_ref_start|>",
218
+ "<|object_ref_end|>",
219
+ "<|box_start|>",
220
+ "<|box_end|>",
221
+ "<|quad_start|>",
222
+ "<|quad_end|>",
223
+ "<|vision_start|>",
224
+ "<|vision_end|>",
225
+ "<|vision_pad|>",
226
+ "<|image_pad|>",
227
+ "<|video_pad|>"
228
+ ],
229
+ "bos_token": null,
230
+ "clean_up_tokenization_spaces": false,
231
+ "eos_token": "<|im_end|>",
232
+ "errors": "replace",
233
+ "extra_special_tokens": {},
234
+ "model_max_length": 262144,
235
+ "pad_token": "<|endoftext|>",
236
+ "processor_class": "Qwen3VLProcessor",
237
+ "split_special_tokens": false,
238
+ "tokenizer_class": "Qwen2Tokenizer",
239
+ "unk_token": null
240
+ }
video_preprocessor_config.json ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "crop_size": null,
3
+ "data_format": "channels_first",
4
+ "default_to_square": true,
5
+ "device": null,
6
+ "do_center_crop": null,
7
+ "do_convert_rgb": true,
8
+ "do_normalize": true,
9
+ "do_rescale": true,
10
+ "do_resize": true,
11
+ "do_sample_frames": true,
12
+ "fps": 2,
13
+ "image_mean": [
14
+ 0.5,
15
+ 0.5,
16
+ 0.5
17
+ ],
18
+ "image_processor_type": "Qwen2VLImageProcessorFast",
19
+ "image_std": [
20
+ 0.5,
21
+ 0.5,
22
+ 0.5
23
+ ],
24
+ "input_data_format": null,
25
+ "max_frames": 768,
26
+ "merge_size": 2,
27
+ "min_frames": 4,
28
+ "num_frames": null,
29
+ "pad_size": null,
30
+ "patch_size": 16,
31
+ "processor_class": "Qwen3VLProcessor",
32
+ "resample": 3,
33
+ "rescale_factor": 0.00392156862745098,
34
+ "return_metadata": false,
35
+ "size": {
36
+ "longest_edge": 16777216,
37
+ "shortest_edge": 65536
38
+ },
39
+ "temporal_patch_size": 2,
40
+ "video_metadata": null,
41
+ "video_processor_type": "Qwen3VLVideoProcessor"
42
+ }
vocab.json ADDED
The diff for this file is too large to render. See raw diff