openvino-ci commited on
Commit
c8f5b0e
·
verified ·
1 Parent(s): ac8e18f

Upload folder using huggingface_hub

Browse files
.gitattributes CHANGED
@@ -33,3 +33,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ tokenizer.json filter=lfs diff=lfs merge=lfs -text
README.md ADDED
@@ -0,0 +1,117 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: apache-2.0
3
+ base_model:
4
+ - google/gemma-4-E4B-it
5
+ base_model_relation: quantized
6
+ pipeline_tag: image-text-to-text
7
+ tags:
8
+ - gemma4
9
+ - conversational
10
+ library_name: openvino
11
+ ---
12
+
13
+ # gemma-4-E4B-it-int4-ov
14
+
15
+ * Model creator: [google](https://huggingface.co/google)
16
+ * Original model: [gemma-4-E4B-it](https://huggingface.co/google/gemma-4-E4B-it)
17
+
18
+ ## Description
19
+
20
+ This is [gemma-4-E4B-it](https://huggingface.co/google/gemma-4-E4B-it) model converted to the [OpenVINO™ IR](https://docs.openvino.ai/2026/documentation/openvino-ir-format.html) (Intermediate Representation) format with weights compressed to INT4 by [NNCF](https://github.com/openvinotoolkit/nncf).
21
+
22
+ ## Quantization Parameters
23
+
24
+ Weight compression was performed using `nncf.compress_weights` with the following parameters:
25
+
26
+ * mode: **INT4_ASYM**
27
+ * group_size: **128**
28
+ * ratio: **1.0**
29
+
30
+ For more information on quantization, check the [OpenVINO model optimization guide](https://docs.openvino.ai/2026/openvino-workflow/model-optimization-guide/weight-compression.html).
31
+
32
+ ## Compatibility
33
+
34
+ The provided OpenVINO™ IR model is compatible with:
35
+
36
+ * OpenVINO version 2026.1.0 and higher
37
+ * Optimum Intel 1.27.0 and higher
38
+
39
+ ## Running Model Inference with [OpenVINO GenAI](https://github.com/openvinotoolkit/openvino.genai)
40
+
41
+ 1. Install packages required for using OpenVINO GenAI:
42
+
43
+ ```
44
+ pip install openvino openvino-tokenizers openvino-genai
45
+
46
+ pip install huggingface_hub
47
+ ```
48
+
49
+ 2. Download model from HuggingFace Hub:
50
+
51
+ ```python
52
+ import huggingface_hub as hf_hub
53
+
54
+ model_id = "OpenVINO/gemma-4-E4B-it-int4-ov"
55
+ model_path = "gemma-4-E4B-it-int4-ov"
56
+
57
+ hf_hub.snapshot_download(model_id, local_dir=model_path)
58
+ ```
59
+
60
+ 3. Run model inference:
61
+
62
+ ```python
63
+ import openvino_genai as ov_genai
64
+ import requests
65
+ from PIL import Image
66
+ from io import BytesIO
67
+ import numpy as np
68
+ import openvino as ov
69
+
70
+ device = "CPU"
71
+ pipe = ov_genai.VLMPipeline(model_path, device)
72
+
73
+ def load_image(image_file):
74
+ if isinstance(image_file, str) and (image_file.startswith("http") or image_file.startswith("https")):
75
+ response = requests.get(image_file)
76
+ image = Image.open(BytesIO(response.content)).convert("RGB")
77
+ else:
78
+ image = Image.open(image_file).convert("RGB")
79
+ image_data = np.array(image.getdata()).reshape(1, image.size[1], image.size[0], 3).astype(np.uint8)
80
+ return ov.Tensor(image_data)
81
+
82
+ prompt = "What is unusual in this picture?"
83
+
84
+ url = "https://github.com/openvinotoolkit/openvino_notebooks/assets/29454499/d5fbbd1a-d484-415c-88cb-9986625b7b11"
85
+ image_tensor = load_image(url)
86
+
87
+ def streamer(subword: str) -> bool:
88
+ print(subword, end="", flush=True)
89
+ return False
90
+
91
+ pipe.start_chat()
92
+ output = pipe.generate(prompt, image=image_tensor, max_new_tokens=100, streamer=streamer)
93
+ pipe.finish_chat()
94
+ ```
95
+
96
+ More GenAI usage examples can be found in OpenVINO GenAI library [docs](https://docs.openvino.ai/2026/openvino-workflow-generative/inference-with-genai.html) and [samples](https://github.com/openvinotoolkit/openvino.genai?tab=readme-ov-file#openvino-genai-samples)
97
+
98
+ You can find more detailed usage examples in OpenVINO Notebooks:
99
+
100
+ - [VLM](https://openvinotoolkit.github.io/openvino_notebooks/?search=Visual+Language)
101
+ - [LLM](https://openvinotoolkit.github.io/openvino_notebooks/?search=LLM)
102
+
103
+ ## Limitations
104
+
105
+ Check the original [model card](https://huggingface.co/google/gemma-4-E4B-it) for limitations.
106
+
107
+ ## Legal information
108
+
109
+ The original model is distributed under [Apache License Version 2.0](https://huggingface.co/google/gemma-4-E4B-it/blob/main/LICENSE) license. More details can be found in [gemma-4-E4B-it](https://huggingface.co/google/gemma-4-E4B-it).
110
+
111
+ ## Disclaimer
112
+
113
+ Intel is committed to respecting human rights and avoiding causing or
114
+ contributing to adverse impacts on human rights. See
115
+ [Intel's Global Human Rights Principles](https://www.intel.com/content/dam/www/central-libraries/us/en/documents/policy-human-rights.pdf).
116
+ Intel's products and software are intended only to be used in applications
117
+ that do not cause or contribute to adverse impacts on human rights.
chat_template.jinja ADDED
@@ -0,0 +1,344 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {%- macro format_parameters(properties, required) -%}
2
+ {%- set standard_keys = ['description', 'type', 'properties', 'required', 'nullable'] -%}
3
+ {%- set ns = namespace(found_first=false) -%}
4
+ {%- for key, value in properties | dictsort -%}
5
+ {%- set add_comma = false -%}
6
+ {%- if key not in standard_keys -%}
7
+ {%- if ns.found_first %},{% endif -%}
8
+ {%- set ns.found_first = true -%}
9
+ {{ key }}:{
10
+ {%- if value['description'] -%}
11
+ description:<|"|>{{ value['description'] }}<|"|>
12
+ {%- set add_comma = true -%}
13
+ {%- endif -%}
14
+ {%- if value['type'] | upper == 'STRING' -%}
15
+ {%- if value['enum'] -%}
16
+ {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}
17
+ enum:{{ format_argument(value['enum']) }}
18
+ {%- endif -%}
19
+ {%- elif value['type'] | upper == 'ARRAY' -%}
20
+ {%- if value['items'] is mapping and value['items'] -%}
21
+ {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}
22
+ items:{
23
+ {%- set ns_items = namespace(found_first=false) -%}
24
+ {%- for item_key, item_value in value['items'] | dictsort -%}
25
+ {%- if item_value is not none -%}
26
+ {%- if ns_items.found_first %},{% endif -%}
27
+ {%- set ns_items.found_first = true -%}
28
+ {%- if item_key == 'properties' -%}
29
+ properties:{
30
+ {%- if item_value is mapping -%}
31
+ {{- format_parameters(item_value, value['items']['required'] | default([])) -}}
32
+ {%- endif -%}
33
+ }
34
+ {%- elif item_key == 'required' -%}
35
+ required:[
36
+ {%- for req_item in item_value -%}
37
+ <|"|>{{- req_item -}}<|"|>
38
+ {%- if not loop.last %},{% endif -%}
39
+ {%- endfor -%}
40
+ ]
41
+ {%- elif item_key == 'type' -%}
42
+ {%- if item_value is string -%}
43
+ type:{{ format_argument(item_value | upper) }}
44
+ {%- else -%}
45
+ type:{{ format_argument(item_value | map('upper') | list) }}
46
+ {%- endif -%}
47
+ {%- else -%}
48
+ {{ item_key }}:{{ format_argument(item_value) }}
49
+ {%- endif -%}
50
+ {%- endif -%}
51
+ {%- endfor -%}
52
+ }
53
+ {%- endif -%}
54
+ {%- endif -%}
55
+ {%- if value['nullable'] %}
56
+ {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}
57
+ nullable:true
58
+ {%- endif -%}
59
+ {%- if value['type'] | upper == 'OBJECT' -%}
60
+ {%- if value['properties'] is defined and value['properties'] is mapping -%}
61
+ {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}
62
+ properties:{
63
+ {{- format_parameters(value['properties'], value['required'] | default([])) -}}
64
+ }
65
+ {%- elif value is mapping -%}
66
+ {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}
67
+ properties:{
68
+ {{- format_parameters(value, value['required'] | default([])) -}}
69
+ }
70
+ {%- endif -%}
71
+ {%- if value['required'] -%}
72
+ {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}
73
+ required:[
74
+ {%- for item in value['required'] | default([]) -%}
75
+ <|"|>{{- item -}}<|"|>
76
+ {%- if not loop.last %},{% endif -%}
77
+ {%- endfor -%}
78
+ ]
79
+ {%- endif -%}
80
+ {%- endif -%}
81
+ {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}
82
+ type:<|"|>{{ value['type'] | upper }}<|"|>}
83
+ {%- endif -%}
84
+ {%- endfor -%}
85
+ {%- endmacro -%}
86
+ {%- macro format_function_declaration(tool_data) -%}
87
+ declaration:{{- tool_data['function']['name'] -}}{description:<|"|>{{- tool_data['function']['description'] -}}<|"|>
88
+ {%- set params = tool_data['function']['parameters'] -%}
89
+ {%- if params -%}
90
+ ,parameters:{
91
+ {%- if params['properties'] -%}
92
+ properties:{ {{- format_parameters(params['properties'], params['required']) -}} },
93
+ {%- endif -%}
94
+ {%- if params['required'] -%}
95
+ required:[
96
+ {%- for item in params['required'] -%}
97
+ <|"|>{{- item -}}<|"|>
98
+ {{- ',' if not loop.last -}}
99
+ {%- endfor -%}
100
+ ],
101
+ {%- endif -%}
102
+ {%- if params['type'] -%}
103
+ type:<|"|>{{- params['type'] | upper -}}<|"|>}
104
+ {%- endif -%}
105
+ {%- endif -%}
106
+ {%- if 'response' in tool_data['function'] -%}
107
+ {%- set response_declaration = tool_data['function']['response'] -%}
108
+ ,response:{
109
+ {%- if response_declaration['description'] -%}
110
+ description:<|"|>{{- response_declaration['description'] -}}<|"|>,
111
+ {%- endif -%}
112
+ {%- if response_declaration['type'] | upper == 'OBJECT' -%}
113
+ type:<|"|>{{- response_declaration['type'] | upper -}}<|"|>}
114
+ {%- endif -%}
115
+ {%- endif -%}
116
+ }
117
+ {%- endmacro -%}
118
+ {%- macro format_argument(argument, escape_keys=True) -%}
119
+ {%- if argument is string -%}
120
+ {{- '<|"|>' + argument + '<|"|>' -}}
121
+ {%- elif argument is boolean -%}
122
+ {{- 'true' if argument else 'false' -}}
123
+ {%- elif argument is mapping -%}
124
+ {{- '{' -}}
125
+ {%- set ns = namespace(found_first=false) -%}
126
+ {%- for key, value in argument | dictsort -%}
127
+ {%- if ns.found_first %},{% endif -%}
128
+ {%- set ns.found_first = true -%}
129
+ {%- if escape_keys -%}
130
+ {{- '<|"|>' + key + '<|"|>' -}}
131
+ {%- else -%}
132
+ {{- key -}}
133
+ {%- endif -%}
134
+ :{{- format_argument(value, escape_keys=escape_keys) -}}
135
+ {%- endfor -%}
136
+ {{- '}' -}}
137
+ {%- elif argument is sequence -%}
138
+ {{- '[' -}}
139
+ {%- for item in argument -%}
140
+ {{- format_argument(item, escape_keys=escape_keys) -}}
141
+ {%- if not loop.last %},{% endif -%}
142
+ {%- endfor -%}
143
+ {{- ']' -}}
144
+ {%- else -%}
145
+ {{- argument -}}
146
+ {%- endif -%}
147
+ {%- endmacro -%}
148
+ {%- macro strip_thinking(text) -%}
149
+ {%- set ns = namespace(result='') -%}
150
+ {%- for part in text.split('<channel|>') -%}
151
+ {%- if '<|channel>' in part -%}
152
+ {%- set ns.result = ns.result + part.split('<|channel>')[0] -%}
153
+ {%- else -%}
154
+ {%- set ns.result = ns.result + part -%}
155
+ {%- endif -%}
156
+ {%- endfor -%}
157
+ {{- ns.result | trim -}}
158
+ {%- endmacro -%}
159
+
160
+ {%- macro format_tool_response_block(tool_name, response) -%}
161
+ {{- '<|tool_response>' -}}
162
+ {%- if response is mapping -%}
163
+ {{- 'response:' + tool_name + '{' -}}
164
+ {%- for key, value in response | dictsort -%}
165
+ {{- key -}}:{{- format_argument(value, escape_keys=False) -}}
166
+ {%- if not loop.last %},{% endif -%}
167
+ {%- endfor -%}
168
+ {{- '}' -}}
169
+ {%- else -%}
170
+ {{- 'response:' + tool_name + '{value:' + format_argument(response, escape_keys=False) + '}' -}}
171
+ {%- endif -%}
172
+ {{- '<tool_response|>' -}}
173
+ {%- endmacro -%}
174
+
175
+ {%- set ns = namespace(prev_message_type=None) -%}
176
+ {%- set loop_messages = messages -%}
177
+ {{- bos_token -}}
178
+ {#- Handle System/Tool Definitions Block -#}
179
+ {%- if (enable_thinking is defined and enable_thinking) or tools or messages[0]['role'] in ['system', 'developer'] -%}
180
+ {{- '<|turn>system\n' -}}
181
+
182
+ {#- Inject Thinking token at the very top of the FIRST system turn -#}
183
+ {%- if enable_thinking is defined and enable_thinking -%}
184
+ {{- '<|think|>\n' -}}
185
+ {%- set ns.prev_message_type = 'think' -%}
186
+ {%- endif -%}
187
+
188
+ {%- if messages[0]['role'] in ['system', 'developer'] -%}
189
+ {{- messages[0]['content'] | trim -}}
190
+ {%- set loop_messages = messages[1:] -%}
191
+ {%- endif -%}
192
+
193
+ {%- if tools -%}
194
+ {%- for tool in tools %}
195
+ {{- '<|tool>' -}}
196
+ {{- format_function_declaration(tool) | trim -}}
197
+ {{- '<tool|>' -}}
198
+ {%- endfor %}
199
+ {%- set ns.prev_message_type = 'tool' -%}
200
+ {%- endif -%}
201
+
202
+ {{- '<turn|>\n' -}}
203
+ {%- endif %}
204
+
205
+ {#- Pre-scan: find last user message index for reasoning guard -#}
206
+ {%- set ns_turn = namespace(last_user_idx=-1) -%}
207
+ {%- for i in range(loop_messages | length) -%}
208
+ {%- if loop_messages[i]['role'] == 'user' -%}
209
+ {%- set ns_turn.last_user_idx = i -%}
210
+ {%- endif -%}
211
+ {%- endfor -%}
212
+
213
+ {#- Loop through messages -#}
214
+ {%- for message in loop_messages -%}
215
+ {%- if message['role'] != 'tool' -%}
216
+ {%- set ns.prev_message_type = None -%}
217
+ {%- set role = 'model' if message['role'] == 'assistant' else message['role'] -%}
218
+ {#- Detect continuation: suppress duplicate <|turn>model when previous non-tool message was also assistant -#}
219
+ {%- set prev_nt = namespace(role=None, found=false) -%}
220
+ {%- if loop.index0 > 0 -%}
221
+ {%- for j in range(loop.index0 - 1, -1, -1) -%}
222
+ {%- if not prev_nt.found -%}
223
+ {%- if loop_messages[j]['role'] != 'tool' -%}
224
+ {%- set prev_nt.role = loop_messages[j]['role'] -%}
225
+ {%- set prev_nt.found = true -%}
226
+ {%- endif -%}
227
+ {%- endif -%}
228
+ {%- endfor -%}
229
+ {%- endif -%}
230
+ {%- set continue_same_model_turn = (role == 'model' and prev_nt.role == 'assistant') -%}
231
+ {%- if not continue_same_model_turn -%}
232
+ {{- '<|turn>' + role + '\n' }}
233
+ {%- endif -%}
234
+
235
+ {#- Render reasoning/reasoning_content as thinking channel -#}
236
+ {%- set thinking_text = message.get('reasoning') or message.get('reasoning_content') -%}
237
+ {%- if thinking_text and loop.index0 > ns_turn.last_user_idx and message.get('tool_calls') -%}
238
+ {{- '<|channel>thought\n' + thinking_text + '\n<channel|>' -}}
239
+ {%- endif -%}
240
+
241
+ {%- if message['tool_calls'] -%}
242
+ {%- for tool_call in message['tool_calls'] -%}
243
+ {%- set function = tool_call['function'] -%}
244
+ {{- '<|tool_call>call:' + function['name'] + '{' -}}
245
+ {%- if function['arguments'] is mapping -%}
246
+ {%- set ns_args = namespace(found_first=false) -%}
247
+ {%- for key, value in function['arguments'] | dictsort -%}
248
+ {%- if ns_args.found_first %},{% endif -%}
249
+ {%- set ns_args.found_first = true -%}
250
+ {{- key -}}:{{- format_argument(value, escape_keys=False) -}}
251
+ {%- endfor -%}
252
+ {%- elif function['arguments'] is string -%}
253
+ {{- function['arguments'] -}}
254
+ {%- endif -%}
255
+ {{- '}<tool_call|>' -}}
256
+ {%- endfor -%}
257
+ {%- set ns.prev_message_type = 'tool_call' -%}
258
+ {%- endif -%}
259
+
260
+ {%- set ns_tr_out = namespace(flag=false) -%}
261
+ {%- if message.get('tool_responses') -%}
262
+ {#- Legacy: tool_responses embedded on the assistant message (Google/Gemma native) -#}
263
+ {%- for tool_response in message['tool_responses'] -%}
264
+ {{- format_tool_response_block(tool_response['name'] | default('unknown'), tool_response['response']) -}}
265
+ {%- set ns_tr_out.flag = true -%}
266
+ {%- set ns.prev_message_type = 'tool_response' -%}
267
+ {%- endfor -%}
268
+ {%- elif message.get('tool_calls') -%}
269
+ {#- OpenAI Chat Completions: forward-scan consecutive role:tool messages -#}
270
+ {%- set ns_tool_scan = namespace(stopped=false) -%}
271
+ {%- for k in range(loop.index0 + 1, loop_messages | length) -%}
272
+ {%- if ns_tool_scan.stopped -%}
273
+ {%- elif loop_messages[k]['role'] != 'tool' -%}
274
+ {%- set ns_tool_scan.stopped = true -%}
275
+ {%- else -%}
276
+ {%- set follow = loop_messages[k] -%}
277
+ {#- Resolve tool_call_id to function name -#}
278
+ {%- set ns_tname = namespace(name=follow.get('name') | default('unknown')) -%}
279
+ {%- for tc in message['tool_calls'] -%}
280
+ {%- if tc.get('id') == follow.get('tool_call_id') -%}
281
+ {%- set ns_tname.name = tc['function']['name'] -%}
282
+ {%- endif -%}
283
+ {%- endfor -%}
284
+ {#- Handle content as string or content-parts array -#}
285
+ {%- set tool_body = follow.get('content') -%}
286
+ {%- if tool_body is string -%}
287
+ {{- format_tool_response_block(ns_tname.name, tool_body) -}}
288
+ {%- elif tool_body is sequence and tool_body is not string -%}
289
+ {%- set ns_txt = namespace(s='') -%}
290
+ {%- for part in tool_body -%}
291
+ {%- if part.get('type') == 'text' -%}
292
+ {%- set ns_txt.s = ns_txt.s + (part.get('text') | default('')) -%}
293
+ {%- endif -%}
294
+ {%- endfor -%}
295
+ {{- format_tool_response_block(ns_tname.name, ns_txt.s) -}}
296
+ {%- else -%}
297
+ {{- format_tool_response_block(ns_tname.name, tool_body) -}}
298
+ {%- endif -%}
299
+ {%- set ns_tr_out.flag = true -%}
300
+ {%- set ns.prev_message_type = 'tool_response' -%}
301
+ {%- endif -%}
302
+ {%- endfor -%}
303
+ {%- endif -%}
304
+
305
+ {%- if message['content'] is string -%}
306
+ {%- if role == 'model' -%}
307
+ {{- strip_thinking(message['content']) -}}
308
+ {%- else -%}
309
+ {{- message['content'] | trim -}}
310
+ {%- endif -%}
311
+ {%- elif message['content'] is sequence -%}
312
+ {%- for item in message['content'] -%}
313
+ {%- if item['type'] == 'text' -%}
314
+ {%- if role == 'model' -%}
315
+ {{- strip_thinking(item['text']) -}}
316
+ {%- else -%}
317
+ {{- item['text'] | trim -}}
318
+ {%- endif -%}
319
+ {%- elif item['type'] == 'image' -%}
320
+ {{- '<|image|>' -}}
321
+ {%- set ns.prev_message_type = 'image' -%}
322
+ {%- elif item['type'] == 'audio' -%}
323
+ {{- '<|audio|>' -}}
324
+ {%- set ns.prev_message_type = 'audio' -%}
325
+ {%- elif item['type'] == 'video' -%}
326
+ {{- '<|video|>' -}}
327
+ {%- set ns.prev_message_type = 'video' -%}
328
+ {%- endif -%}
329
+ {%- endfor -%}
330
+ {%- endif -%}
331
+
332
+ {%- if ns.prev_message_type == 'tool_call' and not ns_tr_out.flag -%}
333
+ {{- '<|tool_response>' -}}
334
+ {%- elif not (ns_tr_out.flag and not message.get('content')) -%}
335
+ {{- '<turn|>\n' -}}
336
+ {%- endif -%}
337
+ {%- endif -%}
338
+ {%- endfor -%}
339
+
340
+ {%- if add_generation_prompt -%}
341
+ {%- if ns.prev_message_type != 'tool_response' and ns.prev_message_type != 'tool_call' -%}
342
+ {{- '<|turn>model\n' -}}
343
+ {%- endif -%}
344
+ {%- endif -%}
config.json ADDED
@@ -0,0 +1,198 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architectures": [
3
+ "Gemma4ForConditionalGeneration"
4
+ ],
5
+ "audio_config": {
6
+ "_name_or_path": "",
7
+ "architectures": null,
8
+ "attention_chunk_size": 12,
9
+ "attention_context_left": 13,
10
+ "attention_context_right": 0,
11
+ "attention_invalid_logits_value": -1000000000.0,
12
+ "attention_logit_cap": 50.0,
13
+ "chunk_size_feed_forward": 0,
14
+ "conv_kernel_size": 5,
15
+ "dtype": "bfloat16",
16
+ "gradient_clipping": 10000000000.0,
17
+ "hidden_act": "silu",
18
+ "hidden_size": 1024,
19
+ "id2label": {
20
+ "0": "LABEL_0",
21
+ "1": "LABEL_1"
22
+ },
23
+ "initializer_range": 0.02,
24
+ "is_encoder_decoder": false,
25
+ "label2id": {
26
+ "LABEL_0": 0,
27
+ "LABEL_1": 1
28
+ },
29
+ "model_type": "gemma4_audio",
30
+ "num_attention_heads": 8,
31
+ "num_hidden_layers": 12,
32
+ "output_attentions": false,
33
+ "output_hidden_states": false,
34
+ "output_proj_dims": 1536,
35
+ "problem_type": null,
36
+ "residual_weight": 0.5,
37
+ "return_dict": true,
38
+ "rms_norm_eps": 1e-06,
39
+ "subsampling_conv_channels": [
40
+ 128,
41
+ 32
42
+ ],
43
+ "use_clipped_linears": true
44
+ },
45
+ "audio_token_id": 258881,
46
+ "boa_token_id": 256000,
47
+ "boi_token_id": 255999,
48
+ "dtype": "bfloat16",
49
+ "eoa_token_id": 258883,
50
+ "eoa_token_index": 258883,
51
+ "eoi_token_id": 258882,
52
+ "eos_token_id": [
53
+ 1,
54
+ 106
55
+ ],
56
+ "image_token_id": 258880,
57
+ "initializer_range": 0.02,
58
+ "model_type": "gemma4",
59
+ "text_config": {
60
+ "attention_bias": false,
61
+ "attention_dropout": 0.0,
62
+ "attention_k_eq_v": false,
63
+ "bos_token_id": 2,
64
+ "dtype": "bfloat16",
65
+ "enable_moe_block": false,
66
+ "eos_token_id": 1,
67
+ "expert_intermediate_size": null,
68
+ "final_logit_softcapping": 30.0,
69
+ "global_head_dim": 512,
70
+ "head_dim": 256,
71
+ "hidden_activation": "gelu_pytorch_tanh",
72
+ "hidden_size": 2560,
73
+ "hidden_size_per_layer_input": 256,
74
+ "initializer_range": 0.02,
75
+ "intermediate_size": 10240,
76
+ "layer_types": [
77
+ "sliding_attention",
78
+ "sliding_attention",
79
+ "sliding_attention",
80
+ "sliding_attention",
81
+ "sliding_attention",
82
+ "full_attention",
83
+ "sliding_attention",
84
+ "sliding_attention",
85
+ "sliding_attention",
86
+ "sliding_attention",
87
+ "sliding_attention",
88
+ "full_attention",
89
+ "sliding_attention",
90
+ "sliding_attention",
91
+ "sliding_attention",
92
+ "sliding_attention",
93
+ "sliding_attention",
94
+ "full_attention",
95
+ "sliding_attention",
96
+ "sliding_attention",
97
+ "sliding_attention",
98
+ "sliding_attention",
99
+ "sliding_attention",
100
+ "full_attention",
101
+ "sliding_attention",
102
+ "sliding_attention",
103
+ "sliding_attention",
104
+ "sliding_attention",
105
+ "sliding_attention",
106
+ "full_attention",
107
+ "sliding_attention",
108
+ "sliding_attention",
109
+ "sliding_attention",
110
+ "sliding_attention",
111
+ "sliding_attention",
112
+ "full_attention",
113
+ "sliding_attention",
114
+ "sliding_attention",
115
+ "sliding_attention",
116
+ "sliding_attention",
117
+ "sliding_attention",
118
+ "full_attention"
119
+ ],
120
+ "max_position_embeddings": 131072,
121
+ "model_type": "gemma4_text",
122
+ "moe_intermediate_size": null,
123
+ "num_attention_heads": 8,
124
+ "num_experts": null,
125
+ "num_global_key_value_heads": null,
126
+ "num_hidden_layers": 42,
127
+ "num_key_value_heads": 2,
128
+ "num_kv_shared_layers": 18,
129
+ "pad_token_id": 0,
130
+ "rms_norm_eps": 1e-06,
131
+ "rope_parameters": {
132
+ "full_attention": {
133
+ "partial_rotary_factor": 0.25,
134
+ "rope_theta": 1000000.0,
135
+ "rope_type": "proportional"
136
+ },
137
+ "sliding_attention": {
138
+ "rope_theta": 10000.0,
139
+ "rope_type": "default"
140
+ }
141
+ },
142
+ "sliding_window": 512,
143
+ "tie_word_embeddings": true,
144
+ "top_k_experts": null,
145
+ "use_bidirectional_attention": null,
146
+ "use_cache": true,
147
+ "use_double_wide_mlp": false,
148
+ "vocab_size": 262144,
149
+ "vocab_size_per_layer_input": 262144
150
+ },
151
+ "tie_word_embeddings": true,
152
+ "transformers_version": "5.5.0",
153
+ "video_token_id": 258884,
154
+ "vision_config": {
155
+ "_name_or_path": "",
156
+ "architectures": null,
157
+ "attention_bias": false,
158
+ "attention_dropout": 0.0,
159
+ "chunk_size_feed_forward": 0,
160
+ "default_output_length": 280,
161
+ "dtype": "bfloat16",
162
+ "global_head_dim": 64,
163
+ "head_dim": 64,
164
+ "hidden_activation": "gelu_pytorch_tanh",
165
+ "hidden_size": 768,
166
+ "id2label": {
167
+ "0": "LABEL_0",
168
+ "1": "LABEL_1"
169
+ },
170
+ "initializer_range": 0.02,
171
+ "intermediate_size": 3072,
172
+ "is_encoder_decoder": false,
173
+ "label2id": {
174
+ "LABEL_0": 0,
175
+ "LABEL_1": 1
176
+ },
177
+ "max_position_embeddings": 131072,
178
+ "model_type": "gemma4_vision",
179
+ "num_attention_heads": 12,
180
+ "num_hidden_layers": 16,
181
+ "num_key_value_heads": 12,
182
+ "output_attentions": false,
183
+ "output_hidden_states": false,
184
+ "patch_size": 16,
185
+ "pooling_kernel_size": 3,
186
+ "position_embedding_size": 10240,
187
+ "problem_type": null,
188
+ "return_dict": true,
189
+ "rms_norm_eps": 1e-06,
190
+ "rope_parameters": {
191
+ "rope_theta": 100.0,
192
+ "rope_type": "default"
193
+ },
194
+ "standardize": false,
195
+ "use_clipped_linears": true
196
+ },
197
+ "vision_soft_tokens_per_image": 280
198
+ }
generation_config.json ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "bos_token_id": 2,
3
+ "do_sample": true,
4
+ "eos_token_id": [
5
+ 1,
6
+ 106,
7
+ 50
8
+ ],
9
+ "pad_token_id": 0,
10
+ "temperature": 1.0,
11
+ "top_k": 64,
12
+ "top_p": 0.95,
13
+ "transformers_version": "5.5.0"
14
+ }
openvino_config.json ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "dtype": "int4",
3
+ "input_info": null,
4
+ "optimum_version": "2.1.0.dev0",
5
+ "output_attentions": false,
6
+ "quantization_config": {
7
+ "_dataset_kwargs": {},
8
+ "dataset": null,
9
+ "default_config": {
10
+ "quant_method": "default"
11
+ },
12
+ "ignored_scope": null,
13
+ "num_samples": null,
14
+ "processor": "google/gemma-4-E4B-it",
15
+ "quantization_configs": {
16
+ "lm_model": {
17
+ "_dataset_kwargs": {},
18
+ "all_layers": null,
19
+ "backup_precision": null,
20
+ "bits": 4,
21
+ "dataset": null,
22
+ "dq_group_size": null,
23
+ "dtype": "int4",
24
+ "gptq": null,
25
+ "group_size": 128,
26
+ "group_size_fallback": null,
27
+ "ignored_scope": null,
28
+ "lora_correction": null,
29
+ "num_samples": null,
30
+ "processor": "google/gemma-4-E4B-it",
31
+ "quant_method": "default",
32
+ "ratio": 1.0,
33
+ "scale_estimation": null,
34
+ "sensitivity_metric": null,
35
+ "statistics_path": null,
36
+ "sym": false,
37
+ "tokenizer": "google/gemma-4-E4B-it"
38
+ }
39
+ },
40
+ "tokenizer": "google/gemma-4-E4B-it"
41
+ },
42
+ "save_onnx_model": false,
43
+ "transformers_version": "5.5.0"
44
+ }
openvino_detokenizer.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:461919bda7b546453e903052588c578e3e94e9e8215b7cec07cb00cb97459d13
3
+ size 4413547
openvino_detokenizer.xml ADDED
@@ -0,0 +1,300 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <net name="detokenizer" version="11">
3
+ <layers>
4
+ <layer id="0" name="Parameter_210440" type="Parameter" version="opset1">
5
+ <data shape="?,?" element_type="i64" />
6
+ <output>
7
+ <port id="0" precision="I64" names="Parameter_210440">
8
+ <dim>-1</dim>
9
+ <dim>-1</dim>
10
+ </port>
11
+ </output>
12
+ </layer>
13
+ <layer id="1" name="Convert_210475" type="Convert" version="opset1">
14
+ <data destination_type="i32" />
15
+ <input>
16
+ <port id="0" precision="I64">
17
+ <dim>-1</dim>
18
+ <dim>-1</dim>
19
+ </port>
20
+ </input>
21
+ <output>
22
+ <port id="1" precision="I32">
23
+ <dim>-1</dim>
24
+ <dim>-1</dim>
25
+ </port>
26
+ </output>
27
+ </layer>
28
+ <layer id="2" name="Constant_210396" type="Const" version="opset1">
29
+ <data element_type="i32" shape="262144" offset="0" size="1048576" />
30
+ <output>
31
+ <port id="0" precision="I32">
32
+ <dim>262144</dim>
33
+ </port>
34
+ </output>
35
+ </layer>
36
+ <layer id="3" name="Constant_210398" type="Const" version="opset1">
37
+ <data element_type="i32" shape="262144" offset="1048576" size="1048576" />
38
+ <output>
39
+ <port id="0" precision="I32">
40
+ <dim>262144</dim>
41
+ </port>
42
+ </output>
43
+ </layer>
44
+ <layer id="4" name="Constant_210400" type="Const" version="opset1">
45
+ <data element_type="u8" shape="2316295" offset="2097152" size="2316295" />
46
+ <output>
47
+ <port id="0" precision="U8">
48
+ <dim>2316295</dim>
49
+ </port>
50
+ </output>
51
+ </layer>
52
+ <layer id="5" name="Slice_210445" type="Const" version="opset1">
53
+ <data element_type="i32" shape="24" offset="4413447" size="96" />
54
+ <output>
55
+ <port id="0" precision="I32">
56
+ <dim>24</dim>
57
+ </port>
58
+ </output>
59
+ </layer>
60
+ <layer id="6" name="VocabDecoder_210447" type="VocabDecoder" version="extension">
61
+ <data skip_tokens="" />
62
+ <input>
63
+ <port id="0" precision="I32">
64
+ <dim>-1</dim>
65
+ <dim>-1</dim>
66
+ </port>
67
+ <port id="1" precision="I32">
68
+ <dim>262144</dim>
69
+ </port>
70
+ <port id="2" precision="I32">
71
+ <dim>262144</dim>
72
+ </port>
73
+ <port id="3" precision="U8">
74
+ <dim>2316295</dim>
75
+ </port>
76
+ <port id="4" precision="I32">
77
+ <dim>24</dim>
78
+ </port>
79
+ </input>
80
+ <output>
81
+ <port id="5" precision="I32">
82
+ <dim>-1</dim>
83
+ </port>
84
+ <port id="6" precision="I32">
85
+ <dim>-1</dim>
86
+ </port>
87
+ <port id="7" precision="I32">
88
+ <dim>-1</dim>
89
+ </port>
90
+ <port id="8" precision="I32">
91
+ <dim>-1</dim>
92
+ </port>
93
+ <port id="9" precision="U8">
94
+ <dim>-1</dim>
95
+ </port>
96
+ </output>
97
+ </layer>
98
+ <layer id="7" name="Constant_210449" type="Const" version="opset1">
99
+ <data element_type="u8" shape="3" offset="4413543" size="3" />
100
+ <output>
101
+ <port id="0" precision="U8">
102
+ <dim>3</dim>
103
+ </port>
104
+ </output>
105
+ </layer>
106
+ <layer id="8" name="Constant_210451" type="Const" version="opset1">
107
+ <data element_type="u8" shape="1" offset="4413546" size="1" />
108
+ <output>
109
+ <port id="0" precision="U8">
110
+ <dim>1</dim>
111
+ </port>
112
+ </output>
113
+ </layer>
114
+ <layer id="9" name="RegexNormalization_210452" type="RegexNormalization" version="extension">
115
+ <data global_replace="true" />
116
+ <input>
117
+ <port id="0" precision="I32">
118
+ <dim>-1</dim>
119
+ </port>
120
+ <port id="1" precision="I32">
121
+ <dim>-1</dim>
122
+ </port>
123
+ <port id="2" precision="U8">
124
+ <dim>-1</dim>
125
+ </port>
126
+ <port id="3" precision="U8">
127
+ <dim>3</dim>
128
+ </port>
129
+ <port id="4" precision="U8">
130
+ <dim>1</dim>
131
+ </port>
132
+ </input>
133
+ <output>
134
+ <port id="5" precision="I32">
135
+ <dim>-1</dim>
136
+ </port>
137
+ <port id="6" precision="I32">
138
+ <dim>-1</dim>
139
+ </port>
140
+ <port id="7" precision="U8">
141
+ <dim>-1</dim>
142
+ </port>
143
+ </output>
144
+ </layer>
145
+ <layer id="10" name="ByteFallback_210453" type="ByteFallback" version="extension">
146
+ <input>
147
+ <port id="0" precision="I32">
148
+ <dim>-1</dim>
149
+ </port>
150
+ <port id="1" precision="I32">
151
+ <dim>-1</dim>
152
+ </port>
153
+ <port id="2" precision="U8">
154
+ <dim>-1</dim>
155
+ </port>
156
+ </input>
157
+ <output>
158
+ <port id="3" precision="I32">
159
+ <dim>-1</dim>
160
+ </port>
161
+ <port id="4" precision="I32">
162
+ <dim>-1</dim>
163
+ </port>
164
+ <port id="5" precision="U8">
165
+ <dim>-1</dim>
166
+ </port>
167
+ </output>
168
+ </layer>
169
+ <layer id="11" name="FuzeRagged_210454" type="FuzeRagged" version="extension">
170
+ <input>
171
+ <port id="0" precision="I32">
172
+ <dim>-1</dim>
173
+ </port>
174
+ <port id="1" precision="I32">
175
+ <dim>-1</dim>
176
+ </port>
177
+ <port id="2" precision="I32">
178
+ <dim>-1</dim>
179
+ </port>
180
+ <port id="3" precision="I32">
181
+ <dim>-1</dim>
182
+ </port>
183
+ </input>
184
+ <output>
185
+ <port id="4" precision="I32">
186
+ <dim>-1</dim>
187
+ </port>
188
+ <port id="5" precision="I32">
189
+ <dim>-1</dim>
190
+ </port>
191
+ </output>
192
+ </layer>
193
+ <layer id="12" name="UTF8Validate_210455" type="UTF8Validate" version="extension">
194
+ <data replace_mode="true" />
195
+ <input>
196
+ <port id="0" precision="I32">
197
+ <dim>-1</dim>
198
+ </port>
199
+ <port id="1" precision="I32">
200
+ <dim>-1</dim>
201
+ </port>
202
+ <port id="2" precision="U8">
203
+ <dim>-1</dim>
204
+ </port>
205
+ </input>
206
+ <output>
207
+ <port id="3" precision="I32">
208
+ <dim>-1</dim>
209
+ </port>
210
+ <port id="4" precision="I32">
211
+ <dim>-1</dim>
212
+ </port>
213
+ <port id="5" precision="U8">
214
+ <dim>-1</dim>
215
+ </port>
216
+ </output>
217
+ </layer>
218
+ <layer id="13" name="StringTensorPack_210456" type="StringTensorPack" version="opset15">
219
+ <input>
220
+ <port id="0" precision="I32">
221
+ <dim>-1</dim>
222
+ </port>
223
+ <port id="1" precision="I32">
224
+ <dim>-1</dim>
225
+ </port>
226
+ <port id="2" precision="U8">
227
+ <dim>-1</dim>
228
+ </port>
229
+ </input>
230
+ <output>
231
+ <port id="3" precision="STRING" names="Result_210457,string_output">
232
+ <dim>-1</dim>
233
+ </port>
234
+ </output>
235
+ </layer>
236
+ <layer id="14" name="Result_210457" type="Result" version="opset1" output_names="Result_210457,string_output">
237
+ <input>
238
+ <port id="0" precision="STRING">
239
+ <dim>-1</dim>
240
+ </port>
241
+ </input>
242
+ </layer>
243
+ </layers>
244
+ <edges>
245
+ <edge from-layer="0" from-port="0" to-layer="1" to-port="0" />
246
+ <edge from-layer="1" from-port="1" to-layer="6" to-port="0" />
247
+ <edge from-layer="2" from-port="0" to-layer="6" to-port="1" />
248
+ <edge from-layer="3" from-port="0" to-layer="6" to-port="2" />
249
+ <edge from-layer="4" from-port="0" to-layer="6" to-port="3" />
250
+ <edge from-layer="5" from-port="0" to-layer="6" to-port="4" />
251
+ <edge from-layer="6" from-port="7" to-layer="9" to-port="0" />
252
+ <edge from-layer="6" from-port="8" to-layer="9" to-port="1" />
253
+ <edge from-layer="6" from-port="9" to-layer="9" to-port="2" />
254
+ <edge from-layer="6" from-port="6" to-layer="11" to-port="1" />
255
+ <edge from-layer="6" from-port="5" to-layer="11" to-port="0" />
256
+ <edge from-layer="7" from-port="0" to-layer="9" to-port="3" />
257
+ <edge from-layer="8" from-port="0" to-layer="9" to-port="4" />
258
+ <edge from-layer="9" from-port="6" to-layer="10" to-port="1" />
259
+ <edge from-layer="9" from-port="7" to-layer="10" to-port="2" />
260
+ <edge from-layer="9" from-port="5" to-layer="10" to-port="0" />
261
+ <edge from-layer="10" from-port="3" to-layer="11" to-port="2" />
262
+ <edge from-layer="10" from-port="4" to-layer="11" to-port="3" />
263
+ <edge from-layer="10" from-port="5" to-layer="12" to-port="2" />
264
+ <edge from-layer="11" from-port="4" to-layer="12" to-port="0" />
265
+ <edge from-layer="11" from-port="5" to-layer="12" to-port="1" />
266
+ <edge from-layer="12" from-port="3" to-layer="13" to-port="0" />
267
+ <edge from-layer="12" from-port="4" to-layer="13" to-port="1" />
268
+ <edge from-layer="12" from-port="5" to-layer="13" to-port="2" />
269
+ <edge from-layer="13" from-port="3" to-layer="14" to-port="0" />
270
+ </edges>
271
+ <rt_info>
272
+ <info name="OpenVINO Runtime" value="2026.2.0-21622-fdad5b35a43" />
273
+ <add_attention_mask value="True" />
274
+ <add_prefix_space />
275
+ <add_special_tokens value="True" />
276
+ <bos_token_id value="2" />
277
+ <chat_template value="{%- macro format_parameters(properties, required) -%}&#10; {%- set standard_keys = ['description', 'type', 'properties', 'required', 'nullable'] -%}&#10; {%- set ns = namespace(found_first=false) -%}&#10; {%- for key, value in properties | dictsort -%}&#10; {%- set add_comma = false -%}&#10; {%- if key not in standard_keys -%}&#10; {%- if ns.found_first %},{% endif -%}&#10; {%- set ns.found_first = true -%}&#10; {{ key }}:{&#10; {%- if value['description'] -%}&#10; description:&lt;|&quot;|>{{ value['description'] }}&lt;|&quot;|>&#10; {%- set add_comma = true -%}&#10; {%- endif -%}&#10; {%- if value['type'] | upper == 'STRING' -%}&#10; {%- if value['enum'] -%}&#10; {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}&#10; enum:{{ format_argument(value['enum']) }}&#10; {%- endif -%}&#10; {%- elif value['type'] | upper == 'ARRAY' -%}&#10; {%- if value['items'] is mapping and value['items'] -%}&#10; {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}&#10; items:{&#10; {%- set ns_items = namespace(found_first=false) -%}&#10; {%- for item_key, item_value in value['items'] | dictsort -%}&#10; {%- if item_value is not none -%}&#10; {%- if ns_items.found_first %},{% endif -%}&#10; {%- set ns_items.found_first = true -%}&#10; {%- if item_key == 'properties' -%}&#10; properties:{&#10; {%- if item_value is mapping -%}&#10; {{- format_parameters(item_value, value['items']['required'] | default([])) -}}&#10; {%- endif -%}&#10; }&#10; {%- elif item_key == 'required' -%}&#10; required:[&#10; {%- for req_item in item_value -%}&#10; &lt;|&quot;|>{{- req_item -}}&lt;|&quot;|>&#10; {%- if not loop.last %},{% endif -%}&#10; {%- endfor -%}&#10; ]&#10; {%- elif item_key == 'type' -%}&#10; {%- if item_value is string -%}&#10; type:{{ format_argument(item_value | upper) }}&#10; {%- else -%}&#10; type:{{ format_argument(item_value | map('upper') | list) }}&#10; {%- endif -%}&#10; {%- else -%}&#10; {{ item_key }}:{{ format_argument(item_value) }}&#10; {%- endif -%}&#10; {%- endif -%}&#10; {%- endfor -%}&#10; }&#10; {%- endif -%}&#10; {%- endif -%}&#10; {%- if value['nullable'] %}&#10; {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}&#10; nullable:true&#10; {%- endif -%}&#10; {%- if value['type'] | upper == 'OBJECT' -%}&#10; {%- if value['properties'] is defined and value['properties'] is mapping -%}&#10; {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}&#10; properties:{&#10; {{- format_parameters(value['properties'], value['required'] | default([])) -}}&#10; }&#10; {%- elif value is mapping -%}&#10; {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}&#10; properties:{&#10; {{- format_parameters(value, value['required'] | default([])) -}}&#10; }&#10; {%- endif -%}&#10; {%- if value['required'] -%}&#10; {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}&#10; required:[&#10; {%- for item in value['required'] | default([]) -%}&#10; &lt;|&quot;|>{{- item -}}&lt;|&quot;|>&#10; {%- if not loop.last %},{% endif -%}&#10; {%- endfor -%}&#10; ]&#10; {%- endif -%}&#10; {%- endif -%}&#10; {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}&#10; type:&lt;|&quot;|>{{ value['type'] | upper }}&lt;|&quot;|>}&#10; {%- endif -%}&#10; {%- endfor -%}&#10;{%- endmacro -%}&#10;{%- macro format_function_declaration(tool_data) -%}&#10; declaration:{{- tool_data['function']['name'] -}}{description:&lt;|&quot;|>{{- tool_data['function']['description'] -}}&lt;|&quot;|>&#10; {%- set params = tool_data['function']['parameters'] -%}&#10; {%- if params -%}&#10; ,parameters:{&#10; {%- if params['properties'] -%}&#10; properties:{ {{- format_parameters(params['properties'], params['required']) -}} },&#10; {%- endif -%}&#10; {%- if params['required'] -%}&#10; required:[&#10; {%- for item in params['required'] -%}&#10; &lt;|&quot;|>{{- item -}}&lt;|&quot;|>&#10; {{- ',' if not loop.last -}}&#10; {%- endfor -%}&#10; ],&#10; {%- endif -%}&#10; {%- if params['type'] -%}&#10; type:&lt;|&quot;|>{{- params['type'] | upper -}}&lt;|&quot;|>}&#10; {%- endif -%}&#10; {%- endif -%}&#10; {%- if 'response' in tool_data['function'] -%}&#10; {%- set response_declaration = tool_data['function']['response'] -%}&#10; ,response:{&#10; {%- if response_declaration['description'] -%}&#10; description:&lt;|&quot;|>{{- response_declaration['description'] -}}&lt;|&quot;|>,&#10; {%- endif -%}&#10; {%- if response_declaration['type'] | upper == 'OBJECT' -%}&#10; type:&lt;|&quot;|>{{- response_declaration['type'] | upper -}}&lt;|&quot;|>}&#10; {%- endif -%}&#10; {%- endif -%}&#10; }&#10;{%- endmacro -%}&#10;{%- macro format_argument(argument, escape_keys=True) -%}&#10; {%- if argument is string -%}&#10; {{- '&lt;|&quot;|>' + argument + '&lt;|&quot;|>' -}}&#10; {%- elif argument is boolean -%}&#10; {{- 'true' if argument else 'false' -}}&#10; {%- elif argument is mapping -%}&#10; {{- '{' -}}&#10; {%- set ns = namespace(found_first=false) -%}&#10; {%- for key, value in argument | dictsort -%}&#10; {%- if ns.found_first %},{% endif -%}&#10; {%- set ns.found_first = true -%}&#10; {%- if escape_keys -%}&#10; {{- '&lt;|&quot;|>' + key + '&lt;|&quot;|>' -}}&#10; {%- else -%}&#10; {{- key -}}&#10; {%- endif -%}&#10; :{{- format_argument(value, escape_keys=escape_keys) -}}&#10; {%- endfor -%}&#10; {{- '}' -}}&#10; {%- elif argument is sequence -%}&#10; {{- '[' -}}&#10; {%- for item in argument -%}&#10; {{- format_argument(item, escape_keys=escape_keys) -}}&#10; {%- if not loop.last %},{% endif -%}&#10; {%- endfor -%}&#10; {{- ']' -}}&#10; {%- else -%}&#10; {{- argument -}}&#10; {%- endif -%}&#10;{%- endmacro -%}&#10;{%- macro strip_thinking(text) -%}&#10; {%- set ns = namespace(result='') -%}&#10; {%- for part in text.split('&lt;channel|>') -%}&#10; {%- if '&lt;|channel>' in part -%}&#10; {%- set ns.result = ns.result + part.split('&lt;|channel>')[0] -%}&#10; {%- else -%}&#10; {%- set ns.result = ns.result + part -%}&#10; {%- endif -%}&#10; {%- endfor -%}&#10; {{- ns.result | trim -}}&#10;{%- endmacro -%}&#10;&#10;{%- macro format_tool_response_block(tool_name, response) -%}&#10; {{- '&lt;|tool_response>' -}}&#10; {%- if response is mapping -%}&#10; {{- 'response:' + tool_name + '{' -}}&#10; {%- for key, value in response | dictsort -%}&#10; {{- key -}}:{{- format_argument(value, escape_keys=False) -}}&#10; {%- if not loop.last %},{% endif -%}&#10; {%- endfor -%}&#10; {{- '}' -}}&#10; {%- else -%}&#10; {{- 'response:' + tool_name + '{value:' + format_argument(response, escape_keys=False) + '}' -}}&#10; {%- endif -%}&#10; {{- '&lt;tool_response|>' -}}&#10;{%- endmacro -%}&#10;&#10;{%- set ns = namespace(prev_message_type=None) -%}&#10;{%- set loop_messages = messages -%}&#10;{{- bos_token -}}&#10;{#- Handle System/Tool Definitions Block -#}&#10;{%- if (enable_thinking is defined and enable_thinking) or tools or messages[0]['role'] in ['system', 'developer'] -%}&#10; {{- '&lt;|turn>system\n' -}}&#10;&#10; {#- Inject Thinking token at the very top of the FIRST system turn -#}&#10; {%- if enable_thinking is defined and enable_thinking -%}&#10; {{- '&lt;|think|>\n' -}}&#10; {%- set ns.prev_message_type = 'think' -%}&#10; {%- endif -%}&#10;&#10; {%- if messages[0]['role'] in ['system', 'developer'] -%}&#10; {{- messages[0]['content'] | trim -}}&#10; {%- set loop_messages = messages[1:] -%}&#10; {%- endif -%}&#10;&#10; {%- if tools -%}&#10; {%- for tool in tools %}&#10; {{- '&lt;|tool>' -}}&#10; {{- format_function_declaration(tool) | trim -}}&#10; {{- '&lt;tool|>' -}}&#10; {%- endfor %}&#10; {%- set ns.prev_message_type = 'tool' -%}&#10; {%- endif -%}&#10;&#10; {{- '&lt;turn|>\n' -}}&#10;{%- endif %}&#10;&#10;{#- Pre-scan: find last user message index for reasoning guard -#}&#10;{%- set ns_turn = namespace(last_user_idx=-1) -%}&#10;{%- for i in range(loop_messages | length) -%}&#10; {%- if loop_messages[i]['role'] == 'user' -%}&#10; {%- set ns_turn.last_user_idx = i -%}&#10; {%- endif -%}&#10;{%- endfor -%}&#10;&#10;{#- Loop through messages -#}&#10;{%- for message in loop_messages -%}&#10; {%- if message['role'] != 'tool' -%}&#10; {%- set ns.prev_message_type = None -%}&#10; {%- set role = 'model' if message['role'] == 'assistant' else message['role'] -%}&#10; {#- Detect continuation: suppress duplicate &lt;|turn>model when previous non-tool message was also assistant -#}&#10; {%- set prev_nt = namespace(role=None, found=false) -%}&#10; {%- if loop.index0 > 0 -%}&#10; {%- for j in range(loop.index0 - 1, -1, -1) -%}&#10; {%- if not prev_nt.found -%}&#10; {%- if loop_messages[j]['role'] != 'tool' -%}&#10; {%- set prev_nt.role = loop_messages[j]['role'] -%}&#10; {%- set prev_nt.found = true -%}&#10; {%- endif -%}&#10; {%- endif -%}&#10; {%- endfor -%}&#10; {%- endif -%}&#10; {%- set continue_same_model_turn = (role == 'model' and prev_nt.role == 'assistant') -%}&#10; {%- if not continue_same_model_turn -%}&#10; {{- '&lt;|turn>' + role + '\n' }}&#10; {%- endif -%}&#10;&#10; {#- Render reasoning/reasoning_content as thinking channel -#}&#10; {%- set thinking_text = message.get('reasoning') or message.get('reasoning_content') -%}&#10; {%- if thinking_text and loop.index0 > ns_turn.last_user_idx and message.get('tool_calls') -%}&#10; {{- '&lt;|channel>thought\n' + thinking_text + '\n&lt;channel|>' -}}&#10; {%- endif -%}&#10;&#10; {%- if message['tool_calls'] -%}&#10; {%- for tool_call in message['tool_calls'] -%}&#10; {%- set function = tool_call['function'] -%}&#10; {{- '&lt;|tool_call>call:' + function['name'] + '{' -}}&#10; {%- if function['arguments'] is mapping -%}&#10; {%- set ns_args = namespace(found_first=false) -%}&#10; {%- for key, value in function['arguments'] | dictsort -%}&#10; {%- if ns_args.found_first %},{% endif -%}&#10; {%- set ns_args.found_first = true -%}&#10; {{- key -}}:{{- format_argument(value, escape_keys=False) -}}&#10; {%- endfor -%}&#10; {%- elif function['arguments'] is string -%}&#10; {{- function['arguments'] -}}&#10; {%- endif -%}&#10; {{- '}&lt;tool_call|>' -}}&#10; {%- endfor -%}&#10; {%- set ns.prev_message_type = 'tool_call' -%}&#10; {%- endif -%}&#10;&#10; {%- set ns_tr_out = namespace(flag=false) -%}&#10; {%- if message.get('tool_responses') -%}&#10; {#- Legacy: tool_responses embedded on the assistant message (Google/Gemma native) -#}&#10; {%- for tool_response in message['tool_responses'] -%}&#10; {{- format_tool_response_block(tool_response['name'] | default('unknown'), tool_response['response']) -}}&#10; {%- set ns_tr_out.flag = true -%}&#10; {%- set ns.prev_message_type = 'tool_response' -%}&#10; {%- endfor -%}&#10; {%- elif message.get('tool_calls') -%}&#10; {#- OpenAI Chat Completions: forward-scan consecutive role:tool messages -#}&#10; {%- set ns_tool_scan = namespace(stopped=false) -%}&#10; {%- for k in range(loop.index0 + 1, loop_messages | length) -%}&#10; {%- if ns_tool_scan.stopped -%}&#10; {%- elif loop_messages[k]['role'] != 'tool' -%}&#10; {%- set ns_tool_scan.stopped = true -%}&#10; {%- else -%}&#10; {%- set follow = loop_messages[k] -%}&#10; {#- Resolve tool_call_id to function name -#}&#10; {%- set ns_tname = namespace(name=follow.get('name') | default('unknown')) -%}&#10; {%- for tc in message['tool_calls'] -%}&#10; {%- if tc.get('id') == follow.get('tool_call_id') -%}&#10; {%- set ns_tname.name = tc['function']['name'] -%}&#10; {%- endif -%}&#10; {%- endfor -%}&#10; {#- Handle content as string or content-parts array -#}&#10; {%- set tool_body = follow.get('content') -%}&#10; {%- if tool_body is string -%}&#10; {{- format_tool_response_block(ns_tname.name, tool_body) -}}&#10; {%- elif tool_body is sequence and tool_body is not string -%}&#10; {%- set ns_txt = namespace(s='') -%}&#10; {%- for part in tool_body -%}&#10; {%- if part.get('type') == 'text' -%}&#10; {%- set ns_txt.s = ns_txt.s + (part.get('text') | default('')) -%}&#10; {%- endif -%}&#10; {%- endfor -%}&#10; {{- format_tool_response_block(ns_tname.name, ns_txt.s) -}}&#10; {%- else -%}&#10; {{- format_tool_response_block(ns_tname.name, tool_body) -}}&#10; {%- endif -%}&#10; {%- set ns_tr_out.flag = true -%}&#10; {%- set ns.prev_message_type = 'tool_response' -%}&#10; {%- endif -%}&#10; {%- endfor -%}&#10; {%- endif -%}&#10;&#10; {%- if message['content'] is string -%}&#10; {%- if role == 'model' -%}&#10; {{- strip_thinking(message['content']) -}}&#10; {%- else -%}&#10; {{- message['content'] | trim -}}&#10; {%- endif -%}&#10; {%- elif message['content'] is sequence -%}&#10; {%- for item in message['content'] -%}&#10; {%- if item['type'] == 'text' -%}&#10; {%- if role == 'model' -%}&#10; {{- strip_thinking(item['text']) -}}&#10; {%- else -%}&#10; {{- item['text'] | trim -}}&#10; {%- endif -%}&#10; {%- elif item['type'] == 'image' -%}&#10; {{- '&lt;|image|>' -}}&#10; {%- set ns.prev_message_type = 'image' -%}&#10; {%- elif item['type'] == 'audio' -%}&#10; {{- '&lt;|audio|>' -}}&#10; {%- set ns.prev_message_type = 'audio' -%}&#10; {%- elif item['type'] == 'video' -%}&#10; {{- '&lt;|video|>' -}}&#10; {%- set ns.prev_message_type = 'video' -%}&#10; {%- endif -%}&#10; {%- endfor -%}&#10; {%- endif -%}&#10;&#10; {%- if ns.prev_message_type == 'tool_call' and not ns_tr_out.flag -%}&#10; {{- '&lt;|tool_response>' -}}&#10; {%- elif not (ns_tr_out.flag and not message.get('content')) -%}&#10; {{- '&lt;turn|>\n' -}}&#10; {%- endif -%}&#10; {%- endif -%}&#10;{%- endfor -%}&#10;&#10;{%- if add_generation_prompt -%}&#10; {%- if ns.prev_message_type != 'tool_response' and ns.prev_message_type != 'tool_call' -%}&#10; {{- '&lt;|turn>model\n' -}}&#10; {%- endif -%}&#10;{%- endif -%}" />
278
+ <clean_up_tokenization_spaces />
279
+ <detokenizer_input_type value="i64" />
280
+ <eos_token_id value="1" />
281
+ <handle_special_tokens_with_re />
282
+ <max_length />
283
+ <number_of_inputs value="1" />
284
+ <openvino_tokenizers_version value="2026.2.0.0-668-cb14978d71b" />
285
+ <openvino_version value="2026.2.0-21622-fdad5b35a43" />
286
+ <original_post_processor_template value="{&quot;type&quot;: &quot;TemplateProcessing&quot;, &quot;single&quot;: [{&quot;Sequence&quot;: {&quot;id&quot;: &quot;A&quot;, &quot;type_id&quot;: 0}}], &quot;pair&quot;: [{&quot;Sequence&quot;: {&quot;id&quot;: &quot;A&quot;, &quot;type_id&quot;: 0}}, {&quot;Sequence&quot;: {&quot;id&quot;: &quot;B&quot;, &quot;type_id&quot;: 1}}], &quot;special_tokens&quot;: {}}" />
287
+ <original_tokenizer_class value="&lt;class 'transformers.models.gemma.tokenization_gemma.GemmaTokenizer'>" />
288
+ <pad_token_id value="0" />
289
+ <processed_post_processor_template value="{&quot;single&quot;: {&quot;ids&quot;: [-1], &quot;type_ids&quot;: [0]}, &quot;pair&quot;: {&quot;ids&quot;: [-1, -2], &quot;type_ids&quot;: [0, 1]}}" />
290
+ <skip_special_tokens value="True" />
291
+ <streaming_detokenizer value="False" />
292
+ <tokenizer_output_type value="i64" />
293
+ <tokenizers_version value="0.22.2" />
294
+ <transformers_version value="5.5.0" />
295
+ <use_max_padding value="False" />
296
+ <use_sentencepiece_backend value="False" />
297
+ <utf8_replace_mode value="replace" />
298
+ <with_detokenizer value="True" />
299
+ </rt_info>
300
+ </net>
openvino_language_model.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:59da3849b25737b90b1379e53924e8dcc6abe02778da996ecc0344f1dacd9be6
3
+ size 2738063913
openvino_language_model.xml ADDED
The diff for this file is too large to render. See raw diff
 
openvino_text_embeddings_model.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f4ba107d403f58e4190d0bfef396c9e4eda6762021e4f429c10a53bb4f87aee2
3
+ size 671612936
openvino_text_embeddings_model.xml ADDED
@@ -0,0 +1,211 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <net name="Model3" version="11">
3
+ <layers>
4
+ <layer id="0" name="input" type="Parameter" version="opset1">
5
+ <data shape="?,?" element_type="i64" />
6
+ <output>
7
+ <port id="0" precision="I64" names="input">
8
+ <dim>-1</dim>
9
+ <dim>-1</dim>
10
+ </port>
11
+ </output>
12
+ </layer>
13
+ <layer id="1" name="self.model.model.language_model.embed_tokens.weight" type="Const" version="opset1">
14
+ <data element_type="i8" shape="262144, 2560" offset="0" size="671088640" />
15
+ <output>
16
+ <port id="0" precision="I8">
17
+ <dim>262144</dim>
18
+ <dim>2560</dim>
19
+ </port>
20
+ </output>
21
+ </layer>
22
+ <layer id="2" name="Convert_2054581" type="Convert" version="opset1">
23
+ <data destination_type="f16" />
24
+ <input>
25
+ <port id="0" precision="I8">
26
+ <dim>262144</dim>
27
+ <dim>2560</dim>
28
+ </port>
29
+ </input>
30
+ <output>
31
+ <port id="1" precision="FP16">
32
+ <dim>262144</dim>
33
+ <dim>2560</dim>
34
+ </port>
35
+ </output>
36
+ </layer>
37
+ <layer id="3" name="self.model.model.language_model.embed_tokens.weight/scale" type="Const" version="opset1">
38
+ <data element_type="f16" shape="262144, 1" offset="671088640" size="524288" />
39
+ <output>
40
+ <port id="0" precision="FP16">
41
+ <dim>262144</dim>
42
+ <dim>1</dim>
43
+ </port>
44
+ </output>
45
+ </layer>
46
+ <layer id="4" name="self.model.model.language_model.embed_tokens.weight/fq_weights_0" type="Multiply" version="opset1">
47
+ <data auto_broadcast="numpy" />
48
+ <input>
49
+ <port id="0" precision="FP16">
50
+ <dim>262144</dim>
51
+ <dim>2560</dim>
52
+ </port>
53
+ <port id="1" precision="FP16">
54
+ <dim>262144</dim>
55
+ <dim>1</dim>
56
+ </port>
57
+ </input>
58
+ <output>
59
+ <port id="2" precision="FP16">
60
+ <dim>262144</dim>
61
+ <dim>2560</dim>
62
+ </port>
63
+ </output>
64
+ </layer>
65
+ <layer id="5" name="self.model.model.language_model.embed_tokens.weight/fq_weights_0/convert" type="Convert" version="opset1">
66
+ <data destination_type="f32" />
67
+ <input>
68
+ <port id="0" precision="FP16">
69
+ <dim>262144</dim>
70
+ <dim>2560</dim>
71
+ </port>
72
+ </input>
73
+ <output>
74
+ <port id="1" precision="FP32">
75
+ <dim>262144</dim>
76
+ <dim>2560</dim>
77
+ </port>
78
+ </output>
79
+ </layer>
80
+ <layer id="6" name="__module.model.model.language_model.embed_tokens/aten::embedding/Convert" type="Convert" version="opset1">
81
+ <data destination_type="i32" />
82
+ <input>
83
+ <port id="0" precision="I64">
84
+ <dim>-1</dim>
85
+ <dim>-1</dim>
86
+ </port>
87
+ </input>
88
+ <output>
89
+ <port id="1" precision="I32">
90
+ <dim>-1</dim>
91
+ <dim>-1</dim>
92
+ </port>
93
+ </output>
94
+ </layer>
95
+ <layer id="7" name="__module.model.model.language_model.embed_tokens/aten::embedding/Constant" type="Const" version="opset1">
96
+ <data element_type="i32" shape="" offset="671612928" size="4" />
97
+ <output>
98
+ <port id="0" precision="I32" />
99
+ </output>
100
+ </layer>
101
+ <layer id="8" name="__module.model.model.language_model.embed_tokens/aten::embedding/Gather" type="Gather" version="opset8">
102
+ <data batch_dims="0" />
103
+ <input>
104
+ <port id="0" precision="FP32">
105
+ <dim>262144</dim>
106
+ <dim>2560</dim>
107
+ </port>
108
+ <port id="1" precision="I32">
109
+ <dim>-1</dim>
110
+ <dim>-1</dim>
111
+ </port>
112
+ <port id="2" precision="I32" />
113
+ </input>
114
+ <output>
115
+ <port id="3" precision="FP32" names="14">
116
+ <dim>-1</dim>
117
+ <dim>-1</dim>
118
+ <dim>2560</dim>
119
+ </port>
120
+ </output>
121
+ </layer>
122
+ <layer id="9" name="Constant_56637" type="Const" version="opset1">
123
+ <data element_type="f32" shape="1, 1, 1" offset="671612932" size="4" />
124
+ <output>
125
+ <port id="0" precision="FP32">
126
+ <dim>1</dim>
127
+ <dim>1</dim>
128
+ <dim>1</dim>
129
+ </port>
130
+ </output>
131
+ </layer>
132
+ <layer id="10" name="__module.model.model.language_model.embed_tokens/aten::mul/Multiply" type="Multiply" version="opset1">
133
+ <data auto_broadcast="numpy" />
134
+ <input>
135
+ <port id="0" precision="FP32">
136
+ <dim>-1</dim>
137
+ <dim>-1</dim>
138
+ <dim>2560</dim>
139
+ </port>
140
+ <port id="1" precision="FP32">
141
+ <dim>1</dim>
142
+ <dim>1</dim>
143
+ <dim>1</dim>
144
+ </port>
145
+ </input>
146
+ <output>
147
+ <port id="2" precision="FP32" names="inputs_embeds">
148
+ <dim>-1</dim>
149
+ <dim>-1</dim>
150
+ <dim>2560</dim>
151
+ </port>
152
+ </output>
153
+ </layer>
154
+ <layer id="11" name="Result_54561" type="Result" version="opset1" output_names="inputs_embeds">
155
+ <input>
156
+ <port id="0" precision="FP32">
157
+ <dim>-1</dim>
158
+ <dim>-1</dim>
159
+ <dim>2560</dim>
160
+ </port>
161
+ </input>
162
+ </layer>
163
+ </layers>
164
+ <edges>
165
+ <edge from-layer="0" from-port="0" to-layer="6" to-port="0" />
166
+ <edge from-layer="1" from-port="0" to-layer="2" to-port="0" />
167
+ <edge from-layer="2" from-port="1" to-layer="4" to-port="0" />
168
+ <edge from-layer="3" from-port="0" to-layer="4" to-port="1" />
169
+ <edge from-layer="4" from-port="2" to-layer="5" to-port="0" />
170
+ <edge from-layer="5" from-port="1" to-layer="8" to-port="0" />
171
+ <edge from-layer="6" from-port="1" to-layer="8" to-port="1" />
172
+ <edge from-layer="7" from-port="0" to-layer="8" to-port="2" />
173
+ <edge from-layer="8" from-port="3" to-layer="10" to-port="0" />
174
+ <edge from-layer="9" from-port="0" to-layer="10" to-port="1" />
175
+ <edge from-layer="10" from-port="2" to-layer="11" to-port="0" />
176
+ </edges>
177
+ <rt_info>
178
+ <info name="OpenVINO Runtime" value="2026.2.0-21622-fdad5b35a43" />
179
+ <Runtime_version value="2026.2.0-21622-fdad5b35a43" />
180
+ <conversion_parameters>
181
+ <framework value="pytorch" />
182
+ <is_python_object value="True" />
183
+ </conversion_parameters>
184
+ <nncf>
185
+ <friendly_names_were_updated value="True" />
186
+ <version value="3.1.0" />
187
+ <weight_compression>
188
+ <advanced_parameters value="{'statistics_path': None, 'lora_adapter_rank': 256, 'group_size_fallback_mode': 'error', 'min_adjusted_group_size': 32, 'awq_params': {'subset_size': 32, 'percent_to_apply': 0.002, 'alpha_min': 0.0, 'alpha_max': 1.0, 'steps': 100, 'prefer_data_aware_scaling': True}, 'scale_estimation_params': {'subset_size': 64, 'initial_steps': 5, 'scale_steps': 5, 'weight_penalty': -1.0}, 'gptq_params': {'damp_percent': 0.1, 'block_size': 128, 'subset_size': 128}, 'lora_correction_params': {'adapter_rank': 8, 'num_iterations': 3, 'apply_regularization': True, 'subset_size': 128, 'use_int8_adapters': True}, 'backend_params': {}, 'codebook': None, 'adaptive_codebook_params': {'value_type': 'f8e4m3', 'across_blocks': False, 'num_elements': 16}}" />
189
+ <all_layers value="False" />
190
+ <awq value="False" />
191
+ <backup_mode value="int8_asym" />
192
+ <compression_format value="dequantize" />
193
+ <gptq value="False" />
194
+ <group_size value="-1" />
195
+ <ignored_scope value="[]" />
196
+ <lora_correction value="False" />
197
+ <mode value="int8_sym" />
198
+ <ratio value="1.0" />
199
+ <scale_estimation value="False" />
200
+ <sensitivity_metric value="weight_quantization_error" />
201
+ </weight_compression>
202
+ </nncf>
203
+ <optimum>
204
+ <nncf_version value="3.1.0" />
205
+ <optimum_intel_version value="1.27.0.dev0+1fccd40" />
206
+ <optimum_version value="2.1.0.dev0" />
207
+ <pytorch_version value="2.11.0+cpu" />
208
+ <transformers_version value="5.5.0" />
209
+ </optimum>
210
+ </rt_info>
211
+ </net>
openvino_text_embeddings_per_layer_model.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:e666691fa271c8b6e26aa6eff33f3030148c0bfe43d3a1514b9b997a9a594c5e
3
+ size 2819096656
openvino_text_embeddings_per_layer_model.xml ADDED
@@ -0,0 +1,595 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <net name="Model9" version="11">
3
+ <layers>
4
+ <layer id="0" name="input_ids" type="Parameter" version="opset1">
5
+ <data shape="?,?" element_type="i64" />
6
+ <output>
7
+ <port id="0" precision="I64" names="input_ids">
8
+ <dim>-1</dim>
9
+ <dim>-1</dim>
10
+ </port>
11
+ </output>
12
+ </layer>
13
+ <layer id="1" name="self.language_model.embed_tokens_per_layer.weight" type="Const" version="opset1">
14
+ <data element_type="i8" shape="262144, 10752" offset="0" size="2818572288" />
15
+ <output>
16
+ <port id="0" precision="I8">
17
+ <dim>262144</dim>
18
+ <dim>10752</dim>
19
+ </port>
20
+ </output>
21
+ </layer>
22
+ <layer id="2" name="Convert_2662272" type="Convert" version="opset1">
23
+ <data destination_type="f16" />
24
+ <input>
25
+ <port id="0" precision="I8">
26
+ <dim>262144</dim>
27
+ <dim>10752</dim>
28
+ </port>
29
+ </input>
30
+ <output>
31
+ <port id="1" precision="FP16">
32
+ <dim>262144</dim>
33
+ <dim>10752</dim>
34
+ </port>
35
+ </output>
36
+ </layer>
37
+ <layer id="3" name="self.language_model.embed_tokens_per_layer.weight/scale" type="Const" version="opset1">
38
+ <data element_type="f16" shape="262144, 1" offset="2818572288" size="524288" />
39
+ <output>
40
+ <port id="0" precision="FP16">
41
+ <dim>262144</dim>
42
+ <dim>1</dim>
43
+ </port>
44
+ </output>
45
+ </layer>
46
+ <layer id="4" name="self.language_model.embed_tokens_per_layer.weight/fq_weights_0" type="Multiply" version="opset1">
47
+ <data auto_broadcast="numpy" />
48
+ <input>
49
+ <port id="0" precision="FP16">
50
+ <dim>262144</dim>
51
+ <dim>10752</dim>
52
+ </port>
53
+ <port id="1" precision="FP16">
54
+ <dim>262144</dim>
55
+ <dim>1</dim>
56
+ </port>
57
+ </input>
58
+ <output>
59
+ <port id="2" precision="FP16">
60
+ <dim>262144</dim>
61
+ <dim>10752</dim>
62
+ </port>
63
+ </output>
64
+ </layer>
65
+ <layer id="5" name="self.language_model.embed_tokens_per_layer.weight/fq_weights_0/convert" type="Convert" version="opset1">
66
+ <data destination_type="f32" />
67
+ <input>
68
+ <port id="0" precision="FP16">
69
+ <dim>262144</dim>
70
+ <dim>10752</dim>
71
+ </port>
72
+ </input>
73
+ <output>
74
+ <port id="1" precision="FP32">
75
+ <dim>262144</dim>
76
+ <dim>10752</dim>
77
+ </port>
78
+ </output>
79
+ </layer>
80
+ <layer id="6" name="Constant_209976" type="Const" version="opset1">
81
+ <data element_type="i64" shape="1, 1" offset="2819096576" size="8" />
82
+ <output>
83
+ <port id="0" precision="I64">
84
+ <dim>1</dim>
85
+ <dim>1</dim>
86
+ </port>
87
+ </output>
88
+ </layer>
89
+ <layer id="7" name="aten::eq/Equal" type="Equal" version="opset1">
90
+ <data auto_broadcast="numpy" />
91
+ <input>
92
+ <port id="0" precision="I64">
93
+ <dim>-1</dim>
94
+ <dim>-1</dim>
95
+ </port>
96
+ <port id="1" precision="I64">
97
+ <dim>1</dim>
98
+ <dim>1</dim>
99
+ </port>
100
+ </input>
101
+ <output>
102
+ <port id="2" precision="BOOL" names="7">
103
+ <dim>-1</dim>
104
+ <dim>-1</dim>
105
+ </port>
106
+ </output>
107
+ </layer>
108
+ <layer id="8" name="8" type="Const" version="opset1">
109
+ <data element_type="i64" shape="" offset="2819096584" size="8" />
110
+ <output>
111
+ <port id="0" precision="I64" names="8" />
112
+ </output>
113
+ </layer>
114
+ <layer id="9" name="aten::full_like/ShapeOf" type="ShapeOf" version="opset3">
115
+ <data output_type="i32" />
116
+ <input>
117
+ <port id="0" precision="I64">
118
+ <dim>-1</dim>
119
+ <dim>-1</dim>
120
+ </port>
121
+ </input>
122
+ <output>
123
+ <port id="1" precision="I32">
124
+ <dim>2</dim>
125
+ </port>
126
+ </output>
127
+ </layer>
128
+ <layer id="10" name="aten::full_like/Broadcast" type="Broadcast" version="opset3">
129
+ <data mode="numpy" />
130
+ <input>
131
+ <port id="0" precision="I64" />
132
+ <port id="1" precision="I32">
133
+ <dim>2</dim>
134
+ </port>
135
+ </input>
136
+ <output>
137
+ <port id="2" precision="I64" names="14,24,34">
138
+ <dim>-1</dim>
139
+ <dim>-1</dim>
140
+ </port>
141
+ </output>
142
+ </layer>
143
+ <layer id="11" name="aten::where/Select" type="Select" version="opset1">
144
+ <data auto_broadcast="numpy" />
145
+ <input>
146
+ <port id="0" precision="BOOL">
147
+ <dim>-1</dim>
148
+ <dim>-1</dim>
149
+ </port>
150
+ <port id="1" precision="I64">
151
+ <dim>-1</dim>
152
+ <dim>-1</dim>
153
+ </port>
154
+ <port id="2" precision="I64">
155
+ <dim>-1</dim>
156
+ <dim>-1</dim>
157
+ </port>
158
+ </input>
159
+ <output>
160
+ <port id="3" precision="I64" names="15,per_layer_inputs_tokens.3">
161
+ <dim>-1</dim>
162
+ <dim>-1</dim>
163
+ </port>
164
+ </output>
165
+ </layer>
166
+ <layer id="12" name="Constant_209977" type="Const" version="opset1">
167
+ <data element_type="i64" shape="1, 1" offset="2819096592" size="8" />
168
+ <output>
169
+ <port id="0" precision="I64">
170
+ <dim>1</dim>
171
+ <dim>1</dim>
172
+ </port>
173
+ </output>
174
+ </layer>
175
+ <layer id="13" name="aten::eq/Equal_1" type="Equal" version="opset1">
176
+ <data auto_broadcast="numpy" />
177
+ <input>
178
+ <port id="0" precision="I64">
179
+ <dim>-1</dim>
180
+ <dim>-1</dim>
181
+ </port>
182
+ <port id="1" precision="I64">
183
+ <dim>1</dim>
184
+ <dim>1</dim>
185
+ </port>
186
+ </input>
187
+ <output>
188
+ <port id="2" precision="BOOL" names="17">
189
+ <dim>-1</dim>
190
+ <dim>-1</dim>
191
+ </port>
192
+ </output>
193
+ </layer>
194
+ <layer id="14" name="aten::where/Select_1" type="Select" version="opset1">
195
+ <data auto_broadcast="numpy" />
196
+ <input>
197
+ <port id="0" precision="BOOL">
198
+ <dim>-1</dim>
199
+ <dim>-1</dim>
200
+ </port>
201
+ <port id="1" precision="I64">
202
+ <dim>-1</dim>
203
+ <dim>-1</dim>
204
+ </port>
205
+ <port id="2" precision="I64">
206
+ <dim>-1</dim>
207
+ <dim>-1</dim>
208
+ </port>
209
+ </input>
210
+ <output>
211
+ <port id="3" precision="I64" names="25,per_layer_inputs_tokens.5">
212
+ <dim>-1</dim>
213
+ <dim>-1</dim>
214
+ </port>
215
+ </output>
216
+ </layer>
217
+ <layer id="15" name="Constant_209978" type="Const" version="opset1">
218
+ <data element_type="i64" shape="1, 1" offset="2819096600" size="8" />
219
+ <output>
220
+ <port id="0" precision="I64">
221
+ <dim>1</dim>
222
+ <dim>1</dim>
223
+ </port>
224
+ </output>
225
+ </layer>
226
+ <layer id="16" name="aten::eq/Equal_2" type="Equal" version="opset1">
227
+ <data auto_broadcast="numpy" />
228
+ <input>
229
+ <port id="0" precision="I64">
230
+ <dim>-1</dim>
231
+ <dim>-1</dim>
232
+ </port>
233
+ <port id="1" precision="I64">
234
+ <dim>1</dim>
235
+ <dim>1</dim>
236
+ </port>
237
+ </input>
238
+ <output>
239
+ <port id="2" precision="BOOL" names="27">
240
+ <dim>-1</dim>
241
+ <dim>-1</dim>
242
+ </port>
243
+ </output>
244
+ </layer>
245
+ <layer id="17" name="aten::where/Select_2" type="Select" version="opset1">
246
+ <data auto_broadcast="numpy" />
247
+ <input>
248
+ <port id="0" precision="BOOL">
249
+ <dim>-1</dim>
250
+ <dim>-1</dim>
251
+ </port>
252
+ <port id="1" precision="I64">
253
+ <dim>-1</dim>
254
+ <dim>-1</dim>
255
+ </port>
256
+ <port id="2" precision="I64">
257
+ <dim>-1</dim>
258
+ <dim>-1</dim>
259
+ </port>
260
+ </input>
261
+ <output>
262
+ <port id="3" precision="I64" names="35,per_layer_inputs_tokens">
263
+ <dim>-1</dim>
264
+ <dim>-1</dim>
265
+ </port>
266
+ </output>
267
+ </layer>
268
+ <layer id="18" name="Constant_209979" type="Const" version="opset1">
269
+ <data element_type="i64" shape="1, 1" offset="2819096584" size="8" />
270
+ <output>
271
+ <port id="0" precision="I64">
272
+ <dim>1</dim>
273
+ <dim>1</dim>
274
+ </port>
275
+ </output>
276
+ </layer>
277
+ <layer id="19" name="aten::ge/GreaterEqual" type="GreaterEqual" version="opset1">
278
+ <data auto_broadcast="numpy" />
279
+ <input>
280
+ <port id="0" precision="I64">
281
+ <dim>-1</dim>
282
+ <dim>-1</dim>
283
+ </port>
284
+ <port id="1" precision="I64">
285
+ <dim>1</dim>
286
+ <dim>1</dim>
287
+ </port>
288
+ </input>
289
+ <output>
290
+ <port id="2" precision="BOOL" names="37">
291
+ <dim>-1</dim>
292
+ <dim>-1</dim>
293
+ </port>
294
+ </output>
295
+ </layer>
296
+ <layer id="20" name="Constant_209980" type="Const" version="opset1">
297
+ <data element_type="i64" shape="1, 1" offset="2819096608" size="8" />
298
+ <output>
299
+ <port id="0" precision="I64">
300
+ <dim>1</dim>
301
+ <dim>1</dim>
302
+ </port>
303
+ </output>
304
+ </layer>
305
+ <layer id="21" name="aten::lt/Less" type="Less" version="opset1">
306
+ <data auto_broadcast="numpy" />
307
+ <input>
308
+ <port id="0" precision="I64">
309
+ <dim>-1</dim>
310
+ <dim>-1</dim>
311
+ </port>
312
+ <port id="1" precision="I64">
313
+ <dim>1</dim>
314
+ <dim>1</dim>
315
+ </port>
316
+ </input>
317
+ <output>
318
+ <port id="2" precision="BOOL" names="39">
319
+ <dim>-1</dim>
320
+ <dim>-1</dim>
321
+ </port>
322
+ </output>
323
+ </layer>
324
+ <layer id="22" name="aten::logical_and/LogicalAnd" type="LogicalAnd" version="opset1">
325
+ <data auto_broadcast="numpy" />
326
+ <input>
327
+ <port id="0" precision="BOOL">
328
+ <dim>-1</dim>
329
+ <dim>-1</dim>
330
+ </port>
331
+ <port id="1" precision="BOOL">
332
+ <dim>-1</dim>
333
+ <dim>-1</dim>
334
+ </port>
335
+ </input>
336
+ <output>
337
+ <port id="2" precision="BOOL" names="40,per_layer_inputs_mask">
338
+ <dim>-1</dim>
339
+ <dim>-1</dim>
340
+ </port>
341
+ </output>
342
+ </layer>
343
+ <layer id="23" name="aten::zeros_like/Constant" type="Const" version="opset1">
344
+ <data element_type="f32" shape="" offset="2819096616" size="4" />
345
+ <output>
346
+ <port id="0" precision="FP32" />
347
+ </output>
348
+ </layer>
349
+ <layer id="24" name="aten::zeros_like/Broadcast" type="Broadcast" version="opset3">
350
+ <data mode="numpy" />
351
+ <input>
352
+ <port id="0" precision="FP32" />
353
+ <port id="1" precision="I32">
354
+ <dim>2</dim>
355
+ </port>
356
+ </input>
357
+ <output>
358
+ <port id="2" precision="FP32">
359
+ <dim>-1</dim>
360
+ <dim>-1</dim>
361
+ </port>
362
+ </output>
363
+ </layer>
364
+ <layer id="25" name="aten::zeros_like/ConvertLike" type="Convert" version="opset1">
365
+ <data destination_type="i64" />
366
+ <input>
367
+ <port id="0" precision="FP32">
368
+ <dim>-1</dim>
369
+ <dim>-1</dim>
370
+ </port>
371
+ </input>
372
+ <output>
373
+ <port id="1" precision="I64" names="46">
374
+ <dim>-1</dim>
375
+ <dim>-1</dim>
376
+ </port>
377
+ </output>
378
+ </layer>
379
+ <layer id="26" name="aten::where/Select_3" type="Select" version="opset1">
380
+ <data auto_broadcast="numpy" />
381
+ <input>
382
+ <port id="0" precision="BOOL">
383
+ <dim>-1</dim>
384
+ <dim>-1</dim>
385
+ </port>
386
+ <port id="1" precision="I64">
387
+ <dim>-1</dim>
388
+ <dim>-1</dim>
389
+ </port>
390
+ <port id="2" precision="I64">
391
+ <dim>-1</dim>
392
+ <dim>-1</dim>
393
+ </port>
394
+ </input>
395
+ <output>
396
+ <port id="3" precision="I64" names="47,input">
397
+ <dim>-1</dim>
398
+ <dim>-1</dim>
399
+ </port>
400
+ </output>
401
+ </layer>
402
+ <layer id="27" name="__module.language_model.embed_tokens_per_layer/aten::embedding/Convert" type="Convert" version="opset1">
403
+ <data destination_type="i32" />
404
+ <input>
405
+ <port id="0" precision="I64">
406
+ <dim>-1</dim>
407
+ <dim>-1</dim>
408
+ </port>
409
+ </input>
410
+ <output>
411
+ <port id="1" precision="I32">
412
+ <dim>-1</dim>
413
+ <dim>-1</dim>
414
+ </port>
415
+ </output>
416
+ </layer>
417
+ <layer id="28" name="__module.language_model.embed_tokens_per_layer/aten::embedding/Constant" type="Const" version="opset1">
418
+ <data element_type="i32" shape="" offset="2819096616" size="4" />
419
+ <output>
420
+ <port id="0" precision="I32" />
421
+ </output>
422
+ </layer>
423
+ <layer id="29" name="__module.language_model.embed_tokens_per_layer/aten::embedding/Gather" type="Gather" version="opset8">
424
+ <data batch_dims="0" />
425
+ <input>
426
+ <port id="0" precision="FP32">
427
+ <dim>262144</dim>
428
+ <dim>10752</dim>
429
+ </port>
430
+ <port id="1" precision="I32">
431
+ <dim>-1</dim>
432
+ <dim>-1</dim>
433
+ </port>
434
+ <port id="2" precision="I32" />
435
+ </input>
436
+ <output>
437
+ <port id="3" precision="FP32" names="68">
438
+ <dim>-1</dim>
439
+ <dim>-1</dim>
440
+ <dim>10752</dim>
441
+ </port>
442
+ </output>
443
+ </layer>
444
+ <layer id="30" name="Constant_209981" type="Const" version="opset1">
445
+ <data element_type="f32" shape="1, 1, 1" offset="2819096620" size="4" />
446
+ <output>
447
+ <port id="0" precision="FP32">
448
+ <dim>1</dim>
449
+ <dim>1</dim>
450
+ <dim>1</dim>
451
+ </port>
452
+ </output>
453
+ </layer>
454
+ <layer id="31" name="__module.language_model.embed_tokens_per_layer/aten::mul/Multiply" type="Multiply" version="opset1">
455
+ <data auto_broadcast="numpy" />
456
+ <input>
457
+ <port id="0" precision="FP32">
458
+ <dim>-1</dim>
459
+ <dim>-1</dim>
460
+ <dim>10752</dim>
461
+ </port>
462
+ <port id="1" precision="FP32">
463
+ <dim>1</dim>
464
+ <dim>1</dim>
465
+ <dim>1</dim>
466
+ </port>
467
+ </input>
468
+ <output>
469
+ <port id="2" precision="FP32" names="70">
470
+ <dim>-1</dim>
471
+ <dim>-1</dim>
472
+ <dim>10752</dim>
473
+ </port>
474
+ </output>
475
+ </layer>
476
+ <layer id="32" name="Constant_210013" type="Const" version="opset1">
477
+ <data element_type="i64" shape="4" offset="2819096624" size="32" />
478
+ <output>
479
+ <port id="0" precision="I64">
480
+ <dim>4</dim>
481
+ </port>
482
+ </output>
483
+ </layer>
484
+ <layer id="33" name="aten::reshape/Reshape" type="Reshape" version="opset1">
485
+ <data special_zero="true" />
486
+ <input>
487
+ <port id="0" precision="FP32">
488
+ <dim>-1</dim>
489
+ <dim>-1</dim>
490
+ <dim>10752</dim>
491
+ </port>
492
+ <port id="1" precision="I64">
493
+ <dim>4</dim>
494
+ </port>
495
+ </input>
496
+ <output>
497
+ <port id="2" precision="FP32" names="text_embeds_per_layer">
498
+ <dim>-1</dim>
499
+ <dim>-1</dim>
500
+ <dim>42</dim>
501
+ <dim>256</dim>
502
+ </port>
503
+ </output>
504
+ </layer>
505
+ <layer id="34" name="Result_207699" type="Result" version="opset1" output_names="text_embeds_per_layer">
506
+ <input>
507
+ <port id="0" precision="FP32">
508
+ <dim>-1</dim>
509
+ <dim>-1</dim>
510
+ <dim>42</dim>
511
+ <dim>256</dim>
512
+ </port>
513
+ </input>
514
+ </layer>
515
+ </layers>
516
+ <edges>
517
+ <edge from-layer="0" from-port="0" to-layer="7" to-port="0" />
518
+ <edge from-layer="0" from-port="0" to-layer="9" to-port="0" />
519
+ <edge from-layer="0" from-port="0" to-layer="11" to-port="2" />
520
+ <edge from-layer="1" from-port="0" to-layer="2" to-port="0" />
521
+ <edge from-layer="2" from-port="1" to-layer="4" to-port="0" />
522
+ <edge from-layer="3" from-port="0" to-layer="4" to-port="1" />
523
+ <edge from-layer="4" from-port="2" to-layer="5" to-port="0" />
524
+ <edge from-layer="5" from-port="1" to-layer="29" to-port="0" />
525
+ <edge from-layer="6" from-port="0" to-layer="7" to-port="1" />
526
+ <edge from-layer="7" from-port="2" to-layer="11" to-port="0" />
527
+ <edge from-layer="8" from-port="0" to-layer="10" to-port="0" />
528
+ <edge from-layer="9" from-port="1" to-layer="10" to-port="1" />
529
+ <edge from-layer="9" from-port="1" to-layer="24" to-port="1" />
530
+ <edge from-layer="10" from-port="2" to-layer="17" to-port="1" />
531
+ <edge from-layer="10" from-port="2" to-layer="14" to-port="1" />
532
+ <edge from-layer="10" from-port="2" to-layer="11" to-port="1" />
533
+ <edge from-layer="11" from-port="3" to-layer="14" to-port="2" />
534
+ <edge from-layer="11" from-port="3" to-layer="13" to-port="0" />
535
+ <edge from-layer="12" from-port="0" to-layer="13" to-port="1" />
536
+ <edge from-layer="13" from-port="2" to-layer="14" to-port="0" />
537
+ <edge from-layer="14" from-port="3" to-layer="17" to-port="2" />
538
+ <edge from-layer="14" from-port="3" to-layer="16" to-port="0" />
539
+ <edge from-layer="15" from-port="0" to-layer="16" to-port="1" />
540
+ <edge from-layer="16" from-port="2" to-layer="17" to-port="0" />
541
+ <edge from-layer="17" from-port="3" to-layer="19" to-port="0" />
542
+ <edge from-layer="17" from-port="3" to-layer="26" to-port="1" />
543
+ <edge from-layer="17" from-port="3" to-layer="21" to-port="0" />
544
+ <edge from-layer="18" from-port="0" to-layer="19" to-port="1" />
545
+ <edge from-layer="19" from-port="2" to-layer="22" to-port="0" />
546
+ <edge from-layer="20" from-port="0" to-layer="21" to-port="1" />
547
+ <edge from-layer="21" from-port="2" to-layer="22" to-port="1" />
548
+ <edge from-layer="22" from-port="2" to-layer="26" to-port="0" />
549
+ <edge from-layer="23" from-port="0" to-layer="24" to-port="0" />
550
+ <edge from-layer="24" from-port="2" to-layer="25" to-port="0" />
551
+ <edge from-layer="25" from-port="1" to-layer="26" to-port="2" />
552
+ <edge from-layer="26" from-port="3" to-layer="27" to-port="0" />
553
+ <edge from-layer="27" from-port="1" to-layer="29" to-port="1" />
554
+ <edge from-layer="28" from-port="0" to-layer="29" to-port="2" />
555
+ <edge from-layer="29" from-port="3" to-layer="31" to-port="0" />
556
+ <edge from-layer="30" from-port="0" to-layer="31" to-port="1" />
557
+ <edge from-layer="31" from-port="2" to-layer="33" to-port="0" />
558
+ <edge from-layer="32" from-port="0" to-layer="33" to-port="1" />
559
+ <edge from-layer="33" from-port="2" to-layer="34" to-port="0" />
560
+ </edges>
561
+ <rt_info>
562
+ <info name="OpenVINO Runtime" value="2026.2.0-21622-fdad5b35a43" />
563
+ <Runtime_version value="2026.2.0-21622-fdad5b35a43" />
564
+ <conversion_parameters>
565
+ <framework value="pytorch" />
566
+ <is_python_object value="True" />
567
+ </conversion_parameters>
568
+ <nncf>
569
+ <friendly_names_were_updated value="True" />
570
+ <version value="3.1.0" />
571
+ <weight_compression>
572
+ <advanced_parameters value="{'statistics_path': None, 'lora_adapter_rank': 256, 'group_size_fallback_mode': 'error', 'min_adjusted_group_size': 32, 'awq_params': {'subset_size': 32, 'percent_to_apply': 0.002, 'alpha_min': 0.0, 'alpha_max': 1.0, 'steps': 100, 'prefer_data_aware_scaling': True}, 'scale_estimation_params': {'subset_size': 64, 'initial_steps': 5, 'scale_steps': 5, 'weight_penalty': -1.0}, 'gptq_params': {'damp_percent': 0.1, 'block_size': 128, 'subset_size': 128}, 'lora_correction_params': {'adapter_rank': 8, 'num_iterations': 3, 'apply_regularization': True, 'subset_size': 128, 'use_int8_adapters': True}, 'backend_params': {}, 'codebook': None, 'adaptive_codebook_params': {'value_type': 'f8e4m3', 'across_blocks': False, 'num_elements': 16}}" />
573
+ <all_layers value="False" />
574
+ <awq value="False" />
575
+ <backup_mode value="int8_asym" />
576
+ <compression_format value="dequantize" />
577
+ <gptq value="False" />
578
+ <group_size value="-1" />
579
+ <ignored_scope value="[]" />
580
+ <lora_correction value="False" />
581
+ <mode value="int8_sym" />
582
+ <ratio value="1.0" />
583
+ <scale_estimation value="False" />
584
+ <sensitivity_metric value="weight_quantization_error" />
585
+ </weight_compression>
586
+ </nncf>
587
+ <optimum>
588
+ <nncf_version value="3.1.0" />
589
+ <optimum_intel_version value="1.27.0.dev0+1fccd40" />
590
+ <optimum_version value="2.1.0.dev0" />
591
+ <pytorch_version value="2.11.0+cpu" />
592
+ <transformers_version value="5.5.0" />
593
+ </optimum>
594
+ </rt_info>
595
+ </net>
openvino_tokenizer.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:d151f48d29ba9d22fdf0f071cd16cb68e5f8fba51a5489c3d2df8e29030e4a13
3
+ size 17270328
openvino_tokenizer.xml ADDED
@@ -0,0 +1,796 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <net name="tokenizer" version="11">
3
+ <layers>
4
+ <layer id="0" name="Parameter_210308" type="Parameter" version="opset1">
5
+ <data shape="?" element_type="string" />
6
+ <output>
7
+ <port id="0" precision="STRING" names="Parameter_210308">
8
+ <dim>-1</dim>
9
+ </port>
10
+ </output>
11
+ </layer>
12
+ <layer id="1" name="Constant_210314" type="Const" version="opset1">
13
+ <data element_type="i64" shape="" offset="0" size="8" />
14
+ <output>
15
+ <port id="0" precision="I64" />
16
+ </output>
17
+ </layer>
18
+ <layer id="2" name="StringTensorUnpack_210309" type="StringTensorUnpack" version="opset15">
19
+ <input>
20
+ <port id="0" precision="STRING">
21
+ <dim>-1</dim>
22
+ </port>
23
+ </input>
24
+ <output>
25
+ <port id="1" precision="I32">
26
+ <dim>-1</dim>
27
+ </port>
28
+ <port id="2" precision="I32">
29
+ <dim>-1</dim>
30
+ </port>
31
+ <port id="3" precision="U8">
32
+ <dim>-1</dim>
33
+ </port>
34
+ </output>
35
+ </layer>
36
+ <layer id="3" name="ShapeOf_210310" type="ShapeOf" version="opset3">
37
+ <data output_type="i64" />
38
+ <input>
39
+ <port id="0" precision="I32">
40
+ <dim>-1</dim>
41
+ </port>
42
+ </input>
43
+ <output>
44
+ <port id="1" precision="I64">
45
+ <dim>1</dim>
46
+ </port>
47
+ </output>
48
+ </layer>
49
+ <layer id="4" name="Constant_210311" type="Const" version="opset1">
50
+ <data element_type="i64" shape="" offset="0" size="8" />
51
+ <output>
52
+ <port id="0" precision="I64" />
53
+ </output>
54
+ </layer>
55
+ <layer id="5" name="Constant_210312" type="Const" version="opset1">
56
+ <data element_type="i64" shape="" offset="0" size="8" />
57
+ <output>
58
+ <port id="0" precision="I64" />
59
+ </output>
60
+ </layer>
61
+ <layer id="6" name="Gather_210313" type="Gather" version="opset8">
62
+ <data batch_dims="0" />
63
+ <input>
64
+ <port id="0" precision="I64">
65
+ <dim>1</dim>
66
+ </port>
67
+ <port id="1" precision="I64" />
68
+ <port id="2" precision="I64" />
69
+ </input>
70
+ <output>
71
+ <port id="3" precision="I64" />
72
+ </output>
73
+ </layer>
74
+ <layer id="7" name="Constant_210315" type="Const" version="opset1">
75
+ <data element_type="i64" shape="" offset="8" size="8" />
76
+ <output>
77
+ <port id="0" precision="I64" />
78
+ </output>
79
+ </layer>
80
+ <layer id="8" name="Range_210316" type="Range" version="opset4">
81
+ <data output_type="i32" />
82
+ <input>
83
+ <port id="0" precision="I64" />
84
+ <port id="1" precision="I64" />
85
+ <port id="2" precision="I64" />
86
+ </input>
87
+ <output>
88
+ <port id="3" precision="I32">
89
+ <dim>-1</dim>
90
+ </port>
91
+ </output>
92
+ </layer>
93
+ <layer id="9" name="Constant_210317" type="Const" version="opset1">
94
+ <data element_type="i64" shape="" offset="8" size="8" />
95
+ <output>
96
+ <port id="0" precision="I64" />
97
+ </output>
98
+ </layer>
99
+ <layer id="10" name="Constant_210318" type="Const" version="opset1">
100
+ <data element_type="i64" shape="" offset="8" size="8" />
101
+ <output>
102
+ <port id="0" precision="I64" />
103
+ </output>
104
+ </layer>
105
+ <layer id="11" name="Add_210319" type="Add" version="opset1">
106
+ <data auto_broadcast="numpy" />
107
+ <input>
108
+ <port id="0" precision="I64" />
109
+ <port id="1" precision="I64" />
110
+ </input>
111
+ <output>
112
+ <port id="2" precision="I64" />
113
+ </output>
114
+ </layer>
115
+ <layer id="12" name="Constant_210320" type="Const" version="opset1">
116
+ <data element_type="i64" shape="" offset="8" size="8" />
117
+ <output>
118
+ <port id="0" precision="I64" />
119
+ </output>
120
+ </layer>
121
+ <layer id="13" name="Range_210321" type="Range" version="opset4">
122
+ <data output_type="i32" />
123
+ <input>
124
+ <port id="0" precision="I64" />
125
+ <port id="1" precision="I64" />
126
+ <port id="2" precision="I64" />
127
+ </input>
128
+ <output>
129
+ <port id="3" precision="I32">
130
+ <dim>-1</dim>
131
+ </port>
132
+ </output>
133
+ </layer>
134
+ <layer id="14" name="Constant_210385" type="Const" version="opset1">
135
+ <data element_type="u8" shape="301" offset="16" size="301" />
136
+ <output>
137
+ <port id="0" precision="U8">
138
+ <dim>301</dim>
139
+ </port>
140
+ </output>
141
+ </layer>
142
+ <layer id="15" name="SpecialTokensSplit_210386" type="SpecialTokensSplit" version="extension">
143
+ <input>
144
+ <port id="0" precision="I32">
145
+ <dim>-1</dim>
146
+ </port>
147
+ <port id="1" precision="I32">
148
+ <dim>-1</dim>
149
+ </port>
150
+ <port id="2" precision="I32">
151
+ <dim>-1</dim>
152
+ </port>
153
+ <port id="3" precision="I32">
154
+ <dim>-1</dim>
155
+ </port>
156
+ <port id="4" precision="U8">
157
+ <dim>-1</dim>
158
+ </port>
159
+ <port id="5" precision="U8">
160
+ <dim>301</dim>
161
+ </port>
162
+ </input>
163
+ <output>
164
+ <port id="6" precision="I32">
165
+ <dim>-1</dim>
166
+ </port>
167
+ <port id="7" precision="I32">
168
+ <dim>-1</dim>
169
+ </port>
170
+ <port id="8" precision="I32">
171
+ <dim>-1</dim>
172
+ </port>
173
+ <port id="9" precision="I32">
174
+ <dim>-1</dim>
175
+ </port>
176
+ <port id="10" precision="U8">
177
+ <dim>-1</dim>
178
+ </port>
179
+ <port id="11" precision="BOOL">
180
+ <dim>-1</dim>
181
+ </port>
182
+ </output>
183
+ </layer>
184
+ <layer id="16" name="Constant_210388" type="Const" version="opset1">
185
+ <data element_type="u8" shape="1" offset="317" size="1" />
186
+ <output>
187
+ <port id="0" precision="U8">
188
+ <dim>1</dim>
189
+ </port>
190
+ </output>
191
+ </layer>
192
+ <layer id="17" name="Constant_210390" type="Const" version="opset1">
193
+ <data element_type="u8" shape="3" offset="318" size="3" />
194
+ <output>
195
+ <port id="0" precision="U8">
196
+ <dim>3</dim>
197
+ </port>
198
+ </output>
199
+ </layer>
200
+ <layer id="18" name="RegexNormalization_210391" type="RegexNormalization" version="extension">
201
+ <data global_replace="true" />
202
+ <input>
203
+ <port id="0" precision="I32">
204
+ <dim>-1</dim>
205
+ </port>
206
+ <port id="1" precision="I32">
207
+ <dim>-1</dim>
208
+ </port>
209
+ <port id="2" precision="U8">
210
+ <dim>-1</dim>
211
+ </port>
212
+ <port id="3" precision="BOOL">
213
+ <dim>-1</dim>
214
+ </port>
215
+ <port id="4" precision="U8">
216
+ <dim>1</dim>
217
+ </port>
218
+ <port id="5" precision="U8">
219
+ <dim>3</dim>
220
+ </port>
221
+ </input>
222
+ <output>
223
+ <port id="6" precision="I32">
224
+ <dim>-1</dim>
225
+ </port>
226
+ <port id="7" precision="I32">
227
+ <dim>-1</dim>
228
+ </port>
229
+ <port id="8" precision="U8">
230
+ <dim>-1</dim>
231
+ </port>
232
+ <port id="9" precision="BOOL">
233
+ <dim>-1</dim>
234
+ </port>
235
+ </output>
236
+ </layer>
237
+ <layer id="19" name="Constant_210393" type="Const" version="opset1">
238
+ <data element_type="u8" shape="1" offset="317" size="1" />
239
+ <output>
240
+ <port id="0" precision="U8">
241
+ <dim>1</dim>
242
+ </port>
243
+ </output>
244
+ </layer>
245
+ <layer id="20" name="RegexSplit_210394" type="RegexSplit" version="extension">
246
+ <data behaviour="mergedwithprevious" invert="false" max_splits="-1" />
247
+ <input>
248
+ <port id="0" precision="I32">
249
+ <dim>-1</dim>
250
+ </port>
251
+ <port id="1" precision="I32">
252
+ <dim>-1</dim>
253
+ </port>
254
+ <port id="2" precision="I32">
255
+ <dim>-1</dim>
256
+ </port>
257
+ <port id="3" precision="I32">
258
+ <dim>-1</dim>
259
+ </port>
260
+ <port id="4" precision="U8">
261
+ <dim>-1</dim>
262
+ </port>
263
+ <port id="5" precision="BOOL">
264
+ <dim>-1</dim>
265
+ </port>
266
+ <port id="6" precision="U8">
267
+ <dim>1</dim>
268
+ </port>
269
+ </input>
270
+ <output>
271
+ <port id="7" precision="I32">
272
+ <dim>-1</dim>
273
+ </port>
274
+ <port id="8" precision="I32">
275
+ <dim>-1</dim>
276
+ </port>
277
+ <port id="9" precision="I32">
278
+ <dim>-1</dim>
279
+ </port>
280
+ <port id="10" precision="I32">
281
+ <dim>-1</dim>
282
+ </port>
283
+ <port id="11" precision="U8">
284
+ <dim>-1</dim>
285
+ </port>
286
+ <port id="12" precision="BOOL">
287
+ <dim>-1</dim>
288
+ </port>
289
+ </output>
290
+ </layer>
291
+ <layer id="21" name="Constant_210396" type="Const" version="opset1">
292
+ <data element_type="i32" shape="262144" offset="321" size="1048576" />
293
+ <output>
294
+ <port id="0" precision="I32">
295
+ <dim>262144</dim>
296
+ </port>
297
+ </output>
298
+ </layer>
299
+ <layer id="22" name="Constant_210398" type="Const" version="opset1">
300
+ <data element_type="i32" shape="262144" offset="1048897" size="1048576" />
301
+ <output>
302
+ <port id="0" precision="I32">
303
+ <dim>262144</dim>
304
+ </port>
305
+ </output>
306
+ </layer>
307
+ <layer id="23" name="Constant_210400" type="Const" version="opset1">
308
+ <data element_type="u8" shape="2316295" offset="2097473" size="2316295" />
309
+ <output>
310
+ <port id="0" precision="U8">
311
+ <dim>2316295</dim>
312
+ </port>
313
+ </output>
314
+ </layer>
315
+ <layer id="24" name="Constant_210408" type="Const" version="opset1">
316
+ <data element_type="i32" shape="514906" offset="4413768" size="2059624" />
317
+ <output>
318
+ <port id="0" precision="I32">
319
+ <dim>514906</dim>
320
+ </port>
321
+ </output>
322
+ </layer>
323
+ <layer id="25" name="Constant_210410" type="Const" version="opset1">
324
+ <data element_type="i32" shape="514906" offset="6473392" size="2059624" />
325
+ <output>
326
+ <port id="0" precision="I32">
327
+ <dim>514906</dim>
328
+ </port>
329
+ </output>
330
+ </layer>
331
+ <layer id="26" name="Constant_210412" type="Const" version="opset1">
332
+ <data element_type="u8" shape="2714340" offset="8533016" size="2714340" />
333
+ <output>
334
+ <port id="0" precision="U8">
335
+ <dim>2714340</dim>
336
+ </port>
337
+ </output>
338
+ </layer>
339
+ <layer id="27" name="Constant_210414" type="Const" version="opset1">
340
+ <data element_type="i32" shape="514906" offset="11247356" size="2059624" />
341
+ <output>
342
+ <port id="0" precision="I32">
343
+ <dim>514906</dim>
344
+ </port>
345
+ </output>
346
+ </layer>
347
+ <layer id="28" name="Constant_210416" type="Const" version="opset1">
348
+ <data element_type="i32" shape="514906" offset="13306980" size="2059624" />
349
+ <output>
350
+ <port id="0" precision="I32">
351
+ <dim>514906</dim>
352
+ </port>
353
+ </output>
354
+ </layer>
355
+ <layer id="29" name="Constant_210418" type="Const" version="opset1">
356
+ <data element_type="u8" shape="1903225" offset="15366604" size="1903225" />
357
+ <output>
358
+ <port id="0" precision="U8">
359
+ <dim>1903225</dim>
360
+ </port>
361
+ </output>
362
+ </layer>
363
+ <layer id="30" name="Constant_210402" type="Const" version="opset1">
364
+ <data element_type="i32" shape="23" offset="17269829" size="92" />
365
+ <output>
366
+ <port id="0" precision="I32">
367
+ <dim>23</dim>
368
+ </port>
369
+ </output>
370
+ </layer>
371
+ <layer id="31" name="Constant_210404" type="Const" version="opset1">
372
+ <data element_type="i32" shape="23" offset="17269921" size="92" />
373
+ <output>
374
+ <port id="0" precision="I32">
375
+ <dim>23</dim>
376
+ </port>
377
+ </output>
378
+ </layer>
379
+ <layer id="32" name="Constant_210406" type="Const" version="opset1">
380
+ <data element_type="u8" shape="198" offset="17270013" size="198" />
381
+ <output>
382
+ <port id="0" precision="U8">
383
+ <dim>198</dim>
384
+ </port>
385
+ </output>
386
+ </layer>
387
+ <layer id="33" name="Constant_210419" type="Const" version="opset1">
388
+ <data element_type="i32" shape="23" offset="17270211" size="92" />
389
+ <output>
390
+ <port id="0" precision="I32">
391
+ <dim>23</dim>
392
+ </port>
393
+ </output>
394
+ </layer>
395
+ <layer id="34" name="BPETokenizer_210420" type="BPETokenizer" version="extension">
396
+ <data unk_token="&lt;unk>" fuse_unk="true" suffix_indicator="" end_suffix="" byte_fallback="true" cache_capacity="52428" />
397
+ <input>
398
+ <port id="0" precision="I32">
399
+ <dim>-1</dim>
400
+ </port>
401
+ <port id="1" precision="I32">
402
+ <dim>-1</dim>
403
+ </port>
404
+ <port id="2" precision="I32">
405
+ <dim>-1</dim>
406
+ </port>
407
+ <port id="3" precision="I32">
408
+ <dim>-1</dim>
409
+ </port>
410
+ <port id="4" precision="U8">
411
+ <dim>-1</dim>
412
+ </port>
413
+ <port id="5" precision="I32">
414
+ <dim>262144</dim>
415
+ </port>
416
+ <port id="6" precision="I32">
417
+ <dim>262144</dim>
418
+ </port>
419
+ <port id="7" precision="U8">
420
+ <dim>2316295</dim>
421
+ </port>
422
+ <port id="8" precision="I32">
423
+ <dim>514906</dim>
424
+ </port>
425
+ <port id="9" precision="I32">
426
+ <dim>514906</dim>
427
+ </port>
428
+ <port id="10" precision="U8">
429
+ <dim>2714340</dim>
430
+ </port>
431
+ <port id="11" precision="I32">
432
+ <dim>514906</dim>
433
+ </port>
434
+ <port id="12" precision="I32">
435
+ <dim>514906</dim>
436
+ </port>
437
+ <port id="13" precision="U8">
438
+ <dim>1903225</dim>
439
+ </port>
440
+ <port id="14" precision="I32">
441
+ <dim>23</dim>
442
+ </port>
443
+ <port id="15" precision="I32">
444
+ <dim>23</dim>
445
+ </port>
446
+ <port id="16" precision="U8">
447
+ <dim>198</dim>
448
+ </port>
449
+ <port id="17" precision="I32">
450
+ <dim>23</dim>
451
+ </port>
452
+ </input>
453
+ <output>
454
+ <port id="18" precision="I32">
455
+ <dim>-1</dim>
456
+ </port>
457
+ <port id="19" precision="I32">
458
+ <dim>-1</dim>
459
+ </port>
460
+ <port id="20" precision="I32">
461
+ <dim>-1</dim>
462
+ </port>
463
+ </output>
464
+ </layer>
465
+ <layer id="35" name="Constant_210421" type="Const" version="opset1">
466
+ <data element_type="i32" shape="" offset="17270303" size="4" />
467
+ <output>
468
+ <port id="0" precision="I32" />
469
+ </output>
470
+ </layer>
471
+ <layer id="36" name="Constant_210423" type="Const" version="opset1">
472
+ <data element_type="u8" shape="4" offset="17270307" size="4" />
473
+ <output>
474
+ <port id="0" precision="U8">
475
+ <dim>4</dim>
476
+ </port>
477
+ </output>
478
+ </layer>
479
+ <layer id="37" name="Constant_210425" type="Const" version="opset1">
480
+ <data element_type="u8" shape="13" offset="17270311" size="13" />
481
+ <output>
482
+ <port id="0" precision="U8">
483
+ <dim>13</dim>
484
+ </port>
485
+ </output>
486
+ </layer>
487
+ <layer id="38" name="Truncate_210426" type="Truncate" version="extension">
488
+ <data m_num_inputs="1" />
489
+ <input>
490
+ <port id="0" precision="I32">
491
+ <dim>-1</dim>
492
+ </port>
493
+ <port id="1" precision="I32">
494
+ <dim>-1</dim>
495
+ </port>
496
+ <port id="2" precision="I32">
497
+ <dim>-1</dim>
498
+ </port>
499
+ <port id="3" precision="I32" />
500
+ <port id="4" precision="U8">
501
+ <dim>4</dim>
502
+ </port>
503
+ <port id="5" precision="U8">
504
+ <dim>13</dim>
505
+ </port>
506
+ </input>
507
+ <output>
508
+ <port id="6" precision="I32">
509
+ <dim>-1</dim>
510
+ </port>
511
+ <port id="7" precision="I32">
512
+ <dim>-1</dim>
513
+ </port>
514
+ <port id="8" precision="I32">
515
+ <dim>-1</dim>
516
+ </port>
517
+ </output>
518
+ </layer>
519
+ <layer id="39" name="Constant_210427" type="Const" version="opset1">
520
+ <data element_type="i32" shape="1" offset="17270324" size="4" />
521
+ <output>
522
+ <port id="0" precision="I32">
523
+ <dim>1</dim>
524
+ </port>
525
+ </output>
526
+ </layer>
527
+ <layer id="40" name="CombineSegments_210428" type="CombineSegments" version="extension">
528
+ <input>
529
+ <port id="0" precision="I32">
530
+ <dim>-1</dim>
531
+ </port>
532
+ <port id="1" precision="I32">
533
+ <dim>-1</dim>
534
+ </port>
535
+ <port id="2" precision="I32">
536
+ <dim>-1</dim>
537
+ </port>
538
+ <port id="3" precision="I32">
539
+ <dim>1</dim>
540
+ </port>
541
+ </input>
542
+ <output>
543
+ <port id="4" precision="I32">
544
+ <dim>-1</dim>
545
+ </port>
546
+ <port id="5" precision="I32">
547
+ <dim>-1</dim>
548
+ </port>
549
+ <port id="6" precision="I32">
550
+ <dim>-1</dim>
551
+ </port>
552
+ <port id="7" precision="I32">
553
+ <dim>-1</dim>
554
+ </port>
555
+ <port id="8" precision="I32">
556
+ <dim>-1</dim>
557
+ </port>
558
+ <port id="9" precision="I32">
559
+ <dim>-1</dim>
560
+ </port>
561
+ </output>
562
+ </layer>
563
+ <layer id="41" name="Subtract_210429" type="Subtract" version="opset1">
564
+ <data auto_broadcast="numpy" />
565
+ <input>
566
+ <port id="0" precision="I32">
567
+ <dim>-1</dim>
568
+ </port>
569
+ <port id="1" precision="I32">
570
+ <dim>-1</dim>
571
+ </port>
572
+ </input>
573
+ <output>
574
+ <port id="2" precision="I32">
575
+ <dim>-1</dim>
576
+ </port>
577
+ </output>
578
+ </layer>
579
+ <layer id="42" name="Constant_210430" type="Const" version="opset1">
580
+ <data element_type="i32" shape="" offset="17270324" size="4" />
581
+ <output>
582
+ <port id="0" precision="I32" />
583
+ </output>
584
+ </layer>
585
+ <layer id="43" name="ReduceMax_210431" type="ReduceMax" version="opset1">
586
+ <data keep_dims="false" />
587
+ <input>
588
+ <port id="0" precision="I32">
589
+ <dim>-1</dim>
590
+ </port>
591
+ <port id="1" precision="I32" />
592
+ </input>
593
+ <output>
594
+ <port id="2" precision="I32" />
595
+ </output>
596
+ </layer>
597
+ <layer id="44" name="Constant_210432" type="Const" version="opset1">
598
+ <data element_type="i32" shape="" offset="17270324" size="4" />
599
+ <output>
600
+ <port id="0" precision="I32" />
601
+ </output>
602
+ </layer>
603
+ <layer id="45" name="RaggedToDense_210433" type="RaggedToDense" version="extension">
604
+ <data pad_right="false" m_pad_max_length="false" />
605
+ <input>
606
+ <port id="0" precision="I32">
607
+ <dim>-1</dim>
608
+ </port>
609
+ <port id="1" precision="I32">
610
+ <dim>-1</dim>
611
+ </port>
612
+ <port id="2" precision="I32">
613
+ <dim>-1</dim>
614
+ </port>
615
+ <port id="3" precision="I32" />
616
+ <port id="4" precision="I32" />
617
+ </input>
618
+ <output>
619
+ <port id="5" precision="I32">
620
+ <dim>-1</dim>
621
+ <dim>-1</dim>
622
+ </port>
623
+ <port id="6" precision="BOOL">
624
+ <dim>-1</dim>
625
+ <dim>-1</dim>
626
+ </port>
627
+ </output>
628
+ </layer>
629
+ <layer id="46" name="Convert_210434" type="Convert" version="opset1">
630
+ <data destination_type="i32" />
631
+ <input>
632
+ <port id="0" precision="BOOL">
633
+ <dim>-1</dim>
634
+ <dim>-1</dim>
635
+ </port>
636
+ </input>
637
+ <output>
638
+ <port id="1" precision="I32">
639
+ <dim>-1</dim>
640
+ <dim>-1</dim>
641
+ </port>
642
+ </output>
643
+ </layer>
644
+ <layer id="47" name="Convert_210434.0" type="Convert" version="opset1">
645
+ <data destination_type="i64" />
646
+ <input>
647
+ <port id="0" precision="I32">
648
+ <dim>-1</dim>
649
+ <dim>-1</dim>
650
+ </port>
651
+ </input>
652
+ <output>
653
+ <port id="1" precision="I64" names="attention_mask">
654
+ <dim>-1</dim>
655
+ <dim>-1</dim>
656
+ </port>
657
+ </output>
658
+ </layer>
659
+ <layer id="48" name="RaggedToDense_210433.0" type="Convert" version="opset1">
660
+ <data destination_type="i64" />
661
+ <input>
662
+ <port id="0" precision="I32">
663
+ <dim>-1</dim>
664
+ <dim>-1</dim>
665
+ </port>
666
+ </input>
667
+ <output>
668
+ <port id="1" precision="I64" names="input_ids">
669
+ <dim>-1</dim>
670
+ <dim>-1</dim>
671
+ </port>
672
+ </output>
673
+ </layer>
674
+ <layer id="49" name="Result_210437" type="Result" version="opset1" output_names="input_ids">
675
+ <input>
676
+ <port id="0" precision="I64">
677
+ <dim>-1</dim>
678
+ <dim>-1</dim>
679
+ </port>
680
+ </input>
681
+ </layer>
682
+ <layer id="50" name="Result_210439" type="Result" version="opset1" output_names="attention_mask">
683
+ <input>
684
+ <port id="0" precision="I64">
685
+ <dim>-1</dim>
686
+ <dim>-1</dim>
687
+ </port>
688
+ </input>
689
+ </layer>
690
+ </layers>
691
+ <edges>
692
+ <edge from-layer="0" from-port="0" to-layer="2" to-port="0" />
693
+ <edge from-layer="1" from-port="0" to-layer="8" to-port="0" />
694
+ <edge from-layer="2" from-port="1" to-layer="3" to-port="0" />
695
+ <edge from-layer="2" from-port="3" to-layer="15" to-port="4" />
696
+ <edge from-layer="2" from-port="2" to-layer="15" to-port="3" />
697
+ <edge from-layer="2" from-port="1" to-layer="15" to-port="2" />
698
+ <edge from-layer="3" from-port="1" to-layer="6" to-port="0" />
699
+ <edge from-layer="4" from-port="0" to-layer="6" to-port="1" />
700
+ <edge from-layer="5" from-port="0" to-layer="6" to-port="2" />
701
+ <edge from-layer="6" from-port="3" to-layer="11" to-port="0" />
702
+ <edge from-layer="6" from-port="3" to-layer="8" to-port="1" />
703
+ <edge from-layer="7" from-port="0" to-layer="8" to-port="2" />
704
+ <edge from-layer="8" from-port="3" to-layer="15" to-port="0" />
705
+ <edge from-layer="9" from-port="0" to-layer="13" to-port="0" />
706
+ <edge from-layer="10" from-port="0" to-layer="11" to-port="1" />
707
+ <edge from-layer="11" from-port="2" to-layer="13" to-port="1" />
708
+ <edge from-layer="12" from-port="0" to-layer="13" to-port="2" />
709
+ <edge from-layer="13" from-port="3" to-layer="15" to-port="1" />
710
+ <edge from-layer="14" from-port="0" to-layer="15" to-port="5" />
711
+ <edge from-layer="15" from-port="11" to-layer="18" to-port="3" />
712
+ <edge from-layer="15" from-port="7" to-layer="20" to-port="1" />
713
+ <edge from-layer="15" from-port="6" to-layer="20" to-port="0" />
714
+ <edge from-layer="15" from-port="10" to-layer="18" to-port="2" />
715
+ <edge from-layer="15" from-port="9" to-layer="18" to-port="1" />
716
+ <edge from-layer="15" from-port="8" to-layer="18" to-port="0" />
717
+ <edge from-layer="16" from-port="0" to-layer="18" to-port="4" />
718
+ <edge from-layer="17" from-port="0" to-layer="18" to-port="5" />
719
+ <edge from-layer="18" from-port="6" to-layer="20" to-port="2" />
720
+ <edge from-layer="18" from-port="7" to-layer="20" to-port="3" />
721
+ <edge from-layer="18" from-port="8" to-layer="20" to-port="4" />
722
+ <edge from-layer="18" from-port="9" to-layer="20" to-port="5" />
723
+ <edge from-layer="19" from-port="0" to-layer="20" to-port="6" />
724
+ <edge from-layer="20" from-port="7" to-layer="34" to-port="0" />
725
+ <edge from-layer="20" from-port="8" to-layer="34" to-port="1" />
726
+ <edge from-layer="20" from-port="9" to-layer="34" to-port="2" />
727
+ <edge from-layer="20" from-port="10" to-layer="34" to-port="3" />
728
+ <edge from-layer="20" from-port="11" to-layer="34" to-port="4" />
729
+ <edge from-layer="21" from-port="0" to-layer="34" to-port="5" />
730
+ <edge from-layer="22" from-port="0" to-layer="34" to-port="6" />
731
+ <edge from-layer="23" from-port="0" to-layer="34" to-port="7" />
732
+ <edge from-layer="24" from-port="0" to-layer="34" to-port="8" />
733
+ <edge from-layer="25" from-port="0" to-layer="34" to-port="9" />
734
+ <edge from-layer="26" from-port="0" to-layer="34" to-port="10" />
735
+ <edge from-layer="27" from-port="0" to-layer="34" to-port="11" />
736
+ <edge from-layer="28" from-port="0" to-layer="34" to-port="12" />
737
+ <edge from-layer="29" from-port="0" to-layer="34" to-port="13" />
738
+ <edge from-layer="30" from-port="0" to-layer="34" to-port="14" />
739
+ <edge from-layer="31" from-port="0" to-layer="34" to-port="15" />
740
+ <edge from-layer="32" from-port="0" to-layer="34" to-port="16" />
741
+ <edge from-layer="33" from-port="0" to-layer="34" to-port="17" />
742
+ <edge from-layer="34" from-port="18" to-layer="38" to-port="0" />
743
+ <edge from-layer="34" from-port="19" to-layer="38" to-port="1" />
744
+ <edge from-layer="34" from-port="20" to-layer="38" to-port="2" />
745
+ <edge from-layer="35" from-port="0" to-layer="38" to-port="3" />
746
+ <edge from-layer="36" from-port="0" to-layer="38" to-port="4" />
747
+ <edge from-layer="37" from-port="0" to-layer="38" to-port="5" />
748
+ <edge from-layer="38" from-port="6" to-layer="40" to-port="0" />
749
+ <edge from-layer="38" from-port="8" to-layer="40" to-port="2" />
750
+ <edge from-layer="38" from-port="7" to-layer="40" to-port="1" />
751
+ <edge from-layer="39" from-port="0" to-layer="40" to-port="3" />
752
+ <edge from-layer="40" from-port="5" to-layer="41" to-port="0" />
753
+ <edge from-layer="40" from-port="4" to-layer="41" to-port="1" />
754
+ <edge from-layer="40" from-port="4" to-layer="45" to-port="0" />
755
+ <edge from-layer="40" from-port="5" to-layer="45" to-port="1" />
756
+ <edge from-layer="40" from-port="6" to-layer="45" to-port="2" />
757
+ <edge from-layer="41" from-port="2" to-layer="43" to-port="0" />
758
+ <edge from-layer="42" from-port="0" to-layer="43" to-port="1" />
759
+ <edge from-layer="43" from-port="2" to-layer="45" to-port="3" />
760
+ <edge from-layer="44" from-port="0" to-layer="45" to-port="4" />
761
+ <edge from-layer="45" from-port="6" to-layer="46" to-port="0" />
762
+ <edge from-layer="45" from-port="5" to-layer="48" to-port="0" />
763
+ <edge from-layer="46" from-port="1" to-layer="47" to-port="0" />
764
+ <edge from-layer="47" from-port="1" to-layer="50" to-port="0" />
765
+ <edge from-layer="48" from-port="1" to-layer="49" to-port="0" />
766
+ </edges>
767
+ <rt_info>
768
+ <info name="OpenVINO Runtime" value="2026.2.0-21622-fdad5b35a43" />
769
+ <add_attention_mask value="True" />
770
+ <add_prefix_space />
771
+ <add_special_tokens value="True" />
772
+ <bos_token_id value="2" />
773
+ <chat_template value="{%- macro format_parameters(properties, required) -%}&#10; {%- set standard_keys = ['description', 'type', 'properties', 'required', 'nullable'] -%}&#10; {%- set ns = namespace(found_first=false) -%}&#10; {%- for key, value in properties | dictsort -%}&#10; {%- set add_comma = false -%}&#10; {%- if key not in standard_keys -%}&#10; {%- if ns.found_first %},{% endif -%}&#10; {%- set ns.found_first = true -%}&#10; {{ key }}:{&#10; {%- if value['description'] -%}&#10; description:&lt;|&quot;|>{{ value['description'] }}&lt;|&quot;|>&#10; {%- set add_comma = true -%}&#10; {%- endif -%}&#10; {%- if value['type'] | upper == 'STRING' -%}&#10; {%- if value['enum'] -%}&#10; {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}&#10; enum:{{ format_argument(value['enum']) }}&#10; {%- endif -%}&#10; {%- elif value['type'] | upper == 'ARRAY' -%}&#10; {%- if value['items'] is mapping and value['items'] -%}&#10; {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}&#10; items:{&#10; {%- set ns_items = namespace(found_first=false) -%}&#10; {%- for item_key, item_value in value['items'] | dictsort -%}&#10; {%- if item_value is not none -%}&#10; {%- if ns_items.found_first %},{% endif -%}&#10; {%- set ns_items.found_first = true -%}&#10; {%- if item_key == 'properties' -%}&#10; properties:{&#10; {%- if item_value is mapping -%}&#10; {{- format_parameters(item_value, value['items']['required'] | default([])) -}}&#10; {%- endif -%}&#10; }&#10; {%- elif item_key == 'required' -%}&#10; required:[&#10; {%- for req_item in item_value -%}&#10; &lt;|&quot;|>{{- req_item -}}&lt;|&quot;|>&#10; {%- if not loop.last %},{% endif -%}&#10; {%- endfor -%}&#10; ]&#10; {%- elif item_key == 'type' -%}&#10; {%- if item_value is string -%}&#10; type:{{ format_argument(item_value | upper) }}&#10; {%- else -%}&#10; type:{{ format_argument(item_value | map('upper') | list) }}&#10; {%- endif -%}&#10; {%- else -%}&#10; {{ item_key }}:{{ format_argument(item_value) }}&#10; {%- endif -%}&#10; {%- endif -%}&#10; {%- endfor -%}&#10; }&#10; {%- endif -%}&#10; {%- endif -%}&#10; {%- if value['nullable'] %}&#10; {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}&#10; nullable:true&#10; {%- endif -%}&#10; {%- if value['type'] | upper == 'OBJECT' -%}&#10; {%- if value['properties'] is defined and value['properties'] is mapping -%}&#10; {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}&#10; properties:{&#10; {{- format_parameters(value['properties'], value['required'] | default([])) -}}&#10; }&#10; {%- elif value is mapping -%}&#10; {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}&#10; properties:{&#10; {{- format_parameters(value, value['required'] | default([])) -}}&#10; }&#10; {%- endif -%}&#10; {%- if value['required'] -%}&#10; {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}&#10; required:[&#10; {%- for item in value['required'] | default([]) -%}&#10; &lt;|&quot;|>{{- item -}}&lt;|&quot;|>&#10; {%- if not loop.last %},{% endif -%}&#10; {%- endfor -%}&#10; ]&#10; {%- endif -%}&#10; {%- endif -%}&#10; {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}&#10; type:&lt;|&quot;|>{{ value['type'] | upper }}&lt;|&quot;|>}&#10; {%- endif -%}&#10; {%- endfor -%}&#10;{%- endmacro -%}&#10;{%- macro format_function_declaration(tool_data) -%}&#10; declaration:{{- tool_data['function']['name'] -}}{description:&lt;|&quot;|>{{- tool_data['function']['description'] -}}&lt;|&quot;|>&#10; {%- set params = tool_data['function']['parameters'] -%}&#10; {%- if params -%}&#10; ,parameters:{&#10; {%- if params['properties'] -%}&#10; properties:{ {{- format_parameters(params['properties'], params['required']) -}} },&#10; {%- endif -%}&#10; {%- if params['required'] -%}&#10; required:[&#10; {%- for item in params['required'] -%}&#10; &lt;|&quot;|>{{- item -}}&lt;|&quot;|>&#10; {{- ',' if not loop.last -}}&#10; {%- endfor -%}&#10; ],&#10; {%- endif -%}&#10; {%- if params['type'] -%}&#10; type:&lt;|&quot;|>{{- params['type'] | upper -}}&lt;|&quot;|>}&#10; {%- endif -%}&#10; {%- endif -%}&#10; {%- if 'response' in tool_data['function'] -%}&#10; {%- set response_declaration = tool_data['function']['response'] -%}&#10; ,response:{&#10; {%- if response_declaration['description'] -%}&#10; description:&lt;|&quot;|>{{- response_declaration['description'] -}}&lt;|&quot;|>,&#10; {%- endif -%}&#10; {%- if response_declaration['type'] | upper == 'OBJECT' -%}&#10; type:&lt;|&quot;|>{{- response_declaration['type'] | upper -}}&lt;|&quot;|>}&#10; {%- endif -%}&#10; {%- endif -%}&#10; }&#10;{%- endmacro -%}&#10;{%- macro format_argument(argument, escape_keys=True) -%}&#10; {%- if argument is string -%}&#10; {{- '&lt;|&quot;|>' + argument + '&lt;|&quot;|>' -}}&#10; {%- elif argument is boolean -%}&#10; {{- 'true' if argument else 'false' -}}&#10; {%- elif argument is mapping -%}&#10; {{- '{' -}}&#10; {%- set ns = namespace(found_first=false) -%}&#10; {%- for key, value in argument | dictsort -%}&#10; {%- if ns.found_first %},{% endif -%}&#10; {%- set ns.found_first = true -%}&#10; {%- if escape_keys -%}&#10; {{- '&lt;|&quot;|>' + key + '&lt;|&quot;|>' -}}&#10; {%- else -%}&#10; {{- key -}}&#10; {%- endif -%}&#10; :{{- format_argument(value, escape_keys=escape_keys) -}}&#10; {%- endfor -%}&#10; {{- '}' -}}&#10; {%- elif argument is sequence -%}&#10; {{- '[' -}}&#10; {%- for item in argument -%}&#10; {{- format_argument(item, escape_keys=escape_keys) -}}&#10; {%- if not loop.last %},{% endif -%}&#10; {%- endfor -%}&#10; {{- ']' -}}&#10; {%- else -%}&#10; {{- argument -}}&#10; {%- endif -%}&#10;{%- endmacro -%}&#10;{%- macro strip_thinking(text) -%}&#10; {%- set ns = namespace(result='') -%}&#10; {%- for part in text.split('&lt;channel|>') -%}&#10; {%- if '&lt;|channel>' in part -%}&#10; {%- set ns.result = ns.result + part.split('&lt;|channel>')[0] -%}&#10; {%- else -%}&#10; {%- set ns.result = ns.result + part -%}&#10; {%- endif -%}&#10; {%- endfor -%}&#10; {{- ns.result | trim -}}&#10;{%- endmacro -%}&#10;&#10;{%- macro format_tool_response_block(tool_name, response) -%}&#10; {{- '&lt;|tool_response>' -}}&#10; {%- if response is mapping -%}&#10; {{- 'response:' + tool_name + '{' -}}&#10; {%- for key, value in response | dictsort -%}&#10; {{- key -}}:{{- format_argument(value, escape_keys=False) -}}&#10; {%- if not loop.last %},{% endif -%}&#10; {%- endfor -%}&#10; {{- '}' -}}&#10; {%- else -%}&#10; {{- 'response:' + tool_name + '{value:' + format_argument(response, escape_keys=False) + '}' -}}&#10; {%- endif -%}&#10; {{- '&lt;tool_response|>' -}}&#10;{%- endmacro -%}&#10;&#10;{%- set ns = namespace(prev_message_type=None) -%}&#10;{%- set loop_messages = messages -%}&#10;{{- bos_token -}}&#10;{#- Handle System/Tool Definitions Block -#}&#10;{%- if (enable_thinking is defined and enable_thinking) or tools or messages[0]['role'] in ['system', 'developer'] -%}&#10; {{- '&lt;|turn>system\n' -}}&#10;&#10; {#- Inject Thinking token at the very top of the FIRST system turn -#}&#10; {%- if enable_thinking is defined and enable_thinking -%}&#10; {{- '&lt;|think|>\n' -}}&#10; {%- set ns.prev_message_type = 'think' -%}&#10; {%- endif -%}&#10;&#10; {%- if messages[0]['role'] in ['system', 'developer'] -%}&#10; {{- messages[0]['content'] | trim -}}&#10; {%- set loop_messages = messages[1:] -%}&#10; {%- endif -%}&#10;&#10; {%- if tools -%}&#10; {%- for tool in tools %}&#10; {{- '&lt;|tool>' -}}&#10; {{- format_function_declaration(tool) | trim -}}&#10; {{- '&lt;tool|>' -}}&#10; {%- endfor %}&#10; {%- set ns.prev_message_type = 'tool' -%}&#10; {%- endif -%}&#10;&#10; {{- '&lt;turn|>\n' -}}&#10;{%- endif %}&#10;&#10;{#- Pre-scan: find last user message index for reasoning guard -#}&#10;{%- set ns_turn = namespace(last_user_idx=-1) -%}&#10;{%- for i in range(loop_messages | length) -%}&#10; {%- if loop_messages[i]['role'] == 'user' -%}&#10; {%- set ns_turn.last_user_idx = i -%}&#10; {%- endif -%}&#10;{%- endfor -%}&#10;&#10;{#- Loop through messages -#}&#10;{%- for message in loop_messages -%}&#10; {%- if message['role'] != 'tool' -%}&#10; {%- set ns.prev_message_type = None -%}&#10; {%- set role = 'model' if message['role'] == 'assistant' else message['role'] -%}&#10; {#- Detect continuation: suppress duplicate &lt;|turn>model when previous non-tool message was also assistant -#}&#10; {%- set prev_nt = namespace(role=None, found=false) -%}&#10; {%- if loop.index0 > 0 -%}&#10; {%- for j in range(loop.index0 - 1, -1, -1) -%}&#10; {%- if not prev_nt.found -%}&#10; {%- if loop_messages[j]['role'] != 'tool' -%}&#10; {%- set prev_nt.role = loop_messages[j]['role'] -%}&#10; {%- set prev_nt.found = true -%}&#10; {%- endif -%}&#10; {%- endif -%}&#10; {%- endfor -%}&#10; {%- endif -%}&#10; {%- set continue_same_model_turn = (role == 'model' and prev_nt.role == 'assistant') -%}&#10; {%- if not continue_same_model_turn -%}&#10; {{- '&lt;|turn>' + role + '\n' }}&#10; {%- endif -%}&#10;&#10; {#- Render reasoning/reasoning_content as thinking channel -#}&#10; {%- set thinking_text = message.get('reasoning') or message.get('reasoning_content') -%}&#10; {%- if thinking_text and loop.index0 > ns_turn.last_user_idx and message.get('tool_calls') -%}&#10; {{- '&lt;|channel>thought\n' + thinking_text + '\n&lt;channel|>' -}}&#10; {%- endif -%}&#10;&#10; {%- if message['tool_calls'] -%}&#10; {%- for tool_call in message['tool_calls'] -%}&#10; {%- set function = tool_call['function'] -%}&#10; {{- '&lt;|tool_call>call:' + function['name'] + '{' -}}&#10; {%- if function['arguments'] is mapping -%}&#10; {%- set ns_args = namespace(found_first=false) -%}&#10; {%- for key, value in function['arguments'] | dictsort -%}&#10; {%- if ns_args.found_first %},{% endif -%}&#10; {%- set ns_args.found_first = true -%}&#10; {{- key -}}:{{- format_argument(value, escape_keys=False) -}}&#10; {%- endfor -%}&#10; {%- elif function['arguments'] is string -%}&#10; {{- function['arguments'] -}}&#10; {%- endif -%}&#10; {{- '}&lt;tool_call|>' -}}&#10; {%- endfor -%}&#10; {%- set ns.prev_message_type = 'tool_call' -%}&#10; {%- endif -%}&#10;&#10; {%- set ns_tr_out = namespace(flag=false) -%}&#10; {%- if message.get('tool_responses') -%}&#10; {#- Legacy: tool_responses embedded on the assistant message (Google/Gemma native) -#}&#10; {%- for tool_response in message['tool_responses'] -%}&#10; {{- format_tool_response_block(tool_response['name'] | default('unknown'), tool_response['response']) -}}&#10; {%- set ns_tr_out.flag = true -%}&#10; {%- set ns.prev_message_type = 'tool_response' -%}&#10; {%- endfor -%}&#10; {%- elif message.get('tool_calls') -%}&#10; {#- OpenAI Chat Completions: forward-scan consecutive role:tool messages -#}&#10; {%- set ns_tool_scan = namespace(stopped=false) -%}&#10; {%- for k in range(loop.index0 + 1, loop_messages | length) -%}&#10; {%- if ns_tool_scan.stopped -%}&#10; {%- elif loop_messages[k]['role'] != 'tool' -%}&#10; {%- set ns_tool_scan.stopped = true -%}&#10; {%- else -%}&#10; {%- set follow = loop_messages[k] -%}&#10; {#- Resolve tool_call_id to function name -#}&#10; {%- set ns_tname = namespace(name=follow.get('name') | default('unknown')) -%}&#10; {%- for tc in message['tool_calls'] -%}&#10; {%- if tc.get('id') == follow.get('tool_call_id') -%}&#10; {%- set ns_tname.name = tc['function']['name'] -%}&#10; {%- endif -%}&#10; {%- endfor -%}&#10; {#- Handle content as string or content-parts array -#}&#10; {%- set tool_body = follow.get('content') -%}&#10; {%- if tool_body is string -%}&#10; {{- format_tool_response_block(ns_tname.name, tool_body) -}}&#10; {%- elif tool_body is sequence and tool_body is not string -%}&#10; {%- set ns_txt = namespace(s='') -%}&#10; {%- for part in tool_body -%}&#10; {%- if part.get('type') == 'text' -%}&#10; {%- set ns_txt.s = ns_txt.s + (part.get('text') | default('')) -%}&#10; {%- endif -%}&#10; {%- endfor -%}&#10; {{- format_tool_response_block(ns_tname.name, ns_txt.s) -}}&#10; {%- else -%}&#10; {{- format_tool_response_block(ns_tname.name, tool_body) -}}&#10; {%- endif -%}&#10; {%- set ns_tr_out.flag = true -%}&#10; {%- set ns.prev_message_type = 'tool_response' -%}&#10; {%- endif -%}&#10; {%- endfor -%}&#10; {%- endif -%}&#10;&#10; {%- if message['content'] is string -%}&#10; {%- if role == 'model' -%}&#10; {{- strip_thinking(message['content']) -}}&#10; {%- else -%}&#10; {{- message['content'] | trim -}}&#10; {%- endif -%}&#10; {%- elif message['content'] is sequence -%}&#10; {%- for item in message['content'] -%}&#10; {%- if item['type'] == 'text' -%}&#10; {%- if role == 'model' -%}&#10; {{- strip_thinking(item['text']) -}}&#10; {%- else -%}&#10; {{- item['text'] | trim -}}&#10; {%- endif -%}&#10; {%- elif item['type'] == 'image' -%}&#10; {{- '&lt;|image|>' -}}&#10; {%- set ns.prev_message_type = 'image' -%}&#10; {%- elif item['type'] == 'audio' -%}&#10; {{- '&lt;|audio|>' -}}&#10; {%- set ns.prev_message_type = 'audio' -%}&#10; {%- elif item['type'] == 'video' -%}&#10; {{- '&lt;|video|>' -}}&#10; {%- set ns.prev_message_type = 'video' -%}&#10; {%- endif -%}&#10; {%- endfor -%}&#10; {%- endif -%}&#10;&#10; {%- if ns.prev_message_type == 'tool_call' and not ns_tr_out.flag -%}&#10; {{- '&lt;|tool_response>' -}}&#10; {%- elif not (ns_tr_out.flag and not message.get('content')) -%}&#10; {{- '&lt;turn|>\n' -}}&#10; {%- endif -%}&#10; {%- endif -%}&#10;{%- endfor -%}&#10;&#10;{%- if add_generation_prompt -%}&#10; {%- if ns.prev_message_type != 'tool_response' and ns.prev_message_type != 'tool_call' -%}&#10; {{- '&lt;|turn>model\n' -}}&#10; {%- endif -%}&#10;{%- endif -%}" />
774
+ <clean_up_tokenization_spaces />
775
+ <detokenizer_input_type value="i64" />
776
+ <eos_token_id value="1" />
777
+ <handle_special_tokens_with_re />
778
+ <max_length />
779
+ <number_of_inputs value="1" />
780
+ <openvino_tokenizers_version value="2026.2.0.0-668-cb14978d71b" />
781
+ <openvino_version value="2026.2.0-21622-fdad5b35a43" />
782
+ <original_post_processor_template value="{&quot;type&quot;: &quot;TemplateProcessing&quot;, &quot;single&quot;: [{&quot;Sequence&quot;: {&quot;id&quot;: &quot;A&quot;, &quot;type_id&quot;: 0}}], &quot;pair&quot;: [{&quot;Sequence&quot;: {&quot;id&quot;: &quot;A&quot;, &quot;type_id&quot;: 0}}, {&quot;Sequence&quot;: {&quot;id&quot;: &quot;B&quot;, &quot;type_id&quot;: 1}}], &quot;special_tokens&quot;: {}}" />
783
+ <original_tokenizer_class value="&lt;class 'transformers.models.gemma.tokenization_gemma.GemmaTokenizer'>" />
784
+ <pad_token_id value="0" />
785
+ <processed_post_processor_template value="{&quot;single&quot;: {&quot;ids&quot;: [-1], &quot;type_ids&quot;: [0]}, &quot;pair&quot;: {&quot;ids&quot;: [-1, -2], &quot;type_ids&quot;: [0, 1]}}" />
786
+ <skip_special_tokens value="True" />
787
+ <streaming_detokenizer value="False" />
788
+ <tokenizer_output_type value="i64" />
789
+ <tokenizers_version value="0.22.2" />
790
+ <transformers_version value="5.5.0" />
791
+ <use_max_padding value="False" />
792
+ <use_sentencepiece_backend value="False" />
793
+ <utf8_replace_mode value="replace" />
794
+ <with_detokenizer value="True" />
795
+ </rt_info>
796
+ </net>
openvino_vision_embeddings_model.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:6c7609d984db75c39461f74b418cf3eac65b90da8678a08bc4e158e2f4524c3d
3
+ size 169812532
openvino_vision_embeddings_model.xml ADDED
The diff for this file is too large to render. See raw diff
 
preprocessor_config.json ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "do_convert_rgb": true,
3
+ "do_normalize": false,
4
+ "do_rescale": true,
5
+ "do_resize": true,
6
+ "image_mean": [
7
+ 0.0,
8
+ 0.0,
9
+ 0.0
10
+ ],
11
+ "image_processor_type": "Gemma4ImageProcessor",
12
+ "image_seq_length": 280,
13
+ "image_std": [
14
+ 1.0,
15
+ 1.0,
16
+ 1.0
17
+ ],
18
+ "max_soft_tokens": 280,
19
+ "patch_size": 16,
20
+ "pooling_kernel_size": 3,
21
+ "resample": 3,
22
+ "rescale_factor": 0.00392156862745098
23
+ }
processor_config.json ADDED
@@ -0,0 +1,75 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "audio_ms_per_token": 40,
3
+ "audio_seq_length": 750,
4
+ "feature_extractor": {
5
+ "dither": 0.0,
6
+ "feature_extractor_type": "Gemma4AudioFeatureExtractor",
7
+ "feature_size": 128,
8
+ "fft_length": 512,
9
+ "fft_overdrive": false,
10
+ "frame_length": 320,
11
+ "hop_length": 160,
12
+ "input_scale_factor": 1.0,
13
+ "max_frequency": 8000.0,
14
+ "mel_floor": 0.001,
15
+ "min_frequency": 0.0,
16
+ "padding_side": "right",
17
+ "padding_value": 0.0,
18
+ "per_bin_mean": null,
19
+ "per_bin_stddev": null,
20
+ "preemphasis": 0.0,
21
+ "preemphasis_htk_flavor": true,
22
+ "return_attention_mask": true,
23
+ "sampling_rate": 16000
24
+ },
25
+ "image_processor": {
26
+ "do_convert_rgb": true,
27
+ "do_normalize": false,
28
+ "do_rescale": true,
29
+ "do_resize": true,
30
+ "image_mean": [
31
+ 0.0,
32
+ 0.0,
33
+ 0.0
34
+ ],
35
+ "image_processor_type": "Gemma4ImageProcessor",
36
+ "image_seq_length": 280,
37
+ "image_std": [
38
+ 1.0,
39
+ 1.0,
40
+ 1.0
41
+ ],
42
+ "max_soft_tokens": 280,
43
+ "patch_size": 16,
44
+ "pooling_kernel_size": 3,
45
+ "resample": 3,
46
+ "rescale_factor": 0.00392156862745098
47
+ },
48
+ "image_seq_length": 280,
49
+ "processor_class": "Gemma4Processor",
50
+ "video_processor": {
51
+ "do_convert_rgb": true,
52
+ "do_normalize": true,
53
+ "do_rescale": true,
54
+ "do_resize": true,
55
+ "do_sample_frames": true,
56
+ "image_mean": [
57
+ 0.0,
58
+ 0.0,
59
+ 0.0
60
+ ],
61
+ "image_std": [
62
+ 1.0,
63
+ 1.0,
64
+ 1.0
65
+ ],
66
+ "max_soft_tokens": 70,
67
+ "num_frames": 32,
68
+ "patch_size": 16,
69
+ "pooling_kernel_size": 3,
70
+ "resample": 3,
71
+ "rescale_factor": 0.00392156862745098,
72
+ "return_metadata": false,
73
+ "video_processor_type": "Gemma4VideoProcessor"
74
+ }
75
+ }
tokenizer.json ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:cc8d3a0ce36466ccc1278bf987df5f71db1719b9ca6b4118264f45cb627bfe0f
3
+ size 32169626
tokenizer_config.json ADDED
@@ -0,0 +1,95 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "audio_token": "<|audio|>",
3
+ "backend": "tokenizers",
4
+ "boa_token": "<|audio>",
5
+ "boi_token": "<|image>",
6
+ "bos_token": "<bos>",
7
+ "eoa_token": "<audio|>",
8
+ "eoc_token": "<channel|>",
9
+ "eoi_token": "<image|>",
10
+ "eos_token": "<eos>",
11
+ "eot_token": "<turn|>",
12
+ "escape_token": "<|\"|>",
13
+ "etc_token": "<tool_call|>",
14
+ "etd_token": "<tool|>",
15
+ "etr_token": "<tool_response|>",
16
+ "extra_special_tokens": [
17
+ "<|video|>"
18
+ ],
19
+ "image_token": "<|image|>",
20
+ "is_local": false,
21
+ "mask_token": "<mask>",
22
+ "model_max_length": 1000000000000000019884624838656,
23
+ "model_specific_special_tokens": {
24
+ "audio_token": "<|audio|>",
25
+ "boa_token": "<|audio>",
26
+ "boi_token": "<|image>",
27
+ "eoa_token": "<audio|>",
28
+ "eoc_token": "<channel|>",
29
+ "eoi_token": "<image|>",
30
+ "eot_token": "<turn|>",
31
+ "escape_token": "<|\"|>",
32
+ "etc_token": "<tool_call|>",
33
+ "etd_token": "<tool|>",
34
+ "etr_token": "<tool_response|>",
35
+ "image_token": "<|image|>",
36
+ "soc_token": "<|channel>",
37
+ "sot_token": "<|turn>",
38
+ "stc_token": "<|tool_call>",
39
+ "std_token": "<|tool>",
40
+ "str_token": "<|tool_response>",
41
+ "think_token": "<|think|>"
42
+ },
43
+ "pad_token": "<pad>",
44
+ "padding_side": "left",
45
+ "processor_class": "Gemma4Processor",
46
+ "response_schema": {
47
+ "properties": {
48
+ "content": {
49
+ "type": "string"
50
+ },
51
+ "role": {
52
+ "const": "assistant"
53
+ },
54
+ "thinking": {
55
+ "type": "string"
56
+ },
57
+ "tool_calls": {
58
+ "items": {
59
+ "properties": {
60
+ "function": {
61
+ "properties": {
62
+ "arguments": {
63
+ "additionalProperties": {},
64
+ "type": "object",
65
+ "x-parser": "gemma4-tool-call"
66
+ },
67
+ "name": {
68
+ "type": "string"
69
+ }
70
+ },
71
+ "type": "object",
72
+ "x-regex": "call\\:(?P<name>\\w+)(?P<arguments>\\{.*\\})"
73
+ },
74
+ "type": {
75
+ "const": "function"
76
+ }
77
+ },
78
+ "type": "object"
79
+ },
80
+ "type": "array",
81
+ "x-regex-iterator": "<\\|tool_call>(.*?)<tool_call\\|>"
82
+ }
83
+ },
84
+ "type": "object",
85
+ "x-regex": "(\\<\\|channel\\>thought\\n(?P<thinking>.*?)\\<channel\\|\\>)?(?P<tool_calls>\\<\\|tool_call\\>.*\\<tool_call\\|\\>)?(?P<content>(?:(?!\\<turn\\|\\>)(?!\\<\\|tool_response\\>).)+)?(?:\\<turn\\|\\>|\\<\\|tool_response\\>)?"
86
+ },
87
+ "soc_token": "<|channel>",
88
+ "sot_token": "<|turn>",
89
+ "stc_token": "<|tool_call>",
90
+ "std_token": "<|tool>",
91
+ "str_token": "<|tool_response>",
92
+ "think_token": "<|think|>",
93
+ "tokenizer_class": "GemmaTokenizer",
94
+ "unk_token": "<unk>"
95
+ }