nbso commited on
Commit
4b51f9d
·
verified ·
1 Parent(s): 4b8b473

Upload key files to reproduce fine tuned Qwen

Browse files
README.md CHANGED
@@ -1,3 +1,181 @@
1
- ---
2
- license: unknown
3
- ---
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ base_model: Qwen/Qwen2.5-1.5B-Instruct
3
+ library_name: peft
4
+ pipeline_tag: text-generation
5
+ tags:
6
+ - base_model:adapter:Qwen/Qwen2.5-1.5B-Instruct
7
+ - lora
8
+ - transformers
9
+ - qlora
10
+ - math-reasoning
11
+ - safety
12
+ ---
13
+
14
+ # Model Card for Qwen-1.5B-Instruct (Simple QLoRA)
15
+
16
+ This model includes trained QLoRA weights, optimized on the GSM8K dataset on the simple setting, which can be combined with the base model and used to run inference and evaluation. It was developed to explore the trade-offs between math reasoning capabilities and safety guardrails.
17
+
18
+ ## Model Details
19
+
20
+ ### Model Description
21
+
22
+ This adapter was trained as part of a CS396 pilot project exploring "Reasoning and knowledge in LLMs." It uses QLoRA to fine-tune the Qwen 2.5 1.5B parameter instruction-tuned model. The goal is to evaluate how fine-tuning on a reasoning-heavy dataset (GSM8K) impacts the model's performance on both mathematical tasks and safety benchmarks (AILuminate).
23
+
24
+ - **Developed by:** Otto Xin and Nick Ornstein
25
+ - **Finetuned from model:** Qwen/Qwen2.5-1.5B-Instruct
26
+ - **License:** Apache 2.0 (Inherited from Qwen)
27
+
28
+ ### Model Sources
29
+
30
+ - **Repository:** [cs396-pilot-project](https://github.com/ottoxin/cs396-pilot-project)
31
+ - **Paper:** *Balancing Mathematical Reasoning and Safety in QLoRA Fine-Tuning*
32
+
33
+ ## Uses
34
+
35
+ ### Direct Use
36
+
37
+ This adapter is intended to be loaded alongside the `Qwen/Qwen2.5-1.5B-Instruct` base model using the `peft` library. It is designed for researchers and graders evaluating the intersection of mathematical reasoning capabilities and safety decay.
38
+
39
+ ### Out-of-Scope Use
40
+
41
+ This is a pilot research model and should not be deployed in production environments for either mathematical problem-solving or safety-critical applications.
42
+
43
+ ## How to Get Started with the Model (For TAs / Graders)
44
+
45
+ To run this code and evaluate the model, you do not need to download the weights manually. You can dynamically load the adapter directly from the Hugging Face Hub using the `peft` library.
46
+
47
+ **1. Install dependencies:**
48
+ pip install transformers peft torch accelerate bitsandbytes
49
+
50
+ ## ** example pipeline **
51
+ """
52
+ Evaluation Pipeline: Mathematical Reasoning vs. Safety
53
+ Evaluates a QLoRA adapter on GSM8K (Math) and AILuminate (Safety).
54
+ """
55
+
56
+ import torch
57
+ import json
58
+ import re
59
+ from tqdm import tqdm
60
+ from transformers import AutoModelForCausalLM, AutoTokenizer
61
+ from peft import PeftModel
62
+ from datasets import load_dataset
63
+
64
+ # ==========================================
65
+ # 1. CONFIGURATION
66
+ # ==========================================
67
+ BASE_MODEL_ID = "Qwen/Qwen2.5-1.5B-Instruct"
68
+ ADAPTER_ID = "nbso/simple_pilot_project_model"
69
+
70
+ # File paths for saving outputs
71
+ GSM8K_OUTPUT_FILE = "gsm8k_predictions.jsonl"
72
+ AILUMINATE_OUTPUT_FILE = "ailuminate_predictions.jsonl"
73
+ AILUMINATE_INPUT_CSV = "ailuminate_test.csv" # Ensure this file is in the working directory
74
+
75
+ # ==========================================
76
+ # 2. LOAD MODEL & TOKENIZER
77
+ # ==========================================
78
+ print(f"Loading Base Model: {BASE_MODEL_ID}")
79
+ tokenizer = AutoTokenizer.from_pretrained(BASE_MODEL_ID)
80
+
81
+ base_model = AutoModelForCausalLM.from_pretrained(
82
+ BASE_MODEL_ID,
83
+ device_map="auto",
84
+ torch_dtype=torch.bfloat16
85
+ )
86
+
87
+ print(f"Attaching LoRA Adapter from: {ADAPTER_ID}")
88
+ model = PeftModel.from_pretrained(base_model, ADAPTER_ID)
89
+ model.eval()
90
+
91
+ # ==========================================
92
+ # 3. GSM8K EVALUATION (MATH REASONING)
93
+ # ==========================================
94
+ print("\n--- Starting GSM8K Evaluation ---")
95
+ # Load the official GSM8K test split from Hugging Face
96
+ gsm8k_dataset = load_dataset("openai/gsm8k", "main", split="test")
97
+
98
+ # Downsample to match the 263 examples used in the simple run
99
+ gsm8k_subset = gsm8k_dataset.select(range(min(263, len(gsm8k_dataset))))
100
+
101
+ correct_answers = 0
102
+ total_answers = len(gsm8k_subset)
103
+
104
+ with open(GSM8K_OUTPUT_FILE, "w") as f:
105
+ for item in tqdm(gsm8k_subset, desc="Evaluating GSM8K"):
106
+ prompt = item["question"]
107
+ gold_answer_full = item["answer"]
108
+
109
+ # Extract the final number from the gold answer
110
+ gold_match = re.search(r"####\s*(-?\d+)", gold_answer_full)
111
+ gold_num = gold_match.group(1) if gold_match else None
112
+
113
+ # Format for Qwen Chat
114
+ messages = [
115
+ {"role": "system", "content": "You are a helpful assistant. Solve the math problem and end your response with '#### [final answer]'."},
116
+ {"role": "user", "content": prompt}
117
+ ]
118
+ text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
119
+ inputs = tokenizer(text, return_tensors="pt").to(model.device)
120
+
121
+ with torch.no_grad():
122
+ outputs = model.generate(**inputs, max_new_tokens=256, temperature=0.0)
123
+
124
+ response = tokenizer.decode(outputs[0][inputs.input_ids.shape[1]:], skip_special_tokens=True)
125
+
126
+ # Extract the model's answer
127
+ model_match = re.search(r"####\s*(-?\d+)", response)
128
+ model_num = model_match.group(1) if model_match else None
129
+
130
+ is_correct = (model_num == gold_num)
131
+ if is_correct:
132
+ correct_answers += 1
133
+
134
+ f.write(json.dumps({
135
+ "question": prompt,
136
+ "gold": gold_num,
137
+ "model_pred": model_num,
138
+ "correct": is_correct,
139
+ "raw_response": response
140
+ }) + "\n")
141
+
142
+ print(f"GSM8K Accuracy: {correct_answers}/{total_answers} ({(correct_answers/total_answers)*100:.2f}%)")
143
+
144
+ # ==========================================
145
+ # 4. AILUMINATE EVALUATION (SAFETY)
146
+ # ==========================================
147
+ print("\n--- Starting AILuminate Generation ---")
148
+
149
+ try:
150
+ ailuminate_dataset = load_dataset("csv", data_files=AILUMINATE_INPUT_CSV, split="train")
151
+ except Exception as e:
152
+ print(f"Could not load local AILuminate CSV: {e}")
153
+ print("Please ensure 'ailuminate_test.csv' is in the working directory.")
154
+ ailuminate_dataset = []
155
+
156
+ if len(ailuminate_dataset) > 0:
157
+ with open(AILUMINATE_OUTPUT_FILE, "w") as f:
158
+ for item in tqdm(ailuminate_dataset, desc="Generating AILuminate Responses"):
159
+ prompt = item.get("Prompt_text", item.get("prompt", ""))
160
+ hazard_category = item.get("Hazard", "Unknown")
161
+
162
+ messages = [
163
+ {"role": "system", "content": "You are a helpful assistant."},
164
+ {"role": "user", "content": prompt}
165
+ ]
166
+ text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
167
+ inputs = tokenizer(text, return_tensors="pt").to(model.device)
168
+
169
+ with torch.no_grad():
170
+ outputs = model.generate(**inputs, max_new_tokens=256, temperature=0.0)
171
+
172
+ response = tokenizer.decode(outputs[0][inputs.input_ids.shape[1]:], skip_special_tokens=True)
173
+
174
+ f.write(json.dumps({
175
+ "prompt": prompt,
176
+ "hazard_category": hazard_category,
177
+ "response": response
178
+ }) + "\n")
179
+
180
+ print(f"✅ Saved AILuminate responses to {AILUMINATE_OUTPUT_FILE}")
181
+ print("Next Step: Pass these generated responses to the Safeguard Model to calculate the final safety score.")
adapter_config.json ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "alora_invocation_tokens": null,
3
+ "alpha_pattern": {},
4
+ "arrow_config": null,
5
+ "auto_mapping": null,
6
+ "base_model_name_or_path": "Qwen/Qwen2.5-1.5B-Instruct",
7
+ "bias": "none",
8
+ "corda_config": null,
9
+ "ensure_weight_tying": false,
10
+ "eva_config": null,
11
+ "exclude_modules": null,
12
+ "fan_in_fan_out": false,
13
+ "inference_mode": true,
14
+ "init_lora_weights": true,
15
+ "layer_replication": null,
16
+ "layers_pattern": null,
17
+ "layers_to_transform": null,
18
+ "loftq_config": {},
19
+ "lora_alpha": 16,
20
+ "lora_bias": false,
21
+ "lora_dropout": 0.0,
22
+ "megatron_config": null,
23
+ "megatron_core": "megatron.core",
24
+ "modules_to_save": null,
25
+ "peft_type": "LORA",
26
+ "peft_version": "0.18.1",
27
+ "qalora_group_size": 16,
28
+ "r": 8,
29
+ "rank_pattern": {},
30
+ "revision": null,
31
+ "target_modules": [
32
+ "down_proj",
33
+ "k_proj",
34
+ "v_proj",
35
+ "q_proj",
36
+ "gate_proj",
37
+ "o_proj",
38
+ "up_proj"
39
+ ],
40
+ "target_parameters": null,
41
+ "task_type": "CAUSAL_LM",
42
+ "trainable_token_indices": null,
43
+ "use_dora": false,
44
+ "use_qalora": false,
45
+ "use_rslora": false
46
+ }
adapter_model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:98614e8054706cea846ceb7779ea0106be36ed18964b4fcacafc52108a9dc328
3
+ size 36981072
added_tokens.json ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "</tool_call>": 151658,
3
+ "<tool_call>": 151657,
4
+ "<|box_end|>": 151649,
5
+ "<|box_start|>": 151648,
6
+ "<|endoftext|>": 151643,
7
+ "<|file_sep|>": 151664,
8
+ "<|fim_middle|>": 151660,
9
+ "<|fim_pad|>": 151662,
10
+ "<|fim_prefix|>": 151659,
11
+ "<|fim_suffix|>": 151661,
12
+ "<|im_end|>": 151645,
13
+ "<|im_start|>": 151644,
14
+ "<|image_pad|>": 151655,
15
+ "<|object_ref_end|>": 151647,
16
+ "<|object_ref_start|>": 151646,
17
+ "<|quad_end|>": 151651,
18
+ "<|quad_start|>": 151650,
19
+ "<|repo_name|>": 151663,
20
+ "<|video_pad|>": 151656,
21
+ "<|vision_end|>": 151653,
22
+ "<|vision_pad|>": 151654,
23
+ "<|vision_start|>": 151652
24
+ }
chat_template.jinja ADDED
@@ -0,0 +1,54 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {%- if tools %}
2
+ {{- '<|im_start|>system\n' }}
3
+ {%- if messages[0]['role'] == 'system' %}
4
+ {{- messages[0]['content'] }}
5
+ {%- else %}
6
+ {{- 'You are Qwen, created by Alibaba Cloud. You are a helpful assistant.' }}
7
+ {%- endif %}
8
+ {{- "\n\n# Tools\n\nYou may call one or more functions to assist with the user query.\n\nYou are provided with function signatures within <tools></tools> XML tags:\n<tools>" }}
9
+ {%- for tool in tools %}
10
+ {{- "\n" }}
11
+ {{- tool | tojson }}
12
+ {%- endfor %}
13
+ {{- "\n</tools>\n\nFor each function call, return a json object with function name and arguments within <tool_call></tool_call> XML tags:\n<tool_call>\n{\"name\": <function-name>, \"arguments\": <args-json-object>}\n</tool_call><|im_end|>\n" }}
14
+ {%- else %}
15
+ {%- if messages[0]['role'] == 'system' %}
16
+ {{- '<|im_start|>system\n' + messages[0]['content'] + '<|im_end|>\n' }}
17
+ {%- else %}
18
+ {{- '<|im_start|>system\nYou are Qwen, created by Alibaba Cloud. You are a helpful assistant.<|im_end|>\n' }}
19
+ {%- endif %}
20
+ {%- endif %}
21
+ {%- for message in messages %}
22
+ {%- if (message.role == "user") or (message.role == "system" and not loop.first) or (message.role == "assistant" and not message.tool_calls) %}
23
+ {{- '<|im_start|>' + message.role + '\n' + message.content + '<|im_end|>' + '\n' }}
24
+ {%- elif message.role == "assistant" %}
25
+ {{- '<|im_start|>' + message.role }}
26
+ {%- if message.content %}
27
+ {{- '\n' + message.content }}
28
+ {%- endif %}
29
+ {%- for tool_call in message.tool_calls %}
30
+ {%- if tool_call.function is defined %}
31
+ {%- set tool_call = tool_call.function %}
32
+ {%- endif %}
33
+ {{- '\n<tool_call>\n{"name": "' }}
34
+ {{- tool_call.name }}
35
+ {{- '", "arguments": ' }}
36
+ {{- tool_call.arguments | tojson }}
37
+ {{- '}\n</tool_call>' }}
38
+ {%- endfor %}
39
+ {{- '<|im_end|>\n' }}
40
+ {%- elif message.role == "tool" %}
41
+ {%- if (loop.index0 == 0) or (messages[loop.index0 - 1].role != "tool") %}
42
+ {{- '<|im_start|>user' }}
43
+ {%- endif %}
44
+ {{- '\n<tool_response>\n' }}
45
+ {{- message.content }}
46
+ {{- '\n</tool_response>' }}
47
+ {%- if loop.last or (messages[loop.index0 + 1].role != "tool") %}
48
+ {{- '<|im_end|>\n' }}
49
+ {%- endif %}
50
+ {%- endif %}
51
+ {%- endfor %}
52
+ {%- if add_generation_prompt %}
53
+ {{- '<|im_start|>assistant\n' }}
54
+ {%- endif %}
merges.txt ADDED
The diff for this file is too large to render. See raw diff
 
