vaghawan commited on
Commit
ae45c12
·
verified ·
1 Parent(s): a805759

Upload full trainer checkpoint (last@step100)

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,210 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ base_model: unsloth/gemma-4-31B-it
3
+ library_name: peft
4
+ pipeline_tag: text-generation
5
+ tags:
6
+ - base_model:adapter:unsloth/gemma-4-31B-it
7
+ - lora
8
+ - sft
9
+ - transformers
10
+ - trl
11
+ - unsloth
12
+ ---
13
+
14
+ # Model Card for Model ID
15
+
16
+ <!-- Provide a quick summary of what the model is/does. -->
17
+
18
+
19
+
20
+ ## Model Details
21
+
22
+ ### Model Description
23
+
24
+ <!-- Provide a longer summary of what this model is. -->
25
+
26
+
27
+
28
+ - **Developed by:** [More Information Needed]
29
+ - **Funded by [optional]:** [More Information Needed]
30
+ - **Shared by [optional]:** [More Information Needed]
31
+ - **Model type:** [More Information Needed]
32
+ - **Language(s) (NLP):** [More Information Needed]
33
+ - **License:** [More Information Needed]
34
+ - **Finetuned from model [optional]:** [More Information Needed]
35
+
36
+ ### Model Sources [optional]
37
+
38
+ <!-- Provide the basic links for the model. -->
39
+
40
+ - **Repository:** [More Information Needed]
41
+ - **Paper [optional]:** [More Information Needed]
42
+ - **Demo [optional]:** [More Information Needed]
43
+
44
+ ## Uses
45
+
46
+ <!-- Address questions around how the model is intended to be used, including the foreseeable users of the model and those affected by the model. -->
47
+
48
+ ### Direct Use
49
+
50
+ <!-- This section is for the model use without fine-tuning or plugging into a larger ecosystem/app. -->
51
+
52
+ [More Information Needed]
53
+
54
+ ### Downstream Use [optional]
55
+
56
+ <!-- This section is for the model use when fine-tuned for a task, or when plugged into a larger ecosystem/app -->
57
+
58
+ [More Information Needed]
59
+
60
+ ### Out-of-Scope Use
61
+
62
+ <!-- This section addresses misuse, malicious use, and uses that the model will not work well for. -->
63
+
64
+ [More Information Needed]
65
+
66
+ ## Bias, Risks, and Limitations
67
+
68
+ <!-- This section is meant to convey both technical and sociotechnical limitations. -->
69
+
70
+ [More Information Needed]
71
+
72
+ ### Recommendations
73
+
74
+ <!-- This section is meant to convey recommendations with respect to the bias, risk, and technical limitations. -->
75
+
76
+ Users (both direct and downstream) should be made aware of the risks, biases and limitations of the model. More information needed for further recommendations.
77
+
78
+ ## How to Get Started with the Model
79
+
80
+ Use the code below to get started with the model.
81
+
82
+ [More Information Needed]
83
+
84
+ ## Training Details
85
+
86
+ ### Training Data
87
+
88
+ <!-- This should link to a Dataset Card, perhaps with a short stub of information on what the training data is all about as well as documentation related to data pre-processing or additional filtering. -->
89
+
90
+ [More Information Needed]
91
+
92
+ ### Training Procedure
93
+
94
+ <!-- This relates heavily to the Technical Specifications. Content here should link to that section when it is relevant to the training procedure. -->
95
+
96
+ #### Preprocessing [optional]
97
+
98
+ [More Information Needed]
99
+
100
+
101
+ #### Training Hyperparameters
102
+
103
+ - **Training regime:** [More Information Needed] <!--fp32, fp16 mixed precision, bf16 mixed precision, bf16 non-mixed precision, fp16 non-mixed precision, fp8 mixed precision -->
104
+
105
+ #### Speeds, Sizes, Times [optional]
106
+
107
+ <!-- This section provides information about throughput, start/end time, checkpoint size if relevant, etc. -->
108
+
109
+ [More Information Needed]
110
+
111
+ ## Evaluation
112
+
113
+ <!-- This section describes the evaluation protocols and provides the results. -->
114
+
115
+ ### Testing Data, Factors & Metrics
116
+
117
+ #### Testing Data
118
+
119
+ <!-- This should link to a Dataset Card if possible. -->
120
+
121
+ [More Information Needed]
122
+
123
+ #### Factors
124
+
125
+ <!-- These are the things the evaluation is disaggregating by, e.g., subpopulations or domains. -->
126
+
127
+ [More Information Needed]
128
+
129
+ #### Metrics
130
+
131
+ <!-- These are the evaluation metrics being used, ideally with a description of why. -->
132
+
133
+ [More Information Needed]
134
+
135
+ ### Results
136
+
137
+ [More Information Needed]
138
+
139
+ #### Summary
140
+
141
+
142
+
143
+ ## Model Examination [optional]
144
+
145
+ <!-- Relevant interpretability work for the model goes here -->
146
+
147
+ [More Information Needed]
148
+
149
+ ## Environmental Impact
150
+
151
+ <!-- Total emissions (in grams of CO2eq) and additional considerations, such as electricity usage, go here. Edit the suggested text below accordingly -->
152
+
153
+ Carbon emissions can be estimated using the [Machine Learning Impact calculator](https://mlco2.github.io/impact#compute) presented in [Lacoste et al. (2019)](https://arxiv.org/abs/1910.09700).
154
+
155
+ - **Hardware Type:** [More Information Needed]
156
+ - **Hours used:** [More Information Needed]
157
+ - **Cloud Provider:** [More Information Needed]
158
+ - **Compute Region:** [More Information Needed]
159
+ - **Carbon Emitted:** [More Information Needed]
160
+
161
+ ## Technical Specifications [optional]
162
+
163
+ ### Model Architecture and Objective
164
+
165
+ [More Information Needed]
166
+
167
+ ### Compute Infrastructure
168
+
169
+ [More Information Needed]
170
+
171
+ #### Hardware
172
+
173
+ [More Information Needed]
174
+
175
+ #### Software
176
+
177
+ [More Information Needed]
178
+
179
+ ## Citation [optional]
180
+
181
+ <!-- If there is a paper or blog post introducing the model, the APA and Bibtex information for that should go in this section. -->
182
+
183
+ **BibTeX:**
184
+
185
+ [More Information Needed]
186
+
187
+ **APA:**
188
+
189
+ [More Information Needed]
190
+
191
+ ## Glossary [optional]
192
+
193
+ <!-- If relevant, include terms and calculations in this section that can help readers understand the model or model card. -->
194
+
195
+ [More Information Needed]
196
+
197
+ ## More Information [optional]
198
+
199
+ [More Information Needed]
200
+
201
+ ## Model Card Authors [optional]
202
+
203
+ [More Information Needed]
204
+
205
+ ## Model Card Contact
206
+
207
+ [More Information Needed]
208
+ ### Framework versions
209
+
210
+ - PEFT 0.19.1
adapter_config.json ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "alora_invocation_tokens": null,
3
+ "alpha_pattern": {},
4
+ "arrow_config": null,
5
+ "auto_mapping": {
6
+ "base_model_class": "Gemma4ForConditionalGeneration",
7
+ "parent_library": "transformers.models.gemma4.modeling_gemma4",
8
+ "unsloth_fixed": true
9
+ },
10
+ "base_model_name_or_path": "unsloth/gemma-4-31B-it",
11
+ "bias": "none",
12
+ "corda_config": null,
13
+ "ensure_weight_tying": false,
14
+ "eva_config": null,
15
+ "exclude_modules": null,
16
+ "fan_in_fan_out": false,
17
+ "inference_mode": true,
18
+ "init_lora_weights": true,
19
+ "layer_replication": null,
20
+ "layers_pattern": null,
21
+ "layers_to_transform": null,
22
+ "loftq_config": {},
23
+ "lora_alpha": 32,
24
+ "lora_bias": false,
25
+ "lora_dropout": 0,
26
+ "lora_ga_config": null,
27
+ "megatron_config": null,
28
+ "megatron_core": "megatron.core",
29
+ "modules_to_save": null,
30
+ "peft_type": "LORA",
31
+ "peft_version": "0.19.1",
32
+ "qalora_group_size": 16,
33
+ "r": 128,
34
+ "rank_pattern": {},
35
+ "revision": null,
36
+ "target_modules": "(?:.*?(?:language|text).*?(?:self_attn|attention|attn|mixer|mlp|feed_forward|ffn|dense|mixer).*?(?:q_proj|k_proj|v_proj|o_proj|gate_proj|up_proj|down_proj))|(?:\\bmodel\\.layers\\.[\\d]{1,}\\.(?:self_attn|attention|attn|mixer|mlp|feed_forward|ffn|dense|mixer)\\.(?:(?:q_proj|k_proj|v_proj|o_proj|gate_proj|up_proj|down_proj)))",
37
+ "target_parameters": null,
38
+ "task_type": "CAUSAL_LM",
39
+ "trainable_token_indices": null,
40
+ "use_bdlora": null,
41
+ "use_dora": false,
42
+ "use_qalora": false,
43
+ "use_rslora": false
44
+ }
adapter_model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:3b23bbe6ba9858d91159158d5c98152c09c5725f3f3c3d8dd6e71330d2672cb3
3
+ size 3917867504
chat_template.jinja ADDED
@@ -0,0 +1,389 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {%- macro format_parameters(properties, required, filter_keys=false) -%}
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 not filter_keys or 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([]), filter_keys=true) -}}
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 none -%}
120
+ {{- 'null' -}}
121
+ {%- elif argument is string -%}
122
+ {{- '<|"|>' + argument + '<|"|>' -}}
123
+ {%- elif argument is boolean -%}
124
+ {{- 'true' if argument else 'false' -}}
125
+ {%- elif argument is mapping -%}
126
+ {{- '{' -}}
127
+ {%- set ns = namespace(found_first=false) -%}
128
+ {%- for key, value in argument | dictsort -%}
129
+ {%- if ns.found_first %},{% endif -%}
130
+ {%- set ns.found_first = true -%}
131
+ {%- if escape_keys -%}
132
+ {{- '<|"|>' + key + '<|"|>' -}}
133
+ {%- else -%}
134
+ {{- key -}}
135
+ {%- endif -%}
136
+ :{{- format_argument(value, escape_keys=escape_keys) -}}
137
+ {%- endfor -%}
138
+ {{- '}' -}}
139
+ {%- elif argument is sequence -%}
140
+ {{- '[' -}}
141
+ {%- for item in argument -%}
142
+ {{- format_argument(item, escape_keys=escape_keys) -}}
143
+ {%- if not loop.last %},{% endif -%}
144
+ {%- endfor -%}
145
+ {{- ']' -}}
146
+ {%- else -%}
147
+ {{- argument -}}
148
+ {%- endif -%}
149
+ {%- endmacro -%}
150
+ {%- macro strip_thinking(text) -%}
151
+ {%- set ns = namespace(result='') -%}
152
+ {%- for part in text.split('<channel|>') -%}
153
+ {%- if '<|channel>' in part -%}
154
+ {%- set ns.result = ns.result + part.split('<|channel>')[0] -%}
155
+ {%- else -%}
156
+ {%- set ns.result = ns.result + part -%}
157
+ {%- endif -%}
158
+ {%- endfor -%}
159
+ {{- ns.result | trim -}}
160
+ {%- endmacro -%}
161
+
162
+ {%- macro format_tool_response_block(tool_name, response) -%}
163
+ {{- '<|tool_response>' -}}
164
+ {%- if response is mapping -%}
165
+ {{- 'response:' + tool_name + '{' -}}
166
+ {%- for key, value in response | dictsort -%}
167
+ {{- key -}}:{{- format_argument(value, escape_keys=False) -}}
168
+ {%- if not loop.last %},{% endif -%}
169
+ {%- endfor -%}
170
+ {{- '}' -}}
171
+ {%- else -%}
172
+ {{- 'response:' + tool_name + '{value:' + format_argument(response, escape_keys=False) + '}' -}}
173
+ {%- endif -%}
174
+ {{- '<tool_response|>' -}}
175
+ {%- endmacro -%}
176
+
177
+ {#- ===== SETUP ===== -#}
178
+ {%- set ns = namespace(prev_message_type=None, prev_non_tool_role=None) -%}
179
+ {%- set loop_messages = messages -%}
180
+ {%- set enable_thinking = enable_thinking | default(false) -%}
181
+ {%- set preserve_thinking = preserve_thinking | default(false) -%}
182
+ {{- bos_token -}}
183
+ {#- Handle System/Tool Definitions Block -#}
184
+ {%- if enable_thinking or tools or (messages and messages[0]['role'] in ['system', 'developer']) -%}
185
+ {{- '<|turn>system\n' -}}
186
+ {#- Inject Thinking token at the very top of the FIRST system turn -#}
187
+ {%- if enable_thinking -%}
188
+ {{- '<|think|>\n' -}}
189
+ {%- set ns.prev_message_type = 'think' -%}
190
+ {%- endif -%}
191
+ {%- if messages and messages[0]['role'] in ['system', 'developer'] -%}
192
+ {%- if messages[0]['content'] is string -%}
193
+ {{- messages[0]['content'] | trim -}}
194
+ {%- elif messages[0]['content'] is sequence -%}
195
+ {%- for item in messages[0]['content'] -%}
196
+ {{- item['text'] | trim + ' '-}}
197
+ {%- endfor -%}
198
+ {%- endif -%}
199
+ {%- set loop_messages = messages[1:] -%}
200
+ {%- endif -%}
201
+ {%- if tools -%}
202
+ {%- for tool in tools %}
203
+ {{- '<|tool>' -}}
204
+ {{- format_function_declaration(tool) | trim -}}
205
+ {{- '<tool|>' -}}
206
+ {%- endfor %}
207
+ {%- set ns.prev_message_type = 'tool' -%}
208
+ {%- endif -%}
209
+ {{- '<turn|>\n' -}}
210
+ {%- endif %}
211
+
212
+ {#- Pre-scan: find last user message index for reasoning guard -#}
213
+ {%- set ns_turn = namespace(last_user_idx=-1) -%}
214
+ {%- for i in range(loop_messages | length) -%}
215
+ {%- if loop_messages[i]['role'] == 'user' -%}
216
+ {%- set ns_turn.last_user_idx = i -%}
217
+ {%- endif -%}
218
+ {%- endfor -%}
219
+
220
+ {#- Loop through messages -#}
221
+ {%- for message in loop_messages -%}
222
+ {%- if message['role'] != 'tool' -%}
223
+ {%- set ns.prev_message_type = None -%}
224
+ {%- set role = 'model' if message['role'] == 'assistant' else message['role'] -%}
225
+ {#- Detect continuation using tracked state — O(1) instead of O(n) backward scan -#}
226
+ {%- set continue_same_model_turn = (role == 'model' and ns.prev_non_tool_role == 'assistant') -%}
227
+ {%- if not continue_same_model_turn -%}
228
+ {{- '<|turn>' + role + '\n' }}
229
+
230
+ {%- endif -%}
231
+
232
+ {#- Render reasoning/reasoning_content as thinking channel -#}
233
+ {%- set thinking_text = message.get('reasoning') or message.get('reasoning_content') -%}
234
+ {%- set thinking_gate = (loop.index0 > ns_turn.last_user_idx) or (preserve_thinking and message.get('tool_calls')) -%}
235
+ {%- if thinking_text and thinking_gate -%}
236
+ {{- '<|channel>thought\n' + thinking_text + '\n<channel|>' -}}
237
+ {%- endif -%}
238
+
239
+ {%- if message.get('tool_calls') -%}
240
+ {%- for tool_call in message.get('tool_calls') -%}
241
+ {%- set function = tool_call['function'] -%}
242
+ {{- '<|tool_call>call:' + function['name'] + '{' -}}
243
+ {%- if function['arguments'] is mapping -%}
244
+ {%- set ns_args = namespace(found_first=false) -%}
245
+ {%- for key, value in function['arguments'] | dictsort -%}
246
+ {%- if ns_args.found_first %},{% endif -%}
247
+ {%- set ns_args.found_first = true -%}
248
+ {{- key -}}:{{- format_argument(value, escape_keys=False) -}}
249
+ {%- endfor -%}
250
+ {%- elif function['arguments'] is none -%}
251
+ {%- elif function['arguments'] is string -%}
252
+ {#- Pre-serialized args (e.g. an OpenAI JSON string). We cannot JSON-parse
253
+ portably in-template, so render non-fatally instead of erroring. Strip an
254
+ outer {...} so it composes with the DSL braces rather than double-wrapping.
255
+ Prefer passing arguments as a mapping for exact Gemma DSL. -#}
256
+ {%- set argstr = function['arguments'] | trim -%}
257
+ {%- if argstr[:1] == '{' and argstr[-1:] == '}' -%}
258
+ {{- argstr[1:-1] -}}
259
+ {%- else -%}
260
+ {{- function['arguments'] -}}
261
+ {%- endif -%}
262
+ {%- endif -%}
263
+ {{- '}<tool_call|>' -}}
264
+ {%- endfor -%}
265
+ {%- set ns.prev_message_type = 'tool_call' -%}
266
+ {%- endif -%}
267
+
268
+ {%- set ns_tr_out = namespace(flag=false) -%}
269
+ {%- if message.get('tool_responses') -%}
270
+ {#- Legacy: tool_responses embedded on the assistant message (Google/Gemma native) -#}
271
+ {%- for tool_response in message.get('tool_responses') -%}
272
+ {{- format_tool_response_block(tool_response['name'] | default('unknown', true), tool_response['response']) -}}
273
+ {%- set ns_tr_out.flag = true -%}
274
+ {%- set ns.prev_message_type = 'tool_response' -%}
275
+ {%- endfor -%}
276
+ {%- elif message.get('tool_calls') -%}
277
+ {#- OpenAI Chat Completions: forward-scan consecutive role:tool messages -#}
278
+ {%- set ns_tool_scan = namespace(stopped=false) -%}
279
+ {%- for k in range(loop.index0 + 1, loop_messages | length) -%}
280
+ {%- if ns_tool_scan.stopped -%}
281
+ {%- elif loop_messages[k]['role'] != 'tool' -%}
282
+ {%- set ns_tool_scan.stopped = true -%}
283
+ {%- else -%}
284
+ {%- set follow = loop_messages[k] -%}
285
+ {#- Resolve tool_call_id to function name -#}
286
+ {%- set ns_tname = namespace(name=follow.get('name') or 'unknown') -%}
287
+ {%- for tc in message.get('tool_calls') -%}
288
+ {%- if tc.get('id') == follow.get('tool_call_id') -%}
289
+ {%- set ns_tname.name = tc['function']['name'] -%}
290
+ {%- endif -%}
291
+ {%- endfor -%}
292
+ {#- Handle content as string or content-parts array -#}
293
+ {%- set tool_body = follow.get('content') -%}
294
+ {%- if tool_body is string -%}
295
+ {{- format_tool_response_block(ns_tname.name, tool_body) -}}
296
+ {%- elif tool_body is sequence and tool_body is not string -%}
297
+ {%- set ns_txt = namespace(s='') -%}
298
+ {%- for part in tool_body -%}
299
+ {%- if part.get('type') == 'text' -%}
300
+ {%- set ns_txt.s = ns_txt.s + (part.get('text') | default('')) -%}
301
+ {%- endif -%}
302
+ {%- endfor -%}
303
+ {{- format_tool_response_block(ns_tname.name, ns_txt.s) -}}
304
+ {%- for part in tool_body -%}
305
+ {%- if part.get('type') in ['image', 'image_url'] -%}
306
+ {{- '<|image|>' -}}
307
+ {%- elif part.get('type') in ['audio', 'input_audio'] -%}
308
+ {{- '<|audio|>' -}}
309
+ {%- elif part.get('type') == 'video' -%}
310
+ {{- '<|video|>' -}}
311
+ {%- endif -%}
312
+ {%- endfor -%}
313
+ {%- else -%}
314
+ {{- format_tool_response_block(ns_tname.name, tool_body) -}}
315
+ {%- endif -%}
316
+ {%- set ns_tr_out.flag = true -%}
317
+ {%- set ns.prev_message_type = 'tool_response' -%}
318
+ {%- endif -%}
319
+ {%- endfor -%}
320
+ {%- endif -%}
321
+
322
+ {%- set captured_content -%}
323
+ {%- if message.get('content') is string -%}
324
+ {%- if role == 'model' -%}
325
+ {{- strip_thinking(message['content']) -}}
326
+ {%- else -%}
327
+ {{- message['content'] | trim -}}
328
+ {%- endif -%}
329
+ {%- elif message.get('content') is sequence -%}
330
+ {%- for item in message['content'] -%}
331
+ {%- if item.get('type') == 'text' -%}
332
+ {%- if role == 'model' -%}
333
+ {{- strip_thinking(item['text']) -}}
334
+ {%- else -%}
335
+ {{- item['text'] | trim -}}
336
+ {%- endif -%}
337
+ {%- elif item.get('type') in ['image', 'image_url'] -%}
338
+ {{- '<|image|>' -}}
339
+ {%- elif item.get('type') in ['audio', 'input_audio'] -%}
340
+ {{- '<|audio|>' -}}
341
+ {%- elif item.get('type') == 'video' -%}
342
+ {{- '<|video|>' -}}
343
+ {%- endif -%}
344
+ {%- endfor -%}
345
+ {%- endif -%}
346
+ {%- endset -%}
347
+
348
+ {{- captured_content -}}
349
+ {%- set has_content = captured_content | trim | length > 0 -%}
350
+
351
+ {#- Forward-scan: find next non-tool message role for continuation detection -#}
352
+ {%- set next_nt = namespace(role=None, found=false) -%}
353
+ {%- for j in range(loop.index0 + 1, loop_messages | length) -%}
354
+ {%- if not next_nt.found -%}
355
+ {%- if loop_messages[j]['role'] != 'tool' -%}
356
+ {%- set next_nt.role = loop_messages[j]['role'] -%}
357
+ {%- set next_nt.found = true -%}
358
+ {%- endif -%}
359
+ {%- endif -%}
360
+ {%- endfor -%}
361
+
362
+ {%- set continues_into_next = (
363
+ role == 'model'
364
+ and next_nt.role == 'assistant'
365
+ and (not message.get('tool_calls') or ns_tr_out.flag)
366
+ ) -%}
367
+
368
+ {%- if ns.prev_message_type == 'tool_call' and not ns_tr_out.flag -%}
369
+ {{- '<|tool_response>' -}}
370
+ {%- elif continues_into_next -%}
371
+ {%- elif not (ns_tr_out.flag and not has_content and not next_nt.found) -%}
372
+ {{- '<turn|>\n' -}}
373
+ {%- endif -%}
374
+
375
+ {#- Track previous non-tool role for next iteration (avoids O(n) backward scan) -#}
376
+ {%- set ns.prev_non_tool_role = message['role'] -%}
377
+ {%- endif -%}
378
+ {%- endfor -%}
379
+
380
+ {%- if add_generation_prompt -%}
381
+ {%- if ns.prev_message_type != 'tool_response' and ns.prev_message_type != 'tool_call' -%}
382
+ {{- '<|turn>model\n' -}}
383
+ {%- if not enable_thinking -%}
384
+ {{- '<|channel>thought\n<channel|>' -}}
385
+ {%- endif -%}
386
+ {%- elif ns.prev_message_type == 'tool_response' and enable_thinking -%}
387
+ {{- '<|channel>thought\n' -}}
388
+ {%- endif -%}
389
+ {%- endif -%}
optimizer.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:dcf6f7cb97b058963b899310bfee5d5562b819683643cb65a1117551b95ea21d
3
+ size 1990451125
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
+ }
rng_state_0.pth ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:27978b0c0a2d70a6d9e24fba0f2ed928bba9b47aecb6cc92523c33dd4a9bc29f
3
+ size 14917
rng_state_1.pth ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:0d4883ea9e9e4170ef036b08f27772e01a500be9d13e3c9492d90b6357d7e8c6
3
+ size 14917
scheduler.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:b2a73d4133c71f756233b3e098aa68f7d3a84edc8fa9a53f12fdd88ac4016e0c
3
+ size 1465
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,290 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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": "<turn|>",
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
+ "local_files_only": false,
22
+ "mask_token": "<mask>",
23
+ "model_max_length": 262144,
24
+ "model_specific_special_tokens": {
25
+ "audio_token": "<|audio|>",
26
+ "boa_token": "<|audio>",
27
+ "boi_token": "<|image>",
28
+ "eoa_token": "<audio|>",
29
+ "eoc_token": "<channel|>",
30
+ "eoi_token": "<image|>",
31
+ "eot_token": "<turn|>",
32
+ "escape_token": "<|\"|>",
33
+ "etc_token": "<tool_call|>",
34
+ "etd_token": "<tool|>",
35
+ "etr_token": "<tool_response|>",
36
+ "image_token": "<|image|>",
37
+ "soc_token": "<|channel>",
38
+ "sot_token": "<|turn>",
39
+ "stc_token": "<|tool_call>",
40
+ "std_token": "<|tool>",
41
+ "str_token": "<|tool_response>",
42
+ "think_token": "<|think|>"
43
+ },
44
+ "pad_token": "<pad>",
45
+ "padding_side": "right",
46
+ "processor_class": "Gemma4Processor",
47
+ "response_schema": {
48
+ "properties": {
49
+ "content": {
50
+ "type": "string"
51
+ },
52
+ "role": {
53
+ "const": "assistant"
54
+ },
55
+ "thinking": {
56
+ "type": "string"
57
+ },
58
+ "tool_calls": {
59
+ "items": {
60
+ "properties": {
61
+ "function": {
62
+ "properties": {
63
+ "arguments": {
64
+ "additionalProperties": {},
65
+ "type": "object",
66
+ "x-parser": "gemma4-tool-call"
67
+ },
68
+ "name": {
69
+ "type": "string"
70
+ }
71
+ },
72
+ "type": "object",
73
+ "x-regex": "call\\:(?P<name>\\w+)(?P<arguments>\\{.*\\})"
74
+ },
75
+ "type": {
76
+ "const": "function"
77
+ }
78
+ },
79
+ "type": "object"
80
+ },
81
+ "type": "array",
82
+ "x-regex-iterator": "<\\|tool_call>(.*?)<tool_call\\|>"
83
+ }
84
+ },
85
+ "type": "object",
86
+ "x-regex": "(\\<\\|channel\\>thought\\n(?P<thinking>.*?)\\<channel\\|\\>)?(?P<tool_calls>\\<\\|tool_call\\>.*\\<tool_call\\|\\>)?(?P<content>(?:(?!\\<turn\\|\\>)(?!\\<\\|tool_response\\>).)+)?(?:\\<turn\\|\\>|\\<\\|tool_response\\>)?"
87
+ },
88
+ "soc_token": "<|channel>",
89
+ "sot_token": "<|turn>",
90
+ "stc_token": "<|tool_call>",
91
+ "std_token": "<|tool>",
92
+ "str_token": "<|tool_response>",
93
+ "think_token": "<|think|>",
94
+ "tokenizer_class": "GemmaTokenizer",
95
+ "unk_token": "<unk>",
96
+ "added_tokens_decoder": {
97
+ "0": {
98
+ "content": "<pad>",
99
+ "single_word": false,
100
+ "lstrip": false,
101
+ "rstrip": false,
102
+ "normalized": false,
103
+ "special": true
104
+ },
105
+ "1": {
106
+ "content": "<eos>",
107
+ "single_word": false,
108
+ "lstrip": false,
109
+ "rstrip": false,
110
+ "normalized": false,
111
+ "special": true
112
+ },
113
+ "2": {
114
+ "content": "<bos>",
115
+ "single_word": false,
116
+ "lstrip": false,
117
+ "rstrip": false,
118
+ "normalized": false,
119
+ "special": true
120
+ },
121
+ "3": {
122
+ "content": "<unk>",
123
+ "single_word": false,
124
+ "lstrip": false,
125
+ "rstrip": false,
126
+ "normalized": false,
127
+ "special": true
128
+ },
129
+ "4": {
130
+ "content": "<mask>",
131
+ "single_word": false,
132
+ "lstrip": false,
133
+ "rstrip": false,
134
+ "normalized": false,
135
+ "special": true
136
+ },
137
+ "46": {
138
+ "content": "<|tool>",
139
+ "single_word": false,
140
+ "lstrip": false,
141
+ "rstrip": false,
142
+ "normalized": false,
143
+ "special": true
144
+ },
145
+ "47": {
146
+ "content": "<tool|>",
147
+ "single_word": false,
148
+ "lstrip": false,
149
+ "rstrip": false,
150
+ "normalized": false,
151
+ "special": true
152
+ },
153
+ "48": {
154
+ "content": "<|tool_call>",
155
+ "single_word": false,
156
+ "lstrip": false,
157
+ "rstrip": false,
158
+ "normalized": false,
159
+ "special": true
160
+ },
161
+ "49": {
162
+ "content": "<tool_call|>",
163
+ "single_word": false,
164
+ "lstrip": false,
165
+ "rstrip": false,
166
+ "normalized": false,
167
+ "special": true
168
+ },
169
+ "50": {
170
+ "content": "<|tool_response>",
171
+ "single_word": false,
172
+ "lstrip": false,
173
+ "rstrip": false,
174
+ "normalized": false,
175
+ "special": true
176
+ },
177
+ "51": {
178
+ "content": "<tool_response|>",
179
+ "single_word": false,
180
+ "lstrip": false,
181
+ "rstrip": false,
182
+ "normalized": false,
183
+ "special": true
184
+ },
185
+ "52": {
186
+ "content": "<|\"|>",
187
+ "single_word": false,
188
+ "lstrip": false,
189
+ "rstrip": false,
190
+ "normalized": false,
191
+ "special": true
192
+ },
193
+ "98": {
194
+ "content": "<|think|>",
195
+ "single_word": false,
196
+ "lstrip": false,
197
+ "rstrip": false,
198
+ "normalized": false,
199
+ "special": true
200
+ },
201
+ "100": {
202
+ "content": "<|channel>",
203
+ "single_word": false,
204
+ "lstrip": false,
205
+ "rstrip": false,
206
+ "normalized": false,
207
+ "special": true
208
+ },
209
+ "101": {
210
+ "content": "<channel|>",
211
+ "single_word": false,
212
+ "lstrip": false,
213
+ "rstrip": false,
214
+ "normalized": false,
215
+ "special": true
216
+ },
217
+ "105": {
218
+ "content": "<|turn>",
219
+ "single_word": false,
220
+ "lstrip": false,
221
+ "rstrip": false,
222
+ "normalized": false,
223
+ "special": true
224
+ },
225
+ "106": {
226
+ "content": "<turn|>",
227
+ "single_word": false,
228
+ "lstrip": false,
229
+ "rstrip": false,
230
+ "normalized": false,
231
+ "special": true
232
+ },
233
+ "255999": {
234
+ "content": "<|image>",
235
+ "single_word": false,
236
+ "lstrip": false,
237
+ "rstrip": false,
238
+ "normalized": false,
239
+ "special": true
240
+ },
241
+ "256000": {
242
+ "content": "<|audio>",
243
+ "single_word": false,
244
+ "lstrip": false,
245
+ "rstrip": false,
246
+ "normalized": false,
247
+ "special": true
248
+ },
249
+ "258880": {
250
+ "content": "<|image|>",
251
+ "single_word": false,
252
+ "lstrip": false,
253
+ "rstrip": false,
254
+ "normalized": false,
255
+ "special": true
256
+ },
257
+ "258881": {
258
+ "content": "<|audio|>",
259
+ "single_word": false,
260
+ "lstrip": false,
261
+ "rstrip": false,
262
+ "normalized": false,
263
+ "special": true
264
+ },
265
+ "258882": {
266
+ "content": "<image|>",
267
+ "single_word": false,
268
+ "lstrip": false,
269
+ "rstrip": false,
270
+ "normalized": false,
271
+ "special": true
272
+ },
273
+ "258883": {
274
+ "content": "<audio|>",
275
+ "single_word": false,
276
+ "lstrip": false,
277
+ "rstrip": false,
278
+ "normalized": false,
279
+ "special": true
280
+ },
281
+ "258884": {
282
+ "content": "<|video|>",
283
+ "single_word": false,
284
+ "lstrip": false,
285
+ "rstrip": false,
286
+ "normalized": false,
287
+ "special": true
288
+ }
289
+ }
290
+ }
trainer_state.json ADDED
@@ -0,0 +1,774 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "best_global_step": 100,
3
+ "best_metric": 0.00810375064611435,
4
+ "best_model_checkpoint": "outputs/gemma-4-31b-it-dft-lora/checkpoint-100",
5
+ "epoch": 0.02155753166262463,
6
+ "eval_steps": 100,
7
+ "global_step": 100,
8
+ "is_hyper_param_search": false,
9
+ "is_local_process_zero": true,
10
+ "is_world_process_zero": true,
11
+ "log_history": [
12
+ {
13
+ "epoch": 0.0002155753166262463,
14
+ "grad_norm": 0.35355231165885925,
15
+ "learning_rate": 0.0002,
16
+ "loss": 0.029262639582157135,
17
+ "step": 1
18
+ },
19
+ {
20
+ "epoch": 0.0004311506332524926,
21
+ "grad_norm": 0.8035170435905457,
22
+ "learning_rate": 0.0002,
23
+ "loss": 0.034604787826538086,
24
+ "step": 2
25
+ },
26
+ {
27
+ "epoch": 0.0006467259498787389,
28
+ "grad_norm": 0.1696992814540863,
29
+ "learning_rate": 0.0002,
30
+ "loss": 0.02872493863105774,
31
+ "step": 3
32
+ },
33
+ {
34
+ "epoch": 0.0008623012665049852,
35
+ "grad_norm": 0.2127484530210495,
36
+ "learning_rate": 0.0002,
37
+ "loss": 0.015632111579179764,
38
+ "step": 4
39
+ },
40
+ {
41
+ "epoch": 0.0010778765831312314,
42
+ "grad_norm": 0.08805956691503525,
43
+ "learning_rate": 0.0002,
44
+ "loss": 0.01093694195151329,
45
+ "step": 5
46
+ },
47
+ {
48
+ "epoch": 0.0012934518997574779,
49
+ "grad_norm": 0.33709272742271423,
50
+ "learning_rate": 0.0002,
51
+ "loss": 0.013769567012786865,
52
+ "step": 6
53
+ },
54
+ {
55
+ "epoch": 0.0015090272163837241,
56
+ "grad_norm": 1.254341721534729,
57
+ "learning_rate": 0.0002,
58
+ "loss": 0.0147835249081254,
59
+ "step": 7
60
+ },
61
+ {
62
+ "epoch": 0.0017246025330099704,
63
+ "grad_norm": 0.10053704679012299,
64
+ "learning_rate": 0.0002,
65
+ "loss": 0.012731949798762798,
66
+ "step": 8
67
+ },
68
+ {
69
+ "epoch": 0.0019401778496362166,
70
+ "grad_norm": 0.12072528898715973,
71
+ "learning_rate": 0.0002,
72
+ "loss": 0.010018199682235718,
73
+ "step": 9
74
+ },
75
+ {
76
+ "epoch": 0.002155753166262463,
77
+ "grad_norm": 0.14486922323703766,
78
+ "learning_rate": 0.0002,
79
+ "loss": 0.011705820448696613,
80
+ "step": 10
81
+ },
82
+ {
83
+ "epoch": 0.0023713284828887093,
84
+ "grad_norm": 0.8446067571640015,
85
+ "learning_rate": 0.0002,
86
+ "loss": 0.013134717009961605,
87
+ "step": 11
88
+ },
89
+ {
90
+ "epoch": 0.0025869037995149557,
91
+ "grad_norm": 0.14635822176933289,
92
+ "learning_rate": 0.0002,
93
+ "loss": 0.009777972474694252,
94
+ "step": 12
95
+ },
96
+ {
97
+ "epoch": 0.0028024791161412018,
98
+ "grad_norm": 0.3104383945465088,
99
+ "learning_rate": 0.0002,
100
+ "loss": 0.008575799874961376,
101
+ "step": 13
102
+ },
103
+ {
104
+ "epoch": 0.0030180544327674482,
105
+ "grad_norm": 0.6574239730834961,
106
+ "learning_rate": 0.0002,
107
+ "loss": 0.011179640889167786,
108
+ "step": 14
109
+ },
110
+ {
111
+ "epoch": 0.0032336297493936943,
112
+ "grad_norm": 0.16107547283172607,
113
+ "learning_rate": 0.0002,
114
+ "loss": 0.008740412071347237,
115
+ "step": 15
116
+ },
117
+ {
118
+ "epoch": 0.0034492050660199407,
119
+ "grad_norm": 0.1261993795633316,
120
+ "learning_rate": 0.0002,
121
+ "loss": 0.009002208709716797,
122
+ "step": 16
123
+ },
124
+ {
125
+ "epoch": 0.003664780382646187,
126
+ "grad_norm": 0.11350332945585251,
127
+ "learning_rate": 0.0002,
128
+ "loss": 0.012038005515933037,
129
+ "step": 17
130
+ },
131
+ {
132
+ "epoch": 0.003880355699272433,
133
+ "grad_norm": 0.1060851514339447,
134
+ "learning_rate": 0.0002,
135
+ "loss": 0.01151442900300026,
136
+ "step": 18
137
+ },
138
+ {
139
+ "epoch": 0.00409593101589868,
140
+ "grad_norm": 0.14713744819164276,
141
+ "learning_rate": 0.0002,
142
+ "loss": 0.009754206985235214,
143
+ "step": 19
144
+ },
145
+ {
146
+ "epoch": 0.004311506332524926,
147
+ "grad_norm": 0.16942201554775238,
148
+ "learning_rate": 0.0002,
149
+ "loss": 0.009654794819653034,
150
+ "step": 20
151
+ },
152
+ {
153
+ "epoch": 0.0045270816491511726,
154
+ "grad_norm": 1.3301082849502563,
155
+ "learning_rate": 0.0002,
156
+ "loss": 0.011510669253766537,
157
+ "step": 21
158
+ },
159
+ {
160
+ "epoch": 0.004742656965777419,
161
+ "grad_norm": 0.13192863762378693,
162
+ "learning_rate": 0.0002,
163
+ "loss": 0.010545970872044563,
164
+ "step": 22
165
+ },
166
+ {
167
+ "epoch": 0.004958232282403665,
168
+ "grad_norm": 0.36531829833984375,
169
+ "learning_rate": 0.0002,
170
+ "loss": 0.00679993350058794,
171
+ "step": 23
172
+ },
173
+ {
174
+ "epoch": 0.0051738075990299115,
175
+ "grad_norm": 0.683217465877533,
176
+ "learning_rate": 0.0002,
177
+ "loss": 0.01119004562497139,
178
+ "step": 24
179
+ },
180
+ {
181
+ "epoch": 0.0053893829156561575,
182
+ "grad_norm": 0.09257054328918457,
183
+ "learning_rate": 0.0002,
184
+ "loss": 0.010483799502253532,
185
+ "step": 25
186
+ },
187
+ {
188
+ "epoch": 0.0056049582322824035,
189
+ "grad_norm": 0.38596951961517334,
190
+ "learning_rate": 0.0002,
191
+ "loss": 0.007335903123021126,
192
+ "step": 26
193
+ },
194
+ {
195
+ "epoch": 0.00582053354890865,
196
+ "grad_norm": 0.10540477186441422,
197
+ "learning_rate": 0.0002,
198
+ "loss": 0.008093496784567833,
199
+ "step": 27
200
+ },
201
+ {
202
+ "epoch": 0.0060361088655348965,
203
+ "grad_norm": 0.1042870506644249,
204
+ "learning_rate": 0.0002,
205
+ "loss": 0.006771376356482506,
206
+ "step": 28
207
+ },
208
+ {
209
+ "epoch": 0.0062516841821611425,
210
+ "grad_norm": 0.12241453677415848,
211
+ "learning_rate": 0.0002,
212
+ "loss": 0.012486090883612633,
213
+ "step": 29
214
+ },
215
+ {
216
+ "epoch": 0.0064672594987873885,
217
+ "grad_norm": 0.07308249920606613,
218
+ "learning_rate": 0.0002,
219
+ "loss": 0.008405549451708794,
220
+ "step": 30
221
+ },
222
+ {
223
+ "epoch": 0.006682834815413635,
224
+ "grad_norm": 0.5752164125442505,
225
+ "learning_rate": 0.0002,
226
+ "loss": 0.00868656300008297,
227
+ "step": 31
228
+ },
229
+ {
230
+ "epoch": 0.006898410132039881,
231
+ "grad_norm": 0.440966933965683,
232
+ "learning_rate": 0.0002,
233
+ "loss": 0.009276360273361206,
234
+ "step": 32
235
+ },
236
+ {
237
+ "epoch": 0.0071139854486661274,
238
+ "grad_norm": 0.10101857036352158,
239
+ "learning_rate": 0.0002,
240
+ "loss": 0.009907806292176247,
241
+ "step": 33
242
+ },
243
+ {
244
+ "epoch": 0.007329560765292374,
245
+ "grad_norm": 0.10938883572816849,
246
+ "learning_rate": 0.0002,
247
+ "loss": 0.010104689747095108,
248
+ "step": 34
249
+ },
250
+ {
251
+ "epoch": 0.00754513608191862,
252
+ "grad_norm": 0.10266172885894775,
253
+ "learning_rate": 0.0002,
254
+ "loss": 0.01003933884203434,
255
+ "step": 35
256
+ },
257
+ {
258
+ "epoch": 0.007760711398544866,
259
+ "grad_norm": 0.6664326190948486,
260
+ "learning_rate": 0.0002,
261
+ "loss": 0.008584938943386078,
262
+ "step": 36
263
+ },
264
+ {
265
+ "epoch": 0.007976286715171112,
266
+ "grad_norm": 0.12953639030456543,
267
+ "learning_rate": 0.0002,
268
+ "loss": 0.010258931666612625,
269
+ "step": 37
270
+ },
271
+ {
272
+ "epoch": 0.00819186203179736,
273
+ "grad_norm": 0.1646440178155899,
274
+ "learning_rate": 0.0002,
275
+ "loss": 0.007510819472372532,
276
+ "step": 38
277
+ },
278
+ {
279
+ "epoch": 0.008407437348423606,
280
+ "grad_norm": 0.1203722283244133,
281
+ "learning_rate": 0.0002,
282
+ "loss": 0.008814643137156963,
283
+ "step": 39
284
+ },
285
+ {
286
+ "epoch": 0.008623012665049851,
287
+ "grad_norm": 0.2890990376472473,
288
+ "learning_rate": 0.0002,
289
+ "loss": 0.00809550192207098,
290
+ "step": 40
291
+ },
292
+ {
293
+ "epoch": 0.008838587981676098,
294
+ "grad_norm": 0.08200457692146301,
295
+ "learning_rate": 0.0002,
296
+ "loss": 0.009519032202661037,
297
+ "step": 41
298
+ },
299
+ {
300
+ "epoch": 0.009054163298302345,
301
+ "grad_norm": 1.1322895288467407,
302
+ "learning_rate": 0.0002,
303
+ "loss": 0.009396661072969437,
304
+ "step": 42
305
+ },
306
+ {
307
+ "epoch": 0.00926973861492859,
308
+ "grad_norm": 0.18650507926940918,
309
+ "learning_rate": 0.0002,
310
+ "loss": 0.00949934870004654,
311
+ "step": 43
312
+ },
313
+ {
314
+ "epoch": 0.009485313931554837,
315
+ "grad_norm": 0.0988556295633316,
316
+ "learning_rate": 0.0002,
317
+ "loss": 0.011296452954411507,
318
+ "step": 44
319
+ },
320
+ {
321
+ "epoch": 0.009700889248181084,
322
+ "grad_norm": 0.1548602432012558,
323
+ "learning_rate": 0.0002,
324
+ "loss": 0.007339763920754194,
325
+ "step": 45
326
+ },
327
+ {
328
+ "epoch": 0.00991646456480733,
329
+ "grad_norm": 0.12220349907875061,
330
+ "learning_rate": 0.0002,
331
+ "loss": 0.009710454382002354,
332
+ "step": 46
333
+ },
334
+ {
335
+ "epoch": 0.010132039881433576,
336
+ "grad_norm": 16.374435424804688,
337
+ "learning_rate": 0.0002,
338
+ "loss": 0.007745769806206226,
339
+ "step": 47
340
+ },
341
+ {
342
+ "epoch": 0.010347615198059823,
343
+ "grad_norm": 0.13246791064739227,
344
+ "learning_rate": 0.0002,
345
+ "loss": 0.008885636925697327,
346
+ "step": 48
347
+ },
348
+ {
349
+ "epoch": 0.010563190514686068,
350
+ "grad_norm": 0.12659847736358643,
351
+ "learning_rate": 0.0002,
352
+ "loss": 0.008172022178769112,
353
+ "step": 49
354
+ },
355
+ {
356
+ "epoch": 0.010778765831312315,
357
+ "grad_norm": 1.2109593152999878,
358
+ "learning_rate": 0.0002,
359
+ "loss": 0.008851840160787106,
360
+ "step": 50
361
+ },
362
+ {
363
+ "epoch": 0.01099434114793856,
364
+ "grad_norm": 2.2849178314208984,
365
+ "learning_rate": 0.0002,
366
+ "loss": 0.008759889751672745,
367
+ "step": 51
368
+ },
369
+ {
370
+ "epoch": 0.011209916464564807,
371
+ "grad_norm": 0.09035182744264603,
372
+ "learning_rate": 0.0002,
373
+ "loss": 0.008502203039824963,
374
+ "step": 52
375
+ },
376
+ {
377
+ "epoch": 0.011425491781191054,
378
+ "grad_norm": 1.2929551601409912,
379
+ "learning_rate": 0.0002,
380
+ "loss": 0.01136450283229351,
381
+ "step": 53
382
+ },
383
+ {
384
+ "epoch": 0.0116410670978173,
385
+ "grad_norm": 0.15647704899311066,
386
+ "learning_rate": 0.0002,
387
+ "loss": 0.011929634027183056,
388
+ "step": 54
389
+ },
390
+ {
391
+ "epoch": 0.011856642414443546,
392
+ "grad_norm": 0.10196210443973541,
393
+ "learning_rate": 0.0002,
394
+ "loss": 0.012628773227334023,
395
+ "step": 55
396
+ },
397
+ {
398
+ "epoch": 0.012072217731069793,
399
+ "grad_norm": 0.1851668357849121,
400
+ "learning_rate": 0.0002,
401
+ "loss": 0.007304077968001366,
402
+ "step": 56
403
+ },
404
+ {
405
+ "epoch": 0.012287793047696038,
406
+ "grad_norm": 0.09506778419017792,
407
+ "learning_rate": 0.0002,
408
+ "loss": 0.009885819628834724,
409
+ "step": 57
410
+ },
411
+ {
412
+ "epoch": 0.012503368364322285,
413
+ "grad_norm": 1.0429331064224243,
414
+ "learning_rate": 0.0002,
415
+ "loss": 0.00825510174036026,
416
+ "step": 58
417
+ },
418
+ {
419
+ "epoch": 0.012718943680948532,
420
+ "grad_norm": 0.08919516950845718,
421
+ "learning_rate": 0.0002,
422
+ "loss": 0.008733151480555534,
423
+ "step": 59
424
+ },
425
+ {
426
+ "epoch": 0.012934518997574777,
427
+ "grad_norm": 0.07233180105686188,
428
+ "learning_rate": 0.0002,
429
+ "loss": 0.007502330467104912,
430
+ "step": 60
431
+ },
432
+ {
433
+ "epoch": 0.013150094314201024,
434
+ "grad_norm": 0.12755893170833588,
435
+ "learning_rate": 0.0002,
436
+ "loss": 0.008441045880317688,
437
+ "step": 61
438
+ },
439
+ {
440
+ "epoch": 0.01336566963082727,
441
+ "grad_norm": 0.12750209867954254,
442
+ "learning_rate": 0.0002,
443
+ "loss": 0.009924261830747128,
444
+ "step": 62
445
+ },
446
+ {
447
+ "epoch": 0.013581244947453516,
448
+ "grad_norm": 0.11990515142679214,
449
+ "learning_rate": 0.0002,
450
+ "loss": 0.009097335860133171,
451
+ "step": 63
452
+ },
453
+ {
454
+ "epoch": 0.013796820264079763,
455
+ "grad_norm": 0.10748812556266785,
456
+ "learning_rate": 0.0002,
457
+ "loss": 0.009064102545380592,
458
+ "step": 64
459
+ },
460
+ {
461
+ "epoch": 0.01401239558070601,
462
+ "grad_norm": 0.13909393548965454,
463
+ "learning_rate": 0.0002,
464
+ "loss": 0.007015788462013006,
465
+ "step": 65
466
+ },
467
+ {
468
+ "epoch": 0.014227970897332255,
469
+ "grad_norm": 0.08622656762599945,
470
+ "learning_rate": 0.0002,
471
+ "loss": 0.008788645267486572,
472
+ "step": 66
473
+ },
474
+ {
475
+ "epoch": 0.014443546213958502,
476
+ "grad_norm": 0.17846918106079102,
477
+ "learning_rate": 0.0002,
478
+ "loss": 0.012987736612558365,
479
+ "step": 67
480
+ },
481
+ {
482
+ "epoch": 0.014659121530584749,
483
+ "grad_norm": 0.12868374586105347,
484
+ "learning_rate": 0.0002,
485
+ "loss": 0.010869989171624184,
486
+ "step": 68
487
+ },
488
+ {
489
+ "epoch": 0.014874696847210994,
490
+ "grad_norm": 0.30010759830474854,
491
+ "learning_rate": 0.0002,
492
+ "loss": 0.01126106921583414,
493
+ "step": 69
494
+ },
495
+ {
496
+ "epoch": 0.01509027216383724,
497
+ "grad_norm": 0.1034744381904602,
498
+ "learning_rate": 0.0002,
499
+ "loss": 0.008966062217950821,
500
+ "step": 70
501
+ },
502
+ {
503
+ "epoch": 0.015305847480463488,
504
+ "grad_norm": 0.11833963543176651,
505
+ "learning_rate": 0.0002,
506
+ "loss": 0.00806531123816967,
507
+ "step": 71
508
+ },
509
+ {
510
+ "epoch": 0.015521422797089733,
511
+ "grad_norm": 0.15848252177238464,
512
+ "learning_rate": 0.0002,
513
+ "loss": 0.010981461964547634,
514
+ "step": 72
515
+ },
516
+ {
517
+ "epoch": 0.01573699811371598,
518
+ "grad_norm": 0.08389270305633545,
519
+ "learning_rate": 0.0002,
520
+ "loss": 0.0057669407688081264,
521
+ "step": 73
522
+ },
523
+ {
524
+ "epoch": 0.015952573430342225,
525
+ "grad_norm": 0.0900215208530426,
526
+ "learning_rate": 0.0002,
527
+ "loss": 0.008691560477018356,
528
+ "step": 74
529
+ },
530
+ {
531
+ "epoch": 0.016168148746968473,
532
+ "grad_norm": 0.17846129834651947,
533
+ "learning_rate": 0.0002,
534
+ "loss": 0.009927794337272644,
535
+ "step": 75
536
+ },
537
+ {
538
+ "epoch": 0.01638372406359472,
539
+ "grad_norm": 0.10122981667518616,
540
+ "learning_rate": 0.0002,
541
+ "loss": 0.00906498171389103,
542
+ "step": 76
543
+ },
544
+ {
545
+ "epoch": 0.016599299380220964,
546
+ "grad_norm": 0.14186958968639374,
547
+ "learning_rate": 0.0002,
548
+ "loss": 0.008270910941064358,
549
+ "step": 77
550
+ },
551
+ {
552
+ "epoch": 0.016814874696847212,
553
+ "grad_norm": 0.11519192904233932,
554
+ "learning_rate": 0.0002,
555
+ "loss": 0.006747878156602383,
556
+ "step": 78
557
+ },
558
+ {
559
+ "epoch": 0.017030450013473458,
560
+ "grad_norm": 0.16740112006664276,
561
+ "learning_rate": 0.0002,
562
+ "loss": 0.009118085727095604,
563
+ "step": 79
564
+ },
565
+ {
566
+ "epoch": 0.017246025330099703,
567
+ "grad_norm": 0.11494499444961548,
568
+ "learning_rate": 0.0002,
569
+ "loss": 0.009879302233457565,
570
+ "step": 80
571
+ },
572
+ {
573
+ "epoch": 0.01746160064672595,
574
+ "grad_norm": 0.09631993621587753,
575
+ "learning_rate": 0.0002,
576
+ "loss": 0.010842856019735336,
577
+ "step": 81
578
+ },
579
+ {
580
+ "epoch": 0.017677175963352196,
581
+ "grad_norm": 0.13463567197322845,
582
+ "learning_rate": 0.0002,
583
+ "loss": 0.008765456266701221,
584
+ "step": 82
585
+ },
586
+ {
587
+ "epoch": 0.01789275127997844,
588
+ "grad_norm": 0.13754384219646454,
589
+ "learning_rate": 0.0002,
590
+ "loss": 0.009140546433627605,
591
+ "step": 83
592
+ },
593
+ {
594
+ "epoch": 0.01810832659660469,
595
+ "grad_norm": 0.13506032526493073,
596
+ "learning_rate": 0.0002,
597
+ "loss": 0.009798161685466766,
598
+ "step": 84
599
+ },
600
+ {
601
+ "epoch": 0.018323901913230935,
602
+ "grad_norm": 0.13916510343551636,
603
+ "learning_rate": 0.0002,
604
+ "loss": 0.008156916126608849,
605
+ "step": 85
606
+ },
607
+ {
608
+ "epoch": 0.01853947722985718,
609
+ "grad_norm": 0.16660340130329132,
610
+ "learning_rate": 0.0002,
611
+ "loss": 0.008743278682231903,
612
+ "step": 86
613
+ },
614
+ {
615
+ "epoch": 0.01875505254648343,
616
+ "grad_norm": 0.10949505120515823,
617
+ "learning_rate": 0.0002,
618
+ "loss": 0.010252988897264004,
619
+ "step": 87
620
+ },
621
+ {
622
+ "epoch": 0.018970627863109674,
623
+ "grad_norm": 0.08768336474895477,
624
+ "learning_rate": 0.0002,
625
+ "loss": 0.007359494920819998,
626
+ "step": 88
627
+ },
628
+ {
629
+ "epoch": 0.01918620317973592,
630
+ "grad_norm": 0.09033891558647156,
631
+ "learning_rate": 0.0002,
632
+ "loss": 0.007224436849355698,
633
+ "step": 89
634
+ },
635
+ {
636
+ "epoch": 0.019401778496362168,
637
+ "grad_norm": 0.09072108566761017,
638
+ "learning_rate": 0.0002,
639
+ "loss": 0.007737000472843647,
640
+ "step": 90
641
+ },
642
+ {
643
+ "epoch": 0.019617353812988413,
644
+ "grad_norm": 0.10658061504364014,
645
+ "learning_rate": 0.0002,
646
+ "loss": 0.007505964487791061,
647
+ "step": 91
648
+ },
649
+ {
650
+ "epoch": 0.01983292912961466,
651
+ "grad_norm": 0.1041012704372406,
652
+ "learning_rate": 0.0002,
653
+ "loss": 0.009607281535863876,
654
+ "step": 92
655
+ },
656
+ {
657
+ "epoch": 0.020048504446240907,
658
+ "grad_norm": 0.12774348258972168,
659
+ "learning_rate": 0.0002,
660
+ "loss": 0.011203747242689133,
661
+ "step": 93
662
+ },
663
+ {
664
+ "epoch": 0.020264079762867152,
665
+ "grad_norm": 0.09742172807455063,
666
+ "learning_rate": 0.0002,
667
+ "loss": 0.007369198836386204,
668
+ "step": 94
669
+ },
670
+ {
671
+ "epoch": 0.020479655079493397,
672
+ "grad_norm": 0.20940937101840973,
673
+ "learning_rate": 0.0002,
674
+ "loss": 0.0064979312010109425,
675
+ "step": 95
676
+ },
677
+ {
678
+ "epoch": 0.020695230396119646,
679
+ "grad_norm": 0.13251495361328125,
680
+ "learning_rate": 0.0002,
681
+ "loss": 0.0065713562071323395,
682
+ "step": 96
683
+ },
684
+ {
685
+ "epoch": 0.02091080571274589,
686
+ "grad_norm": 0.14764021337032318,
687
+ "learning_rate": 0.0002,
688
+ "loss": 0.009372049942612648,
689
+ "step": 97
690
+ },
691
+ {
692
+ "epoch": 0.021126381029372136,
693
+ "grad_norm": 0.09942134469747543,
694
+ "learning_rate": 0.0002,
695
+ "loss": 0.007254909258335829,
696
+ "step": 98
697
+ },
698
+ {
699
+ "epoch": 0.02134195634599838,
700
+ "grad_norm": 0.08200989663600922,
701
+ "learning_rate": 0.0002,
702
+ "loss": 0.008239559829235077,
703
+ "step": 99
704
+ },
705
+ {
706
+ "epoch": 0.02155753166262463,
707
+ "grad_norm": 0.12532088160514832,
708
+ "learning_rate": 0.0002,
709
+ "loss": 0.007804064080119133,
710
+ "step": 100
711
+ },
712
+ {
713
+ "epoch": 0.02155753166262463,
714
+ "eval_all_loss": 0.00810375064611435,
715
+ "eval_all_runtime": 38.3897,
716
+ "eval_all_samples_per_second": 13.337,
717
+ "eval_all_steps_per_second": 3.334,
718
+ "step": 100
719
+ },
720
+ {
721
+ "epoch": 0.02155753166262463,
722
+ "eval_anchor_loss": 0.004381533712148666,
723
+ "eval_anchor_runtime": 3.8631,
724
+ "eval_anchor_samples_per_second": 33.134,
725
+ "eval_anchor_steps_per_second": 8.283,
726
+ "step": 100
727
+ },
728
+ {
729
+ "epoch": 0.02155753166262463,
730
+ "eval_english_chat_loss": 0.008710602298378944,
731
+ "eval_english_chat_runtime": 23.0788,
732
+ "eval_english_chat_samples_per_second": 5.546,
733
+ "eval_english_chat_steps_per_second": 1.387,
734
+ "step": 100
735
+ },
736
+ {
737
+ "epoch": 0.02155753166262463,
738
+ "eval_hausa_chat_loss": 0.015651777386665344,
739
+ "eval_hausa_chat_runtime": 3.9816,
740
+ "eval_hausa_chat_samples_per_second": 32.147,
741
+ "eval_hausa_chat_steps_per_second": 8.037,
742
+ "step": 100
743
+ },
744
+ {
745
+ "epoch": 0.02155753166262463,
746
+ "eval_tool_loss": 0.003671091515570879,
747
+ "eval_tool_runtime": 6.7733,
748
+ "eval_tool_samples_per_second": 18.898,
749
+ "eval_tool_steps_per_second": 4.724,
750
+ "step": 100
751
+ }
752
+ ],
753
+ "logging_steps": 1,
754
+ "max_steps": 4639,
755
+ "num_input_tokens_seen": 0,
756
+ "num_train_epochs": 1,
757
+ "save_steps": 100,
758
+ "stateful_callbacks": {
759
+ "TrainerControl": {
760
+ "args": {
761
+ "should_epoch_stop": false,
762
+ "should_evaluate": false,
763
+ "should_log": false,
764
+ "should_save": true,
765
+ "should_training_stop": false
766
+ },
767
+ "attributes": {}
768
+ }
769
+ },
770
+ "total_flos": 1.9270422000304128e+17,
771
+ "train_batch_size": 2,
772
+ "trial_name": null,
773
+ "trial_params": null
774
+ }
training_args.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:b53a79113b09f5824e2f9104d88e0d1b5dbae24b8e93b4865a306c7a6fd1be19
3
+ size 5777