yue-maincode commited on
Commit
2eec58b
·
verified ·
1 Parent(s): d506062

Matilda Platypus matilda-platypus-1.5b-base: upper block, Representation Bridge, remote code, model card

Browse files
.gitattributes CHANGED
@@ -33,3 +33,6 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ technical_report.pdf filter=lfs diff=lfs merge=lfs -text
37
+ tokenizer.json filter=lfs diff=lfs merge=lfs -text
38
+ upper_block/tokenizer.json filter=lfs diff=lfs merge=lfs -text
README.md ADDED
@@ -0,0 +1,101 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: apache-2.0
3
+ base_model:
4
+ - Qwen/Qwen3-1.7B-Base
5
+ - Qwen/Qwen3-0.6B-Base
6
+ library_name: transformers
7
+ pipeline_tag: text-generation
8
+ tags:
9
+ - matilda
10
+ - platypus
11
+ - representation-bridge
12
+ - qwen3
13
+ - base-model
14
+ ---
15
+ # Matilda Platypus 1.5B (base)
16
+
17
+ **Any size you want.** Matilda Platypus is a family of intermediate-size language models built by connecting the lower
18
+ layers of a larger pretrained Qwen3 model to the upper layers of a smaller one. A learned linear **Representation
19
+ Bridge** aligns the hidden representations at the connection. This checkpoint is the **1.5B** member
20
+ (cut `18+10`): 1.53B parameters, 2.7 GFLOP per token, 73% of the
21
+ larger parent's compute. It is a base model (no instruction tuning); see the technical report (`technical_report.pdf`)
22
+ for the method and the full evaluation.
23
+
24
+ ## How this model is built
25
+
26
+ | Component | Source | Layers | Notes |
27
+ |---|---|---|---|
28
+ | Lower block | `Qwen/Qwen3-1.7B-Base` (28 layers) | 1–18 | frozen at the released weights, loaded from the hub |
29
+ | Representation Bridge | learned | – | one linear map, 2048 → 1024 hidden units, 2.1M parameters (`bridge.safetensors`) |
30
+ | Upper block | `Qwen/Qwen3-0.6B-Base` (28 layers) | 19–28 + final norm + output head | lightly adapted with low-rank updates (merged), shipped as `upper_block/` |
31
+
32
+ The notation `18+10` means 18 layers of the larger parent followed by 10 layers of the smaller parent. The
33
+ forward pass is: embedding and layers 1–18 of `Qwen3-1.7B-Base` → bridge → layers 19–28 of
34
+ `Qwen3-0.6B-Base` → its final normalisation and output head. The tokenizer is the Qwen3 tokenizer.
35
+
36
+ ## Results
37
+
38
+ Base-model evaluation with lm-eval-harness 0.4.13, identical protocol for the model and both parents (0-shot
39
+ multiple choice, MMLU 5-shot, GSM8K 8-shot chain-of-thought, BBH 3-shot chain-of-thought, HumanEval 0-shot and MBPP
40
+ 3-shot with the generated code executed; HumanEval scored with markdown fences stripped). Scores are proportions.
41
+
42
+ | Benchmark | Qwen3-0.6B-Base | **Platypus 1.5B** | Qwen3-1.7B-Base |
43
+ |---|---|---|---|
44
+ | HumanEval pass@1 | 0.287 | **0.409** | 0.494 |
45
+ | GSM8K (8-shot CoT) | 0.595 | **0.691** | 0.729 |
46
+ | MMLU (5-shot) | 0.527 | **0.606** | 0.625 |
47
+ | BBH (3-shot CoT) | 0.406 | **0.473** | 0.529 |
48
+ | HellaSwag | 0.538 | **0.595** | 0.665 |
49
+ | ARC-Easy | 0.579 | **0.660** | 0.686 |
50
+ | ARC-Challenge | 0.385 | **0.407** | 0.446 |
51
+ | OpenBookQA | 0.344 | **0.374** | 0.388 |
52
+ | WinoGrande | 0.587 | **0.635** | 0.644 |
53
+ | PIQA | 0.701 | **0.726** | 0.758 |
54
+ | LAMBADA | 0.537 | **0.574** | 0.633 |
55
+ | MBPP pass@1 | 0.390 | **0.456** | 0.566 |
56
+ | BoolQ | 0.697 | **0.777** | 0.790 |
57
+
58
+ Above the smaller parent on 13 of 13 benchmarks and above the larger parent on 0 of 13, at
59
+ 73% of the larger parent's compute (2.7 vs 3.7 GFLOP per token; the
60
+ smaller parent is 1.4). Compute is the report's relative measure, normalised to the larger
61
+ parent; it is not a verified latency or cost measurement. Full tables and figures: `technical_report.pdf`.
62
+
63
+ ## Training recipe (summary)
64
+
65
+ 1. **Initialise the bridge by least squares.** Both released parents are run on a small calibration set and a linear
66
+ map is fitted between their representations at the connection; initial language-modelling loss ranks candidate cuts.
67
+ 2. **Supervised adaptation.** The bridge and light low-rank updates to the retained upper layers are trained on a few
68
+ billion tokens of mixed web text, code, mathematics and worked solutions, with the lower block frozen at its released weights.
69
+ 3. **Reinforcement learning with verifiable rewards.** A short policy-optimisation stage on code problems with unit
70
+ tests and mathematics problems with checkable answers.
71
+
72
+ ## Usage
73
+
74
+ ```python
75
+ import torch
76
+ from transformers import AutoModelForCausalLM, AutoTokenizer
77
+
78
+ repo = "Maincode/matilda-platypus-1.5b-base"
79
+ tok = AutoTokenizer.from_pretrained(repo)
80
+ model = AutoModelForCausalLM.from_pretrained(repo, trust_remote_code=True, dtype=torch.bfloat16).cuda()
81
+ inputs = tok("The capital of Australia is", return_tensors="pt").to("cuda")
82
+ out = model.generate(**inputs, max_new_tokens=32)
83
+ print(tok.decode(out[0], skip_special_tokens=True))
84
+ ```
85
+
86
+ The remote code loads the lower block from `Qwen/Qwen3-1.7B-Base`, the upper
87
+ block from `upper_block/` and the bridge from `bridge.safetensors`, truncates both parents to the retained layers and
88
+ runs them through their standard `transformers` forward passes with one KV cache per block. `generate` supports greedy
89
+ decoding and nucleus sampling (`do_sample`, `temperature`, `top_p`). Requires `transformers >= 4.51` (Qwen3 support).
90
+
91
+ ## Limitations
92
+
93
+ A base model: it continues text and is not instruction-tuned or safety-tuned. Its knowledge and behaviour derive from
94
+ the two Qwen3 parents and the adaptation data. The evaluation above is a base-model protocol shared by the model and its
95
+ parents; differences of a few tenths of a point are within run-to-run variance.
96
+
97
+ ## Citation
98
+
99
+ Maincode Team (Yue Yang, Arsh Chawla, David Lemphers). *Matilda Platypus: Any Size You Want. Intelligence You Need.*
100
+ Technical report, Maincode / Matilda Research, October 2026. Included in this repository as `technical_report.pdf`.
101
+ Built on Qwen3 (Qwen Team, *Qwen3 Technical Report*, arXiv:2505.09388). Released under the Apache 2.0 license.
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
+ }
bridge.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:54c079a65656081ae329ab85a7ad33d1b7a7ed5a624d4c1f36591c4580e33342
3
+ size 8392848
config.json ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "model_type": "matilda-platypus",
3
+ "architectures": [
4
+ "MatildaPlatypusForCausalLM"
5
+ ],
6
+ "auto_map": {
7
+ "AutoConfig": "configuration_platypus.MatildaPlatypusConfig",
8
+ "AutoModelForCausalLM": "modeling_platypus.MatildaPlatypusForCausalLM"
9
+ },
10
+ "lower_model": "Qwen/Qwen3-1.7B-Base",
11
+ "lower_layers": 18,
12
+ "upper_model": "upper_block",
13
+ "upper_start_layer": 18,
14
+ "upper_layers": 10,
15
+ "bridge_file": "bridge.safetensors",
16
+ "lower_hidden_size": 2048,
17
+ "upper_hidden_size": 1024,
18
+ "vocab_size": 151936,
19
+ "torch_dtype": "bfloat16",
20
+ "transformers_version": "4.56.0"
21
+ }
configuration_platypus.py ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from transformers import PretrainedConfig
2
+
3
+
4
+ class MatildaPlatypusConfig(PretrainedConfig):
5
+ """A Matilda Platypus model: the lower block of a larger Qwen3 parent, a learned linear Representation Bridge,
6
+ and the upper block (plus final norm and output head) of a smaller Qwen3 parent."""
7
+
8
+ model_type = "matilda-platypus"
9
+
10
+ def __init__(self, lower_model="Qwen/Qwen3-8B-Base", lower_layers=25, upper_model="upper_block",
11
+ upper_start_layer=25, upper_layers=11, bridge_file="bridge.safetensors",
12
+ lower_hidden_size=4096, upper_hidden_size=2560, vocab_size=151936, **kwargs):
13
+ self.lower_model = lower_model # hub id, or a sub-folder of this repo
14
+ self.lower_layers = lower_layers # k: decoder layers kept from the larger parent (layers 1..k)
15
+ self.upper_model = upper_model # sub-folder holding the adapted smaller parent (HF checkpoint)
16
+ self.upper_start_layer = upper_start_layer # 0-based index of the first retained upper layer (= j - 1)
17
+ self.upper_layers = upper_layers # m: decoder layers kept from the smaller parent
18
+ self.bridge_file = bridge_file
19
+ self.lower_hidden_size = lower_hidden_size
20
+ self.upper_hidden_size = upper_hidden_size
21
+ self.vocab_size = vocab_size
22
+ super().__init__(**kwargs)
eval_results.json ADDED
@@ -0,0 +1,54 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "protocol": "lm-eval-harness 0.4.13, base-model protocol, HumanEval fence-stripped",
3
+ "cut": "18+10",
4
+ "params_b": 1.53,
5
+ "gflop_per_token": 2.68,
6
+ "compute_pct_of_larger_parent": 73,
7
+ "smaller_parent": {
8
+ "name": "Qwen3-0.6B-Base",
9
+ "humaneval": 0.287,
10
+ "gsm8k_cot": 0.5951,
11
+ "mmlu": 0.5271,
12
+ "bbh_cot_fewshot": 0.4061,
13
+ "hellaswag": 0.5384,
14
+ "arc_easy": 0.5791,
15
+ "arc_challenge": 0.3848,
16
+ "openbookqa": 0.344,
17
+ "winogrande": 0.5872,
18
+ "piqa": 0.7013,
19
+ "lambada_openai": 0.5372,
20
+ "mbpp": 0.39,
21
+ "boolq": 0.6972
22
+ },
23
+ "model": {
24
+ "humaneval": 0.409,
25
+ "gsm8k_cot": 0.6914,
26
+ "mmlu": 0.6056,
27
+ "bbh_cot_fewshot": 0.4732,
28
+ "hellaswag": 0.5951,
29
+ "arc_easy": 0.6604,
30
+ "arc_challenge": 0.407,
31
+ "openbookqa": 0.374,
32
+ "winogrande": 0.6354,
33
+ "piqa": 0.7258,
34
+ "lambada_openai": 0.5742,
35
+ "mbpp": 0.456,
36
+ "boolq": 0.7771
37
+ },
38
+ "larger_parent": {
39
+ "name": "Qwen3-1.7B-Base",
40
+ "humaneval": 0.494,
41
+ "gsm8k_cot": 0.7293,
42
+ "mmlu": 0.6249,
43
+ "bbh_cot_fewshot": 0.529,
44
+ "hellaswag": 0.6648,
45
+ "arc_easy": 0.6864,
46
+ "arc_challenge": 0.4462,
47
+ "openbookqa": 0.388,
48
+ "winogrande": 0.644,
49
+ "piqa": 0.7579,
50
+ "lambada_openai": 0.633,
51
+ "mbpp": 0.566,
52
+ "boolq": 0.7902
53
+ }
54
+ }
merges.txt ADDED
The diff for this file is too large to render. See raw diff
 
