airev-ae commited on
Commit
40586e6
·
verified ·
1 Parent(s): 6f2ef54

Initial release: Gemma 4 E2B + SFT + GRPO (eval 0.940)

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,168 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: apache-2.0
3
+ language:
4
+ - en
5
+ base_model: google/gemma-4-E2B
6
+ tags:
7
+ - gemma-4
8
+ - plugin-orchestration
9
+ - function-calling
10
+ - grpo
11
+ - sft
12
+ - on-demand
13
+ - agentic
14
+ library_name: transformers
15
+ pipeline_tag: text-generation
16
+ ---
17
+
18
+ # Gemma-4-E2B On-Demand Plugin Orchestrator
19
+
20
+ **2B-active-parameter plugin selection and orchestration model, trained by [AIREV](https://airev.ai) for the [On-Demand](https://on-demand.io) plugin platform.**
21
+
22
+ Given a user request and a candidate pool of plugins, this model picks the correct subset, orders them with proper dependencies, and hydrates every API parameter — emitting a valid JSON plan that can be executed directly.
23
+
24
+ ---
25
+
26
+ ## Eval results (100-sample held-out On-Demand set)
27
+
28
+ | Model | Mean | JSON valid | Plugin-ID match | Count match | No-hallucinate | Hydrated | Deps chain |
29
+ |---|---|---|---|---|---|---|---|
30
+ | Gemma-4-E2B SFT-only (baseline) | 0.9180 | 95.0% | 89.0% | 93.0% | 95.0% | 95.0% | 87.0% |
31
+ | **Gemma-4-E2B SFT + GRPO (this model)** | **0.9400** | **97.0%** | **91.0%** | **96.0%** | **97.0%** | **97.0%** | **89.0%** |
32
+
33
+ **+2.2pp mean score = 26.8% relative error reduction over SFT-only.**
34
+
35
+ ### By category (GRPO wins on multi-step chains)
36
+
37
+ | Category | SFT | GRPO | Δ |
38
+ |---|---|---|---|
39
+ | 1_step | 0.923 | 0.923 | — |
40
+ | **2_step** | 0.950 | **1.000** | +5.0 |
41
+ | **3_step** | 0.936 | **0.976** | +4.0 |
42
+ | 4_step | 0.781 | 0.791 | +1.0 |
43
+ | multi_turn | 1.000 | 1.000 | — |
44
+
45
+ ---
46
+
47
+ ## Usage
48
+
49
+ ```python
50
+ from transformers import AutoModelForCausalLM, AutoTokenizer
51
+ import torch, json
52
+
53
+ model_id = "airev-ai/gemma-4-e2b-ondemand"
54
+ tok = AutoTokenizer.from_pretrained(model_id)
55
+ model = AutoModelForCausalLM.from_pretrained(
56
+ model_id, torch_dtype=torch.bfloat16
57
+ ).to("cuda")
58
+
59
+ system = ("You are an AI agent orchestrator. Given a user request and available "
60
+ "plugins/tools, generate a precise multi-step execution plan as a valid "
61
+ "JSON object. Each step must use available plugins with correct parameters, "
62
+ "proper types, and valid JSON formatting.")
63
+
64
+ candidates = [
65
+ {"pluginId": "plugin-1714851345", "name": "Nutrition BOT",
66
+ "description": "Nutrition type stuff", "identifier": "rest_api", "method": "POST"},
67
+ {"pluginId": "plugin-1768545918", "name": "kinetiqai-exercise-scoring",
68
+ "description": "Analyzes workout form using PoseTracker data",
69
+ "identifier": "rest_api", "method": "POST"},
70
+ # ... more candidates
71
+ ]
72
+
73
+ user_msg = (
74
+ f"YOUR TASK IS TO GENERATE A JSON STRICTLY and CORRECTLY\n"
75
+ f"{json.dumps(candidates, indent=2)}\n\n"
76
+ f"User Request: I want to improve my fitness routine — analyze my workout "
77
+ f"form, then get nutrition guidance."
78
+ )
79
+
80
+ prompt = tok.apply_chat_template(
81
+ [{"role": "system", "content": system},
82
+ {"role": "user", "content": user_msg}],
83
+ tokenize=False, add_generation_prompt=True,
84
+ )
85
+ ids = tok(prompt, return_tensors="pt").input_ids.to("cuda")
86
+ out = model.generate(ids, max_new_tokens=1024, temperature=0.1, do_sample=True, top_p=0.9)
87
+ response = tok.decode(out[0][ids.shape[1]:], skip_special_tokens=True)
88
+
89
+ # Response contains <think>...</think> followed by JSON:
90
+ # {"plugins": [{"pluginId": "...", "api_request_parameters": {...},
91
+ # "all_parameters_hydrated": true, "dependencies": [...]}]}
92
+ ```
93
+
94
+ ## Output format
95
+
96
+ The model emits:
97
+ 1. A `<think>...</think>` reasoning trace explaining plugin selection
98
+ 2. A JSON object: `{"plugins": [...]}` where each plugin has:
99
+ - `pluginId` (from the candidate list — never hallucinated)
100
+ - `name`, `description`, `identifier`, `method`
101
+ - `api_request_parameters` — fully hydrated, no placeholders
102
+ - `all_parameters_hydrated: true`
103
+ - `dependencies: []` — list of pluginIds that must run first
104
+
105
+ ## Training pipeline
106
+
107
+ ### 1. Data — 64,992 cleaned samples
108
+ - Source: real On-Demand production traces + synthetic plans
109
+ - Cleaning pipeline: deduplicated, JSON-validated, thinking tokens enforced,
110
+ parameters hydrated (no `example.com`, no empty values, no placeholders)
111
+ - Judge: Claude Opus 4.6 via Vertex AI, 100 parallel workers
112
+
113
+ ### 2. SFT — 194,976 steps, 3 epochs
114
+ - Base: `google/gemma-4-E2B` (5B total, 2B active, GDN hybrid)
115
+ - Optimizer: **Adafactor** (AdamW causes CUDA illegal memory access on Gemma 4)
116
+ - Single GPU only, no scheduler, no gradient clipping
117
+ - LR = 2e-5, batch_size = 1, grad_accum = 1, max_length = 1024
118
+ - Final loss: 0.1496 avg
119
+ - ~20 hours on 1× H100 80GB
120
+ - Eval score: **0.918**
121
+
122
+ ### 3. AutoResearch — 24 iterations hyperparameter search
123
+ - Claude Opus 4.6 mutations with ratchet (keep best config)
124
+ - Best finding: `num_plugins=6` candidates per prompt (down from 8)
125
+ - Everything else stayed at defaults: `lr=1e-6`, `num_generations=4`, `top_p=0.9`
126
+
127
+ ### 4. GRPO — 570 steps with plugin-selection reward
128
+ Reward (0.0–1.0) combines:
129
+ - 0.10 valid JSON
130
+ - 0.15 all picks in available candidate list
131
+ - 0.25 × (correct_picked / total_correct)
132
+ - 0.20 bonus for no wrong picks
133
+ - −0.10 × wrong picks (capped at 3)
134
+ - 0.10 exact count match
135
+ - 0.15 × hydration ratio
136
+
137
+ **Best checkpoint: step 500** — eval score **0.940**. Peak training-reward avg20 of 0.811 hit at step 473 before entering a noise-induced tail.
138
+
139
+ ## Architecture notes
140
+
141
+ - **Gemma-4-E2B** = 5B total params, 2B active (MoE), 128K context, GDN-style
142
+ - **Thinking tokens always active** — the model learned to use `<think>` for plugin reasoning
143
+ - **Adafactor is mandatory** for training — AdamW hits illegal memory access
144
+ - **Single GPU only** — `device_map="auto"` causes crashes
145
+ - **No LR scheduler, no gradient clipping** — these also destabilize training
146
+
147
+ ## Code
148
+
149
+ Full open-source training pipeline, AutoResearch harness, GRPO reward function,
150
+ and eval scripts available at: [github.com/mk42-ai/gemma-4-e2b-ondemand](https://github.com/mk42-ai/gemma-4-e2b-ondemand)
151
+
152
+ ## Acknowledgements
153
+
154
+ - Google DeepMind for Gemma 4
155
+ - Berkeley RAIL for the BFCL benchmark methodology
156
+ - HuggingFace TRL team for GRPO reference implementation
157
+ - AIREV infrastructure team for 8× H100 cluster access
158
+
159
+ ## Citation
160
+
161
+ ```bibtex
162
+ @misc{gemma4e2b_ondemand_2026,
163
+ title = {Gemma-4-E2B On-Demand: Plugin Orchestration via SFT + GRPO},
164
+ author = {Khalid, Muhammed and AIREV},
165
+ year = {2026},
166
+ url = {https://huggingface.co/airev-ai/gemma-4-e2b-ondemand},
167
+ }
168
+ ```
autoresearch_best.json ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "lr": 1e-06,
3
+ "num_generations": 4,
4
+ "num_plugins": 6,
5
+ "temperature": 0.4,
6
+ "top_p": 0.9,
7
+ "max_samples": 5000
8
+ }
autoresearch_history.json ADDED
@@ -0,0 +1,386 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [
2
+ {
3
+ "iter": 0,
4
+ "reward": 0.5908203124999999,
5
+ "kept": true,
6
+ "desc": "baseline",
7
+ "config": {
8
+ "lr": 1e-06,
9
+ "num_generations": 4,
10
+ "num_plugins": 8,
11
+ "temperature": 0.7,
12
+ "top_p": 0.9,
13
+ "max_samples": 5000
14
+ },
15
+ "steps": 16,
16
+ "timestamp": "2026-04-07T19:51:48.336071"
17
+ },
18
+ {
19
+ "iter": 1,
20
+ "reward": 0.57,
21
+ "kept": false,
22
+ "desc": "Increase learning rate from 1e-6 to 5e-6 to enable stronger policy updates and faster reward signal propagation in early training",
23
+ "config": {
24
+ "lr": 5e-06,
25
+ "num_generations": 4,
26
+ "num_plugins": 8,
27
+ "temperature": 0.7,
28
+ "top_p": 0.9,
29
+ "max_samples": 5000
30
+ },
31
+ "steps": 15,
32
+ "timestamp": "2026-04-07T20:00:15.469756"
33
+ },
34
+ {
35
+ "iter": 2,
36
+ "reward": 0.4546875000000001,
37
+ "kept": false,
38
+ "desc": "Increase num_generations from 4 to 8 to improve GRPO advantage estimation with more diverse completions per prompt",
39
+ "config": {
40
+ "lr": 1e-06,
41
+ "num_generations": 8,
42
+ "num_plugins": 8,
43
+ "temperature": 0.7,
44
+ "top_p": 0.9,
45
+ "max_samples": 5000
46
+ },
47
+ "steps": 15,
48
+ "timestamp": "2026-04-07T20:08:44.085994"
49
+ },
50
+ {
51
+ "iter": 3,
52
+ "reward": 0.49166666666666664,
53
+ "kept": false,
54
+ "desc": "Decrease temperature from 0.7 to 0.5 to reduce sampling noise and produce more focused completions for structured plugin selection",
55
+ "config": {
56
+ "lr": 1e-06,
57
+ "num_generations": 4,
58
+ "num_plugins": 8,
59
+ "temperature": 0.5,
60
+ "top_p": 0.9,
61
+ "max_samples": 5000
62
+ },
63
+ "steps": 15,
64
+ "timestamp": "2026-04-07T20:17:16.055154"
65
+ },
66
+ {
67
+ "iter": 4,
68
+ "reward": 0.53625,
69
+ "kept": false,
70
+ "desc": "Increase max_samples from 5000 to 7500 to provide more training signal for learning plugin selection patterns",
71
+ "config": {
72
+ "lr": 1e-06,
73
+ "num_generations": 4,
74
+ "num_plugins": 8,
75
+ "temperature": 0.7,
76
+ "top_p": 0.9,
77
+ "max_samples": 7500
78
+ },
79
+ "steps": 5,
80
+ "timestamp": "2026-04-07T20:21:14.945985"
81
+ },
82
+ {
83
+ "iter": 5,
84
+ "reward": 0.5251953125,
85
+ "kept": false,
86
+ "desc": "Increase temperature from 0.7 to 0.8 to improve exploration diversity for better GRPO advantage contrast",
87
+ "config": {
88
+ "lr": 1e-06,
89
+ "num_generations": 4,
90
+ "num_plugins": 8,
91
+ "temperature": 0.8,
92
+ "top_p": 0.9,
93
+ "max_samples": 5000
94
+ },
95
+ "steps": 16,
96
+ "timestamp": "2026-04-07T20:30:19.973845"
97
+ },
98
+ {
99
+ "iter": 6,
100
+ "reward": 0.5225000000000001,
101
+ "kept": false,
102
+ "desc": "Decrease top_p from 0.9 to 0.85 to gently reduce sampling noise by trimming low-probability tail tokens without overly constraining diversity like temperature reduction did",
103
+ "config": {
104
+ "lr": 1e-06,
105
+ "num_generations": 4,
106
+ "num_plugins": 8,
107
+ "temperature": 0.7,
108
+ "top_p": 0.85,
109
+ "max_samples": 5000
110
+ },
111
+ "steps": 15,
112
+ "timestamp": "2026-04-07T20:38:53.846596"
113
+ },
114
+ {
115
+ "iter": 7,
116
+ "reward": 0.558203125,
117
+ "kept": false,
118
+ "desc": "Slightly increase learning rate from 1e-6 to 2e-6 for modest improvement in policy updates without instability",
119
+ "config": {
120
+ "lr": 2e-06,
121
+ "num_generations": 4,
122
+ "num_plugins": 8,
123
+ "temperature": 0.7,
124
+ "top_p": 0.9,
125
+ "max_samples": 5000
126
+ },
127
+ "steps": 16,
128
+ "timestamp": "2026-04-07T20:47:54.889003"
129
+ },
130
+ {
131
+ "iter": 8,
132
+ "reward": 0.6212500000000001,
133
+ "kept": true,
134
+ "desc": "Decrease num_plugins from 8 to 6 to simplify the selection task and reduce distractors, enabling cleaner learning signal",
135
+ "config": {
136
+ "lr": 1e-06,
137
+ "num_generations": 4,
138
+ "num_plugins": 6,
139
+ "temperature": 0.7,
140
+ "top_p": 0.9,
141
+ "max_samples": 5000
142
+ },
143
+ "steps": 5,
144
+ "timestamp": "2026-04-07T20:51:53.605514"
145
+ },
146
+ {
147
+ "iter": 9,
148
+ "reward": 0.6039583333333333,
149
+ "kept": false,
150
+ "desc": "Decrease num_plugins from 6 to 5 to further simplify plugin selection and reduce distractors",
151
+ "config": {
152
+ "lr": 1e-06,
153
+ "num_generations": 4,
154
+ "num_plugins": 5,
155
+ "temperature": 0.7,
156
+ "top_p": 0.9,
157
+ "max_samples": 5000
158
+ },
159
+ "steps": 15,
160
+ "timestamp": "2026-04-07T21:00:24.045740"
161
+ },
162
+ {
163
+ "iter": 10,
164
+ "reward": 0.5748046875,
165
+ "kept": false,
166
+ "desc": "Very slightly increase learning rate from 1e-6 to 1.5e-6 for a gentle boost in learning speed without destabilization",
167
+ "config": {
168
+ "lr": 1.5e-06,
169
+ "num_generations": 4,
170
+ "num_plugins": 6,
171
+ "temperature": 0.7,
172
+ "top_p": 0.9,
173
+ "max_samples": 5000
174
+ },
175
+ "steps": 16,
176
+ "timestamp": "2026-04-07T21:09:19.564525"
177
+ },
178
+ {
179
+ "iter": 11,
180
+ "reward": 0.458125,
181
+ "kept": false,
182
+ "desc": "Increase learning rate from 1e-6 to 3e-6 to accelerate learning on the now-simpler 6-plugin task where reward signal is cleaner",
183
+ "config": {
184
+ "lr": 3e-06,
185
+ "num_generations": 4,
186
+ "num_plugins": 6,
187
+ "temperature": 0.7,
188
+ "top_p": 0.9,
189
+ "max_samples": 5000
190
+ },
191
+ "steps": 15,
192
+ "timestamp": "2026-04-07T21:17:52.704223"
193
+ },
194
+ {
195
+ "iter": 12,
196
+ "reward": 0.626875,
197
+ "kept": true,
198
+ "desc": "Decrease temperature from 0.7 to 0.5 to produce more focused completions, which combined with the simpler 6-plugin task should improve reward signal quality for GRPO.",
199
+ "config": {
200
+ "lr": 1e-06,
201
+ "num_generations": 4,
202
+ "num_plugins": 6,
203
+ "temperature": 0.5,
204
+ "top_p": 0.9,
205
+ "max_samples": 5000
206
+ },
207
+ "steps": 10,
208
+ "timestamp": "2026-04-07T21:24:36.267719"
209
+ },
210
+ {
211
+ "iter": 13,
212
+ "reward": 0.6106250000000001,
213
+ "kept": false,
214
+ "desc": "Increase num_generations from 4 to 8 to provide richer advantage estimation per prompt for more stable GRPO updates",
215
+ "config": {
216
+ "lr": 1e-06,
217
+ "num_generations": 8,
218
+ "num_plugins": 6,
219
+ "temperature": 0.5,
220
+ "top_p": 0.9,
221
+ "max_samples": 5000
222
+ },
223
+ "steps": 15,
224
+ "timestamp": "2026-04-07T21:33:19.428449"
225
+ },
226
+ {
227
+ "iter": 14,
228
+ "reward": 0.5841796875,
229
+ "kept": false,
230
+ "desc": "Increase learning rate from 1e-6 to 2e-6, which previously showed promise (#7) and may benefit more from the current improved base config (fewer plugins + lower temperature)",
231
+ "config": {
232
+ "lr": 2e-06,
233
+ "num_generations": 4,
234
+ "num_plugins": 6,
235
+ "temperature": 0.5,
236
+ "top_p": 0.9,
237
+ "max_samples": 5000
238
+ },
239
+ "steps": 16,
240
+ "timestamp": "2026-04-07T21:42:12.799803"
241
+ },
242
+ {
243
+ "iter": 15,
244
+ "reward": 0.5007812500000001,
245
+ "kept": false,
246
+ "desc": "Decrease top_p from 0.9 to 0.8 to further sharpen sampling distribution, complementing the already-low temperature of 0.5",
247
+ "config": {
248
+ "lr": 1e-06,
249
+ "num_generations": 4,
250
+ "num_plugins": 6,
251
+ "temperature": 0.5,
252
+ "top_p": 0.8,
253
+ "max_samples": 5000
254
+ },
255
+ "steps": 16,
256
+ "timestamp": "2026-04-07T21:51:10.044767"
257
+ },
258
+ {
259
+ "iter": 16,
260
+ "reward": 0.6127672697368421,
261
+ "kept": false,
262
+ "desc": "Increase max_samples from 5000 to 7500 to provide more training data for better generalization with the current simplified and focused setup",
263
+ "config": {
264
+ "lr": 1e-06,
265
+ "num_generations": 4,
266
+ "num_plugins": 6,
267
+ "temperature": 0.5,
268
+ "top_p": 0.9,
269
+ "max_samples": 7500
270
+ },
271
+ "steps": 16,
272
+ "timestamp": "2026-04-07T22:00:01.729876"
273
+ },
274
+ {
275
+ "iter": 17,
276
+ "reward": 0.615,
277
+ "kept": false,
278
+ "desc": "Decrease temperature from 0.5 to 0.3 to further sharpen sampling for this structured selection task where deterministic outputs are beneficial",
279
+ "config": {
280
+ "lr": 1e-06,
281
+ "num_generations": 4,
282
+ "num_plugins": 6,
283
+ "temperature": 0.3,
284
+ "top_p": 0.9,
285
+ "max_samples": 5000
286
+ },
287
+ "steps": 15,
288
+ "timestamp": "2026-04-07T22:08:35.075433"
289
+ },
290
+ {
291
+ "iter": 18,
292
+ "reward": 0.5783333333333333,
293
+ "kept": false,
294
+ "desc": "Decrease learning rate from 1e-6 to 5e-7 to reduce update magnitude and improve training stability, since all higher LR attempts degraded performance",
295
+ "config": {
296
+ "lr": 5e-07,
297
+ "num_generations": 4,
298
+ "num_plugins": 6,
299
+ "temperature": 0.5,
300
+ "top_p": 0.9,
301
+ "max_samples": 5000
302
+ },
303
+ "steps": 15,
304
+ "timestamp": "2026-04-07T22:17:05.348585"
305
+ },
306
+ {
307
+ "iter": 19,
308
+ "reward": 0.6498046874999999,
309
+ "kept": true,
310
+ "desc": "Decrease temperature from 0.5 to 0.4 to explore the sweet spot between 0.3 (0.6150) and 0.5 (0.6269)",
311
+ "config": {
312
+ "lr": 1e-06,
313
+ "num_generations": 4,
314
+ "num_plugins": 6,
315
+ "temperature": 0.4,
316
+ "top_p": 0.9,
317
+ "max_samples": 5000
318
+ },
319
+ "steps": 16,
320
+ "timestamp": "2026-04-07T22:25:57.555577"
321
+ },
322
+ {
323
+ "iter": 20,
324
+ "reward": 0.5578125,
325
+ "kept": false,
326
+ "desc": "Very slightly increase learning rate from 1e-6 to 1.2e-6 to gently accelerate learning, leveraging the cleaner gradient signal from the low temperature=0.4 sampling",
327
+ "config": {
328
+ "lr": 1.2e-06,
329
+ "num_generations": 4,
330
+ "num_plugins": 6,
331
+ "temperature": 0.4,
332
+ "top_p": 0.9,
333
+ "max_samples": 5000
334
+ },
335
+ "steps": 16,
336
+ "timestamp": "2026-04-07T22:35:01.497719"
337
+ },
338
+ {
339
+ "iter": 21,
340
+ "reward": 0.6030555555555556,
341
+ "kept": false,
342
+ "desc": "Increase num_generations from 4 to 6 for better GRPO advantage estimation without the instability seen at 8",
343
+ "config": {
344
+ "lr": 1e-06,
345
+ "num_generations": 6,
346
+ "num_plugins": 6,
347
+ "temperature": 0.4,
348
+ "top_p": 0.9,
349
+ "max_samples": 5000
350
+ },
351
+ "steps": 15,
352
+ "timestamp": "2026-04-07T22:43:35.332127"
353
+ },
354
+ {
355
+ "iter": 22,
356
+ "reward": 0.5446875,
357
+ "kept": false,
358
+ "desc": "Decrease num_plugins from 6 to 5 to reduce distractor plugins, making selection easier and boosting correct pick rewards",
359
+ "config": {
360
+ "lr": 1e-06,
361
+ "num_generations": 4,
362
+ "num_plugins": 5,
363
+ "temperature": 0.4,
364
+ "top_p": 0.9,
365
+ "max_samples": 5000
366
+ },
367
+ "steps": 10,
368
+ "timestamp": "2026-04-07T22:50:41.402506"
369
+ },
370
+ {
371
+ "iter": 23,
372
+ "reward": 0.532421875,
373
+ "kept": false,
374
+ "desc": "Increase top_p from 0.9 to 0.95 to allow slightly broader nucleus sampling, complementing the already-focused temperature=0.4 for better exploration during GRPO generation.",
375
+ "config": {
376
+ "lr": 1e-06,
377
+ "num_generations": 4,
378
+ "num_plugins": 6,
379
+ "temperature": 0.4,
380
+ "top_p": 0.95,
381
+ "max_samples": 5000
382
+ },
383
+ "steps": 16,
384
+ "timestamp": "2026-04-07T22:59:41.386140"
385
+ }
386
+ ]
chat_template.jinja ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ {% for message in messages %}{% if message.role == "system" %}<start_of_turn>system
2
+ {{ message.content }}<end_of_turn>
3
+ {% elif message.role == "user" %}<start_of_turn>user
4
+ {{ message.content }}<end_of_turn>
5
+ {% elif message.role == "assistant" %}<start_of_turn>model
6
+ {{ message.content }}<end_of_turn>
7
+ {% endif %}{% endfor %}{% if add_generation_prompt %}<start_of_turn>model
8
+ {% endif %}
config.json ADDED
@@ -0,0 +1,188 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architectures": [
3
+ "Gemma4ForConditionalGeneration"
4
+ ],
5
+ "audio_config": {
6
+ "_name_or_path": "",
7
+ "architectures": null,
8
+ "attention_chunk_size": 12,
9
+ "attention_context_left": 13,
10
+ "attention_context_right": 0,
11
+ "attention_invalid_logits_value": -1000000000.0,
12
+ "attention_logit_cap": 50.0,
13
+ "chunk_size_feed_forward": 0,
14
+ "conv_kernel_size": 5,
15
+ "dtype": "bfloat16",
16
+ "gradient_clipping": 10000000000.0,
17
+ "hidden_act": "silu",
18
+ "hidden_size": 1024,
19
+ "id2label": {
20
+ "0": "LABEL_0",
21
+ "1": "LABEL_1"
22
+ },
23
+ "initializer_range": 0.02,
24
+ "is_encoder_decoder": false,
25
+ "label2id": {
26
+ "LABEL_0": 0,
27
+ "LABEL_1": 1
28
+ },
29
+ "model_type": "gemma4_audio",
30
+ "num_attention_heads": 8,
31
+ "num_hidden_layers": 12,
32
+ "output_attentions": false,
33
+ "output_hidden_states": false,
34
+ "output_proj_dims": 1536,
35
+ "problem_type": null,
36
+ "residual_weight": 0.5,
37
+ "return_dict": true,
38
+ "rms_norm_eps": 1e-06,
39
+ "subsampling_conv_channels": [
40
+ 128,
41
+ 32
42
+ ],
43
+ "use_clipped_linears": true
44
+ },
45
+ "audio_token_id": 258881,
46
+ "boa_token_id": 256000,
47
+ "boi_token_id": 255999,
48
+ "dtype": "bfloat16",
49
+ "eoa_token_id": 258883,
50
+ "eoa_token_index": 258883,
51
+ "eoi_token_id": 258882,
52
+ "image_token_id": 258880,
53
+ "initializer_range": 0.02,
54
+ "model_type": "gemma4",
55
+ "text_config": {
56
+ "attention_bias": false,
57
+ "attention_dropout": 0.0,
58
+ "attention_k_eq_v": false,
59
+ "bos_token_id": 2,
60
+ "dtype": "bfloat16",
61
+ "enable_moe_block": false,
62
+ "eos_token_id": 1,
63
+ "expert_intermediate_size": null,
64
+ "final_logit_softcapping": 30.0,
65
+ "global_head_dim": 512,
66
+ "head_dim": 256,
67
+ "hidden_activation": "gelu_pytorch_tanh",
68
+ "hidden_size": 1536,
69
+ "hidden_size_per_layer_input": 256,
70
+ "initializer_range": 0.02,
71
+ "intermediate_size": 6144,
72
+ "layer_types": [
73
+ "sliding_attention",
74
+ "sliding_attention",
75
+ "sliding_attention",
76
+ "sliding_attention",
77
+ "full_attention",
78
+ "sliding_attention",
79
+ "sliding_attention",
80
+ "sliding_attention",
81
+ "sliding_attention",
82
+ "full_attention",
83
+ "sliding_attention",
84
+ "sliding_attention",
85
+ "sliding_attention",
86
+ "sliding_attention",
87
+ "full_attention",
88
+ "sliding_attention",
89
+ "sliding_attention",
90
+ "sliding_attention",
91
+ "sliding_attention",
92
+ "full_attention",
93
+ "sliding_attention",
94
+ "sliding_attention",
95
+ "sliding_attention",
96
+ "sliding_attention",
97
+ "full_attention",
98
+ "sliding_attention",
99
+ "sliding_attention",
100
+ "sliding_attention",
101
+ "sliding_attention",
102
+ "full_attention",
103
+ "sliding_attention",
104
+ "sliding_attention",
105
+ "sliding_attention",
106
+ "sliding_attention",
107
+ "full_attention"
108
+ ],
109
+ "max_position_embeddings": 131072,
110
+ "model_type": "gemma4_text",
111
+ "moe_intermediate_size": null,
112
+ "num_attention_heads": 8,
113
+ "num_experts": null,
114
+ "num_global_key_value_heads": null,
115
+ "num_hidden_layers": 35,
116
+ "num_key_value_heads": 1,
117
+ "num_kv_shared_layers": 20,
118
+ "pad_token_id": 0,
119
+ "rms_norm_eps": 1e-06,
120
+ "rope_parameters": {
121
+ "full_attention": {
122
+ "partial_rotary_factor": 0.25,
123
+ "rope_theta": 1000000.0,
124
+ "rope_type": "proportional"
125
+ },
126
+ "sliding_attention": {
127
+ "rope_theta": 10000.0,
128
+ "rope_type": "default"
129
+ }
130
+ },
131
+ "sliding_window": 512,
132
+ "tie_word_embeddings": true,
133
+ "top_k_experts": null,
134
+ "use_bidirectional_attention": null,
135
+ "use_cache": true,
136
+ "use_double_wide_mlp": true,
137
+ "vocab_size": 262144,
138
+ "vocab_size_per_layer_input": 262144
139
+ },
140
+ "tie_word_embeddings": true,
141
+ "transformers_version": "5.5.0",
142
+ "use_cache": false,
143
+ "video_token_id": 258884,
144
+ "vision_config": {
145
+ "_name_or_path": "",
146
+ "architectures": null,
147
+ "attention_bias": false,
148
+ "attention_dropout": 0.0,
149
+ "chunk_size_feed_forward": 0,
150
+ "default_output_length": 280,
151
+ "dtype": "bfloat16",
152
+ "global_head_dim": 64,
153
+ "head_dim": 64,
154
+ "hidden_activation": "gelu_pytorch_tanh",
155
+ "hidden_size": 768,
156
+ "id2label": {
157
+ "0": "LABEL_0",
158
+ "1": "LABEL_1"
159
+ },
160
+ "initializer_range": 0.02,
161
+ "intermediate_size": 3072,
162
+ "is_encoder_decoder": false,
163
+ "label2id": {
164
+ "LABEL_0": 0,
165
+ "LABEL_1": 1
166
+ },
167
+ "max_position_embeddings": 131072,
168
+ "model_type": "gemma4_vision",
169
+ "num_attention_heads": 12,
170
+ "num_hidden_layers": 16,
171
+ "num_key_value_heads": 12,
172
+ "output_attentions": false,
173
+ "output_hidden_states": false,
174
+ "patch_size": 16,
175
+ "pooling_kernel_size": 3,
176
+ "position_embedding_size": 10240,
177
+ "problem_type": null,
178
+ "return_dict": true,
179
+ "rms_norm_eps": 1e-06,
180
+ "rope_parameters": {
181
+ "rope_theta": 100.0,
182
+ "rope_type": "default"
183
+ },
184
+ "standardize": false,
185
+ "use_clipped_linears": true
186
+ },
187
+ "vision_soft_tokens_per_image": 280
188
+ }
eval_results.json ADDED
@@ -0,0 +1,78 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [
2
+ {
3
+ "model": "/root/checkpoints/gemma4_adafactor/final",
4
+ "n_samples": 100,
5
+ "elapsed_sec": 2972.9,
6
+ "mean_score": 0.918,
7
+ "pct_valid_json": 95.0,
8
+ "pct_pid_match": 89.0,
9
+ "pct_count_match": 93.0,
10
+ "pct_all_in_avail": 95.0,
11
+ "pct_hydrated": 95.0,
12
+ "pct_deps_match": 87.0,
13
+ "by_category": {
14
+ "3_step": 0.936,
15
+ "multi_turn": 1.0,
16
+ "4_step": 0.781,
17
+ "2_step": 0.95,
18
+ "1_step": 0.9231
19
+ }
20
+ },
21
+ {
22
+ "model": "/root/checkpoints/gemma4_grpo_v2/checkpoint-200",
23
+ "n_samples": 100,
24
+ "elapsed_sec": 2949.6,
25
+ "mean_score": 0.918,
26
+ "pct_valid_json": 96.0,
27
+ "pct_pid_match": 88.0,
28
+ "pct_count_match": 92.0,
29
+ "pct_all_in_avail": 96.0,
30
+ "pct_hydrated": 96.0,
31
+ "pct_deps_match": 87.0,
32
+ "by_category": {
33
+ "3_step": 0.968,
34
+ "multi_turn": 0.9524,
35
+ "4_step": 0.7429,
36
+ "2_step": 1.0,
37
+ "1_step": 0.9231
38
+ }
39
+ },
40
+ {
41
+ "model": "/root/checkpoints/gemma4_grpo_v2/checkpoint-500",
42
+ "n_samples": 100,
43
+ "elapsed_sec": 2946.2,
44
+ "mean_score": 0.94,
45
+ "pct_valid_json": 97.0,
46
+ "pct_pid_match": 91.0,
47
+ "pct_count_match": 96.0,
48
+ "pct_all_in_avail": 97.0,
49
+ "pct_hydrated": 97.0,
50
+ "pct_deps_match": 89.0,
51
+ "by_category": {
52
+ "3_step": 0.976,
53
+ "multi_turn": 1.0,
54
+ "4_step": 0.7905,
55
+ "2_step": 1.0,
56
+ "1_step": 0.9231
57
+ }
58
+ },
59
+ {
60
+ "model": "/root/checkpoints/gemma4_grpo_v2/final",
61
+ "n_samples": 100,
62
+ "elapsed_sec": 2977.0,
63
+ "mean_score": 0.934,
64
+ "pct_valid_json": 97.0,
65
+ "pct_pid_match": 90.0,
66
+ "pct_count_match": 94.0,
67
+ "pct_all_in_avail": 97.0,
68
+ "pct_hydrated": 97.0,
69
+ "pct_deps_match": 89.0,
70
+ "by_category": {
71
+ "3_step": 0.992,
72
+ "multi_turn": 0.9524,
73
+ "4_step": 0.7429,
74
+ "2_step": 1.0,
75
+ "1_step": 1.0
76
+ }
77
+ }
78
+ ]
generation_config.json ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "bos_token_id": 2,
3
+ "do_sample": true,
4
+ "eos_token_id": 1,
5
+ "pad_token_id": 0,
6
+ "temperature": 1.0,
7
+ "top_k": 64,
8
+ "top_p": 0.95,
9
+ "transformers_version": "5.5.0"
10
+ }
grpo_metrics.json ADDED
@@ -0,0 +1,578 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "final_reward_avg20": 0.6996874999999999,
3
+ "final_reward_avg_all": 0.6659301900584759,
4
+ "best_reward": 0.95,
5
+ "total_steps": 570,
6
+ "reward_history": [
7
+ 0.825,
8
+ 0.95,
9
+ 0.6593749999999999,
10
+ 0.6124999999999999,
11
+ 0.825,
12
+ 0.5375,
13
+ 0.6749999999999999,
14
+ 0.12499999999999997,
15
+ 0.825,
16
+ 0.6000000000000001,
17
+ 0.825,
18
+ 0.4,
19
+ 0.50625,
20
+ 0.6124999999999999,
21
+ 0.825,
22
+ 0.825,
23
+ 0.95,
24
+ 0.825,
25
+ 0.69375,
26
+ 0.7812499999999999,
27
+ 0.4,
28
+ 0.50625,
29
+ 0.4875,
30
+ 0.4,
31
+ 0.12499999999999997,
32
+ 0.825,
33
+ 0.825,
34
+ 0.825,
35
+ 0.825,
36
+ 0.85625,
37
+ 0.43125,
38
+ 0.0,
39
+ 0.390625,
40
+ 0.825,
41
+ 0.30000000000000004,
42
+ 0.64375,
43
+ 0.6125,
44
+ 0.353125,
45
+ 0.4,
46
+ 0.4,
47
+ 0.825,
48
+ 0.825,
49
+ 0.50625,
50
+ 0.825,
51
+ 0.95,
52
+ 0.85625,
53
+ 0.6187499999999999,
54
+ 0.825,
55
+ 0.825,
56
+ 0.4,
57
+ 0.825,
58
+ 0.4,
59
+ 0.4,
60
+ 0.6124999999999999,
61
+ 0.825,
62
+ 0.825,
63
+ 0.30625,
64
+ 0.0,
65
+ 0.8124999999999999,
66
+ 0.7593749999999999,
67
+ 0.825,
68
+ 0.825,
69
+ 0.95,
70
+ 0.0,
71
+ 0.4,
72
+ 0.3,
73
+ 0.825,
74
+ 0.4,
75
+ 0.4,
76
+ 0.6312500000000001,
77
+ 0.50625,
78
+ 0.85625,
79
+ 0.71875,
80
+ 0.4,
81
+ 0.5062500000000001,
82
+ 0.50625,
83
+ 0.4,
84
+ 0.825,
85
+ 0.825,
86
+ 0.615625,
87
+ 0.4,
88
+ 0.71875,
89
+ 0.825,
90
+ 0.825,
91
+ 0.825,
92
+ 0.825,
93
+ 0.5375,
94
+ 0.91875,
95
+ 0.4,
96
+ 0.95,
97
+ 0.95,
98
+ 0.825,
99
+ 0.0,
100
+ 0.8875,
101
+ 0.40625,
102
+ 0.825,
103
+ 0.825,
104
+ 0.4,
105
+ 0.725,
106
+ 0.4062499999999999,
107
+ 0.825,
108
+ 0.95,
109
+ 0.315625,
110
+ 0.68125,
111
+ 0.95,
112
+ 0.30000000000000004,
113
+ 0.0,
114
+ 0.4,
115
+ 0.95,
116
+ 0.825,
117
+ 0.5375,
118
+ 0.09999999999999995,
119
+ 0.95,
120
+ 0.703125,
121
+ 0.4,
122
+ 0.71875,
123
+ 0.4,
124
+ 0.95,
125
+ 0.825,
126
+ 0.4,
127
+ 0.6625,
128
+ 0.6125,
129
+ 0.6187499999999999,
130
+ 0.8125,
131
+ 0.4,
132
+ 0.825,
133
+ 0.825,
134
+ 0.175,
135
+ 0.95,
136
+ 0.4,
137
+ 0.95,
138
+ 0.4,
139
+ 0.925,
140
+ 0.825,
141
+ 0.4,
142
+ 0.825,
143
+ 0.95,
144
+ 0.91875,
145
+ 0.4,
146
+ 0.825,
147
+ 0.765625,
148
+ 0.95,
149
+ 0.6625,
150
+ 0.91875,
151
+ 0.825,
152
+ 0.95,
153
+ 0.50625,
154
+ 0.40624999999999994,
155
+ 0.725,
156
+ 0.54375,
157
+ 0.4,
158
+ 0.825,
159
+ 0.825,
160
+ 0.5718749999999999,
161
+ 0.5375,
162
+ 0.4,
163
+ 0.95,
164
+ 0.825,
165
+ 0.95,
166
+ 0.825,
167
+ 0.0,
168
+ 0.825,
169
+ 0.6187499999999999,
170
+ 0.0,
171
+ 0.6125,
172
+ 0.71875,
173
+ 0.4,
174
+ 0.4375,
175
+ 0.50625,
176
+ 0.6124999999999999,
177
+ 0.4,
178
+ 0.675,
179
+ 0.7187499999999999,
180
+ 0.8875,
181
+ 0.95,
182
+ 0.328125,
183
+ 0.50625,
184
+ 0.71875,
185
+ 0.95,
186
+ 0.825,
187
+ 0.275,
188
+ 0.95,
189
+ 0.36875,
190
+ 0.825,
191
+ 0.475,
192
+ 0.95,
193
+ 0.825,
194
+ 0.4,
195
+ 0.6125,
196
+ 0.95,
197
+ 0.825,
198
+ 0.825,
199
+ 0.825,
200
+ 0.825,
201
+ 0.825,
202
+ 0.825,
203
+ 0.825,
204
+ 0.45937500000000003,
205
+ 0.253125,
206
+ 0.825,
207
+ 0.26249999999999996,
208
+ 0.825,
209
+ 0.725,
210
+ 0.825,
211
+ 0.38125000000000003,
212
+ 0.50625,
213
+ 0.91875,
214
+ 0.7999999999999999,
215
+ 0.31249999999999994,
216
+ 0.825,
217
+ 0.825,
218
+ 0.6625,
219
+ 0.6124999999999999,
220
+ 0.825,
221
+ 0.7062499999999999,
222
+ 0.69375,
223
+ 0.95,
224
+ 0.64375,
225
+ 0.5093749999999999,
226
+ 0.28125,
227
+ 0.825,
228
+ 0.71875,
229
+ 0.95,
230
+ 0.7187499999999999,
231
+ 0.4,
232
+ 0.95,
233
+ 0.825,
234
+ 0.825,
235
+ 0.825,
236
+ 0.95,
237
+ 0.20625,
238
+ 0.4,
239
+ 0.95,
240
+ 0.825,
241
+ 0.85625,
242
+ 0.4,
243
+ 0.7718750000000001,
244
+ 0.85625,
245
+ 0.78125,
246
+ 0.6124999999999999,
247
+ 0.225,
248
+ 0.6843750000000001,
249
+ 0.95,
250
+ 0.825,
251
+ 0.58125,
252
+ 0.4,
253
+ 0.4,
254
+ 0.825,
255
+ 0.825,
256
+ 0.825,
257
+ 0.95,
258
+ 0.95,
259
+ 0.825,
260
+ 0.58125,
261
+ 0.825,
262
+ 0.825,
263
+ 0.6124999999999999,
264
+ 0.825,
265
+ 0.95,
266
+ 0.825,
267
+ 0.0,
268
+ 0.68125,
269
+ 0.71875,
270
+ 0.51875,
271
+ 0.95,
272
+ 0.825,
273
+ 0.95,
274
+ 0.825,
275
+ 0.825,
276
+ 0.825,
277
+ 0.5375,
278
+ 0.4,
279
+ 0.50625,
280
+ 0.4,
281
+ 0.3,
282
+ 0.825,
283
+ 0.95,
284
+ 0.4,
285
+ 0.5625,
286
+ 0.825,
287
+ 0.825,
288
+ 0.825,
289
+ 0.0,
290
+ 0.4,
291
+ 0.4,
292
+ 0.725,
293
+ 0.85625,
294
+ 0.4,
295
+ 0.6875,
296
+ 0.71875,
297
+ 0.64375,
298
+ 0.825,
299
+ 0.50625,
300
+ 0.825,
301
+ 0.825,
302
+ 0.95,
303
+ 0.95,
304
+ 0.6125,
305
+ 0.4,
306
+ 0.4,
307
+ 0.825,
308
+ 0.825,
309
+ 0.825,
310
+ 0.8875,
311
+ 0.825,
312
+ 0.4,
313
+ 0.5375000000000001,
314
+ 0.91875,
315
+ 0.95,
316
+ 0.6625,
317
+ 0.4,
318
+ 0.6375,
319
+ 0.7124999999999999,
320
+ 0.4,
321
+ 0.85625,
322
+ 0.825,
323
+ 0.825,
324
+ 0.825,
325
+ 0.6125,
326
+ 0.40312499999999996,
327
+ 0.825,
328
+ 0.0,
329
+ 0.6625,
330
+ 0.725,
331
+ 0.50625,
332
+ 0.825,
333
+ 0.6499999999999999,
334
+ 0.825,
335
+ 0.825,
336
+ 0.20625,
337
+ 0.825,
338
+ 0.95,
339
+ 0.825,
340
+ 0.603125,
341
+ 0.825,
342
+ 0.35624999999999996,
343
+ 0.0,
344
+ 0.4,
345
+ 0.95,
346
+ 0.725,
347
+ 0.6125,
348
+ 0.4,
349
+ 0.725,
350
+ 0.825,
351
+ 0.48124999999999996,
352
+ 0.825,
353
+ 0.4,
354
+ 0.95,
355
+ 0.6187499999999999,
356
+ 0.95,
357
+ 0.825,
358
+ 0.91875,
359
+ 0.765625,
360
+ 0.4,
361
+ 0.4,
362
+ 0.83125,
363
+ 0.7562500000000001,
364
+ 0.71875,
365
+ 0.95,
366
+ 0.64375,
367
+ 0.4,
368
+ 0.4,
369
+ 0.709375,
370
+ 0.825,
371
+ 0.825,
372
+ 0.540625,
373
+ 0.825,
374
+ 0.31875,
375
+ 0.6625,
376
+ 0.825,
377
+ 0.4,
378
+ 0.71875,
379
+ 0.49687499999999996,
380
+ 0.09062499999999998,
381
+ 0.35625,
382
+ 0.95,
383
+ 0.8875,
384
+ 0.825,
385
+ 0.825,
386
+ 0.584375,
387
+ 0.825,
388
+ 0.825,
389
+ 0.825,
390
+ 0.5375000000000001,
391
+ 0.71875,
392
+ 0.825,
393
+ 0.95,
394
+ 0.825,
395
+ 0.825,
396
+ 0.4,
397
+ 0.6124999999999999,
398
+ 0.825,
399
+ 0.825,
400
+ 0.4,
401
+ 0.47187499999999993,
402
+ 0.0,
403
+ 0.50625,
404
+ 0.71875,
405
+ 0.825,
406
+ 0.4,
407
+ 0.825,
408
+ 0.36875,
409
+ 0.95,
410
+ 0.825,
411
+ 0.4,
412
+ 0.578125,
413
+ 0.4,
414
+ 0.825,
415
+ 0.65625,
416
+ 0.95,
417
+ 0.5656249999999999,
418
+ 0.89375,
419
+ 0.95,
420
+ 0.825,
421
+ 0.725,
422
+ 0.825,
423
+ 0.95,
424
+ 0.825,
425
+ 0.4,
426
+ 0.33125,
427
+ 0.95,
428
+ 0.825,
429
+ 0.825,
430
+ 0.703125,
431
+ 0.95,
432
+ 0.725,
433
+ 0.825,
434
+ 0.85625,
435
+ 0.4,
436
+ 0.35,
437
+ 0.95,
438
+ 0.95,
439
+ 0.4,
440
+ 0.825,
441
+ 0.825,
442
+ 0.4,
443
+ 0.85625,
444
+ 0.825,
445
+ 0.95,
446
+ 0.95,
447
+ 0.0,
448
+ 0.71875,
449
+ 0.6125,
450
+ 0.95,
451
+ 0.43125,
452
+ 0.0,
453
+ 0.825,
454
+ 0.71875,
455
+ 0.91875,
456
+ 0.725,
457
+ 0.825,
458
+ 0.825,
459
+ 0.49999999999999994,
460
+ 0.85625,
461
+ 0.825,
462
+ 0.4,
463
+ 0.95,
464
+ 0.825,
465
+ 0.825,
466
+ 0.95,
467
+ 0.825,
468
+ 0.7833333333333333,
469
+ 0.825,
470
+ 0.825,
471
+ 0.6375,
472
+ 0.825,
473
+ 0.825,
474
+ 0.825,
475
+ 0.95,
476
+ 0.825,
477
+ 0.6625,
478
+ 0.95,
479
+ 0.825,
480
+ 0.50625,
481
+ 0.54375,
482
+ 0.38749999999999996,
483
+ 0.27499999999999997,
484
+ 0.4,
485
+ 0.0,
486
+ 0.50625,
487
+ 0.825,
488
+ 0.825,
489
+ 0.4,
490
+ 0.4,
491
+ 0.4,
492
+ 0.825,
493
+ 0.4,
494
+ 0.825,
495
+ 0.71875,
496
+ 0.4,
497
+ 0.6124999999999999,
498
+ 0.825,
499
+ 0.71875,
500
+ 0.6187499999999999,
501
+ 0.0,
502
+ 0.825,
503
+ 0.825,
504
+ 0.4,
505
+ 0.825,
506
+ 0.4,
507
+ 0.825,
508
+ 0.825,
509
+ 0.725,
510
+ 0.6437499999999999,
511
+ 0.95,
512
+ 0.5875,
513
+ 0.825,
514
+ 0.4,
515
+ 0.95,
516
+ 0.0,
517
+ 0.725,
518
+ 0.825,
519
+ 0.7437499999999999,
520
+ 0.825,
521
+ 0.825,
522
+ 0.0,
523
+ 0.95,
524
+ 0.8374999999999999,
525
+ 0.3,
526
+ 0.825,
527
+ 0.8125,
528
+ 0.6937499999999999,
529
+ 0.95,
530
+ 0.825,
531
+ 0.825,
532
+ 0.725,
533
+ 0.91875,
534
+ 0.95,
535
+ 0.50625,
536
+ 0.825,
537
+ 0.4,
538
+ 0.0,
539
+ 0.69375,
540
+ 0.4,
541
+ 0.0,
542
+ 0.8875,
543
+ 0.4,
544
+ 0.825,
545
+ 0.95,
546
+ 0.95,
547
+ 0.825,
548
+ 0.95,
549
+ 0.4,
550
+ 0.95,
551
+ 0.91875,
552
+ 0.6625,
553
+ 0.85625,
554
+ 0.4,
555
+ 0.4,
556
+ 0.825,
557
+ 0.71875,
558
+ 0.6687500000000001,
559
+ 0.825,
560
+ 0.95,
561
+ 0.825,
562
+ 0.6625,
563
+ 0.6125,
564
+ 0.825,
565
+ 0.85625,
566
+ 0.825,
567
+ 0.4,
568
+ 0.825,
569
+ 0.825,
570
+ 0.825,
571
+ 0.4,
572
+ 0.049999999999999975,
573
+ 0.4,
574
+ 0.825,
575
+ 0.95,
576
+ 0.725
577
+ ]
578
+ }
model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:effe6368c5be9d40523946b3c061fad56e3cac2dd5a7b4adad269702b80587b8
3
+ size 10246621918
tokenizer.json ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:67d2db6635a88e60782a80257f796471b3601faea45c3de74958d2dff02864ec
3
+ size 32170169
tokenizer_config.json ADDED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "audio_token": "<|audio|>",
3
+ "backend": "tokenizers",
4
+ "boa_token": "<|audio>",
5
+ "boi_token": "<|image>",
6
+ "bos_token": "<bos>",
7
+ "eoa_token": "<audio|>",
8
+ "eoc_token": "<channel|>",
9
+ "eoi_token": "<image|>",
10
+ "eos_token": "<eos>",
11
+ "eot_token": "<turn|>",
12
+ "escape_token": "<|\"|>",
13
+ "etc_token": "<tool_call|>",
14
+ "etd_token": "<tool|>",
15
+ "etr_token": "<tool_response|>",
16
+ "extra_special_tokens": [
17
+ "<|video|>"
18
+ ],
19
+ "image_token": "<|image|>",
20
+ "is_local": true,
21
+ "mask_token": "<mask>",
22
+ "max_length": 1024,
23
+ "model_max_length": 1000000000000000019884624838656,
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_to_multiple_of": null,
45
+ "pad_token": "<pad>",
46
+ "pad_token_type_id": 0,
47
+ "padding_side": "left",
48
+ "processor_class": "Gemma4Processor",
49
+ "soc_token": "<|channel>",
50
+ "sot_token": "<|turn>",
51
+ "stc_token": "<|tool_call>",
52
+ "std_token": "<|tool>",
53
+ "str_token": "<|tool_response>",
54
+ "stride": 0,
55
+ "think_token": "<|think|>",
56
+ "tokenizer_class": "GemmaTokenizer",
57
+ "truncation_side": "right",
58
+ "truncation_strategy": "longest_first",
59
+ "unk_token": "<unk>"
60
+ }