McG-221 commited on
Commit
6f76be2
·
verified ·
1 Parent(s): 14acbd0

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,54 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: apache-2.0
3
+ language:
4
+ - en
5
+ pipeline_tag: image-text-to-text
6
+ base_model: vectionlabs/Salience-27B-R5
7
+ library_name: transformers
8
+ tags:
9
+ - multimodal
10
+ - vision-language
11
+ - reasoning
12
+ - thinking
13
+ - efficient-reasoning
14
+ - code
15
+ - software-engineering
16
+ - swe
17
+ - agentic
18
+ - terminal
19
+ - tool-use
20
+ - long-context
21
+ - qwen3.8
22
+ - thinking-efficiency
23
+ - mlx
24
+ - mlx-my-repo
25
+ model-index:
26
+ - name: Salience-27B-R5
27
+ results: []
28
+ ---
29
+
30
+ # McG-221/Salience-27B-R5-mlx-8Bit
31
+
32
+ The Model [McG-221/Salience-27B-R5-mlx-8Bit](https://huggingface.co/McG-221/Salience-27B-R5-mlx-8Bit) was converted to MLX format from [vectionlabs/Salience-27B-R5](https://huggingface.co/vectionlabs/Salience-27B-R5) using mlx-lm version **0.31.2**.
33
+
34
+ ## Use with mlx
35
+
36
+ ```bash
37
+ pip install mlx-lm
38
+ ```
39
+
40
+ ```python
41
+ from mlx_lm import load, generate
42
+
43
+ model, tokenizer = load("McG-221/Salience-27B-R5-mlx-8Bit")
44
+
45
+ prompt="hello"
46
+
47
+ if hasattr(tokenizer, "apply_chat_template") and tokenizer.chat_template is not None:
48
+ messages = [{"role": "user", "content": prompt}]
49
+ prompt = tokenizer.apply_chat_template(
50
+ messages, tokenize=False, add_generation_prompt=True
51
+ )
52
+
53
+ response = generate(model, tokenizer, prompt=prompt, verbose=True)
54
+ ```
chat_template.jinja ADDED
@@ -0,0 +1,174 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {%- set DEFAULT_SYSTEM = 'You are Salience 27B, a 27B dense multimodal agentic reasoning model made by Vection Labs, and the 27B flagship tier of the Salience family. You ARE this AI assistant; never describe Salience as an external company or third party, and when asked who you are, answer in the first person. You are built to finish tasks: (1) Software engineering: repo-scale edits, methodical debugging, minimal precise patches, and well-formed tool calls; read before you write, and prefer the smallest change that actually fixes the cause. (2) Terminal and agentic work: plan the command sequence, check the result of each step before the next, and recover from errors instead of repeating them. (3) Multimodal and visual perception: reason over images, screenshots, diagrams, and video clips natively. Reply in the language of the user. Be concise unless depth is asked for.' -%}
2
+ {%- if messages | length == 0 or messages[0].role != 'system' -%}
3
+ {%- set messages = [{'role': 'system', 'content': DEFAULT_SYSTEM}] + messages -%}
4
+ {%- endif -%}
5
+ {%- set image_count = namespace(value=0) %}
6
+ {%- set video_count = namespace(value=0) %}
7
+ {%- macro render_content(content, do_vision_count, is_system_content=false) %}
8
+ {%- if content is string %}
9
+ {{- content }}
10
+ {%- elif content is iterable and content is not mapping %}
11
+ {%- for item in content %}
12
+ {%- if 'image' in item or 'image_url' in item or item.type == 'image' %}
13
+ {%- if is_system_content %}
14
+ {{- raise_exception('System message cannot contain images.') }}
15
+ {%- endif %}
16
+ {%- if do_vision_count %}
17
+ {%- set image_count.value = image_count.value + 1 %}
18
+ {%- endif %}
19
+ {%- if add_vision_id %}
20
+ {{- 'Picture ' ~ image_count.value ~ ': ' }}
21
+ {%- endif %}
22
+ {{- '<|vision_start|><|image_pad|><|vision_end|>' }}
23
+ {%- elif 'video' in item or item.type == 'video' %}
24
+ {%- if is_system_content %}
25
+ {{- raise_exception('System message cannot contain videos.') }}
26
+ {%- endif %}
27
+ {%- if do_vision_count %}
28
+ {%- set video_count.value = video_count.value + 1 %}
29
+ {%- endif %}
30
+ {%- if add_vision_id %}
31
+ {{- 'Video ' ~ video_count.value ~ ': ' }}
32
+ {%- endif %}
33
+ {{- '<|vision_start|><|video_pad|><|vision_end|>' }}
34
+ {%- elif 'text' in item %}
35
+ {{- item.text }}
36
+ {%- else %}
37
+ {{- raise_exception('Unexpected item type in content.') }}
38
+ {%- endif %}
39
+ {%- endfor %}
40
+ {%- elif content is none or content is undefined %}
41
+ {{- '' }}
42
+ {%- else %}
43
+ {{- raise_exception('Unexpected content type.') }}
44
+ {%- endif %}
45
+ {%- endmacro %}
46
+ {%- if not messages %}
47
+ {{- raise_exception('No messages provided.') }}
48
+ {%- endif %}
49
+ {%- set reasoning_instructions = '' %}
50
+ {%- if enable_thinking is undefined or enable_thinking is true %}
51
+ {%- set resolved_reasoning_effort = reasoning_effort|default('medium') %}
52
+ {%- if resolved_reasoning_effort not in ('xhigh', 'medium', 'low') %}
53
+ {{- raise_exception('Unexpected reasoning effort ' ~ reasoning_effort ~ '. Supported types are xhigh, medium, and low (default: medium).') }}
54
+ {%- endif %}
55
+ {%- if resolved_reasoning_effort == 'xhigh' %}
56
+ {%- set reasoning_instructions = 'Reasoning effort is set to xhigh. Please think carefully through the task, validate key assumptions, consider plausible alternatives, and prioritize correctness, consistency, and clarity in the final answer.' %}
57
+ {%- elif resolved_reasoning_effort == 'low' %}
58
+ {%- set reasoning_instructions = 'Reasoning effort is set to low. Keep your thinking brief and focused, moving directly to the conclusion without unnecessary elaboration.' %}
59
+ {%- endif %}
60
+ {%- endif %}
61
+ {%- if tools and tools is iterable and tools is not mapping %}
62
+ {{- '<|im_start|>system\n' }}
63
+ {%- if reasoning_instructions %}
64
+ {{- reasoning_instructions + '\n\n' }}
65
+ {%- endif %}
66
+ {{- "# Tools\n\nYou have access to the following functions:\n\n<tools>" }}
67
+ {%- for tool in tools %}
68
+ {{- "\n" }}
69
+ {{- tool | tojson }}
70
+ {%- endfor %}
71
+ {{- "\n</tools>" }}
72
+ {{- '\n\nIf you choose to call a function ONLY reply in the following format with NO suffix:\n\n<tool_call>\n<function=example_function_name>\n<parameter=example_parameter_1>\nvalue_1\n</parameter>\n<parameter=example_parameter_2>\nThis is the value for the second parameter\nthat can span\nmultiple lines\n</parameter>\n</function>\n</tool_call>\n\n<IMPORTANT>\nReminder:\n- Function calls MUST follow the specified format: an inner <function=...></function> block must be nested within <tool_call></tool_call> XML tags\n- Required parameters MUST be specified\n- You may provide optional reasoning for your function call in natural language BEFORE the function call, but NOT after\n- If there is no function call available, answer the question like normal with your current knowledge and do not tell the user about function calls\n</IMPORTANT>' }}
73
+ {%- if messages[0].role == 'system' %}
74
+ {%- set content = render_content(messages[0].content, false, true)|trim %}
75
+ {%- if content %}
76
+ {{- '\n\n' + content }}
77
+ {%- endif %}
78
+ {%- endif %}
79
+ {{- '<|im_end|>\n' }}
80
+ {%- else %}
81
+ {%- if messages[0].role == 'system' %}
82
+ {%- set content = render_content(messages[0].content, false, true)|trim %}
83
+ {%- if content %}
84
+ {{- '<|im_start|>system\n' + (reasoning_instructions + '\n\n' if reasoning_instructions else '') + content + '<|im_end|>\n' }}
85
+ {%- elif reasoning_instructions %}
86
+ {{- '<|im_start|>system\n' + reasoning_instructions + '<|im_end|>\n' }}
87
+ {%- endif %}
88
+ {%- elif reasoning_instructions %}
89
+ {{- '<|im_start|>system\n' + reasoning_instructions + '<|im_end|>\n' }}
90
+ {%- endif %}
91
+ {%- endif %}
92
+ {%- set ns = namespace(multi_step_tool=true, last_query_index=messages|length - 1) %}
93
+ {%- for message in messages[::-1] %}
94
+ {%- set index = (messages|length - 1) - loop.index0 %}
95
+ {%- if ns.multi_step_tool and message.role == "user" %}
96
+ {%- set content = render_content(message.content, false)|trim %}
97
+ {%- if not(content.startswith('<tool_response>') and content.endswith('</tool_response>')) %}
98
+ {%- set ns.multi_step_tool = false %}
99
+ {%- set ns.last_query_index = index %}
100
+ {%- endif %}
101
+ {%- endif %}
102
+ {%- endfor %}
103
+ {%- if ns.multi_step_tool %}
104
+ {{- raise_exception('No user query found in messages.') }}
105
+ {%- endif %}
106
+ {%- for message in messages %}
107
+ {%- set content = render_content(message.content, true)|trim %}
108
+ {%- if message.role == "system" %}
109
+ {%- if not loop.first %}
110
+ {{- raise_exception('System message must be at the beginning.') }}
111
+ {%- endif %}
112
+ {%- elif message.role == "user" %}
113
+ {{- '<|im_start|>' + message.role + '\n' + content + '<|im_end|>' + '\n' }}
114
+ {%- elif message.role == "assistant" %}
115
+ {%- set reasoning_content = '' %}
116
+ {%- if message.reasoning_content is string %}
117
+ {%- set reasoning_content = message.reasoning_content %}
118
+ {%- endif %}
119
+ {%- set reasoning_content = reasoning_content|trim %}
120
+ {%- if preserve_thinking is undefined or preserve_thinking is true or loop.index0 > ns.last_query_index %}
121
+ {{- '<|im_start|>' + message.role + '\n<think>\n' + reasoning_content + '\n</think>\n\n' + content }}
122
+ {%- else %}
123
+ {{- '<|im_start|>' + message.role + '\n' + content }}
124
+ {%- endif %}
125
+ {%- if message.tool_calls and message.tool_calls is iterable and message.tool_calls is not mapping %}
126
+ {%- for tool_call in message.tool_calls %}
127
+ {%- if tool_call.function is defined %}
128
+ {%- set tool_call = tool_call.function %}
129
+ {%- endif %}
130
+ {%- if loop.first %}
131
+ {%- if content|trim %}
132
+ {{- '\n\n<tool_call>\n<function=' + tool_call.name + '>\n' }}
133
+ {%- else %}
134
+ {{- '<tool_call>\n<function=' + tool_call.name + '>\n' }}
135
+ {%- endif %}
136
+ {%- else %}
137
+ {{- '\n<tool_call>\n<function=' + tool_call.name + '>\n' }}
138
+ {%- endif %}
139
+ {%- if tool_call.arguments is defined and tool_call.arguments != '' %}
140
+ {%- for args_name, args_value in tool_call.arguments|items %}
141
+ {{- '<parameter=' + args_name + '>\n' }}
142
+ {%- set args_value = args_value | string if args_value is string else args_value | tojson | safe %}
143
+ {{- args_value }}
144
+ {{- '\n</parameter>\n' }}
145
+ {%- endfor %}
146
+ {%- endif %}
147
+ {{- '</function>\n</tool_call>' }}
148
+ {%- endfor %}
149
+ {%- endif %}
150
+ {{- '<|im_end|>\n' }}
151
+ {%- elif message.role == "tool" %}
152
+ {%- if loop.previtem and loop.previtem.role != "tool" %}
153
+ {{- '<|im_start|>user' }}
154
+ {%- endif %}
155
+ {{- '\n<tool_response>\n' }}
156
+ {{- content }}
157
+ {{- '\n</tool_response>' }}
158
+ {%- if not loop.last and loop.nextitem.role != "tool" %}
159
+ {{- '<|im_end|>\n' }}
160
+ {%- elif loop.last %}
161
+ {{- '<|im_end|>\n' }}
162
+ {%- endif %}
163
+ {%- else %}
164
+ {{- raise_exception('Unexpected message role.') }}
165
+ {%- endif %}
166
+ {%- endfor %}
167
+ {%- if add_generation_prompt %}
168
+ {{- '<|im_start|>assistant\n' }}
169
+ {%- if enable_thinking is defined and enable_thinking is false %}
170
+ {{- '<think>\n\n</think>\n\n' }}
171
+ {%- else %}
172
+ {{- '<think>\n' }}
173
+ {%- endif %}
174
+ {%- endif %}
config.json ADDED
@@ -0,0 +1,145 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architectures": [
3
+ "Qwen3_5ForConditionalGeneration"
4
+ ],
5
+ "eos_token_id": [
6
+ 248046,
7
+ 248044
8
+ ],
9
+ "image_token_id": 248056,
10
+ "language_model_only": false,
11
+ "model_type": "qwen3_5",
12
+ "quantization": {
13
+ "group_size": 64,
14
+ "bits": 8,
15
+ "mode": "affine"
16
+ },
17
+ "quantization_config": {
18
+ "group_size": 64,
19
+ "bits": 8,
20
+ "mode": "affine"
21
+ },
22
+ "text_config": {
23
+ "attention_bias": false,
24
+ "attention_dropout": 0.0,
25
+ "attn_output_gate": true,
26
+ "bos_token_id": 248044,
27
+ "dtype": "bfloat16",
28
+ "eos_token_id": 248044,
29
+ "full_attention_interval": 4,
30
+ "head_dim": 256,
31
+ "hidden_act": "silu",
32
+ "hidden_size": 5120,
33
+ "initializer_range": 0.02,
34
+ "intermediate_size": 17408,
35
+ "layer_types": [
36
+ "linear_attention",
37
+ "linear_attention",
38
+ "linear_attention",
39
+ "full_attention",
40
+ "linear_attention",
41
+ "linear_attention",
42
+ "linear_attention",
43
+ "full_attention",
44
+ "linear_attention",
45
+ "linear_attention",
46
+ "linear_attention",
47
+ "full_attention",
48
+ "linear_attention",
49
+ "linear_attention",
50
+ "linear_attention",
51
+ "full_attention",
52
+ "linear_attention",
53
+ "linear_attention",
54
+ "linear_attention",
55
+ "full_attention",
56
+ "linear_attention",
57
+ "linear_attention",
58
+ "linear_attention",
59
+ "full_attention",
60
+ "linear_attention",
61
+ "linear_attention",
62
+ "linear_attention",
63
+ "full_attention",
64
+ "linear_attention",
65
+ "linear_attention",
66
+ "linear_attention",
67
+ "full_attention",
68
+ "linear_attention",
69
+ "linear_attention",
70
+ "linear_attention",
71
+ "full_attention",
72
+ "linear_attention",
73
+ "linear_attention",
74
+ "linear_attention",
75
+ "full_attention",
76
+ "linear_attention",
77
+ "linear_attention",
78
+ "linear_attention",
79
+ "full_attention",
80
+ "linear_attention",
81
+ "linear_attention",
82
+ "linear_attention",
83
+ "full_attention",
84
+ "linear_attention",
85
+ "linear_attention",
86
+ "linear_attention",
87
+ "full_attention",
88
+ "linear_attention",
89
+ "linear_attention",
90
+ "linear_attention",
91
+ "full_attention",
92
+ "linear_attention",
93
+ "linear_attention",
94
+ "linear_attention",
95
+ "full_attention",
96
+ "linear_attention",
97
+ "linear_attention",
98
+ "linear_attention",
99
+ "full_attention"
100
+ ],
101
+ "linear_conv_kernel_dim": 4,
102
+ "linear_key_head_dim": 128,
103
+ "linear_num_key_heads": 16,
104
+ "linear_num_value_heads": 48,
105
+ "linear_value_head_dim": 128,
106
+ "mamba_ssm_dtype": "float32",
107
+ "max_position_embeddings": 1048576,
108
+ "model_type": "qwen3_5_text",
109
+ "mtp_num_hidden_layers": 1,
110
+ "mtp_use_dedicated_embeddings": false,
111
+ "num_attention_heads": 24,
112
+ "num_hidden_layers": 64,
113
+ "num_key_value_heads": 4,
114
+ "output_gate_type": "swish",
115
+ "pad_token_id": null,
116
+ "partial_rotary_factor": 0.25,
117
+ "rms_norm_eps": 1e-06,
118
+ "rope_parameters": {
119
+ "mrope_interleaved": true,
120
+ "mrope_section": [
121
+ 11,
122
+ 11,
123
+ 10
124
+ ],
125
+ "partial_rotary_factor": 0.25,
126
+ "rope_theta": 10000000,
127
+ "factor": 4.0,
128
+ "original_max_position_embeddings": 262144,
129
+ "type": "yarn"
130
+ },
131
+ "tie_word_embeddings": false,
132
+ "use_cache": true,
133
+ "vocab_size": 248320,
134
+ "dual_chunk_attention_config": {
135
+ "chunk_size": 262144,
136
+ "local_size": 8192,
137
+ "original_max_position_embeddings": 262144
138
+ }
139
+ },
140
+ "tie_word_embeddings": false,
141
+ "transformers_version": "5.8.0.dev0",
142
+ "video_token_id": 248057,
143
+ "vision_end_token_id": 248054,
144
+ "vision_start_token_id": 248053
145
+ }
generation_config.json ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "bos_token_id": 248044,
3
+ "do_sample": true,
4
+ "eos_token_id": [
5
+ 248046,
6
+ 248044
7
+ ],
8
+ "pad_token_id": 248044,
9
+ "temperature": 1.0,
10
+ "top_k": 20,
11
+ "top_p": 0.95
12
+ }
model-00001-of-00006.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:e1b14c4ad77530ac8cfd16c3e8602d1c12156a73de1848cfdc0056e1397675b8
3
+ size 5305469335
model-00002-of-00006.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:65c92a9a7ad8088181264d217ccba3fc063957774254976e92f00222c72585c8
3
+ size 5354102610
model-00003-of-00006.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c15c417e7b7546e9b391e2283298e6c40c4b14bf9ea2ab98190b0019e2b3affb
3
+ size 5337392976
model-00004-of-00006.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:e0d7de2debc428066e107fa966de50dfd27f712960a09383f982e786afa7cd35
3
+ size 5292847182
model-00005-of-00006.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:7d4d8e17c43e93b17dbbc74f0eadd6dbd4e85463df12f0f6156278daabdadb28
3
+ size 5354102641
model-00006-of-00006.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:50db34a7fca63938e450cce903c09751a0ded3553532b7edb12f3ee3e8631999
3
+ size 1935805821
model.safetensors.index.json ADDED
The diff for this file is too large to render. See raw diff
 