modeling_platypus.py ADDED
@@ -0,0 +1,153 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Matilda Platypus: lower block of a larger Qwen3 parent -> Representation Bridge -> upper block of a smaller parent.
2
+
3
+ Self-contained: the two blocks are ordinary Hugging Face Qwen3 checkpoints run through their public forward passes
4
+ (the lower one truncated to its first k layers with its final norm removed, the upper one starting at layer j with
5
+ `inputs_embeds`), so no custom kernels are involved. `generate` keeps one KV cache per block.
6
+
7
+ from transformers import AutoModelForCausalLM, AutoTokenizer
8
+ tok = AutoTokenizer.from_pretrained("maincode/matilda-platypus-7b-base")
9
+ model = AutoModelForCausalLM.from_pretrained("maincode/matilda-platypus-7b-base", trust_remote_code=True,
10
+ dtype=torch.bfloat16).cuda()
11
+ out = model.generate(**tok("The capital of Australia is", return_tensors="pt").to("cuda"), max_new_tokens=32)
12
+ """
13
+ from __future__ import annotations
14
+
15
+ import os
16
+ from typing import Optional, Tuple
17
+
18
+ import torch
19
+ import torch.nn as nn
20
+ from safetensors.torch import load_file
21
+ from transformers import AutoModelForCausalLM, PreTrainedModel
22
+ from transformers.cache_utils import DynamicCache
23
+ from transformers.modeling_outputs import CausalLMOutputWithPast
24
+
25
+ from .configuration_platypus import MatildaPlatypusConfig
26
+
27
+
28
+ class RepresentationBridge(nn.Module):
29
+ """y = W x + b on the residual stream, computed in float32 (W: [d_upper, d_lower])."""
30
+
31
+ def __init__(self, d_lower: int, d_upper: int):
32
+ super().__init__()
33
+ self.proj = nn.Linear(d_lower, d_upper, bias=True)
34
+
35
+ def forward(self, x: torch.Tensor) -> torch.Tensor:
36
+ with torch.autocast(device_type=x.device.type, enabled=False):
37
+ return self.proj(x.float())
38
+
39
+
40
+ class MatildaPlatypusForCausalLM(PreTrainedModel):
41
+ config_class = MatildaPlatypusConfig
42
+ _supports_cache_class = True
43
+
44
+ def __init__(self, config: MatildaPlatypusConfig, lower: Optional[PreTrainedModel] = None,
45
+ upper: Optional[PreTrainedModel] = None, bridge: Optional[RepresentationBridge] = None):
46
+ super().__init__(config)
47
+ self.lower, self.upper, self.bridge = lower, upper, bridge
48
+
49
+ # ------------------------------------------------------------------ loading
50
+ @classmethod
51
+ def from_pretrained(cls, pretrained_model_name_or_path, *args, dtype=None, torch_dtype=None, token=None,
52
+ revision=None, device_map=None, **kwargs):
53
+ from huggingface_hub import snapshot_download
54
+ path = str(pretrained_model_name_or_path)
55
+ local = path if os.path.isdir(path) else snapshot_download(path, token=token, revision=revision)
56
+ config = MatildaPlatypusConfig.from_pretrained(local)
57
+ dt = dtype or torch_dtype or torch.bfloat16
58
+ lower_src = os.path.join(local, config.lower_model) if os.path.isdir(os.path.join(local, config.lower_model)) else config.lower_model
59
+ lower = AutoModelForCausalLM.from_pretrained(lower_src, dtype=dt, token=token)
60
+ upper = AutoModelForCausalLM.from_pretrained(os.path.join(local, config.upper_model), dtype=dt)
61
+ k, j, m = config.lower_layers, config.upper_start_layer, config.upper_layers
62
+ # lower block: first k decoder layers, no final norm (the bridge takes the raw residual stream)
63
+ lower.model.layers = nn.ModuleList(list(lower.model.layers)[:k])
64
+ lower.model.norm = nn.Identity()
65
+ lower.config.num_hidden_layers = k
66
+ if getattr(lower.config, "layer_types", None):
67
+ lower.config.layer_types = list(lower.config.layer_types)[:k]
68
+ lower.lm_head = nn.Identity()
69
+ # upper block: layers j.. of the smaller parent, re-indexed so a fresh KV cache is contiguous
70
+ layers = list(upper.model.layers)[j:j + m]
71
+ for n, layer in enumerate(layers):
72
+ if hasattr(layer, "self_attn"):
73
+ layer.self_attn.layer_idx = n
74
+ if hasattr(layer, "layer_idx"):
75
+ layer.layer_idx = n
76
+ upper.model.layers = nn.ModuleList(layers)
77
+ upper.config.num_hidden_layers = m
78
+ if getattr(upper.config, "layer_types", None):
79
+ upper.config.layer_types = list(upper.config.layer_types)[j:j + m]
80
+ upper.model.embed_tokens = nn.Identity() # the upper block never embeds tokens
81
+ bridge = RepresentationBridge(config.lower_hidden_size, config.upper_hidden_size)
82
+ t = load_file(os.path.join(local, config.bridge_file))
83
+ bridge.proj.weight.data.copy_(t["W"].float()); bridge.proj.bias.data.copy_(t["b"].float())
84
+ for p in lower.parameters():
85
+ p.requires_grad_(False)
86
+ model = cls(config, lower, upper, bridge).eval()
87
+ if device_map is not None and isinstance(device_map, (str, torch.device)) and device_map != "auto":
88
+ model.to(device_map)
89
+ return model
90
+
91
+ # ------------------------------------------------------------------ forward
92
+ @property
93
+ def dtype(self) -> torch.dtype:
94
+ return self.upper.lm_head.weight.dtype
95
+
96
+ def get_input_embeddings(self):
97
+ return self.lower.model.embed_tokens
98
+
99
+ def get_output_embeddings(self):
100
+ return self.upper.lm_head
101
+
102
+ def forward(self, input_ids: torch.LongTensor, attention_mask: Optional[torch.Tensor] = None,
103
+ past_key_values: Optional[Tuple[DynamicCache, DynamicCache]] = None, use_cache: bool = False,
104
+ **kwargs) -> CausalLMOutputWithPast:
105
+ cl, cu = past_key_values if past_key_values is not None else (None, None)
106
+ if use_cache and cl is None:
107
+ cl, cu = DynamicCache(), DynamicCache()
108
+ lo = self.lower.model(input_ids=input_ids, attention_mask=attention_mask, past_key_values=cl, use_cache=use_cache)
109
+ h = self.bridge(lo.last_hidden_state).to(self.dtype)
110
+ up = self.upper.model(inputs_embeds=h, attention_mask=attention_mask, past_key_values=cu, use_cache=use_cache)
111
+ logits = self.upper.lm_head(up.last_hidden_state)
112
+ return CausalLMOutputWithPast(logits=logits, past_key_values=(cl, cu) if use_cache else None)
113
+
114
+ # ------------------------------------------------------------------ generation
115
+ @torch.no_grad()
116
+ def generate(self, input_ids: torch.LongTensor, attention_mask: Optional[torch.Tensor] = None,
117
+ max_new_tokens: int = 128, do_sample: bool = False, temperature: float = 1.0, top_p: float = 1.0,
118
+ eos_token_id: Optional[int] = None, pad_token_id: Optional[int] = None, **kwargs) -> torch.LongTensor:
119
+ """Greedy or nucleus sampling with KV caches for both blocks; stops when every row has produced EOS."""
120
+ if eos_token_id is None:
121
+ eos_token_id = getattr(self.upper.generation_config, "eos_token_id", None) or self.upper.config.eos_token_id
122
+ if isinstance(eos_token_id, (list, tuple)):
123
+ eos_token_id = eos_token_id[0]
124
+ if pad_token_id is None:
125
+ pad_token_id = getattr(self.upper.config, "pad_token_id", None) or eos_token_id
126
+ device = input_ids.device
127
+ if attention_mask is None:
128
+ attention_mask = torch.ones_like(input_ids)
129
+ out = self.forward(input_ids, attention_mask=attention_mask, use_cache=True)
130
+ caches = out.past_key_values
131
+ seq = input_ids
132
+ done = torch.zeros(input_ids.shape[0], dtype=torch.bool, device=device)
133
+ for _ in range(max_new_tokens):
134
+ logits = out.logits[:, -1, :].float()
135
+ if do_sample:
136
+ logits = logits / max(temperature, 1e-5)
137
+ if top_p < 1.0:
138
+ sorted_logits, idx = torch.sort(logits, descending=True)
139
+ probs = torch.softmax(sorted_logits, dim=-1)
140
+ keep = probs.cumsum(-1) - probs < top_p
141
+ sorted_logits[~keep] = float("-inf")
142
+ logits = torch.full_like(logits, float("-inf")).scatter(1, idx, sorted_logits)
143
+ nxt = torch.multinomial(torch.softmax(logits, dim=-1), 1).squeeze(1)
144
+ else:
145
+ nxt = logits.argmax(-1)
146
+ nxt = torch.where(done, torch.full_like(nxt, pad_token_id), nxt)
147
+ seq = torch.cat([seq, nxt[:, None]], dim=1)
148
+ attention_mask = torch.cat([attention_mask, torch.ones_like(nxt[:, None])], dim=1)
149
+ done |= nxt == eos_token_id
150
+ if bool(done.all()):
151
+ break
152
+ out = self.forward(nxt[:, None], attention_mask=attention_mask, past_key_values=caches, use_cache=True)
153
+ return seq
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": "<|endoftext|>",
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
+ }
technical_report.pdf ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c302983953d3557bf527187068de754fd433517970cb09d8e0c1a611993d03cb
3
+ size 1279700
tokenizer.json ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:aeb13307a71acd8fe81861d94ad54ab689df773318809eed3cbe794b4492dae4
3
+ size 11422654
tokenizer_config.json ADDED
@@ -0,0 +1,239 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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": "<|endoftext|>",
232
+ "errors": "replace",
233
+ "extra_special_tokens": {},
234
+ "model_max_length": 131072,
235
+ "pad_token": "<|endoftext|>",
236
+ "split_special_tokens": false,
237
+ "tokenizer_class": "Qwen2Tokenizer",
238
+ "unk_token": null
239
+ }
upper_block/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
+ }
upper_block/chat_template.jinja ADDED
@@ -0,0 +1,85 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {%- if tools %}
2
+ {{- '<|im_start|>system\n' }}
3
+ {%- if messages[0].role == 'system' %}
4
+ {{- messages[0].content + '\n\n' }}
5
+ {%- endif %}
6
+ {{- "# 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>" }}
7
+ {%- for tool in tools %}
8
+ {{- "\n" }}
9
+ {{- tool | tojson }}
10
+ {%- endfor %}
11
+ {{- "\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" }}
12
+ {%- else %}
13
+ {%- if messages[0].role == 'system' %}
14
+ {{- '<|im_start|>system\n' + messages[0].content + '<|im_end|>\n' }}
15
+ {%- endif %}
16
+ {%- endif %}
17
+ {%- set ns = namespace(multi_step_tool=true, last_query_index=messages|length - 1) %}
18
+ {%- for message in messages[::-1] %}
19
+ {%- set index = (messages|length - 1) - loop.index0 %}
20
+ {%- if ns.multi_step_tool and message.role == "user" and not(message.content.startswith('<tool_response>') and message.content.endswith('</tool_response>')) %}
21
+ {%- set ns.multi_step_tool = false %}
22
+ {%- set ns.last_query_index = index %}
23
+ {%- endif %}
24
+ {%- endfor %}
25
+ {%- for message in messages %}
26
+ {%- if (message.role == "user") or (message.role == "system" and not loop.first) %}
27
+ {{- '<|im_start|>' + message.role + '\n' + message.content + '<|im_end|>' + '\n' }}
28
+ {%- elif message.role == "assistant" %}
29
+ {%- set content = message.content %}
30
+ {%- set reasoning_content = '' %}
31
+ {%- if message.reasoning_content is defined and message.reasoning_content is not none %}
32
+ {%- set reasoning_content = message.reasoning_content %}
33
+ {%- else %}
34
+ {%- if '</think>' in message.content %}
35
+ {%- set content = message.content.split('</think>')[-1].lstrip('\n') %}
36
+ {%- set reasoning_content = message.content.split('</think>')[0].rstrip('\n').split('<think>')[-1].lstrip('\n') %}
37
+ {%- endif %}
38
+ {%- endif %}
39
+ {%- if loop.index0 > ns.last_query_index %}
40
+ {%- if loop.last or (not loop.last and reasoning_content) %}
41
+ {{- '<|im_start|>' + message.role + '\n<think>\n' + reasoning_content.strip('\n') + '\n</think>\n\n' + content.lstrip('\n') }}
42
+ {%- else %}
43
+ {{- '<|im_start|>' + message.role + '\n' + content }}
44
+ {%- endif %}
45
+ {%- else %}
46
+ {{- '<|im_start|>' + message.role + '\n' + content }}
47
+ {%- endif %}
48
+ {%- if message.tool_calls %}
49
+ {%- for tool_call in message.tool_calls %}
50
+ {%- if (loop.first and content) or (not loop.first) %}
51
+ {{- '\n' }}
52
+ {%- endif %}
53
+ {%- if tool_call.function %}
54
+ {%- set tool_call = tool_call.function %}
55
+ {%- endif %}
56
+ {{- '<tool_call>\n{"name": "' }}
57
+ {{- tool_call.name }}
58
+ {{- '", "arguments": ' }}
59
+ {%- if tool_call.arguments is string %}
60
+ {{- tool_call.arguments }}
61
+ {%- else %}
62
+ {{- tool_call.arguments | tojson }}
63
+ {%- endif %}
64
+ {{- '}\n</tool_call>' }}
65
+ {%- endfor %}
66
+ {%- endif %}
67
+ {{- '<|im_end|>\n' }}
68
+ {%- elif message.role == "tool" %}
69
+ {%- if loop.first or (messages[loop.index0 - 1].role != "tool") %}
70
+ {{- '<|im_start|>user' }}
71
+ {%- endif %}
72
+ {{- '\n<tool_response>\n' }}
73
+ {{- message.content }}
74
+ {{- '\n</tool_response>' }}
75
+ {%- if loop.last or (messages[loop.index0 + 1].role != "tool") %}
76
+ {{- '<|im_end|>\n' }}
77
+ {%- endif %}
78
+ {%- endif %}
79
+ {%- endfor %}
80
+ {%- if add_generation_prompt %}
81
+ {{- '<|im_start|>assistant\n' }}
82
+ {%- if enable_thinking is defined and enable_thinking is false %}
83
+ {{- '<think>\n\n</think>\n\n' }}
84
+ {%- endif %}
85
+ {%- endif %}
upper_block/config.json ADDED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architectures": [
3
+ "Qwen3ForCausalLM"
4
+ ],
5
+ "attention_bias": false,
6
+ "attention_dropout": 0.0,
7
+ "bos_token_id": 151643,
8
+ "dtype": "bfloat16",
9
+ "eos_token_id": 151643,
10
+ "head_dim": 128,
11
+ "hidden_act": "silu",
12
+ "hidden_size": 1024,
13
+ "initializer_range": 0.02,
14
+ "intermediate_size": 3072,
15
+ "layer_types": [
16
+ "full_attention",
17
+ "full_attention",
18
+ "full_attention",
19
+ "full_attention",
20
+ "full_attention",
21
+ "full_attention",
22
+ "full_attention",
23
+ "full_attention",
24
+ "full_attention",
25
+ "full_attention",
26
+ "full_attention",
27
+ "full_attention",
28
+ "full_attention",
29
+ "full_attention",
30
+ "full_attention",
31
+ "full_attention",
32
+ "full_attention",
33
+ "full_attention",
34
+ "full_attention",
35
+ "full_attention",
36
+ "full_attention",
37
+ "full_attention",
38
+ "full_attention",
39
+ "full_attention",
40
+ "full_attention",
41
+ "full_attention",
42
+ "full_attention",
43
+ "full_attention"
44
+ ],
45
+ "max_position_embeddings": 32768,
46
+ "max_window_layers": 28,
47
+ "model_type": "qwen3",
48
+ "num_attention_heads": 16,
49
+ "num_hidden_layers": 28,
50
+ "num_key_value_heads": 8,
51
+ "rms_norm_eps": 1e-06,
52
+ "rope_scaling": null,
53
+ "rope_theta": 1000000,
54
+ "sliding_window": null,
55
+ "tie_word_embeddings": true,
56
+ "transformers_version": "4.56.0",
57
+ "use_cache": true,
58
+ "use_sliding_window": false,
59
+ "vocab_size": 151936
60
+ }
upper_block/generation_config.json ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ {
2
+ "bos_token_id": 151643,
3
+ "eos_token_id": 151643,
4
+ "max_new_tokens": 2048,
5
+ "transformers_version": "4.56.0"
6
+ }
upper_block/merges.txt ADDED
The diff for this file is too large to render. See raw diff
 
upper_block/model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:95edbe59ec0ae705facc2eee3c8ab7057272fac2d36b355e4dcce8fe4435df2f
3
+ size 1192135096
upper_block/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": "<|endoftext|>",
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
+ }
upper_block/tokenizer.json ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:aeb13307a71acd8fe81861d94ad54ab689df773318809eed3cbe794b4492dae4
3
+ size 11422654
upper_block/tokenizer_config.json ADDED
@@ -0,0 +1,239 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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": "<|endoftext|>",
232
+ "errors": "replace",
233
+ "extra_special_tokens": {},
234
+ "model_max_length": 131072,
235
+ "pad_token": "<|endoftext|>",
236
+ "split_special_tokens": false,
237
+ "tokenizer_class": "Qwen2Tokenizer",
238
+ "unk_token": null
239
+ }
upper_block/vocab.json ADDED
The diff for this file is too large to render. See raw diff
 
vocab.json ADDED
The diff for this file is too large to render. See raw diff