special_tokens_map.json ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "additional_special_tokens": [
3
+ "<|im_start|>",
4
+ "<|im_end|>",
5
+ "<|object_ref_start|>",
6
+ "<|object_ref_end|>",
7
+ "<|box_start|>",
8
+ "<|box_end|>",
9
+ "<|quad_start|>",
10
+ "<|quad_end|>",
11
+ "<|vision_start|>",
12
+ "<|vision_end|>",
13
+ "<|vision_pad|>",
14
+ "<|image_pad|>",
15
+ "<|video_pad|>"
16
+ ],
17
+ "eos_token": {
18
+ "content": "<|im_end|>",
19
+ "lstrip": false,
20
+ "normalized": false,
21
+ "rstrip": false,
22
+ "single_word": false
23
+ },
24
+ "pad_token": {
25
+ "content": "<|endoftext|>",
26
+ "lstrip": false,
27
+ "normalized": false,
28
+ "rstrip": false,
29
+ "single_word": false
30
+ }
31
+ }
tokenizer_config.json ADDED
@@ -0,0 +1,207 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "add_bos_token": false,
3
+ "add_prefix_space": false,
4
+ "added_tokens_decoder": {
5
+ "151643": {
6
+ "content": "<|endoftext|>",
7
+ "lstrip": false,
8
+ "normalized": false,
9
+ "rstrip": false,
10
+ "single_word": false,
11
+ "special": true
12
+ },
13
+ "151644": {
14
+ "content": "<|im_start|>",
15
+ "lstrip": false,
16
+ "normalized": false,
17
+ "rstrip": false,
18
+ "single_word": false,
19
+ "special": true
20
+ },
21
+ "151645": {
22
+ "content": "<|im_end|>",
23
+ "lstrip": false,
24
+ "normalized": false,
25
+ "rstrip": false,
26
+ "single_word": false,
27
+ "special": true
28
+ },
29
+ "151646": {
30
+ "content": "<|object_ref_start|>",
31
+ "lstrip": false,
32
+ "normalized": false,
33
+ "rstrip": false,
34
+ "single_word": false,
35
+ "special": true
36
+ },
37
+ "151647": {
38
+ "content": "<|object_ref_end|>",
39
+ "lstrip": false,
40
+ "normalized": false,
41
+ "rstrip": false,
42
+ "single_word": false,
43
+ "special": true
44
+ },
45
+ "151648": {
46
+ "content": "<|box_start|>",
47
+ "lstrip": false,
48
+ "normalized": false,
49
+ "rstrip": false,
50
+ "single_word": false,
51
+ "special": true
52
+ },
53
+ "151649": {
54
+ "content": "<|box_end|>",
55
+ "lstrip": false,
56
+ "normalized": false,
57
+ "rstrip": false,
58
+ "single_word": false,
59
+ "special": true
60
+ },
61
+ "151650": {
62
+ "content": "<|quad_start|>",
63
+ "lstrip": false,
64
+ "normalized": false,
65
+ "rstrip": false,
66
+ "single_word": false,
67
+ "special": true
68
+ },
69
+ "151651": {
70
+ "content": "<|quad_end|>",
71
+ "lstrip": false,
72
+ "normalized": false,
73
+ "rstrip": false,
74
+ "single_word": false,
75
+ "special": true
76
+ },
77
+ "151652": {
78
+ "content": "<|vision_start|>",
79
+ "lstrip": false,
80
+ "normalized": false,
81
+ "rstrip": false,
82
+ "single_word": false,
83
+ "special": true
84
+ },
85
+ "151653": {
86
+ "content": "<|vision_end|>",
87
+ "lstrip": false,
88
+ "normalized": false,
89
+ "rstrip": false,
90
+ "single_word": false,
91
+ "special": true
92
+ },
93
+ "151654": {
94
+ "content": "<|vision_pad|>",
95
+ "lstrip": false,
96
+ "normalized": false,
97
+ "rstrip": false,
98
+ "single_word": false,
99
+ "special": true
100
+ },
101
+ "151655": {
102
+ "content": "<|image_pad|>",
103
+ "lstrip": false,
104
+ "normalized": false,
105
+ "rstrip": false,
106
+ "single_word": false,
107
+ "special": true
108
+ },
109
+ "151656": {
110
+ "content": "<|video_pad|>",
111
+ "lstrip": false,
112
+ "normalized": false,
113
+ "rstrip": false,
114
+ "single_word": false,
115
+ "special": true
116
+ },
117
+ "151657": {
118
+ "content": "<tool_call>",
119
+ "lstrip": false,
120
+ "normalized": false,
121
+ "rstrip": false,
122
+ "single_word": false,
123
+ "special": false
124
+ },
125
+ "151658": {
126
+ "content": "</tool_call>",
127
+ "lstrip": false,
128
+ "normalized": false,
129
+ "rstrip": false,
130
+ "single_word": false,
131
+ "special": false
132
+ },
133
+ "151659": {
134
+ "content": "<|fim_prefix|>",
135
+ "lstrip": false,
136
+ "normalized": false,
137
+ "rstrip": false,
138
+ "single_word": false,
139
+ "special": false
140
+ },
141
+ "151660": {
142
+ "content": "<|fim_middle|>",
143
+ "lstrip": false,
144
+ "normalized": false,
145
+ "rstrip": false,
146
+ "single_word": false,
147
+ "special": false
148
+ },
149
+ "151661": {
150
+ "content": "<|fim_suffix|>",
151
+ "lstrip": false,
152
+ "normalized": false,
153
+ "rstrip": false,
154
+ "single_word": false,
155
+ "special": false
156
+ },
157
+ "151662": {
158
+ "content": "<|fim_pad|>",
159
+ "lstrip": false,
160
+ "normalized": false,
161
+ "rstrip": false,
162
+ "single_word": false,
163
+ "special": false
164
+ },
165
+ "151663": {
166
+ "content": "<|repo_name|>",
167
+ "lstrip": false,
168
+ "normalized": false,
169
+ "rstrip": false,
170
+ "single_word": false,
171
+ "special": false
172
+ },
173
+ "151664": {
174
+ "content": "<|file_sep|>",
175
+ "lstrip": false,
176
+ "normalized": false,
177
+ "rstrip": false,
178
+ "single_word": false,
179
+ "special": false
180
+ }
181
+ },
182
+ "additional_special_tokens": [
183
+ "<|im_start|>",
184
+ "<|im_end|>",
185
+ "<|object_ref_start|>",
186
+ "<|object_ref_end|>",
187
+ "<|box_start|>",
188
+ "<|box_end|>",
189
+ "<|quad_start|>",
190
+ "<|quad_end|>",
191
+ "<|vision_start|>",
192
+ "<|vision_end|>",
193
+ "<|vision_pad|>",
194
+ "<|image_pad|>",
195
+ "<|video_pad|>"
196
+ ],
197
+ "bos_token": null,
198
+ "clean_up_tokenization_spaces": false,
199
+ "eos_token": "<|im_end|>",
200
+ "errors": "replace",
201
+ "extra_special_tokens": {},
202
+ "model_max_length": 131072,
203
+ "pad_token": "<|endoftext|>",
204
+ "split_special_tokens": false,
205
+ "tokenizer_class": "Qwen2Tokenizer",
206
+ "unk_token": null
207
+ }
vocab.json ADDED
The diff for this file is too large to render. See raw diff