tokenizer.json ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:87a7830d63fcf43bf241c3c5242e96e62dd3fdc29224ca26fed8ea333db72de4
3
+ size 19989343
tokenizer_config.json ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "add_prefix_space": false,
3
+ "audio_bos_token": "<|audio_start|>",
4
+ "audio_eos_token": "<|audio_end|>",
5
+ "audio_token": "<|audio_pad|>",
6
+ "backend": "tokenizers",
7
+ "bos_token": null,
8
+ "clean_up_tokenization_spaces": false,
9
+ "eos_token": "<|im_end|>",
10
+ "errors": "replace",
11
+ "image_token": "<|image_pad|>",
12
+ "is_local": true,
13
+ "model_max_length": 262144,
14
+ "model_specific_special_tokens": {
15
+ "audio_bos_token": "<|audio_start|>",
16
+ "audio_eos_token": "<|audio_end|>",
17
+ "audio_token": "<|audio_pad|>",
18
+ "image_token": "<|image_pad|>",
19
+ "video_token": "<|video_pad|>",
20
+ "vision_bos_token": "<|vision_start|>",
21
+ "vision_eos_token": "<|vision_end|>"
22
+ },
23
+ "pad_token": "<|endoftext|>",
24
+ "pretokenize_regex": "(?i:'s|'t|'re|'ve|'m|'ll|'d)|[^\\r\\n\\p{L}\\p{N}]?[\\p{L}\\p{M}]+|\\p{N}| ?[^\\s\\p{L}\\p{M}\\p{N}]+[\\r\\n]*|\\s*[\\r\\n]+|\\s+(?!\\S)|\\s+",
25
+ "split_special_tokens": false,
26
+ "tokenizer_class": "TokenizersBackend",
27
+ "tool_parser_type": "qwen3_coder",
28
+ "unk_token": null,
29
+ "video_token": "<|video_pad|>",
30
+ "vision_bos_token": "<|vision_start|>",
31
+ "vision_eos_token": "<|vision_end|>"
32
+ }