mkrimmel-pplx commited on
Commit
76862c3
·
0 Parent(s):

Release contextual text and image embedding model

Browse files
.gitattributes ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
5
+ *.ckpt filter=lfs diff=lfs merge=lfs -text
6
+ *.ftz filter=lfs diff=lfs merge=lfs -text
7
+ *.gz filter=lfs diff=lfs merge=lfs -text
8
+ *.h5 filter=lfs diff=lfs merge=lfs -text
9
+ *.joblib filter=lfs diff=lfs merge=lfs -text
10
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
+ *.model filter=lfs diff=lfs merge=lfs -text
13
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
14
+ *.npy filter=lfs diff=lfs merge=lfs -text
15
+ *.npz filter=lfs diff=lfs merge=lfs -text
16
+ *.onnx filter=lfs diff=lfs merge=lfs -text
17
+ *.ot filter=lfs diff=lfs merge=lfs -text
18
+ *.parquet filter=lfs diff=lfs merge=lfs -text
19
+ *.pb filter=lfs diff=lfs merge=lfs -text
20
+ *.pickle filter=lfs diff=lfs merge=lfs -text
21
+ *.pkl filter=lfs diff=lfs merge=lfs -text
22
+ *.pt filter=lfs diff=lfs merge=lfs -text
23
+ *.pth filter=lfs diff=lfs merge=lfs -text
24
+ *.rar filter=lfs diff=lfs merge=lfs -text
25
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
26
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
28
+ *.tar filter=lfs diff=lfs merge=lfs -text
29
+ *.tflite filter=lfs diff=lfs merge=lfs -text
30
+ *.tgz filter=lfs diff=lfs merge=lfs -text
31
+ *.wasm filter=lfs diff=lfs merge=lfs -text
32
+ *.xz filter=lfs diff=lfs merge=lfs -text
33
+ *.zip filter=lfs diff=lfs merge=lfs -text
34
+ *.zst filter=lfs diff=lfs merge=lfs -text
35
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ tokenizer.json filter=lfs diff=lfs merge=lfs -text
README.md ADDED
@@ -0,0 +1,175 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: mit
3
+ base_model: perplexity-ai/pplx-embed-v2-late-9b
4
+ base_model_relation: finetune
5
+ library_name: transformers
6
+ pipeline_tag: feature-extraction
7
+ tags:
8
+ - feature-extraction
9
+ - sentence-similarity
10
+ - contextual-embeddings
11
+ - custom_code
12
+ language:
13
+ - multilingual
14
+ ---
15
+
16
+ <p align="center">
17
+ <img src="assets/logo.svg" alt="Perplexity Logo" width="400">
18
+ </p>
19
+
20
+ <p align="center">pplx-embed-v2-context: Multimodal Contextual Embeddings</p>
21
+
22
+ `pplx-embed-v2-context-9b` is a state-of-the-art vision-language embedding model for retrieval over text, images, and visual documents.
23
+ It supports contextual and non-contextual embeddings: In contextual mode, the model embeds chunks of a document with the surrounding context in view. In non-contextual mode, text inputs are embedded in isolation.
24
+ Its 1024-dimensional MRL prefix shares an embedding space with [pplx-embed-v2-context-0.6b](https://huggingface.co/perplexity-ai/pplx-embed-v2-context-0.6b). Documents can be embedded with one model and queried with another.
25
+
26
+ This model also supports contextual chunking for visual inputs. Chunked images can be retrieved via standard dense ANN indices. Chunking images can substantially improve retrieval performance.
27
+
28
+ > [!IMPORTANT]
29
+ > When encoding chunks in contextual mode, the document chunks should be **non-overlapping**.
30
+
31
+ > [!IMPORTANT]
32
+ > Queries and documents are encoded with **different methods**: use `encode_queries` for queries and `encode` for document chunks. The model is trained with separate query and document prefixes, and encoding queries with `encode` silently degrades retrieval quality.
33
+
34
+ > [!IMPORTANT]
35
+ > Like `pplx-embed-context-v1`, the model natively produces *unnormalized* int8-quantized embeddings. Compare embeddings with *cosine similarity*, or pass `normalize_embeddings=True` and use the dot product.
36
+
37
+ ## Text Embeddings
38
+
39
+ Requires `transformers>=5.4.0`, `torch`, `numpy`, `safetensors`, `tqdm`, Pillow, and torchvision. Install `flash-linear-attention` and `causal-conv1d` for the fast linear-attention path. The model uses custom code, so load it with `trust_remote_code=True`.
40
+
41
+ ```python
42
+ from transformers import AutoModel
43
+
44
+ model = AutoModel.from_pretrained(
45
+ "perplexity-ai/pplx-embed-v2-context-9b",
46
+ trust_remote_code=True,
47
+ ).to("cuda")
48
+
49
+ # Two documents, consisting of several chunks
50
+ documents = [
51
+ [
52
+ "Curiosity begins in childhood with endless questions about the world.",
53
+ "As we grow, curiosity drives us to explore new ideas.",
54
+ "Scientific breakthroughs often start with a curious question.",
55
+ ],
56
+ [
57
+ "The curiosity rover explores Mars searching for ancient life.",
58
+ "Each discovery on Mars sparks new questions about the universe.",
59
+ ],
60
+ ]
61
+
62
+ # Contextual mode
63
+ # One (chunk_count, 2048) array per document:
64
+ # chunk_embeddings[0].shape == (3, 2048), chunk_embeddings[1].shape == (2, 2048)
65
+ chunk_embeddings = model.encode(documents, normalize_embeddings=True)
66
+
67
+ # Each query is a single-chunk row.
68
+ queries = [["What drives scientific breakthroughs?"]]
69
+ query_embeddings = model.encode_queries(queries, normalize_embeddings=True)
70
+
71
+ scores = chunk_embeddings[0] @ query_embeddings[0][0]
72
+
73
+ # Non-contextual mode: flatten chunks into a batch of singletons
74
+ chunk_embeddings = model.encode(
75
+ [[chunk] for doc in documents for chunk in doc],
76
+ normalize_embeddings=True,
77
+ )
78
+ ```
79
+
80
+ `encode(documents, ...)` and `encode_queries(queries, ...)` accept:
81
+
82
+ | Argument | Default | Description |
83
+ |---|---|---|
84
+ | `batch_size` | `32` | Documents (or queries) per forward pass |
85
+ | `normalize_embeddings` | `False` | L2-normalize outputs |
86
+ | `convert_to_numpy` | `True` | Return NumPy arrays; `False` returns CPU tensors |
87
+ | `show_progress_bar` | `False` | Show a progress bar |
88
+ | `device` | `None` | Move the model to this device before encoding |
89
+
90
+ The text API does not truncate inputs. Split or truncate documents that exceed
91
+ the configured input length before encoding. To obtain one embedding per
92
+ document, pass each document as a single-chunk list.
93
+
94
+ ### Matryoshka dimensions
95
+
96
+ The model was trained with Matryoshka losses at **1024** and **2048** dimensions. To use 1024-dimensional embeddings, take the first 1024 values of each unnormalized embedding and normalize afterwards:
97
+
98
+ ```python
99
+ import numpy as np
100
+
101
+ emb = model.encode(documents) # unnormalized int8 values
102
+ emb_1024 = [e[:, :1024] / np.linalg.norm(e[:, :1024], axis=-1, keepdims=True) for e in emb]
103
+ ```
104
+
105
+ Apply the same truncation and normalization to image embeddings and query
106
+ embeddings. Use 1024 dimensions when comparing against embeddings from the
107
+ 0.6B model. Other truncation sizes were not trained.
108
+
109
+ ## Image Embeddings
110
+
111
+ Use `encode_images()` to embed document pages or other images as contextual
112
+ chunks. Pass a list of PIL images; each image produces one embedding per
113
+ horizontal band. Use `encode_queries()` for the corresponding text queries.
114
+
115
+ ```python
116
+ import torch
117
+ from PIL import Image
118
+ from transformers import AutoModel
119
+
120
+ model = AutoModel.from_pretrained(
121
+ "perplexity-ai/pplx-embed-v2-context-9b",
122
+ trust_remote_code=True,
123
+ dtype=torch.bfloat16,
124
+ attn_implementation="sdpa",
125
+ ).to("cuda").eval()
126
+
127
+ with Image.open("page.png") as page:
128
+ image_embeddings = model.encode_images(
129
+ [page.convert("RGB")],
130
+ chunks=8,
131
+ min_pixels=16384,
132
+ max_pixels=1800000,
133
+ normalize_embeddings=True,
134
+ )
135
+
136
+ query_embeddings = model.encode_queries(
137
+ [["What is the company's annual revenue?"]],
138
+ normalize_embeddings=True,
139
+ )
140
+ page_score = (image_embeddings[0] @ query_embeddings[0][0]).max()
141
+ ```
142
+
143
+ Each image is encoded in one contextual forward pass, with its merged visual
144
+ tokens divided into whole-row horizontal bands. Native three-axis MRoPE and image
145
+ wrappers are preserved. Separator tokens between bands use the midpoint of the
146
+ adjacent rows and the horizontal center of the image as their spatial position.
147
+ Only visual content is pooled; prefixes, wrappers, and separators are excluded.
148
+
149
+ `encode_images()` returns one `(actual_chunks, 2048)` array per page. The actual
150
+ chunk count is capped at the number of merged image rows.
151
+ Use cosine similarity per chunk and the maximum chunk score
152
+ for page retrieval, as shown above with normalized vectors.
153
+
154
+ | Image argument | Default | Description |
155
+ |---|---|---|
156
+ | `chunks` | `8` | Requested number of horizontal bands per page |
157
+ | `min_pixels` | `16384` | Processor minimum image pixel budget |
158
+ | `max_pixels` | `1800000` | Processor maximum image pixel budget |
159
+ | `batch_size` | `1` | Images per forward pass |
160
+
161
+ The image API also accepts `normalize_embeddings`, `convert_to_numpy`,
162
+ `show_progress_bar`, and `device` with the defaults listed above.
163
+ `prepare_images(images, chunks=8, min_pixels=16384, max_pixels=1800000)` exposes
164
+ the input tensors, chunk spans, masks, and position IDs without running the model.
165
+
166
+ ## Citation
167
+
168
+ ```bibtex
169
+ @online{perplexity2026ContextualEmbeddingBeyondTheGoldPassage,
170
+ author = {{Perplexity} and Sarah Eslami and William Barber and Markus Krimmel and Antoine Chaffin and Bo Wang and Louis Milliken and Jarrod Bryan and Claire Beamer and Jeremy Yang},
171
+ title = {{Contextual embedding beyond the gold passage}},
172
+ date = {2026-09-30},
173
+ url = {https://www.perplexity.ai/hub/blog/contextual-embedding-beyond-the-gold-passage}
174
+ }
175
+ ```
assets/logo.svg ADDED
config.json ADDED
@@ -0,0 +1,120 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architectures": [
3
+ "PplxContextualModel"
4
+ ],
5
+ "dtype": "float32",
6
+ "image_token_id": 248056,
7
+ "model_type": "pplx_contextual_qwen3_5",
8
+ "text_config": {
9
+ "attention_bias": false,
10
+ "attention_dropout": 0.0,
11
+ "attn_output_gate": true,
12
+ "bos_token_id": null,
13
+ "dtype": "float32",
14
+ "eos_token_id": 248044,
15
+ "full_attention_interval": 4,
16
+ "head_dim": 256,
17
+ "hidden_act": "silu",
18
+ "hidden_size": 4096,
19
+ "initializer_range": 0.02,
20
+ "intermediate_size": 12288,
21
+ "is_causal": false,
22
+ "layer_types": [
23
+ "linear_attention",
24
+ "linear_attention",
25
+ "linear_attention",
26
+ "full_attention",
27
+ "linear_attention",
28
+ "linear_attention",
29
+ "linear_attention",
30
+ "full_attention",
31
+ "linear_attention",
32
+ "linear_attention",
33
+ "linear_attention",
34
+ "full_attention",
35
+ "linear_attention",
36
+ "linear_attention",
37
+ "linear_attention",
38
+ "full_attention",
39
+ "linear_attention",
40
+ "linear_attention",
41
+ "linear_attention",
42
+ "full_attention",
43
+ "linear_attention",
44
+ "linear_attention",
45
+ "linear_attention",
46
+ "full_attention",
47
+ "linear_attention",
48
+ "linear_attention",
49
+ "linear_attention",
50
+ "full_attention",
51
+ "linear_attention",
52
+ "linear_attention",
53
+ "linear_attention",
54
+ "full_attention"
55
+ ],
56
+ "linear_conv_kernel_dim": 4,
57
+ "linear_key_head_dim": 128,
58
+ "linear_num_key_heads": 16,
59
+ "linear_num_value_heads": 32,
60
+ "linear_value_head_dim": 128,
61
+ "mamba_ssm_dtype": "float32",
62
+ "max_position_embeddings": 262144,
63
+ "mlp_only_layers": [],
64
+ "model_type": "qwen3_5_text",
65
+ "mtp_num_hidden_layers": 1,
66
+ "mtp_use_dedicated_embeddings": false,
67
+ "num_attention_heads": 16,
68
+ "num_hidden_layers": 32,
69
+ "num_key_value_heads": 4,
70
+ "pad_token_id": null,
71
+ "partial_rotary_factor": 0.25,
72
+ "rms_norm_eps": 1e-06,
73
+ "rope_parameters": {
74
+ "mrope_interleaved": true,
75
+ "mrope_section": [
76
+ 11,
77
+ 11,
78
+ 10
79
+ ],
80
+ "partial_rotary_factor": 0.25,
81
+ "rope_theta": 10000000,
82
+ "rope_type": "default"
83
+ },
84
+ "tie_word_embeddings": false,
85
+ "use_cache": false,
86
+ "vocab_size": 248320
87
+ },
88
+ "tie_word_embeddings": false,
89
+ "transformers_version": "5.3.0",
90
+ "video_token_id": 248057,
91
+ "vision_config": {
92
+ "deepstack_visual_indexes": [],
93
+ "depth": 27,
94
+ "dtype": "float32",
95
+ "hidden_act": "gelu_pytorch_tanh",
96
+ "hidden_size": 1152,
97
+ "in_channels": 3,
98
+ "initializer_range": 0.02,
99
+ "intermediate_size": 4304,
100
+ "model_type": "qwen3_5",
101
+ "num_heads": 16,
102
+ "num_position_embeddings": 2304,
103
+ "out_hidden_size": 4096,
104
+ "patch_size": 16,
105
+ "spatial_merge_size": 2,
106
+ "temporal_patch_size": 2
107
+ },
108
+ "vision_end_token_id": 248054,
109
+ "vision_start_token_id": 248053,
110
+ "auto_map": {
111
+ "AutoConfig": "configuration_pplx_contextual.PplxContextualConfig",
112
+ "AutoModel": "modeling_pplx_contextual.PplxContextualModel"
113
+ },
114
+ "embedding_dim": 2048,
115
+ "query_prefix": "[Q] ",
116
+ "document_prefix": "[D] ",
117
+ "boundary_marker": "<|chunk_sep|>",
118
+ "query_length": 262144,
119
+ "document_length": 262144
120
+ }
configuration_pplx_contextual.py ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from typing import Any
2
+
3
+ from transformers import Qwen3_5Config
4
+
5
+
6
+ class PplxContextualConfig(Qwen3_5Config):
7
+ model_type = "pplx_contextual_qwen3_5"
8
+
9
+ def __init__(
10
+ self,
11
+ embedding_dim: int = 2048,
12
+ query_prefix: str = "[Q] ",
13
+ document_prefix: str = "[D] ",
14
+ boundary_marker: str = "<|chunk_sep|>",
15
+ query_length: int = 32768,
16
+ document_length: int = 32768,
17
+ **kwargs: Any,
18
+ ) -> None:
19
+ super().__init__(**kwargs)
20
+ self.embedding_dim = embedding_dim
21
+ self.query_prefix = query_prefix
22
+ self.document_prefix = document_prefix
23
+ self.boundary_marker = boundary_marker
24
+ self.query_length = query_length
25
+ self.document_length = document_length
26
+ self.max_position_embeddings = document_length
27
+ self.text_config.use_cache = False
contextual_head.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:073d617eb35536b74598c8aaa3036ba7408c178b525ef27949e8074ffce6a51e
3
+ size 33554536
image_processing.py ADDED
@@ -0,0 +1,146 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Contextual retrieval chunks from a whole image's merged visual tokens."""
2
+
3
+ from dataclasses import dataclass
4
+
5
+ import torch
6
+ from PIL import Image
7
+ from torch.nn.utils.rnn import pad_sequence
8
+ from transformers import BatchEncoding
9
+
10
+ @dataclass(frozen=True)
11
+ class ImageInputMapper:
12
+ _processor: object
13
+ tokenizer: object
14
+ document_prefix: str
15
+ boundary_marker: str
16
+
17
+
18
+ @dataclass(frozen=True)
19
+ class ImageEncodingConfig:
20
+ chunks: int = 8
21
+ min_pixels: int = 16384
22
+ max_pixels: int = 1800000
23
+
24
+ def __post_init__(self) -> None:
25
+ assert self.chunks > 0
26
+ assert 0 < self.min_pixels <= self.max_pixels
27
+
28
+ def chunk_indices(self, indices: torch.Tensor, grid: torch.Tensor, merge_size: int) -> list[torch.Tensor]:
29
+ frames, height, width = map(int, grid)
30
+ assert frames == 1 and height % merge_size == 0 and width % merge_size == 0
31
+ height, width = height // merge_size, width // merge_size
32
+ assert len(indices) == height * width, "Visual token count does not match merged image grid"
33
+ return [band.flatten() for band in indices.reshape(height, width).tensor_split(min(self.chunks, height), dim=0)]
34
+
35
+ def prepare_native_batch(self, mapper: ImageInputMapper, images: list[Image.Image]) -> BatchEncoding:
36
+ processor = mapper._processor
37
+ placeholder = processor.vision_start_token + processor.image_token + processor.vision_end_token
38
+ batch = BatchEncoding(processor(
39
+ text=[placeholder] * len(images),
40
+ images=[[image] for image in images],
41
+ return_tensors="pt",
42
+ padding=True,
43
+ min_pixels=self.min_pixels,
44
+ max_pixels=self.max_pixels,
45
+ ))
46
+ prefix_id = mapper.tokenizer.convert_tokens_to_ids(mapper.document_prefix)
47
+ prefix = torch.full((len(images), 1), prefix_id, dtype=torch.long)
48
+ batch["input_ids"] = torch.cat((prefix, batch["input_ids"]), dim=1)
49
+ batch["attention_mask"] = torch.cat((torch.ones_like(prefix), batch["attention_mask"]), dim=1)
50
+ for key in ("mm_token_type_ids", "token_type_ids"):
51
+ if key in batch:
52
+ batch[key] = torch.cat((torch.zeros_like(prefix), batch[key]), dim=1)
53
+ assert "position_ids" not in batch
54
+ image_id = mapper.tokenizer.convert_tokens_to_ids(mapper._processor.image_token)
55
+ visual = batch["input_ids"] == image_id
56
+ assert torch.equal(batch["mm_token_type_ids"] == 1, visual)
57
+ spans = []
58
+ for row, grid in zip(visual, batch["image_grid_thw"], strict=True):
59
+ indices = row.nonzero().flatten()
60
+ assert torch.equal(indices, torch.arange(indices[0], indices[-1] + 1))
61
+ groups = self.chunk_indices(indices, grid, mapper._processor.image_processor.merge_size)
62
+ spans.append([(int(part[0]), int(part[-1]) + 1) for part in groups])
63
+ batch["chunk_token_spans"] = pad_sequence(
64
+ [torch.tensor(row, dtype=torch.long) for row in spans], batch_first=True
65
+ )
66
+ batch["chunk_mask"] = pad_sequence([torch.ones(len(row), dtype=torch.bool) for row in spans], batch_first=True)
67
+ return batch
68
+
69
+ def prepare(self, mapper: ImageInputMapper, images: list[Image.Image]) -> BatchEncoding:
70
+ batch = self.prepare_native_batch(mapper, images)
71
+ positions = torch.zeros(3, *batch["input_ids"].shape, dtype=torch.float32)
72
+ merge = mapper._processor.image_processor.merge_size
73
+ for row, grid in enumerate(batch["image_grid_thw"]):
74
+ active = batch["attention_mask"][row].bool()
75
+ visual = batch["mm_token_type_ids"][row, active] == 1
76
+ indices = visual.nonzero().flatten()
77
+ start, end = int(indices[0]), int(indices[-1]) + 1
78
+ height, width = int(grid[1]) // merge, int(grid[2]) // merge
79
+ native = torch.arange(int(active.sum())).float().expand(3, -1).clone()
80
+ native[:, start:end] = torch.stack(
81
+ (
82
+ torch.full((height * width,), start),
83
+ torch.arange(height).repeat_interleave(width) + start,
84
+ torch.arange(width).repeat(height) + start,
85
+ )
86
+ )
87
+ native[:, end:] = torch.arange(native.shape[1] - end) + start + max(height, width)
88
+ positions[:, row, active] = native
89
+ batch["position_ids"] = positions
90
+ return self.insert_native_separators(batch, mapper)
91
+
92
+ def boundary_positions(self, native: torch.Tensor, start: int, visual: torch.Tensor) -> torch.Tensor:
93
+ left, right = native[:, start - 1], native[:, start]
94
+ assert left[0] == right[0] and right[1] == left[1] + 1, "Separator must lie between adjacent image rows"
95
+ widths = native[2, visual]
96
+ return torch.stack((left[0], (left[1] + right[1]) / 2, (widths.min() + widths.max()) / 2))[:, None]
97
+
98
+ def insert_native_separators(self, batch: BatchEncoding, mapper: ImageInputMapper) -> BatchEncoding:
99
+ separator = mapper.tokenizer.encode(mapper.boundary_marker, add_special_tokens=False, split_special_tokens=True)
100
+ assert len(separator) == 1, "Image chunk boundaries require a single separator token"
101
+ assert batch["position_ids"].shape[0] == 3
102
+ token_keys = ["input_ids", "mm_token_type_ids"]
103
+ if "token_type_ids" in batch:
104
+ token_keys.append("token_type_ids")
105
+ rows = {key: [] for key in token_keys}
106
+ positions, spans = [], []
107
+ for row, mask in enumerate(batch["attention_mask"]):
108
+ active = mask.nonzero().flatten()
109
+ assert torch.equal(active, torch.arange(active[0], active[-1] + 1, device=active.device))
110
+ native = batch["position_ids"][:, row, active].float()
111
+ original = {key: batch[key][row, active] for key in token_keys}
112
+ parts = {key: [] for key in token_keys}
113
+ position_parts, row_spans = [], []
114
+ cursor, added = 0, 0
115
+ valid_spans = batch["chunk_token_spans"][row, batch["chunk_mask"][row]]
116
+ for index, (start, end) in enumerate(valid_spans.tolist()):
117
+ start, end = start - int(active[0]), end - int(active[0])
118
+ if index:
119
+ sep_positions = self.boundary_positions(native, start, original["mm_token_type_ids"] == 1)
120
+ count = sep_positions.shape[1]
121
+ for key in token_keys:
122
+ parts[key].append(original[key][cursor:start])
123
+ values = separator * (count // len(separator)) if key == "input_ids" else [0] * count
124
+ parts[key].append(original[key].new_tensor(values))
125
+ position_parts.extend((native[:, cursor:start], sep_positions))
126
+ added += count
127
+ cursor = start
128
+ row_spans.append((start + added, end + added))
129
+ for key in token_keys:
130
+ parts[key].append(original[key][cursor:])
131
+ rows[key].append(torch.cat(parts[key]))
132
+ position_parts.append(native[:, cursor:])
133
+ positions.append(torch.cat(position_parts, dim=1).T)
134
+ spans.append(row_spans)
135
+ for key in token_keys:
136
+ batch[key] = pad_sequence(
137
+ rows[key],
138
+ batch_first=True,
139
+ padding_value=mapper.tokenizer.pad_token_id if key == "input_ids" else 0,
140
+ )
141
+ batch["attention_mask"] = pad_sequence([torch.ones_like(row) for row in rows["input_ids"]], batch_first=True)
142
+ batch["position_ids"] = pad_sequence(positions, batch_first=True).permute(2, 0, 1)
143
+ batch["chunk_token_spans"] = pad_sequence(
144
+ [batch["chunk_token_spans"].new_tensor(row) for row in spans], batch_first=True
145
+ )
146
+ return batch
model-00001-of-00007.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:e4dbe24849b8310e1ebad77ac2af380c5a707af35ba1dfd5d40a1883c1d5afb8
3
+ size 4943302192
model-00002-of-00007.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:786daf6875c2d1cf3aabd0ebbc8ab45383449a5efed8874a88c24af9c13b39bd
3
+ size 4803180760
model-00003-of-00007.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:60b5429f715daae9cf4f9643934a6ec53a6943f2f190881159e17eec304579f8
3
+ size 4970987816
model-00004-of-00007.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:e30304189f45dad98b423aa228d3e8a0acca2bdde9b1a6a6e5ac98b78336118e
3
+ size 4938611312
model-00005-of-00007.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:1b7012b55a946c2859a2f74514899e0cfb644b4c67bd6a7b1a43b4942d7b6057
3
+ size 4953012272
model-00006-of-00007.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:7594d53d27c4b230a1a68ae06bd82c293bced745f2a0e667a5c345b6efd34f4b
3
+ size 4821156456
model-00007-of-00007.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:feffec312d10e3d3b25b39c2b62378ae28351a47a58fc3b50bd32e25c33ae208
3
+ size 4140617632
model.safetensors.index.json ADDED
@@ -0,0 +1,767 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "metadata": {
3
+ "total_size": 33604334528
4
+ },
5
+ "weight_map": {
6
+ "language_model.embed_tokens.weight": "model-00001-of-00007.safetensors",
7
+ "language_model.layers.0.input_layernorm.weight": "model-00001-of-00007.safetensors",
8
+ "language_model.layers.0.linear_attn.A_log": "model-00001-of-00007.safetensors",
9
+ "language_model.layers.0.linear_attn.conv1d.weight": "model-00001-of-00007.safetensors",
10
+ "language_model.layers.0.linear_attn.dt_bias": "model-00001-of-00007.safetensors",
11
+ "language_model.layers.0.linear_attn.in_proj_a.weight": "model-00001-of-00007.safetensors",
12
+ "language_model.layers.0.linear_attn.in_proj_b.weight": "model-00001-of-00007.safetensors",
13
+ "language_model.layers.0.linear_attn.in_proj_qkv.weight": "model-00001-of-00007.safetensors",
14
+ "language_model.layers.0.linear_attn.in_proj_z.weight": "model-00001-of-00007.safetensors",
15
+ "language_model.layers.0.linear_attn.norm.weight": "model-00001-of-00007.safetensors",
16
+ "language_model.layers.0.linear_attn.out_proj.weight": "model-00001-of-00007.safetensors",
17
+ "language_model.layers.0.mlp.down_proj.weight": "model-00001-of-00007.safetensors",
18
+ "language_model.layers.0.mlp.gate_proj.weight": "model-00001-of-00007.safetensors",
19
+ "language_model.layers.0.mlp.up_proj.weight": "model-00001-of-00007.safetensors",
20
+ "language_model.layers.0.post_attention_layernorm.weight": "model-00001-of-00007.safetensors",
21
+ "language_model.layers.1.input_layernorm.weight": "model-00001-of-00007.safetensors",
22
+ "language_model.layers.1.linear_attn.A_log": "model-00001-of-00007.safetensors",
23
+ "language_model.layers.1.linear_attn.conv1d.weight": "model-00001-of-00007.safetensors",
24
+ "language_model.layers.1.linear_attn.dt_bias": "model-00001-of-00007.safetensors",
25
+ "language_model.layers.1.linear_attn.in_proj_a.weight": "model-00001-of-00007.safetensors",
26
+ "language_model.layers.1.linear_attn.in_proj_b.weight": "model-00001-of-00007.safetensors",
27
+ "language_model.layers.1.linear_attn.in_proj_qkv.weight": "model-00002-of-00007.safetensors",
28
+ "language_model.layers.1.linear_attn.in_proj_z.weight": "model-00002-of-00007.safetensors",
29
+ "language_model.layers.1.linear_attn.norm.weight": "model-00002-of-00007.safetensors",
30
+ "language_model.layers.1.linear_attn.out_proj.weight": "model-00002-of-00007.safetensors",
31
+ "language_model.layers.1.mlp.down_proj.weight": "model-00002-of-00007.safetensors",
32
+ "language_model.layers.1.mlp.gate_proj.weight": "model-00002-of-00007.safetensors",
33
+ "language_model.layers.1.mlp.up_proj.weight": "model-00002-of-00007.safetensors",
34
+ "language_model.layers.1.post_attention_layernorm.weight": "model-00002-of-00007.safetensors",
35
+ "language_model.layers.10.input_layernorm.weight": "model-00003-of-00007.safetensors",
36
+ "language_model.layers.10.linear_attn.A_log": "model-00003-of-00007.safetensors",
37
+ "language_model.layers.10.linear_attn.conv1d.weight": "model-00003-of-00007.safetensors",
38
+ "language_model.layers.10.linear_attn.dt_bias": "model-00003-of-00007.safetensors",
39
+ "language_model.layers.10.linear_attn.in_proj_a.weight": "model-00003-of-00007.safetensors",
40
+ "language_model.layers.10.linear_attn.in_proj_b.weight": "model-00003-of-00007.safetensors",
41
+ "language_model.layers.10.linear_attn.in_proj_qkv.weight": "model-00003-of-00007.safetensors",
42
+ "language_model.layers.10.linear_attn.in_proj_z.weight": "model-00003-of-00007.safetensors",
43
+ "language_model.layers.10.linear_attn.norm.weight": "model-00003-of-00007.safetensors",
44
+ "language_model.layers.10.linear_attn.out_proj.weight": "model-00003-of-00007.safetensors",
45
+ "language_model.layers.10.mlp.down_proj.weight": "model-00003-of-00007.safetensors",
46
+ "language_model.layers.10.mlp.gate_proj.weight": "model-00003-of-00007.safetensors",
47
+ "language_model.layers.10.mlp.up_proj.weight": "model-00003-of-00007.safetensors",
48
+ "language_model.layers.10.post_attention_layernorm.weight": "model-00003-of-00007.safetensors",
49
+ "language_model.layers.11.input_layernorm.weight": "model-00003-of-00007.safetensors",
50
+ "language_model.layers.11.mlp.down_proj.weight": "model-00003-of-00007.safetensors",
51
+ "language_model.layers.11.mlp.gate_proj.weight": "model-00003-of-00007.safetensors",
52
+ "language_model.layers.11.mlp.up_proj.weight": "model-00003-of-00007.safetensors",
53
+ "language_model.layers.11.post_attention_layernorm.weight": "model-00003-of-00007.safetensors",
54
+ "language_model.layers.11.self_attn.k_norm.weight": "model-00003-of-00007.safetensors",
55
+ "language_model.layers.11.self_attn.k_proj.weight": "model-00003-of-00007.safetensors",
56
+ "language_model.layers.11.self_attn.o_proj.weight": "model-00003-of-00007.safetensors",
57
+ "language_model.layers.11.self_attn.q_norm.weight": "model-00003-of-00007.safetensors",
58
+ "language_model.layers.11.self_attn.q_proj.weight": "model-00003-of-00007.safetensors",
59
+ "language_model.layers.11.self_attn.v_proj.weight": "model-00003-of-00007.safetensors",
60
+ "language_model.layers.12.input_layernorm.weight": "model-00003-of-00007.safetensors",
61
+ "language_model.layers.12.linear_attn.A_log": "model-00003-of-00007.safetensors",
62
+ "language_model.layers.12.linear_attn.conv1d.weight": "model-00003-of-00007.safetensors",
63
+ "language_model.layers.12.linear_attn.dt_bias": "model-00003-of-00007.safetensors",
64
+ "language_model.layers.12.linear_attn.in_proj_a.weight": "model-00003-of-00007.safetensors",
65
+ "language_model.layers.12.linear_attn.in_proj_b.weight": "model-00003-of-00007.safetensors",
66
+ "language_model.layers.12.linear_attn.in_proj_qkv.weight": "model-00003-of-00007.safetensors",
67
+ "language_model.layers.12.linear_attn.in_proj_z.weight": "model-00003-of-00007.safetensors",
68
+ "language_model.layers.12.linear_attn.norm.weight": "model-00003-of-00007.safetensors",
69
+ "language_model.layers.12.linear_attn.out_proj.weight": "model-00003-of-00007.safetensors",
70
+ "language_model.layers.12.mlp.down_proj.weight": "model-00004-of-00007.safetensors",
71
+ "language_model.layers.12.mlp.gate_proj.weight": "model-00004-of-00007.safetensors",
72
+ "language_model.layers.12.mlp.up_proj.weight": "model-00004-of-00007.safetensors",
73
+ "language_model.layers.12.post_attention_layernorm.weight": "model-00004-of-00007.safetensors",
74
+ "language_model.layers.13.input_layernorm.weight": "model-00004-of-00007.safetensors",
75
+ "language_model.layers.13.linear_attn.A_log": "model-00004-of-00007.safetensors",
76
+ "language_model.layers.13.linear_attn.conv1d.weight": "model-00004-of-00007.safetensors",
77
+ "language_model.layers.13.linear_attn.dt_bias": "model-00004-of-00007.safetensors",
78
+ "language_model.layers.13.linear_attn.in_proj_a.weight": "model-00004-of-00007.safetensors",
79
+ "language_model.layers.13.linear_attn.in_proj_b.weight": "model-00004-of-00007.safetensors",
80
+ "language_model.layers.13.linear_attn.in_proj_qkv.weight": "model-00004-of-00007.safetensors",
81
+ "language_model.layers.13.linear_attn.in_proj_z.weight": "model-00004-of-00007.safetensors",
82
+ "language_model.layers.13.linear_attn.norm.weight": "model-00004-of-00007.safetensors",
83
+ "language_model.layers.13.linear_attn.out_proj.weight": "model-00004-of-00007.safetensors",
84
+ "language_model.layers.13.mlp.down_proj.weight": "model-00004-of-00007.safetensors",
85
+ "language_model.layers.13.mlp.gate_proj.weight": "model-00004-of-00007.safetensors",
86
+ "language_model.layers.13.mlp.up_proj.weight": "model-00004-of-00007.safetensors",
87
+ "language_model.layers.13.post_attention_layernorm.weight": "model-00004-of-00007.safetensors",
88
+ "language_model.layers.14.input_layernorm.weight": "model-00004-of-00007.safetensors",
89
+ "language_model.layers.14.linear_attn.A_log": "model-00004-of-00007.safetensors",
90
+ "language_model.layers.14.linear_attn.conv1d.weight": "model-00004-of-00007.safetensors",
91
+ "language_model.layers.14.linear_attn.dt_bias": "model-00004-of-00007.safetensors",
92
+ "language_model.layers.14.linear_attn.in_proj_a.weight": "model-00004-of-00007.safetensors",
93
+ "language_model.layers.14.linear_attn.in_proj_b.weight": "model-00004-of-00007.safetensors",
94
+ "language_model.layers.14.linear_attn.in_proj_qkv.weight": "model-00004-of-00007.safetensors",
95
+ "language_model.layers.14.linear_attn.in_proj_z.weight": "model-00004-of-00007.safetensors",
96
+ "language_model.layers.14.linear_attn.norm.weight": "model-00004-of-00007.safetensors",
97
+ "language_model.layers.14.linear_attn.out_proj.weight": "model-00004-of-00007.safetensors",
98
+ "language_model.layers.14.mlp.down_proj.weight": "model-00004-of-00007.safetensors",
99
+ "language_model.layers.14.mlp.gate_proj.weight": "model-00004-of-00007.safetensors",
100
+ "language_model.layers.14.mlp.up_proj.weight": "model-00004-of-00007.safetensors",
101
+ "language_model.layers.14.post_attention_layernorm.weight": "model-00004-of-00007.safetensors",
102
+ "language_model.layers.15.input_layernorm.weight": "model-00004-of-00007.safetensors",
103
+ "language_model.layers.15.mlp.down_proj.weight": "model-00004-of-00007.safetensors",
104
+ "language_model.layers.15.mlp.gate_proj.weight": "model-00004-of-00007.safetensors",
105
+ "language_model.layers.15.mlp.up_proj.weight": "model-00004-of-00007.safetensors",
106
+ "language_model.layers.15.post_attention_layernorm.weight": "model-00004-of-00007.safetensors",
107
+ "language_model.layers.15.self_attn.k_norm.weight": "model-00004-of-00007.safetensors",
108
+ "language_model.layers.15.self_attn.k_proj.weight": "model-00004-of-00007.safetensors",
109
+ "language_model.layers.15.self_attn.o_proj.weight": "model-00004-of-00007.safetensors",
110
+ "language_model.layers.15.self_attn.q_norm.weight": "model-00004-of-00007.safetensors",
111
+ "language_model.layers.15.self_attn.q_proj.weight": "model-00004-of-00007.safetensors",
112
+ "language_model.layers.15.self_attn.v_proj.weight": "model-00004-of-00007.safetensors",
113
+ "language_model.layers.16.input_layernorm.weight": "model-00004-of-00007.safetensors",
114
+ "language_model.layers.16.linear_attn.A_log": "model-00004-of-00007.safetensors",
115
+ "language_model.layers.16.linear_attn.conv1d.weight": "model-00004-of-00007.safetensors",
116
+ "language_model.layers.16.linear_attn.dt_bias": "model-00004-of-00007.safetensors",
117
+ "language_model.layers.16.linear_attn.in_proj_a.weight": "model-00004-of-00007.safetensors",
118
+ "language_model.layers.16.linear_attn.in_proj_b.weight": "model-00004-of-00007.safetensors",
119
+ "language_model.layers.16.linear_attn.in_proj_qkv.weight": "model-00004-of-00007.safetensors",
120
+ "language_model.layers.16.linear_attn.in_proj_z.weight": "model-00004-of-00007.safetensors",
121
+ "language_model.layers.16.linear_attn.norm.weight": "model-00004-of-00007.safetensors",
122
+ "language_model.layers.16.linear_attn.out_proj.weight": "model-00004-of-00007.safetensors",
123
+ "language_model.layers.16.mlp.down_proj.weight": "model-00004-of-00007.safetensors",
124
+ "language_model.layers.16.mlp.gate_proj.weight": "model-00004-of-00007.safetensors",
125
+ "language_model.layers.16.mlp.up_proj.weight": "model-00004-of-00007.safetensors",
126
+ "language_model.layers.16.post_attention_layernorm.weight": "model-00004-of-00007.safetensors",
127
+ "language_model.layers.17.input_layernorm.weight": "model-00004-of-00007.safetensors",
128
+ "language_model.layers.17.linear_attn.A_log": "model-00004-of-00007.safetensors",
129
+ "language_model.layers.17.linear_attn.conv1d.weight": "model-00004-of-00007.safetensors",
130
+ "language_model.layers.17.linear_attn.dt_bias": "model-00004-of-00007.safetensors",
131
+ "language_model.layers.17.linear_attn.in_proj_a.weight": "model-00004-of-00007.safetensors",
132
+ "language_model.layers.17.linear_attn.in_proj_b.weight": "model-00004-of-00007.safetensors",
133
+ "language_model.layers.17.linear_attn.in_proj_qkv.weight": "model-00004-of-00007.safetensors",
134
+ "language_model.layers.17.linear_attn.in_proj_z.weight": "model-00004-of-00007.safetensors",
135
+ "language_model.layers.17.linear_attn.norm.weight": "model-00004-of-00007.safetensors",
136
+ "language_model.layers.17.linear_attn.out_proj.weight": "model-00004-of-00007.safetensors",
137
+ "language_model.layers.17.mlp.down_proj.weight": "model-00004-of-00007.safetensors",
138
+ "language_model.layers.17.mlp.gate_proj.weight": "model-00004-of-00007.safetensors",
139
+ "language_model.layers.17.mlp.up_proj.weight": "model-00004-of-00007.safetensors",
140
+ "language_model.layers.17.post_attention_layernorm.weight": "model-00004-of-00007.safetensors",
141
+ "language_model.layers.18.input_layernorm.weight": "model-00004-of-00007.safetensors",
142
+ "language_model.layers.18.linear_attn.A_log": "model-00004-of-00007.safetensors",
143
+ "language_model.layers.18.linear_attn.conv1d.weight": "model-00004-of-00007.safetensors",
144
+ "language_model.layers.18.linear_attn.dt_bias": "model-00004-of-00007.safetensors",
145
+ "language_model.layers.18.linear_attn.in_proj_a.weight": "model-00004-of-00007.safetensors",
146
+ "language_model.layers.18.linear_attn.in_proj_b.weight": "model-00004-of-00007.safetensors",
147
+ "language_model.layers.18.linear_attn.in_proj_qkv.weight": "model-00005-of-00007.safetensors",
148
+ "language_model.layers.18.linear_attn.in_proj_z.weight": "model-00005-of-00007.safetensors",
149
+ "language_model.layers.18.linear_attn.norm.weight": "model-00005-of-00007.safetensors",
150
+ "language_model.layers.18.linear_attn.out_proj.weight": "model-00005-of-00007.safetensors",
151
+ "language_model.layers.18.mlp.down_proj.weight": "model-00005-of-00007.safetensors",
152
+ "language_model.layers.18.mlp.gate_proj.weight": "model-00005-of-00007.safetensors",
153
+ "language_model.layers.18.mlp.up_proj.weight": "model-00005-of-00007.safetensors",
154
+ "language_model.layers.18.post_attention_layernorm.weight": "model-00005-of-00007.safetensors",
155
+ "language_model.layers.19.input_layernorm.weight": "model-00005-of-00007.safetensors",
156
+ "language_model.layers.19.mlp.down_proj.weight": "model-00005-of-00007.safetensors",
157
+ "language_model.layers.19.mlp.gate_proj.weight": "model-00005-of-00007.safetensors",
158
+ "language_model.layers.19.mlp.up_proj.weight": "model-00005-of-00007.safetensors",
159
+ "language_model.layers.19.post_attention_layernorm.weight": "model-00005-of-00007.safetensors",
160
+ "language_model.layers.19.self_attn.k_norm.weight": "model-00005-of-00007.safetensors",
161
+ "language_model.layers.19.self_attn.k_proj.weight": "model-00005-of-00007.safetensors",
162
+ "language_model.layers.19.self_attn.o_proj.weight": "model-00005-of-00007.safetensors",
163
+ "language_model.layers.19.self_attn.q_norm.weight": "model-00005-of-00007.safetensors",
164
+ "language_model.layers.19.self_attn.q_proj.weight": "model-00005-of-00007.safetensors",
165
+ "language_model.layers.19.self_attn.v_proj.weight": "model-00005-of-00007.safetensors",
166
+ "language_model.layers.2.input_layernorm.weight": "model-00002-of-00007.safetensors",
167
+ "language_model.layers.2.linear_attn.A_log": "model-00002-of-00007.safetensors",
168
+ "language_model.layers.2.linear_attn.conv1d.weight": "model-00002-of-00007.safetensors",
169
+ "language_model.layers.2.linear_attn.dt_bias": "model-00002-of-00007.safetensors",
170
+ "language_model.layers.2.linear_attn.in_proj_a.weight": "model-00002-of-00007.safetensors",
171
+ "language_model.layers.2.linear_attn.in_proj_b.weight": "model-00002-of-00007.safetensors",
172
+ "language_model.layers.2.linear_attn.in_proj_qkv.weight": "model-00002-of-00007.safetensors",
173
+ "language_model.layers.2.linear_attn.in_proj_z.weight": "model-00002-of-00007.safetensors",
174
+ "language_model.layers.2.linear_attn.norm.weight": "model-00002-of-00007.safetensors",
175
+ "language_model.layers.2.linear_attn.out_proj.weight": "model-00002-of-00007.safetensors",
176
+ "language_model.layers.2.mlp.down_proj.weight": "model-00002-of-00007.safetensors",
177
+ "language_model.layers.2.mlp.gate_proj.weight": "model-00002-of-00007.safetensors",
178
+ "language_model.layers.2.mlp.up_proj.weight": "model-00002-of-00007.safetensors",
179
+ "language_model.layers.2.post_attention_layernorm.weight": "model-00002-of-00007.safetensors",
180
+ "language_model.layers.20.input_layernorm.weight": "model-00005-of-00007.safetensors",
181
+ "language_model.layers.20.linear_attn.A_log": "model-00005-of-00007.safetensors",
182
+ "language_model.layers.20.linear_attn.conv1d.weight": "model-00005-of-00007.safetensors",
183
+ "language_model.layers.20.linear_attn.dt_bias": "model-00005-of-00007.safetensors",
184
+ "language_model.layers.20.linear_attn.in_proj_a.weight": "model-00005-of-00007.safetensors",
185
+ "language_model.layers.20.linear_attn.in_proj_b.weight": "model-00005-of-00007.safetensors",
186
+ "language_model.layers.20.linear_attn.in_proj_qkv.weight": "model-00005-of-00007.safetensors",
187
+ "language_model.layers.20.linear_attn.in_proj_z.weight": "model-00005-of-00007.safetensors",
188
+ "language_model.layers.20.linear_attn.norm.weight": "model-00005-of-00007.safetensors",
189
+ "language_model.layers.20.linear_attn.out_proj.weight": "model-00005-of-00007.safetensors",
190
+ "language_model.layers.20.mlp.down_proj.weight": "model-00005-of-00007.safetensors",
191
+ "language_model.layers.20.mlp.gate_proj.weight": "model-00005-of-00007.safetensors",
192
+ "language_model.layers.20.mlp.up_proj.weight": "model-00005-of-00007.safetensors",
193
+ "language_model.layers.20.post_attention_layernorm.weight": "model-00005-of-00007.safetensors",
194
+ "language_model.layers.21.input_layernorm.weight": "model-00005-of-00007.safetensors",
195
+ "language_model.layers.21.linear_attn.A_log": "model-00005-of-00007.safetensors",
196
+ "language_model.layers.21.linear_attn.conv1d.weight": "model-00005-of-00007.safetensors",
197
+ "language_model.layers.21.linear_attn.dt_bias": "model-00005-of-00007.safetensors",
198
+ "language_model.layers.21.linear_attn.in_proj_a.weight": "model-00005-of-00007.safetensors",
199
+ "language_model.layers.21.linear_attn.in_proj_b.weight": "model-00005-of-00007.safetensors",
200
+ "language_model.layers.21.linear_attn.in_proj_qkv.weight": "model-00005-of-00007.safetensors",
201
+ "language_model.layers.21.linear_attn.in_proj_z.weight": "model-00005-of-00007.safetensors",
202
+ "language_model.layers.21.linear_attn.norm.weight": "model-00005-of-00007.safetensors",
203
+ "language_model.layers.21.linear_attn.out_proj.weight": "model-00005-of-00007.safetensors",
204
+ "language_model.layers.21.mlp.down_proj.weight": "model-00005-of-00007.safetensors",
205
+ "language_model.layers.21.mlp.gate_proj.weight": "model-00005-of-00007.safetensors",
206
+ "language_model.layers.21.mlp.up_proj.weight": "model-00005-of-00007.safetensors",
207
+ "language_model.layers.21.post_attention_layernorm.weight": "model-00005-of-00007.safetensors",
208
+ "language_model.layers.22.input_layernorm.weight": "model-00005-of-00007.safetensors",
209
+ "language_model.layers.22.linear_attn.A_log": "model-00005-of-00007.safetensors",
210
+ "language_model.layers.22.linear_attn.conv1d.weight": "model-00005-of-00007.safetensors",
211
+ "language_model.layers.22.linear_attn.dt_bias": "model-00005-of-00007.safetensors",
212
+ "language_model.layers.22.linear_attn.in_proj_a.weight": "model-00005-of-00007.safetensors",
213
+ "language_model.layers.22.linear_attn.in_proj_b.weight": "model-00005-of-00007.safetensors",
214
+ "language_model.layers.22.linear_attn.in_proj_qkv.weight": "model-00005-of-00007.safetensors",
215
+ "language_model.layers.22.linear_attn.in_proj_z.weight": "model-00005-of-00007.safetensors",
216
+ "language_model.layers.22.linear_attn.norm.weight": "model-00005-of-00007.safetensors",
217
+ "language_model.layers.22.linear_attn.out_proj.weight": "model-00005-of-00007.safetensors",
218
+ "language_model.layers.22.mlp.down_proj.weight": "model-00005-of-00007.safetensors",
219
+ "language_model.layers.22.mlp.gate_proj.weight": "model-00005-of-00007.safetensors",
220
+ "language_model.layers.22.mlp.up_proj.weight": "model-00005-of-00007.safetensors",
221
+ "language_model.layers.22.post_attention_layernorm.weight": "model-00005-of-00007.safetensors",
222
+ "language_model.layers.23.input_layernorm.weight": "model-00005-of-00007.safetensors",
223
+ "language_model.layers.23.mlp.down_proj.weight": "model-00005-of-00007.safetensors",
224
+ "language_model.layers.23.mlp.gate_proj.weight": "model-00005-of-00007.safetensors",
225
+ "language_model.layers.23.mlp.up_proj.weight": "model-00005-of-00007.safetensors",
226
+ "language_model.layers.23.post_attention_layernorm.weight": "model-00005-of-00007.safetensors",
227
+ "language_model.layers.23.self_attn.k_norm.weight": "model-00005-of-00007.safetensors",
228
+ "language_model.layers.23.self_attn.k_proj.weight": "model-00005-of-00007.safetensors",
229
+ "language_model.layers.23.self_attn.o_proj.weight": "model-00006-of-00007.safetensors",
230
+ "language_model.layers.23.self_attn.q_norm.weight": "model-00006-of-00007.safetensors",
231
+ "language_model.layers.23.self_attn.q_proj.weight": "model-00006-of-00007.safetensors",
232
+ "language_model.layers.23.self_attn.v_proj.weight": "model-00006-of-00007.safetensors",
233
+ "language_model.layers.24.input_layernorm.weight": "model-00006-of-00007.safetensors",
234
+ "language_model.layers.24.linear_attn.A_log": "model-00006-of-00007.safetensors",
235
+ "language_model.layers.24.linear_attn.conv1d.weight": "model-00006-of-00007.safetensors",
236
+ "language_model.layers.24.linear_attn.dt_bias": "model-00006-of-00007.safetensors",
237
+ "language_model.layers.24.linear_attn.in_proj_a.weight": "model-00006-of-00007.safetensors",
238
+ "language_model.layers.24.linear_attn.in_proj_b.weight": "model-00006-of-00007.safetensors",
239
+ "language_model.layers.24.linear_attn.in_proj_qkv.weight": "model-00006-of-00007.safetensors",
240
+ "language_model.layers.24.linear_attn.in_proj_z.weight": "model-00006-of-00007.safetensors",
241
+ "language_model.layers.24.linear_attn.norm.weight": "model-00006-of-00007.safetensors",
242
+ "language_model.layers.24.linear_attn.out_proj.weight": "model-00006-of-00007.safetensors",
243
+ "language_model.layers.24.mlp.down_proj.weight": "model-00006-of-00007.safetensors",
244
+ "language_model.layers.24.mlp.gate_proj.weight": "model-00006-of-00007.safetensors",
245
+ "language_model.layers.24.mlp.up_proj.weight": "model-00006-of-00007.safetensors",
246
+ "language_model.layers.24.post_attention_layernorm.weight": "model-00006-of-00007.safetensors",
247
+ "language_model.layers.25.input_layernorm.weight": "model-00006-of-00007.safetensors",
248
+ "language_model.layers.25.linear_attn.A_log": "model-00006-of-00007.safetensors",
249
+ "language_model.layers.25.linear_attn.conv1d.weight": "model-00006-of-00007.safetensors",
250
+ "language_model.layers.25.linear_attn.dt_bias": "model-00006-of-00007.safetensors",
251
+ "language_model.layers.25.linear_attn.in_proj_a.weight": "model-00006-of-00007.safetensors",
252
+ "language_model.layers.25.linear_attn.in_proj_b.weight": "model-00006-of-00007.safetensors",
253
+ "language_model.layers.25.linear_attn.in_proj_qkv.weight": "model-00006-of-00007.safetensors",
254
+ "language_model.layers.25.linear_attn.in_proj_z.weight": "model-00006-of-00007.safetensors",
255
+ "language_model.layers.25.linear_attn.norm.weight": "model-00006-of-00007.safetensors",
256
+ "language_model.layers.25.linear_attn.out_proj.weight": "model-00006-of-00007.safetensors",
257
+ "language_model.layers.25.mlp.down_proj.weight": "model-00006-of-00007.safetensors",
258
+ "language_model.layers.25.mlp.gate_proj.weight": "model-00006-of-00007.safetensors",
259
+ "language_model.layers.25.mlp.up_proj.weight": "model-00006-of-00007.safetensors",
260
+ "language_model.layers.25.post_attention_layernorm.weight": "model-00006-of-00007.safetensors",
261
+ "language_model.layers.26.input_layernorm.weight": "model-00006-of-00007.safetensors",
262
+ "language_model.layers.26.linear_attn.A_log": "model-00006-of-00007.safetensors",
263
+ "language_model.layers.26.linear_attn.conv1d.weight": "model-00006-of-00007.safetensors",
264
+ "language_model.layers.26.linear_attn.dt_bias": "model-00006-of-00007.safetensors",
265
+ "language_model.layers.26.linear_attn.in_proj_a.weight": "model-00006-of-00007.safetensors",
266
+ "language_model.layers.26.linear_attn.in_proj_b.weight": "model-00006-of-00007.safetensors",
267
+ "language_model.layers.26.linear_attn.in_proj_qkv.weight": "model-00006-of-00007.safetensors",
268
+ "language_model.layers.26.linear_attn.in_proj_z.weight": "model-00006-of-00007.safetensors",
269
+ "language_model.layers.26.linear_attn.norm.weight": "model-00006-of-00007.safetensors",
270
+ "language_model.layers.26.linear_attn.out_proj.weight": "model-00006-of-00007.safetensors",
271
+ "language_model.layers.26.mlp.down_proj.weight": "model-00006-of-00007.safetensors",
272
+ "language_model.layers.26.mlp.gate_proj.weight": "model-00006-of-00007.safetensors",
273
+ "language_model.layers.26.mlp.up_proj.weight": "model-00006-of-00007.safetensors",
274
+ "language_model.layers.26.post_attention_layernorm.weight": "model-00006-of-00007.safetensors",
275
+ "language_model.layers.27.input_layernorm.weight": "model-00006-of-00007.safetensors",
276
+ "language_model.layers.27.mlp.down_proj.weight": "model-00006-of-00007.safetensors",
277
+ "language_model.layers.27.mlp.gate_proj.weight": "model-00006-of-00007.safetensors",
278
+ "language_model.layers.27.mlp.up_proj.weight": "model-00006-of-00007.safetensors",
279
+ "language_model.layers.27.post_attention_layernorm.weight": "model-00006-of-00007.safetensors",
280
+ "language_model.layers.27.self_attn.k_norm.weight": "model-00006-of-00007.safetensors",
281
+ "language_model.layers.27.self_attn.k_proj.weight": "model-00006-of-00007.safetensors",
282
+ "language_model.layers.27.self_attn.o_proj.weight": "model-00006-of-00007.safetensors",
283
+ "language_model.layers.27.self_attn.q_norm.weight": "model-00006-of-00007.safetensors",
284
+ "language_model.layers.27.self_attn.q_proj.weight": "model-00006-of-00007.safetensors",
285
+ "language_model.layers.27.self_attn.v_proj.weight": "model-00006-of-00007.safetensors",
286
+ "language_model.layers.28.input_layernorm.weight": "model-00006-of-00007.safetensors",
287
+ "language_model.layers.28.linear_attn.A_log": "model-00006-of-00007.safetensors",
288
+ "language_model.layers.28.linear_attn.conv1d.weight": "model-00006-of-00007.safetensors",
289
+ "language_model.layers.28.linear_attn.dt_bias": "model-00006-of-00007.safetensors",
290
+ "language_model.layers.28.linear_attn.in_proj_a.weight": "model-00006-of-00007.safetensors",
291
+ "language_model.layers.28.linear_attn.in_proj_b.weight": "model-00006-of-00007.safetensors",
292
+ "language_model.layers.28.linear_attn.in_proj_qkv.weight": "model-00006-of-00007.safetensors",
293
+ "language_model.layers.28.linear_attn.in_proj_z.weight": "model-00006-of-00007.safetensors",
294
+ "language_model.layers.28.linear_attn.norm.weight": "model-00006-of-00007.safetensors",
295
+ "language_model.layers.28.linear_attn.out_proj.weight": "model-00006-of-00007.safetensors",
296
+ "language_model.layers.28.mlp.down_proj.weight": "model-00006-of-00007.safetensors",
297
+ "language_model.layers.28.mlp.gate_proj.weight": "model-00006-of-00007.safetensors",
298
+ "language_model.layers.28.mlp.up_proj.weight": "model-00006-of-00007.safetensors",
299
+ "language_model.layers.28.post_attention_layernorm.weight": "model-00006-of-00007.safetensors",
300
+ "language_model.layers.29.input_layernorm.weight": "model-00006-of-00007.safetensors",
301
+ "language_model.layers.29.linear_attn.A_log": "model-00006-of-00007.safetensors",
302
+ "language_model.layers.29.linear_attn.conv1d.weight": "model-00006-of-00007.safetensors",
303
+ "language_model.layers.29.linear_attn.dt_bias": "model-00006-of-00007.safetensors",
304
+ "language_model.layers.29.linear_attn.in_proj_a.weight": "model-00006-of-00007.safetensors",
305
+ "language_model.layers.29.linear_attn.in_proj_b.weight": "model-00006-of-00007.safetensors",
306
+ "language_model.layers.29.linear_attn.in_proj_qkv.weight": "model-00006-of-00007.safetensors",
307
+ "language_model.layers.29.linear_attn.in_proj_z.weight": "model-00006-of-00007.safetensors",
308
+ "language_model.layers.29.linear_attn.norm.weight": "model-00006-of-00007.safetensors",
309
+ "language_model.layers.29.linear_attn.out_proj.weight": "model-00006-of-00007.safetensors",
310
+ "language_model.layers.29.mlp.down_proj.weight": "model-00007-of-00007.safetensors",
311
+ "language_model.layers.29.mlp.gate_proj.weight": "model-00007-of-00007.safetensors",
312
+ "language_model.layers.29.mlp.up_proj.weight": "model-00007-of-00007.safetensors",
313
+ "language_model.layers.29.post_attention_layernorm.weight": "model-00007-of-00007.safetensors",
314
+ "language_model.layers.3.input_layernorm.weight": "model-00002-of-00007.safetensors",
315
+ "language_model.layers.3.mlp.down_proj.weight": "model-00002-of-00007.safetensors",
316
+ "language_model.layers.3.mlp.gate_proj.weight": "model-00002-of-00007.safetensors",
317
+ "language_model.layers.3.mlp.up_proj.weight": "model-00002-of-00007.safetensors",
318
+ "language_model.layers.3.post_attention_layernorm.weight": "model-00002-of-00007.safetensors",
319
+ "language_model.layers.3.self_attn.k_norm.weight": "model-00002-of-00007.safetensors",
320
+ "language_model.layers.3.self_attn.k_proj.weight": "model-00002-of-00007.safetensors",
321
+ "language_model.layers.3.self_attn.o_proj.weight": "model-00002-of-00007.safetensors",
322
+ "language_model.layers.3.self_attn.q_norm.weight": "model-00002-of-00007.safetensors",
323
+ "language_model.layers.3.self_attn.q_proj.weight": "model-00002-of-00007.safetensors",
324
+ "language_model.layers.3.self_attn.v_proj.weight": "model-00002-of-00007.safetensors",
325
+ "language_model.layers.30.input_layernorm.weight": "model-00007-of-00007.safetensors",
326
+ "language_model.layers.30.linear_attn.A_log": "model-00007-of-00007.safetensors",
327
+ "language_model.layers.30.linear_attn.conv1d.weight": "model-00007-of-00007.safetensors",
328
+ "language_model.layers.30.linear_attn.dt_bias": "model-00007-of-00007.safetensors",
329
+ "language_model.layers.30.linear_attn.in_proj_a.weight": "model-00007-of-00007.safetensors",
330
+ "language_model.layers.30.linear_attn.in_proj_b.weight": "model-00007-of-00007.safetensors",
331
+ "language_model.layers.30.linear_attn.in_proj_qkv.weight": "model-00007-of-00007.safetensors",
332
+ "language_model.layers.30.linear_attn.in_proj_z.weight": "model-00007-of-00007.safetensors",
333
+ "language_model.layers.30.linear_attn.norm.weight": "model-00007-of-00007.safetensors",
334
+ "language_model.layers.30.linear_attn.out_proj.weight": "model-00007-of-00007.safetensors",
335
+ "language_model.layers.30.mlp.down_proj.weight": "model-00007-of-00007.safetensors",
336
+ "language_model.layers.30.mlp.gate_proj.weight": "model-00007-of-00007.safetensors",
337
+ "language_model.layers.30.mlp.up_proj.weight": "model-00007-of-00007.safetensors",
338
+ "language_model.layers.30.post_attention_layernorm.weight": "model-00007-of-00007.safetensors",
339
+ "language_model.layers.31.input_layernorm.weight": "model-00007-of-00007.safetensors",
340
+ "language_model.layers.31.mlp.down_proj.weight": "model-00007-of-00007.safetensors",
341
+ "language_model.layers.31.mlp.gate_proj.weight": "model-00007-of-00007.safetensors",
342
+ "language_model.layers.31.mlp.up_proj.weight": "model-00007-of-00007.safetensors",
343
+ "language_model.layers.31.post_attention_layernorm.weight": "model-00007-of-00007.safetensors",
344
+ "language_model.layers.31.self_attn.k_norm.weight": "model-00007-of-00007.safetensors",
345
+ "language_model.layers.31.self_attn.k_proj.weight": "model-00007-of-00007.safetensors",
346
+ "language_model.layers.31.self_attn.o_proj.weight": "model-00007-of-00007.safetensors",
347
+ "language_model.layers.31.self_attn.q_norm.weight": "model-00007-of-00007.safetensors",
348
+ "language_model.layers.31.self_attn.q_proj.weight": "model-00007-of-00007.safetensors",
349
+ "language_model.layers.31.self_attn.v_proj.weight": "model-00007-of-00007.safetensors",
350
+ "language_model.layers.4.input_layernorm.weight": "model-00002-of-00007.safetensors",
351
+ "language_model.layers.4.linear_attn.A_log": "model-00002-of-00007.safetensors",
352
+ "language_model.layers.4.linear_attn.conv1d.weight": "model-00002-of-00007.safetensors",
353
+ "language_model.layers.4.linear_attn.dt_bias": "model-00002-of-00007.safetensors",
354
+ "language_model.layers.4.linear_attn.in_proj_a.weight": "model-00002-of-00007.safetensors",
355
+ "language_model.layers.4.linear_attn.in_proj_b.weight": "model-00002-of-00007.safetensors",
356
+ "language_model.layers.4.linear_attn.in_proj_qkv.weight": "model-00002-of-00007.safetensors",
357
+ "language_model.layers.4.linear_attn.in_proj_z.weight": "model-00002-of-00007.safetensors",
358
+ "language_model.layers.4.linear_attn.norm.weight": "model-00002-of-00007.safetensors",
359
+ "language_model.layers.4.linear_attn.out_proj.weight": "model-00002-of-00007.safetensors",
360
+ "language_model.layers.4.mlp.down_proj.weight": "model-00002-of-00007.safetensors",
361
+ "language_model.layers.4.mlp.gate_proj.weight": "model-00002-of-00007.safetensors",
362
+ "language_model.layers.4.mlp.up_proj.weight": "model-00002-of-00007.safetensors",
363
+ "language_model.layers.4.post_attention_layernorm.weight": "model-00002-of-00007.safetensors",
364
+ "language_model.layers.5.input_layernorm.weight": "model-00002-of-00007.safetensors",
365
+ "language_model.layers.5.linear_attn.A_log": "model-00002-of-00007.safetensors",
366
+ "language_model.layers.5.linear_attn.conv1d.weight": "model-00002-of-00007.safetensors",
367
+ "language_model.layers.5.linear_attn.dt_bias": "model-00002-of-00007.safetensors",
368
+ "language_model.layers.5.linear_attn.in_proj_a.weight": "model-00002-of-00007.safetensors",
369
+ "language_model.layers.5.linear_attn.in_proj_b.weight": "model-00002-of-00007.safetensors",
370
+ "language_model.layers.5.linear_attn.in_proj_qkv.weight": "model-00002-of-00007.safetensors",
371
+ "language_model.layers.5.linear_attn.in_proj_z.weight": "model-00002-of-00007.safetensors",
372
+ "language_model.layers.5.linear_attn.norm.weight": "model-00002-of-00007.safetensors",
373
+ "language_model.layers.5.linear_attn.out_proj.weight": "model-00002-of-00007.safetensors",
374
+ "language_model.layers.5.mlp.down_proj.weight": "model-00002-of-00007.safetensors",
375
+ "language_model.layers.5.mlp.gate_proj.weight": "model-00002-of-00007.safetensors",
376
+ "language_model.layers.5.mlp.up_proj.weight": "model-00002-of-00007.safetensors",
377
+ "language_model.layers.5.post_attention_layernorm.weight": "model-00002-of-00007.safetensors",
378
+ "language_model.layers.6.input_layernorm.weight": "model-00002-of-00007.safetensors",
379
+ "language_model.layers.6.linear_attn.A_log": "model-00002-of-00007.safetensors",
380
+ "language_model.layers.6.linear_attn.conv1d.weight": "model-00002-of-00007.safetensors",
381
+ "language_model.layers.6.linear_attn.dt_bias": "model-00002-of-00007.safetensors",
382
+ "language_model.layers.6.linear_attn.in_proj_a.weight": "model-00002-of-00007.safetensors",
383
+ "language_model.layers.6.linear_attn.in_proj_b.weight": "model-00002-of-00007.safetensors",
384
+ "language_model.layers.6.linear_attn.in_proj_qkv.weight": "model-00002-of-00007.safetensors",
385
+ "language_model.layers.6.linear_attn.in_proj_z.weight": "model-00002-of-00007.safetensors",
386
+ "language_model.layers.6.linear_attn.norm.weight": "model-00002-of-00007.safetensors",
387
+ "language_model.layers.6.linear_attn.out_proj.weight": "model-00002-of-00007.safetensors",
388
+ "language_model.layers.6.mlp.down_proj.weight": "model-00002-of-00007.safetensors",
389
+ "language_model.layers.6.mlp.gate_proj.weight": "model-00003-of-00007.safetensors",
390
+ "language_model.layers.6.mlp.up_proj.weight": "model-00003-of-00007.safetensors",
391
+ "language_model.layers.6.post_attention_layernorm.weight": "model-00003-of-00007.safetensors",
392
+ "language_model.layers.7.input_layernorm.weight": "model-00003-of-00007.safetensors",
393
+ "language_model.layers.7.mlp.down_proj.weight": "model-00003-of-00007.safetensors",
394
+ "language_model.layers.7.mlp.gate_proj.weight": "model-00003-of-00007.safetensors",
395
+ "language_model.layers.7.mlp.up_proj.weight": "model-00003-of-00007.safetensors",
396
+ "language_model.layers.7.post_attention_layernorm.weight": "model-00003-of-00007.safetensors",
397
+ "language_model.layers.7.self_attn.k_norm.weight": "model-00003-of-00007.safetensors",
398
+ "language_model.layers.7.self_attn.k_proj.weight": "model-00003-of-00007.safetensors",
399
+ "language_model.layers.7.self_attn.o_proj.weight": "model-00003-of-00007.safetensors",
400
+ "language_model.layers.7.self_attn.q_norm.weight": "model-00003-of-00007.safetensors",
401
+ "language_model.layers.7.self_attn.q_proj.weight": "model-00003-of-00007.safetensors",
402
+ "language_model.layers.7.self_attn.v_proj.weight": "model-00003-of-00007.safetensors",
403
+ "language_model.layers.8.input_layernorm.weight": "model-00003-of-00007.safetensors",
404
+ "language_model.layers.8.linear_attn.A_log": "model-00003-of-00007.safetensors",
405
+ "language_model.layers.8.linear_attn.conv1d.weight": "model-00003-of-00007.safetensors",
406
+ "language_model.layers.8.linear_attn.dt_bias": "model-00003-of-00007.safetensors",
407
+ "language_model.layers.8.linear_attn.in_proj_a.weight": "model-00003-of-00007.safetensors",
408
+ "language_model.layers.8.linear_attn.in_proj_b.weight": "model-00003-of-00007.safetensors",
409
+ "language_model.layers.8.linear_attn.in_proj_qkv.weight": "model-00003-of-00007.safetensors",
410
+ "language_model.layers.8.linear_attn.in_proj_z.weight": "model-00003-of-00007.safetensors",
411
+ "language_model.layers.8.linear_attn.norm.weight": "model-00003-of-00007.safetensors",
412
+ "language_model.layers.8.linear_attn.out_proj.weight": "model-00003-of-00007.safetensors",
413
+ "language_model.layers.8.mlp.down_proj.weight": "model-00003-of-00007.safetensors",
414
+ "language_model.layers.8.mlp.gate_proj.weight": "model-00003-of-00007.safetensors",
415
+ "language_model.layers.8.mlp.up_proj.weight": "model-00003-of-00007.safetensors",
416
+ "language_model.layers.8.post_attention_layernorm.weight": "model-00003-of-00007.safetensors",
417
+ "language_model.layers.9.input_layernorm.weight": "model-00003-of-00007.safetensors",
418
+ "language_model.layers.9.linear_attn.A_log": "model-00003-of-00007.safetensors",
419
+ "language_model.layers.9.linear_attn.conv1d.weight": "model-00003-of-00007.safetensors",
420
+ "language_model.layers.9.linear_attn.dt_bias": "model-00003-of-00007.safetensors",
421
+ "language_model.layers.9.linear_attn.in_proj_a.weight": "model-00003-of-00007.safetensors",
422
+ "language_model.layers.9.linear_attn.in_proj_b.weight": "model-00003-of-00007.safetensors",
423
+ "language_model.layers.9.linear_attn.in_proj_qkv.weight": "model-00003-of-00007.safetensors",
424
+ "language_model.layers.9.linear_attn.in_proj_z.weight": "model-00003-of-00007.safetensors",
425
+ "language_model.layers.9.linear_attn.norm.weight": "model-00003-of-00007.safetensors",
426
+ "language_model.layers.9.linear_attn.out_proj.weight": "model-00003-of-00007.safetensors",
427
+ "language_model.layers.9.mlp.down_proj.weight": "model-00003-of-00007.safetensors",
428
+ "language_model.layers.9.mlp.gate_proj.weight": "model-00003-of-00007.safetensors",
429
+ "language_model.layers.9.mlp.up_proj.weight": "model-00003-of-00007.safetensors",
430
+ "language_model.layers.9.post_attention_layernorm.weight": "model-00003-of-00007.safetensors",
431
+ "language_model.norm.weight": "model-00007-of-00007.safetensors",
432
+ "visual.blocks.0.attn.proj.bias": "model-00007-of-00007.safetensors",
433
+ "visual.blocks.0.attn.proj.weight": "model-00007-of-00007.safetensors",
434
+ "visual.blocks.0.attn.qkv.bias": "model-00007-of-00007.safetensors",
435
+ "visual.blocks.0.attn.qkv.weight": "model-00007-of-00007.safetensors",
436
+ "visual.blocks.0.mlp.linear_fc1.bias": "model-00007-of-00007.safetensors",
437
+ "visual.blocks.0.mlp.linear_fc1.weight": "model-00007-of-00007.safetensors",
438
+ "visual.blocks.0.mlp.linear_fc2.bias": "model-00007-of-00007.safetensors",
439
+ "visual.blocks.0.mlp.linear_fc2.weight": "model-00007-of-00007.safetensors",
440
+ "visual.blocks.0.norm1.bias": "model-00007-of-00007.safetensors",
441
+ "visual.blocks.0.norm1.weight": "model-00007-of-00007.safetensors",
442
+ "visual.blocks.0.norm2.bias": "model-00007-of-00007.safetensors",
443
+ "visual.blocks.0.norm2.weight": "model-00007-of-00007.safetensors",
444
+ "visual.blocks.1.attn.proj.bias": "model-00007-of-00007.safetensors",
445
+ "visual.blocks.1.attn.proj.weight": "model-00007-of-00007.safetensors",
446
+ "visual.blocks.1.attn.qkv.bias": "model-00007-of-00007.safetensors",
447
+ "visual.blocks.1.attn.qkv.weight": "model-00007-of-00007.safetensors",
448
+ "visual.blocks.1.mlp.linear_fc1.bias": "model-00007-of-00007.safetensors",
449
+ "visual.blocks.1.mlp.linear_fc1.weight": "model-00007-of-00007.safetensors",
450
+ "visual.blocks.1.mlp.linear_fc2.bias": "model-00007-of-00007.safetensors",
451
+ "visual.blocks.1.mlp.linear_fc2.weight": "model-00007-of-00007.safetensors",
452
+ "visual.blocks.1.norm1.bias": "model-00007-of-00007.safetensors",
453
+ "visual.blocks.1.norm1.weight": "model-00007-of-00007.safetensors",
454
+ "visual.blocks.1.norm2.bias": "model-00007-of-00007.safetensors",
455
+ "visual.blocks.1.norm2.weight": "model-00007-of-00007.safetensors",
456
+ "visual.blocks.10.attn.proj.bias": "model-00007-of-00007.safetensors",
457
+ "visual.blocks.10.attn.proj.weight": "model-00007-of-00007.safetensors",
458
+ "visual.blocks.10.attn.qkv.bias": "model-00007-of-00007.safetensors",
459
+ "visual.blocks.10.attn.qkv.weight": "model-00007-of-00007.safetensors",
460
+ "visual.blocks.10.mlp.linear_fc1.bias": "model-00007-of-00007.safetensors",
461
+ "visual.blocks.10.mlp.linear_fc1.weight": "model-00007-of-00007.safetensors",
462
+ "visual.blocks.10.mlp.linear_fc2.bias": "model-00007-of-00007.safetensors",
463
+ "visual.blocks.10.mlp.linear_fc2.weight": "model-00007-of-00007.safetensors",
464
+ "visual.blocks.10.norm1.bias": "model-00007-of-00007.safetensors",
465
+ "visual.blocks.10.norm1.weight": "model-00007-of-00007.safetensors",
466
+ "visual.blocks.10.norm2.bias": "model-00007-of-00007.safetensors",
467
+ "visual.blocks.10.norm2.weight": "model-00007-of-00007.safetensors",
468
+ "visual.blocks.11.attn.proj.bias": "model-00007-of-00007.safetensors",
469
+ "visual.blocks.11.attn.proj.weight": "model-00007-of-00007.safetensors",
470
+ "visual.blocks.11.attn.qkv.bias": "model-00007-of-00007.safetensors",
471
+ "visual.blocks.11.attn.qkv.weight": "model-00007-of-00007.safetensors",
472
+ "visual.blocks.11.mlp.linear_fc1.bias": "model-00007-of-00007.safetensors",
473
+ "visual.blocks.11.mlp.linear_fc1.weight": "model-00007-of-00007.safetensors",
474
+ "visual.blocks.11.mlp.linear_fc2.bias": "model-00007-of-00007.safetensors",
475
+ "visual.blocks.11.mlp.linear_fc2.weight": "model-00007-of-00007.safetensors",
476
+ "visual.blocks.11.norm1.bias": "model-00007-of-00007.safetensors",
477
+ "visual.blocks.11.norm1.weight": "model-00007-of-00007.safetensors",
478
+ "visual.blocks.11.norm2.bias": "model-00007-of-00007.safetensors",
479
+ "visual.blocks.11.norm2.weight": "model-00007-of-00007.safetensors",
480
+ "visual.blocks.12.attn.proj.bias": "model-00007-of-00007.safetensors",
481
+ "visual.blocks.12.attn.proj.weight": "model-00007-of-00007.safetensors",
482
+ "visual.blocks.12.attn.qkv.bias": "model-00007-of-00007.safetensors",
483
+ "visual.blocks.12.attn.qkv.weight": "model-00007-of-00007.safetensors",
484
+ "visual.blocks.12.mlp.linear_fc1.bias": "model-00007-of-00007.safetensors",
485
+ "visual.blocks.12.mlp.linear_fc1.weight": "model-00007-of-00007.safetensors",
486
+ "visual.blocks.12.mlp.linear_fc2.bias": "model-00007-of-00007.safetensors",
487
+ "visual.blocks.12.mlp.linear_fc2.weight": "model-00007-of-00007.safetensors",
488
+ "visual.blocks.12.norm1.bias": "model-00007-of-00007.safetensors",
489
+ "visual.blocks.12.norm1.weight": "model-00007-of-00007.safetensors",
490
+ "visual.blocks.12.norm2.bias": "model-00007-of-00007.safetensors",
491
+ "visual.blocks.12.norm2.weight": "model-00007-of-00007.safetensors",
492
+ "visual.blocks.13.attn.proj.bias": "model-00007-of-00007.safetensors",
493
+ "visual.blocks.13.attn.proj.weight": "model-00007-of-00007.safetensors",
494
+ "visual.blocks.13.attn.qkv.bias": "model-00007-of-00007.safetensors",
495
+ "visual.blocks.13.attn.qkv.weight": "model-00007-of-00007.safetensors",
496
+ "visual.blocks.13.mlp.linear_fc1.bias": "model-00007-of-00007.safetensors",
497
+ "visual.blocks.13.mlp.linear_fc1.weight": "model-00007-of-00007.safetensors",
498
+ "visual.blocks.13.mlp.linear_fc2.bias": "model-00007-of-00007.safetensors",
499
+ "visual.blocks.13.mlp.linear_fc2.weight": "model-00007-of-00007.safetensors",
500
+ "visual.blocks.13.norm1.bias": "model-00007-of-00007.safetensors",
501
+ "visual.blocks.13.norm1.weight": "model-00007-of-00007.safetensors",
502
+ "visual.blocks.13.norm2.bias": "model-00007-of-00007.safetensors",
503
+ "visual.blocks.13.norm2.weight": "model-00007-of-00007.safetensors",
504
+ "visual.blocks.14.attn.proj.bias": "model-00007-of-00007.safetensors",
505
+ "visual.blocks.14.attn.proj.weight": "model-00007-of-00007.safetensors",
506
+ "visual.blocks.14.attn.qkv.bias": "model-00007-of-00007.safetensors",
507
+ "visual.blocks.14.attn.qkv.weight": "model-00007-of-00007.safetensors",
508
+ "visual.blocks.14.mlp.linear_fc1.bias": "model-00007-of-00007.safetensors",
509
+ "visual.blocks.14.mlp.linear_fc1.weight": "model-00007-of-00007.safetensors",
510
+ "visual.blocks.14.mlp.linear_fc2.bias": "model-00007-of-00007.safetensors",
511
+ "visual.blocks.14.mlp.linear_fc2.weight": "model-00007-of-00007.safetensors",
512
+ "visual.blocks.14.norm1.bias": "model-00007-of-00007.safetensors",
513
+ "visual.blocks.14.norm1.weight": "model-00007-of-00007.safetensors",
514
+ "visual.blocks.14.norm2.bias": "model-00007-of-00007.safetensors",
515
+ "visual.blocks.14.norm2.weight": "model-00007-of-00007.safetensors",
516
+ "visual.blocks.15.attn.proj.bias": "model-00007-of-00007.safetensors",
517
+ "visual.blocks.15.attn.proj.weight": "model-00007-of-00007.safetensors",
518
+ "visual.blocks.15.attn.qkv.bias": "model-00007-of-00007.safetensors",
519
+ "visual.blocks.15.attn.qkv.weight": "model-00007-of-00007.safetensors",
520
+ "visual.blocks.15.mlp.linear_fc1.bias": "model-00007-of-00007.safetensors",
521
+ "visual.blocks.15.mlp.linear_fc1.weight": "model-00007-of-00007.safetensors",
522
+ "visual.blocks.15.mlp.linear_fc2.bias": "model-00007-of-00007.safetensors",
523
+ "visual.blocks.15.mlp.linear_fc2.weight": "model-00007-of-00007.safetensors",
524
+ "visual.blocks.15.norm1.bias": "model-00007-of-00007.safetensors",
525
+ "visual.blocks.15.norm1.weight": "model-00007-of-00007.safetensors",
526
+ "visual.blocks.15.norm2.bias": "model-00007-of-00007.safetensors",
527
+ "visual.blocks.15.norm2.weight": "model-00007-of-00007.safetensors",
528
+ "visual.blocks.16.attn.proj.bias": "model-00007-of-00007.safetensors",
529
+ "visual.blocks.16.attn.proj.weight": "model-00007-of-00007.safetensors",
530
+ "visual.blocks.16.attn.qkv.bias": "model-00007-of-00007.safetensors",
531
+ "visual.blocks.16.attn.qkv.weight": "model-00007-of-00007.safetensors",
532
+ "visual.blocks.16.mlp.linear_fc1.bias": "model-00007-of-00007.safetensors",
533
+ "visual.blocks.16.mlp.linear_fc1.weight": "model-00007-of-00007.safetensors",
534
+ "visual.blocks.16.mlp.linear_fc2.bias": "model-00007-of-00007.safetensors",
535
+ "visual.blocks.16.mlp.linear_fc2.weight": "model-00007-of-00007.safetensors",
536
+ "visual.blocks.16.norm1.bias": "model-00007-of-00007.safetensors",
537
+ "visual.blocks.16.norm1.weight": "model-00007-of-00007.safetensors",
538
+ "visual.blocks.16.norm2.bias": "model-00007-of-00007.safetensors",
539
+ "visual.blocks.16.norm2.weight": "model-00007-of-00007.safetensors",
540
+ "visual.blocks.17.attn.proj.bias": "model-00007-of-00007.safetensors",
541
+ "visual.blocks.17.attn.proj.weight": "model-00007-of-00007.safetensors",
542
+ "visual.blocks.17.attn.qkv.bias": "model-00007-of-00007.safetensors",
543
+ "visual.blocks.17.attn.qkv.weight": "model-00007-of-00007.safetensors",
544
+ "visual.blocks.17.mlp.linear_fc1.bias": "model-00007-of-00007.safetensors",
545
+ "visual.blocks.17.mlp.linear_fc1.weight": "model-00007-of-00007.safetensors",
546
+ "visual.blocks.17.mlp.linear_fc2.bias": "model-00007-of-00007.safetensors",
547
+ "visual.blocks.17.mlp.linear_fc2.weight": "model-00007-of-00007.safetensors",
548
+ "visual.blocks.17.norm1.bias": "model-00007-of-00007.safetensors",
549
+ "visual.blocks.17.norm1.weight": "model-00007-of-00007.safetensors",
550
+ "visual.blocks.17.norm2.bias": "model-00007-of-00007.safetensors",
551
+ "visual.blocks.17.norm2.weight": "model-00007-of-00007.safetensors",
552
+ "visual.blocks.18.attn.proj.bias": "model-00007-of-00007.safetensors",
553
+ "visual.blocks.18.attn.proj.weight": "model-00007-of-00007.safetensors",
554
+ "visual.blocks.18.attn.qkv.bias": "model-00007-of-00007.safetensors",
555
+ "visual.blocks.18.attn.qkv.weight": "model-00007-of-00007.safetensors",
556
+ "visual.blocks.18.mlp.linear_fc1.bias": "model-00007-of-00007.safetensors",
557
+ "visual.blocks.18.mlp.linear_fc1.weight": "model-00007-of-00007.safetensors",
558
+ "visual.blocks.18.mlp.linear_fc2.bias": "model-00007-of-00007.safetensors",
559
+ "visual.blocks.18.mlp.linear_fc2.weight": "model-00007-of-00007.safetensors",
560
+ "visual.blocks.18.norm1.bias": "model-00007-of-00007.safetensors",
561
+ "visual.blocks.18.norm1.weight": "model-00007-of-00007.safetensors",
562
+ "visual.blocks.18.norm2.bias": "model-00007-of-00007.safetensors",
563
+ "visual.blocks.18.norm2.weight": "model-00007-of-00007.safetensors",
564
+ "visual.blocks.19.attn.proj.bias": "model-00007-of-00007.safetensors",
565
+ "visual.blocks.19.attn.proj.weight": "model-00007-of-00007.safetensors",
566
+ "visual.blocks.19.attn.qkv.bias": "model-00007-of-00007.safetensors",
567
+ "visual.blocks.19.attn.qkv.weight": "model-00007-of-00007.safetensors",
568
+ "visual.blocks.19.mlp.linear_fc1.bias": "model-00007-of-00007.safetensors",
569
+ "visual.blocks.19.mlp.linear_fc1.weight": "model-00007-of-00007.safetensors",
570
+ "visual.blocks.19.mlp.linear_fc2.bias": "model-00007-of-00007.safetensors",
571
+ "visual.blocks.19.mlp.linear_fc2.weight": "model-00007-of-00007.safetensors",
572
+ "visual.blocks.19.norm1.bias": "model-00007-of-00007.safetensors",
573
+ "visual.blocks.19.norm1.weight": "model-00007-of-00007.safetensors",
574
+ "visual.blocks.19.norm2.bias": "model-00007-of-00007.safetensors",
575
+ "visual.blocks.19.norm2.weight": "model-00007-of-00007.safetensors",
576
+ "visual.blocks.2.attn.proj.bias": "model-00007-of-00007.safetensors",
577
+ "visual.blocks.2.attn.proj.weight": "model-00007-of-00007.safetensors",
578
+ "visual.blocks.2.attn.qkv.bias": "model-00007-of-00007.safetensors",
579
+ "visual.blocks.2.attn.qkv.weight": "model-00007-of-00007.safetensors",
580
+ "visual.blocks.2.mlp.linear_fc1.bias": "model-00007-of-00007.safetensors",
581
+ "visual.blocks.2.mlp.linear_fc1.weight": "model-00007-of-00007.safetensors",
582
+ "visual.blocks.2.mlp.linear_fc2.bias": "model-00007-of-00007.safetensors",
583
+ "visual.blocks.2.mlp.linear_fc2.weight": "model-00007-of-00007.safetensors",
584
+ "visual.blocks.2.norm1.bias": "model-00007-of-00007.safetensors",
585
+ "visual.blocks.2.norm1.weight": "model-00007-of-00007.safetensors",
586
+ "visual.blocks.2.norm2.bias": "model-00007-of-00007.safetensors",
587
+ "visual.blocks.2.norm2.weight": "model-00007-of-00007.safetensors",
588
+ "visual.blocks.20.attn.proj.bias": "model-00007-of-00007.safetensors",
589
+ "visual.blocks.20.attn.proj.weight": "model-00007-of-00007.safetensors",
590
+ "visual.blocks.20.attn.qkv.bias": "model-00007-of-00007.safetensors",
591
+ "visual.blocks.20.attn.qkv.weight": "model-00007-of-00007.safetensors",
592
+ "visual.blocks.20.mlp.linear_fc1.bias": "model-00007-of-00007.safetensors",
593
+ "visual.blocks.20.mlp.linear_fc1.weight": "model-00007-of-00007.safetensors",
594
+ "visual.blocks.20.mlp.linear_fc2.bias": "model-00007-of-00007.safetensors",
595
+ "visual.blocks.20.mlp.linear_fc2.weight": "model-00007-of-00007.safetensors",
596
+ "visual.blocks.20.norm1.bias": "model-00007-of-00007.safetensors",
597
+ "visual.blocks.20.norm1.weight": "model-00007-of-00007.safetensors",
598
+ "visual.blocks.20.norm2.bias": "model-00007-of-00007.safetensors",
599
+ "visual.blocks.20.norm2.weight": "model-00007-of-00007.safetensors",
600
+ "visual.blocks.21.attn.proj.bias": "model-00007-of-00007.safetensors",
601
+ "visual.blocks.21.attn.proj.weight": "model-00007-of-00007.safetensors",
602
+ "visual.blocks.21.attn.qkv.bias": "model-00007-of-00007.safetensors",
603
+ "visual.blocks.21.attn.qkv.weight": "model-00007-of-00007.safetensors",
604
+ "visual.blocks.21.mlp.linear_fc1.bias": "model-00007-of-00007.safetensors",
605
+ "visual.blocks.21.mlp.linear_fc1.weight": "model-00007-of-00007.safetensors",
606
+ "visual.blocks.21.mlp.linear_fc2.bias": "model-00007-of-00007.safetensors",
607
+ "visual.blocks.21.mlp.linear_fc2.weight": "model-00007-of-00007.safetensors",
608
+ "visual.blocks.21.norm1.bias": "model-00007-of-00007.safetensors",
609
+ "visual.blocks.21.norm1.weight": "model-00007-of-00007.safetensors",
610
+ "visual.blocks.21.norm2.bias": "model-00007-of-00007.safetensors",
611
+ "visual.blocks.21.norm2.weight": "model-00007-of-00007.safetensors",
612
+ "visual.blocks.22.attn.proj.bias": "model-00007-of-00007.safetensors",
613
+ "visual.blocks.22.attn.proj.weight": "model-00007-of-00007.safetensors",
614
+ "visual.blocks.22.attn.qkv.bias": "model-00007-of-00007.safetensors",
615
+ "visual.blocks.22.attn.qkv.weight": "model-00007-of-00007.safetensors",
616
+ "visual.blocks.22.mlp.linear_fc1.bias": "model-00007-of-00007.safetensors",
617
+ "visual.blocks.22.mlp.linear_fc1.weight": "model-00007-of-00007.safetensors",
618
+ "visual.blocks.22.mlp.linear_fc2.bias": "model-00007-of-00007.safetensors",
619
+ "visual.blocks.22.mlp.linear_fc2.weight": "model-00007-of-00007.safetensors",
620
+ "visual.blocks.22.norm1.bias": "model-00007-of-00007.safetensors",
621
+ "visual.blocks.22.norm1.weight": "model-00007-of-00007.safetensors",
622
+ "visual.blocks.22.norm2.bias": "model-00007-of-00007.safetensors",
623
+ "visual.blocks.22.norm2.weight": "model-00007-of-00007.safetensors",
624
+ "visual.blocks.23.attn.proj.bias": "model-00007-of-00007.safetensors",
625
+ "visual.blocks.23.attn.proj.weight": "model-00007-of-00007.safetensors",
626
+ "visual.blocks.23.attn.qkv.bias": "model-00007-of-00007.safetensors",
627
+ "visual.blocks.23.attn.qkv.weight": "model-00007-of-00007.safetensors",
628
+ "visual.blocks.23.mlp.linear_fc1.bias": "model-00007-of-00007.safetensors",
629
+ "visual.blocks.23.mlp.linear_fc1.weight": "model-00007-of-00007.safetensors",
630
+ "visual.blocks.23.mlp.linear_fc2.bias": "model-00007-of-00007.safetensors",
631
+ "visual.blocks.23.mlp.linear_fc2.weight": "model-00007-of-00007.safetensors",
632
+ "visual.blocks.23.norm1.bias": "model-00007-of-00007.safetensors",
633
+ "visual.blocks.23.norm1.weight": "model-00007-of-00007.safetensors",
634
+ "visual.blocks.23.norm2.bias": "model-00007-of-00007.safetensors",
635
+ "visual.blocks.23.norm2.weight": "model-00007-of-00007.safetensors",
636
+ "visual.blocks.24.attn.proj.bias": "model-00007-of-00007.safetensors",
637
+ "visual.blocks.24.attn.proj.weight": "model-00007-of-00007.safetensors",
638
+ "visual.blocks.24.attn.qkv.bias": "model-00007-of-00007.safetensors",
639
+ "visual.blocks.24.attn.qkv.weight": "model-00007-of-00007.safetensors",
640
+ "visual.blocks.24.mlp.linear_fc1.bias": "model-00007-of-00007.safetensors",
641
+ "visual.blocks.24.mlp.linear_fc1.weight": "model-00007-of-00007.safetensors",
642
+ "visual.blocks.24.mlp.linear_fc2.bias": "model-00007-of-00007.safetensors",
643
+ "visual.blocks.24.mlp.linear_fc2.weight": "model-00007-of-00007.safetensors",
644
+ "visual.blocks.24.norm1.bias": "model-00007-of-00007.safetensors",
645
+ "visual.blocks.24.norm1.weight": "model-00007-of-00007.safetensors",
646
+ "visual.blocks.24.norm2.bias": "model-00007-of-00007.safetensors",
647
+ "visual.blocks.24.norm2.weight": "model-00007-of-00007.safetensors",
648
+ "visual.blocks.25.attn.proj.bias": "model-00007-of-00007.safetensors",
649
+ "visual.blocks.25.attn.proj.weight": "model-00007-of-00007.safetensors",
650
+ "visual.blocks.25.attn.qkv.bias": "model-00007-of-00007.safetensors",
651
+ "visual.blocks.25.attn.qkv.weight": "model-00007-of-00007.safetensors",
652
+ "visual.blocks.25.mlp.linear_fc1.bias": "model-00007-of-00007.safetensors",
653
+ "visual.blocks.25.mlp.linear_fc1.weight": "model-00007-of-00007.safetensors",
654
+ "visual.blocks.25.mlp.linear_fc2.bias": "model-00007-of-00007.safetensors",
655
+ "visual.blocks.25.mlp.linear_fc2.weight": "model-00007-of-00007.safetensors",
656
+ "visual.blocks.25.norm1.bias": "model-00007-of-00007.safetensors",
657
+ "visual.blocks.25.norm1.weight": "model-00007-of-00007.safetensors",
658
+ "visual.blocks.25.norm2.bias": "model-00007-of-00007.safetensors",
659
+ "visual.blocks.25.norm2.weight": "model-00007-of-00007.safetensors",
660
+ "visual.blocks.26.attn.proj.bias": "model-00007-of-00007.safetensors",
661
+ "visual.blocks.26.attn.proj.weight": "model-00007-of-00007.safetensors",
662
+ "visual.blocks.26.attn.qkv.bias": "model-00007-of-00007.safetensors",
663
+ "visual.blocks.26.attn.qkv.weight": "model-00007-of-00007.safetensors",
664
+ "visual.blocks.26.mlp.linear_fc1.bias": "model-00007-of-00007.safetensors",
665
+ "visual.blocks.26.mlp.linear_fc1.weight": "model-00007-of-00007.safetensors",
666
+ "visual.blocks.26.mlp.linear_fc2.bias": "model-00007-of-00007.safetensors",
667
+ "visual.blocks.26.mlp.linear_fc2.weight": "model-00007-of-00007.safetensors",
668
+ "visual.blocks.26.norm1.bias": "model-00007-of-00007.safetensors",
669
+ "visual.blocks.26.norm1.weight": "model-00007-of-00007.safetensors",
670
+ "visual.blocks.26.norm2.bias": "model-00007-of-00007.safetensors",
671
+ "visual.blocks.26.norm2.weight": "model-00007-of-00007.safetensors",
672
+ "visual.blocks.3.attn.proj.bias": "model-00007-of-00007.safetensors",
673
+ "visual.blocks.3.attn.proj.weight": "model-00007-of-00007.safetensors",
674
+ "visual.blocks.3.attn.qkv.bias": "model-00007-of-00007.safetensors",
675
+ "visual.blocks.3.attn.qkv.weight": "model-00007-of-00007.safetensors",
676
+ "visual.blocks.3.mlp.linear_fc1.bias": "model-00007-of-00007.safetensors",
677
+ "visual.blocks.3.mlp.linear_fc1.weight": "model-00007-of-00007.safetensors",
678
+ "visual.blocks.3.mlp.linear_fc2.bias": "model-00007-of-00007.safetensors",
679
+ "visual.blocks.3.mlp.linear_fc2.weight": "model-00007-of-00007.safetensors",
680
+ "visual.blocks.3.norm1.bias": "model-00007-of-00007.safetensors",
681
+ "visual.blocks.3.norm1.weight": "model-00007-of-00007.safetensors",
682
+ "visual.blocks.3.norm2.bias": "model-00007-of-00007.safetensors",
683
+ "visual.blocks.3.norm2.weight": "model-00007-of-00007.safetensors",
684
+ "visual.blocks.4.attn.proj.bias": "model-00007-of-00007.safetensors",
685
+ "visual.blocks.4.attn.proj.weight": "model-00007-of-00007.safetensors",
686
+ "visual.blocks.4.attn.qkv.bias": "model-00007-of-00007.safetensors",
687
+ "visual.blocks.4.attn.qkv.weight": "model-00007-of-00007.safetensors",
688
+ "visual.blocks.4.mlp.linear_fc1.bias": "model-00007-of-00007.safetensors",
689
+ "visual.blocks.4.mlp.linear_fc1.weight": "model-00007-of-00007.safetensors",
690
+ "visual.blocks.4.mlp.linear_fc2.bias": "model-00007-of-00007.safetensors",
691
+ "visual.blocks.4.mlp.linear_fc2.weight": "model-00007-of-00007.safetensors",
692
+ "visual.blocks.4.norm1.bias": "model-00007-of-00007.safetensors",
693
+ "visual.blocks.4.norm1.weight": "model-00007-of-00007.safetensors",
694
+ "visual.blocks.4.norm2.bias": "model-00007-of-00007.safetensors",
695
+ "visual.blocks.4.norm2.weight": "model-00007-of-00007.safetensors",
696
+ "visual.blocks.5.attn.proj.bias": "model-00007-of-00007.safetensors",
697
+ "visual.blocks.5.attn.proj.weight": "model-00007-of-00007.safetensors",
698
+ "visual.blocks.5.attn.qkv.bias": "model-00007-of-00007.safetensors",
699
+ "visual.blocks.5.attn.qkv.weight": "model-00007-of-00007.safetensors",
700
+ "visual.blocks.5.mlp.linear_fc1.bias": "model-00007-of-00007.safetensors",
701
+ "visual.blocks.5.mlp.linear_fc1.weight": "model-00007-of-00007.safetensors",
702
+ "visual.blocks.5.mlp.linear_fc2.bias": "model-00007-of-00007.safetensors",
703
+ "visual.blocks.5.mlp.linear_fc2.weight": "model-00007-of-00007.safetensors",
704
+ "visual.blocks.5.norm1.bias": "model-00007-of-00007.safetensors",
705
+ "visual.blocks.5.norm1.weight": "model-00007-of-00007.safetensors",
706
+ "visual.blocks.5.norm2.bias": "model-00007-of-00007.safetensors",
707
+ "visual.blocks.5.norm2.weight": "model-00007-of-00007.safetensors",
708
+ "visual.blocks.6.attn.proj.bias": "model-00007-of-00007.safetensors",
709
+ "visual.blocks.6.attn.proj.weight": "model-00007-of-00007.safetensors",
710
+ "visual.blocks.6.attn.qkv.bias": "model-00007-of-00007.safetensors",
711
+ "visual.blocks.6.attn.qkv.weight": "model-00007-of-00007.safetensors",
712
+ "visual.blocks.6.mlp.linear_fc1.bias": "model-00007-of-00007.safetensors",
713
+ "visual.blocks.6.mlp.linear_fc1.weight": "model-00007-of-00007.safetensors",
714
+ "visual.blocks.6.mlp.linear_fc2.bias": "model-00007-of-00007.safetensors",
715
+ "visual.blocks.6.mlp.linear_fc2.weight": "model-00007-of-00007.safetensors",
716
+ "visual.blocks.6.norm1.bias": "model-00007-of-00007.safetensors",
717
+ "visual.blocks.6.norm1.weight": "model-00007-of-00007.safetensors",
718
+ "visual.blocks.6.norm2.bias": "model-00007-of-00007.safetensors",
719
+ "visual.blocks.6.norm2.weight": "model-00007-of-00007.safetensors",
720
+ "visual.blocks.7.attn.proj.bias": "model-00007-of-00007.safetensors",
721
+ "visual.blocks.7.attn.proj.weight": "model-00007-of-00007.safetensors",
722
+ "visual.blocks.7.attn.qkv.bias": "model-00007-of-00007.safetensors",
723
+ "visual.blocks.7.attn.qkv.weight": "model-00007-of-00007.safetensors",
724
+ "visual.blocks.7.mlp.linear_fc1.bias": "model-00007-of-00007.safetensors",
725
+ "visual.blocks.7.mlp.linear_fc1.weight": "model-00007-of-00007.safetensors",
726
+ "visual.blocks.7.mlp.linear_fc2.bias": "model-00007-of-00007.safetensors",
727
+ "visual.blocks.7.mlp.linear_fc2.weight": "model-00007-of-00007.safetensors",
728
+ "visual.blocks.7.norm1.bias": "model-00007-of-00007.safetensors",
729
+ "visual.blocks.7.norm1.weight": "model-00007-of-00007.safetensors",
730
+ "visual.blocks.7.norm2.bias": "model-00007-of-00007.safetensors",
731
+ "visual.blocks.7.norm2.weight": "model-00007-of-00007.safetensors",
732
+ "visual.blocks.8.attn.proj.bias": "model-00007-of-00007.safetensors",
733
+ "visual.blocks.8.attn.proj.weight": "model-00007-of-00007.safetensors",
734
+ "visual.blocks.8.attn.qkv.bias": "model-00007-of-00007.safetensors",
735
+ "visual.blocks.8.attn.qkv.weight": "model-00007-of-00007.safetensors",
736
+ "visual.blocks.8.mlp.linear_fc1.bias": "model-00007-of-00007.safetensors",
737
+ "visual.blocks.8.mlp.linear_fc1.weight": "model-00007-of-00007.safetensors",
738
+ "visual.blocks.8.mlp.linear_fc2.bias": "model-00007-of-00007.safetensors",
739
+ "visual.blocks.8.mlp.linear_fc2.weight": "model-00007-of-00007.safetensors",
740
+ "visual.blocks.8.norm1.bias": "model-00007-of-00007.safetensors",
741
+ "visual.blocks.8.norm1.weight": "model-00007-of-00007.safetensors",
742
+ "visual.blocks.8.norm2.bias": "model-00007-of-00007.safetensors",
743
+ "visual.blocks.8.norm2.weight": "model-00007-of-00007.safetensors",
744
+ "visual.blocks.9.attn.proj.bias": "model-00007-of-00007.safetensors",
745
+ "visual.blocks.9.attn.proj.weight": "model-00007-of-00007.safetensors",
746
+ "visual.blocks.9.attn.qkv.bias": "model-00007-of-00007.safetensors",
747
+ "visual.blocks.9.attn.qkv.weight": "model-00007-of-00007.safetensors",
748
+ "visual.blocks.9.mlp.linear_fc1.bias": "model-00007-of-00007.safetensors",
749
+ "visual.blocks.9.mlp.linear_fc1.weight": "model-00007-of-00007.safetensors",
750
+ "visual.blocks.9.mlp.linear_fc2.bias": "model-00007-of-00007.safetensors",
751
+ "visual.blocks.9.mlp.linear_fc2.weight": "model-00007-of-00007.safetensors",
752
+ "visual.blocks.9.norm1.bias": "model-00007-of-00007.safetensors",
753
+ "visual.blocks.9.norm1.weight": "model-00007-of-00007.safetensors",
754
+ "visual.blocks.9.norm2.bias": "model-00007-of-00007.safetensors",
755
+ "visual.blocks.9.norm2.weight": "model-00007-of-00007.safetensors",
756
+ "visual.merger.linear_fc1.bias": "model-00007-of-00007.safetensors",
757
+ "visual.merger.linear_fc1.weight": "model-00007-of-00007.safetensors",
758
+ "visual.merger.linear_fc2.bias": "model-00007-of-00007.safetensors",
759
+ "visual.merger.linear_fc2.weight": "model-00007-of-00007.safetensors",
760
+ "visual.merger.norm.bias": "model-00007-of-00007.safetensors",
761
+ "visual.merger.norm.weight": "model-00007-of-00007.safetensors",
762
+ "visual.patch_embed.proj.bias": "model-00007-of-00007.safetensors",
763
+ "visual.patch_embed.proj.weight": "model-00007-of-00007.safetensors",
764
+ "visual.pos_embed.weight": "model-00007-of-00007.safetensors",
765
+ "contextual_projection.weight": "contextual_head.safetensors"
766
+ }
767
+ }
modeling_pplx_contextual.py ADDED
@@ -0,0 +1,307 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from __future__ import annotations
2
+
3
+ from pathlib import Path
4
+ from typing import Any, Literal
5
+
6
+ import numpy as np
7
+ import torch
8
+ import torch.nn.functional as F
9
+ from torch import nn
10
+ from tqdm.auto import tqdm
11
+ from PIL import Image
12
+ from transformers import AutoTokenizer, PreTrainedTokenizerBase, Qwen3_5Model, Qwen3VLProcessor
13
+
14
+ from .configuration_pplx_contextual import PplxContextualConfig
15
+ from .image_processing import ImageEncodingConfig, ImageInputMapper
16
+
17
+
18
+ class PplxContextualModel(Qwen3_5Model):
19
+ """Encode a document's supplied chunks together, then pool each chunk."""
20
+
21
+ config_class = PplxContextualConfig
22
+ config: PplxContextualConfig
23
+ _keep_in_fp32_modules = ["contextual_projection"]
24
+
25
+ def __init__(self, config: PplxContextualConfig) -> None:
26
+ super().__init__(config)
27
+ self.contextual_projection = nn.Linear(
28
+ config.text_config.hidden_size, config.embedding_dim, bias=False
29
+ )
30
+ self._tokenizer: PreTrainedTokenizerBase | None = None
31
+ self._image_processor: Qwen3VLProcessor | None = None
32
+ self.post_init()
33
+
34
+ @property
35
+ def tokenizer(self) -> PreTrainedTokenizerBase:
36
+ if self._tokenizer is None:
37
+ self._tokenizer = AutoTokenizer.from_pretrained(
38
+ self.config._name_or_path,
39
+ config=self.config,
40
+ revision=self.config._commit_hash,
41
+ padding_side="right",
42
+ )
43
+ return self._tokenizer
44
+
45
+ @tokenizer.setter
46
+ def tokenizer(self, value: PreTrainedTokenizerBase) -> None:
47
+ self._tokenizer = value
48
+
49
+ def prepare_inputs(
50
+ self, documents: list[list[str]], task: str = "document"
51
+ ) -> dict[str, torch.Tensor]:
52
+ tokenizer = self.tokenizer
53
+ if task == "query":
54
+ if any(len(row) != 1 for row in documents):
55
+ raise ValueError("Each query must contain exactly one string")
56
+ batch = tokenizer(
57
+ [row[0] for row in documents],
58
+ padding=True,
59
+ truncation=False,
60
+ split_special_tokens=True,
61
+ return_tensors="pt",
62
+ return_token_type_ids=False,
63
+ )
64
+ prefix_id = tokenizer.convert_tokens_to_ids(
65
+ self.config.query_prefix
66
+ )
67
+ prefix = torch.full(
68
+ (len(documents), 1), prefix_id, dtype=torch.long
69
+ )
70
+ batch["input_ids"] = torch.cat((prefix, batch["input_ids"]), dim=1)
71
+ batch["attention_mask"] = torch.cat(
72
+ (torch.ones_like(prefix), batch["attention_mask"]), dim=1
73
+ )
74
+ batch["chunk_mask"] = torch.ones(
75
+ (len(documents), 1), dtype=torch.bool
76
+ )
77
+ elif task == "document":
78
+ texts, char_spans = [], []
79
+ for chunks in documents:
80
+ parts = [self.config.document_prefix]
81
+ cursor = len(self.config.document_prefix)
82
+ spans = []
83
+ for index, chunk in enumerate(chunks):
84
+ if index:
85
+ parts.append(self.config.boundary_marker)
86
+ cursor += len(self.config.boundary_marker)
87
+ spans.append((cursor, cursor + len(chunk)))
88
+ parts.append(chunk)
89
+ cursor += len(chunk)
90
+ texts.append("".join(parts))
91
+ char_spans.append(spans)
92
+ batch = tokenizer(
93
+ texts,
94
+ padding=True,
95
+ truncation=False,
96
+ split_special_tokens=True,
97
+ return_tensors="pt",
98
+ return_token_type_ids=False,
99
+ return_offsets_mapping=True,
100
+ )
101
+ offsets = batch.pop("offset_mapping")
102
+ count = max(1, *map(len, documents))
103
+ token_spans = torch.zeros(
104
+ (len(documents), count, 2), dtype=torch.long
105
+ )
106
+ chunk_mask = torch.zeros((len(documents), count), dtype=torch.bool)
107
+ for row, spans in enumerate(char_spans):
108
+ starts, ends = offsets[row].unbind(dim=-1)
109
+ valid = batch["attention_mask"][row].bool() & (ends > starts)
110
+ for column, (start, end) in enumerate(spans):
111
+ indices = (
112
+ (valid & (starts < end) & (ends > start))
113
+ .nonzero()
114
+ .flatten()
115
+ )
116
+ if indices.numel():
117
+ token_spans[row, column, 0] = indices[0]
118
+ token_spans[row, column, 1] = indices[-1] + 1
119
+ elif documents[row][column]:
120
+ raise ValueError(
121
+ f"Chunk {column} in document {row} produced no tokens"
122
+ )
123
+ chunk_mask[row, column] = True
124
+ batch["chunk_token_spans"] = token_spans
125
+ batch["chunk_mask"] = chunk_mask
126
+ else:
127
+ raise ValueError(f"Unsupported task: {task}")
128
+ limit = (
129
+ self.config.query_length
130
+ if task == "query"
131
+ else self.config.document_length
132
+ )
133
+ if batch["input_ids"].shape[1] > limit:
134
+ raise ValueError(
135
+ f"Input exceeds the {limit}-token limit; split the document into context windows"
136
+ )
137
+ return dict(batch)
138
+
139
+ def _pool(
140
+ self, features: dict[str, torch.Tensor], task: str
141
+ ) -> torch.Tensor:
142
+ visual = {key: features[key] for key in (
143
+ "pixel_values", "image_grid_thw", "mm_token_type_ids", "position_ids"
144
+ ) if key in features}
145
+ hidden = self(
146
+ input_ids=features["input_ids"],
147
+ attention_mask=features["attention_mask"],
148
+ use_cache=False,
149
+ return_dict=True,
150
+ **visual,
151
+ ).last_hidden_state
152
+ with torch.autocast(device_type=hidden.device.type, enabled=False):
153
+ hidden = hidden.float()
154
+ if "pixel_values" in features:
155
+ hidden = F.linear(hidden, self.contextual_projection.weight.float())
156
+ if task == "query":
157
+ mask = features["attention_mask"].unsqueeze(-1).float()
158
+ pooled = (
159
+ (hidden * mask).sum(dim=1) / mask.sum(dim=1).clamp_min(1.0)
160
+ ).unsqueeze(1)
161
+ else:
162
+ prefix = torch.cat(
163
+ (
164
+ hidden.new_zeros(hidden.shape[0], 1, hidden.shape[-1]),
165
+ hidden.cumsum(dim=1),
166
+ ),
167
+ dim=1,
168
+ )
169
+ starts, ends = features["chunk_token_spans"].unbind(dim=-1)
170
+ rows = torch.arange(
171
+ hidden.shape[0], device=hidden.device
172
+ ).unsqueeze(1)
173
+ pooled = (prefix[rows, ends] - prefix[rows, starts]) / (
174
+ ends - starts
175
+ ).clamp_min(1).unsqueeze(-1)
176
+ if "pixel_values" in features:
177
+ return pooled
178
+ return F.linear(pooled, self.contextual_projection.weight.float())
179
+
180
+ def prepare_images(
181
+ self,
182
+ images: list[Image.Image],
183
+ *,
184
+ chunks: int = 8,
185
+ min_pixels: int = 16384,
186
+ max_pixels: int = 1800000,
187
+ ) -> dict[str, torch.Tensor]:
188
+ """Wrap whole pages and split their visual tokens into native-MRoPE row bands."""
189
+ if not images or any(not isinstance(image, Image.Image) for image in images):
190
+ raise ValueError("Expected a nonempty list of PIL images")
191
+ if self._image_processor is None:
192
+ self._image_processor = Qwen3VLProcessor.from_pretrained(
193
+ self.config._name_or_path, revision=self.config._commit_hash, trust_remote_code=True,
194
+ )
195
+ self._image_processor.tokenizer = self.tokenizer
196
+ mapper = ImageInputMapper(
197
+ self._image_processor, self.tokenizer,
198
+ self.config.document_prefix, self.config.boundary_marker,
199
+ )
200
+ features = ImageEncodingConfig(chunks, min_pixels, max_pixels).prepare(mapper, images)
201
+ if features["input_ids"].shape[1] > self.config.document_length:
202
+ raise ValueError("Image input exceeds document_length; reduce max_pixels")
203
+ return dict(features)
204
+
205
+ @torch.inference_mode()
206
+ def encode_images(
207
+ self,
208
+ images: list[Image.Image],
209
+ batch_size: int = 1,
210
+ show_progress_bar: bool = False,
211
+ device: str | torch.device | None = None,
212
+ normalize_embeddings: bool = False,
213
+ convert_to_numpy: bool = True,
214
+ quantization: Literal["int8"] = "int8",
215
+ *,
216
+ chunks: int = 8,
217
+ min_pixels: int = 16384,
218
+ max_pixels: int = 1800000,
219
+ ) -> list[np.ndarray] | list[torch.Tensor]:
220
+ """Return one quantized vector per nonempty row band of each page."""
221
+ if batch_size < 1 or quantization != "int8":
222
+ raise ValueError("Expected positive batch_size and int8 quantization")
223
+ self.eval()
224
+ if device is not None:
225
+ self.to(device)
226
+ rows = []
227
+ for start in tqdm(range(0, len(images), batch_size), disable=not show_progress_bar):
228
+ features = {
229
+ key: value.to(self.device)
230
+ for key, value in self.prepare_images(
231
+ images[start:start + batch_size], chunks=chunks,
232
+ min_pixels=min_pixels, max_pixels=max_pixels,
233
+ ).items()
234
+ }
235
+ projected = self._pool(features, "document")
236
+ vectors = torch.round(torch.tanh(projected) * 127).clamp(-128, 127)
237
+ if normalize_embeddings:
238
+ vectors = F.normalize(vectors, p=2, dim=-1)
239
+ rows.extend(vector[mask].cpu() for vector, mask in zip(vectors, features["chunk_mask"], strict=True))
240
+ return [row.numpy() for row in rows] if convert_to_numpy else rows
241
+
242
+ @torch.inference_mode()
243
+ def encode(
244
+ self,
245
+ documents: list[list[str]],
246
+ batch_size: int = 32,
247
+ show_progress_bar: bool = False,
248
+ device: str | torch.device | None = None,
249
+ normalize_embeddings: bool = False,
250
+ convert_to_numpy: bool = True,
251
+ quantization: Literal["int8"] = "int8",
252
+ *,
253
+ task: Literal["query", "document"] = "document",
254
+ ) -> list[np.ndarray] | list[torch.Tensor]:
255
+ """Return one (chunk_count, embedding_dim) array per document.
256
+
257
+ Int8 quantization returns float32 integer values, matching the V1 API.
258
+ No automatic chunk splitting or input truncation is performed.
259
+ """
260
+ if not isinstance(documents, list) or any(
261
+ not isinstance(row, list)
262
+ or any(not isinstance(text, str) for text in row)
263
+ for row in documents
264
+ ):
265
+ raise TypeError(
266
+ "Expected a list of documents, each a list of text chunks"
267
+ )
268
+ if batch_size < 1:
269
+ raise ValueError("batch_size must be positive")
270
+ if task not in ("query", "document"):
271
+ raise ValueError(f"Unsupported task: {task}")
272
+ if quantization != "int8":
273
+ raise ValueError(f"Unsupported quantization: {quantization}")
274
+ self.eval()
275
+ if device is not None:
276
+ self.to(device)
277
+ rows = []
278
+ for start in tqdm(
279
+ range(0, len(documents), batch_size), disable=not show_progress_bar
280
+ ):
281
+ batch = documents[start : start + batch_size]
282
+ features = {
283
+ key: value.to(self.device)
284
+ for key, value in self.prepare_inputs(batch, task).items()
285
+ }
286
+ projected = self._pool(features, task)
287
+ vectors = torch.round(torch.tanh(projected) * 127).clamp(-128, 127)
288
+ if normalize_embeddings:
289
+ vectors = F.normalize(vectors, p=2, dim=-1)
290
+ rows.extend(
291
+ vectors[index, : len(chunks)].cpu()
292
+ for index, chunks in enumerate(batch)
293
+ )
294
+ return [row.numpy() for row in rows] if convert_to_numpy else rows
295
+
296
+ def encode_queries(
297
+ self, queries: list[list[str]], **kwargs: Any
298
+ ) -> list[np.ndarray] | list[torch.Tensor]:
299
+ """Encode singleton query rows with the checkpoint's query prefix."""
300
+ return self.encode(queries, task="query", **kwargs)
301
+
302
+ def save_pretrained(
303
+ self, save_directory: str | Path, **kwargs: Any
304
+ ) -> None:
305
+ tokenizer = self.tokenizer
306
+ super().save_pretrained(save_directory, **kwargs)
307
+ tokenizer.save_pretrained(save_directory)
processor_config.json ADDED
@@ -0,0 +1,63 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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": "Qwen2VLImageProcessorFast",
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
+ "merge_size": 2,
51
+ "min_frames": 4,
52
+ "patch_size": 16,
53
+ "resample": 3,
54
+ "rescale_factor": 0.00392156862745098,
55
+ "return_metadata": false,
56
+ "size": {
57
+ "longest_edge": 25165824,
58
+ "shortest_edge": 4096
59
+ },
60
+ "temporal_patch_size": 2,
61
+ "video_processor_type": "Qwen3VLVideoProcessor"
62
+ }
63
+ }
tokenizer.json ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:d76b678db762df7761041239ca8950fb190135c94bb66ce8aeff5a0ff2933cf5
3
+ size 19989896
tokenizer_config.json ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "add_prefix_space": false,
3
+ "audio_bos_token": "<|audio_start|>",
4
+ "audio_eos_token": "<|audio_end|>",
5
+ "audio_token": "<|audio_pad|>",
6
+ "backend": "tokenizers",
7
+ "bos_token": null,
8
+ "clean_up_tokenization_spaces": false,
9
+ "eos_token": "<|im_end|>",
10
+ "errors": "replace",
11
+ "extra_special_tokens": [
12
+ "[Q] ",
13
+ "[D] "
14
+ ],
15
+ "image_token": "<|image_pad|>",
16
+ "is_local": true,
17
+ "model_max_length": 262144,
18
+ "model_specific_special_tokens": {
19
+ "audio_bos_token": "<|audio_start|>",
20
+ "audio_eos_token": "<|audio_end|>",
21
+ "audio_token": "<|audio_pad|>",
22
+ "image_token": "<|image_pad|>",
23
+ "video_token": "<|video_pad|>",
24
+ "vision_bos_token": "<|vision_start|>",
25
+ "vision_eos_token": "<|vision_end|>"
26
+ },
27
+ "pad_token": "<|endoftext|>",
28
+ "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+",
29
+ "processor_class": "Qwen3VLProcessor",
30
+ "split_special_tokens": false,
31
+ "tokenizer_class": "TokenizersBackend",
32
+ "unk_token": null,
33
+ "video_token": "<|video_pad|>",
34
+ "vision_bos_token": "<|vision_start|>",
35
+ "vision_eos_token": "<|vision_end|>"
36
+ }