bpHigh Claude Opus 4.7 (1M context) commited on
Commit
2e1dd84
·
1 Parent(s): 90a25f6

SFT eval on 22-task held-out split — fill in leaderboard

Browse files

Job 69ed97e5d2c8bd8662bcf2ad ran eval_lora.py over both adapters on
the eval split (L40S, ~30 min). Parsed the raw stdout into per-adapter
results.json files matching the format the dashboard already expects;
both rows now populate from disk instead of rendering '—'.

Numbers: 4K SFT 0.006 avg / 0% success; 8K SFT 0.011 avg / 0% success.
~6-11x lift over the vanilla student baseline (0.001) but every episode
still bottoms at the env's 0.005 reward floor — the SFT'd model produces
parseable code that doesn't mutate files in ways the grader rewards.
The next step is GRPO continuation against the env's reward signal.

Also adds a parallel 'Eval artifacts' table under the SFT training
artifacts table on both README and the /dashboard, linking the eval
job page + raw_logs.txt for provenance.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

README.md CHANGED
@@ -67,8 +67,18 @@ logged on HF Jobs L40S, ~$0.50–0.80 each. The 8K run is online at
67
  | **MiniMaxAI/MiniMax-M2.1** (frontier baseline) | 0.390 | 41% | 0.293 | 0.445 | 0.485 |
68
  | **moonshotai/Kimi-K2.5** (teacher) | 0.481 | 52% | 0.370 | 0.472 | 0.673 |
69
  | **Qwen/Qwen2.5-Coder-3B-Instruct** (student baseline) | **0.001** | 0% | 0.001 | 0.001 | 0.001 |
70
- | **Qwen3-Coder-3B + LoRA SFT (4K)** *(eval pending)* | *coming* | *coming* | | | |
71
- | **Qwen3-Coder-3B + LoRA SFT (8K)** *(eval pending)* | *coming* | *coming* | | | |
 
 
 
 
 
 
 
 
 
 
72
 
73
  Reproduce any row:
74
 
@@ -122,6 +132,17 @@ Re-parse any HF Job's stdout into clean metrics + a loss curve PNG with
122
  — takes a `--job-id` and emits `training_metrics.jsonl`, `summary.json`,
123
  and `sft_loss_curve.png`. Both runs above were generated this way.
124
 
 
 
 
 
 
 
 
 
 
 
 
125
  ---
126
 
127
  ## Task inventory (119 total)
 
67
  | **MiniMaxAI/MiniMax-M2.1** (frontier baseline) | 0.390 | 41% | 0.293 | 0.445 | 0.485 |
68
  | **moonshotai/Kimi-K2.5** (teacher) | 0.481 | 52% | 0.370 | 0.472 | 0.673 |
69
  | **Qwen/Qwen2.5-Coder-3B-Instruct** (student baseline) | **0.001** | 0% | 0.001 | 0.001 | 0.001 |
70
+ | **Qwen2.5-Coder-3B + LoRA SFT (4K)** | 0.006 | 0% | 0.007 | 0.005 | 0.005 |
71
+ | **Qwen2.5-Coder-3B + LoRA SFT (8K)** | 0.011 | 0% | 0.018 | 0.005 | 0.005 |
72
+
73
+ > **Reading the SFT rows.** Both adapters lift the vanilla baseline ~6–11×
74
+ > on the eval set, but every episode still bottoms out at the env's reward
75
+ > floor (0.005) — the model produces *parseable* code but it doesn't mutate
76
+ > the source file in ways the grader rewards. The SFT loss is well-
77
+ > converged (0.19 on the training distribution), so the gap is a
78
+ > generalization-from-Kimi-trajectories problem, not an under-training one.
79
+ > The *next* step — GRPO continuation directly against the env's reward
80
+ > signal — is what's expected to close this. See [`train_grpo.py`](train_grpo.py)
81
+ > and the rollout-format note in [`edits.md`](edits.md) Phase 13.
82
 
83
  Reproduce any row:
84
 
 
132
  — takes a `--job-id` and emits `training_metrics.jsonl`, `summary.json`,
133
  and `sft_loss_curve.png`. Both runs above were generated this way.
134
 
135
+ **Eval artifacts — both SFT adapters scored against the 22-task held-out split:**
136
+
137
+ | Run | Eval results.json | Raw stdout log | HF Job page |
138
+ |---|---|---|---|
139
+ | 4K context | [results.json](runs/sft_eval_v2/bpHigh_qwen3b-office-sft-kimi/results.json) | [raw_logs.txt](runs/sft_eval_v2/raw_logs.txt) | [Job 69ed97e5…2ad](https://huggingface.co/jobs/bpHigh/69ed97e5d2c8bd8662bcf2ad) |
140
+ | 8K context | [results.json](runs/sft_eval_v2/bpHigh_qwen3b-office-sft-kimi-long/results.json) | [raw_logs.txt](runs/sft_eval_v2/raw_logs.txt) | [Job 69ed97e5…2ad](https://huggingface.co/jobs/bpHigh/69ed97e5d2c8bd8662bcf2ad) |
141
+
142
+ Both adapters were evaluated in a single HF Jobs run (L40S, ~30 min, ~$1)
143
+ via [`eval_lora.py --adapters A,B`](eval_lora.py) — the base model loads
144
+ once and each adapter is detached/reattached without reloading.
145
+
146
  ---
147
 
148
  ## Task inventory (119 total)
runs/sft_eval_v2/bpHigh_qwen3b-office-sft-kimi-long/results.json ADDED
@@ -0,0 +1,245 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "model": "bpHigh/qwen3b-office-sft-kimi-long",
3
+ "split": "eval",
4
+ "family": "all",
5
+ "n_tasks": 22,
6
+ "avg_score": 0.0107,
7
+ "success_rate": 0.0,
8
+ "total_elapsed_s": 5257.8,
9
+ "by_family": {
10
+ "docx": {
11
+ "n": 4,
12
+ "avg": 0.005
13
+ },
14
+ "pptx": {
15
+ "n": 8,
16
+ "avg": 0.005
17
+ },
18
+ "xlsx": {
19
+ "n": 10,
20
+ "avg": 0.0175
21
+ }
22
+ },
23
+ "results": [
24
+ {
25
+ "task_id": "osworld_0a0faba3",
26
+ "family": "docx",
27
+ "primary_tag": "check_tabstops",
28
+ "split": "eval",
29
+ "score": 0.005,
30
+ "success": false,
31
+ "steps": 15,
32
+ "elapsed_s": 136.3
33
+ },
34
+ {
35
+ "task_id": "osworld_0b17a146",
36
+ "family": "docx",
37
+ "primary_tag": "compare_docx_files",
38
+ "split": "eval",
39
+ "score": 0.005,
40
+ "success": false,
41
+ "steps": 15,
42
+ "elapsed_s": 433.3
43
+ },
44
+ {
45
+ "task_id": "osworld_66399b0d",
46
+ "family": "docx",
47
+ "primary_tag": "compare_docx_tables",
48
+ "split": "eval",
49
+ "score": 0.005,
50
+ "success": false,
51
+ "steps": 15,
52
+ "elapsed_s": 163.6
53
+ },
54
+ {
55
+ "task_id": "osworld_0810415c",
56
+ "family": "docx",
57
+ "primary_tag": "compare_line_spacing",
58
+ "split": "eval",
59
+ "score": 0.005,
60
+ "success": false,
61
+ "steps": 15,
62
+ "elapsed_s": 126.1
63
+ },
64
+ {
65
+ "task_id": "pptarena_case_60_fix_text_placement",
66
+ "family": "pptx",
67
+ "primary_tag": "Alignment, Distribution & Z-order",
68
+ "split": "eval",
69
+ "score": 0.005,
70
+ "success": false,
71
+ "steps": 15,
72
+ "elapsed_s": 439.5
73
+ },
74
+ {
75
+ "task_id": "pptarena_case_7_update_quarter_two_data_b",
76
+ "family": "pptx",
77
+ "primary_tag": "Charts",
78
+ "split": "eval",
79
+ "score": 0.005,
80
+ "success": false,
81
+ "steps": 15,
82
+ "elapsed_s": 221.5
83
+ },
84
+ {
85
+ "task_id": "pptarena_case_32_arrange_image_and_text",
86
+ "family": "pptx",
87
+ "primary_tag": "Images & Pictures",
88
+ "split": "eval",
89
+ "score": 0.005,
90
+ "success": false,
91
+ "steps": 15,
92
+ "elapsed_s": 261.6
93
+ },
94
+ {
95
+ "task_id": "pptarena_case_36_add_speaker_notes",
96
+ "family": "pptx",
97
+ "primary_tag": "Slide/Section Management & Footers",
98
+ "split": "eval",
99
+ "score": 0.005,
100
+ "success": false,
101
+ "steps": 15,
102
+ "elapsed_s": 241.1
103
+ },
104
+ {
105
+ "task_id": "pptarena_case_49_normalize_thousand_separators",
106
+ "family": "pptx",
107
+ "primary_tag": "Tables",
108
+ "split": "eval",
109
+ "score": 0.005,
110
+ "success": false,
111
+ "steps": 15,
112
+ "elapsed_s": 271.8
113
+ },
114
+ {
115
+ "task_id": "pptarena_case_35_structural_fix",
116
+ "family": "pptx",
117
+ "primary_tag": "Text & Typography",
118
+ "split": "eval",
119
+ "score": 0.005,
120
+ "success": false,
121
+ "steps": 15,
122
+ "elapsed_s": 510.1
123
+ },
124
+ {
125
+ "task_id": "pptarena_case_40_hindu_center_titles",
126
+ "family": "pptx",
127
+ "primary_tag": "Text & Typography",
128
+ "split": "eval",
129
+ "score": 0.005,
130
+ "success": false,
131
+ "steps": 15,
132
+ "elapsed_s": 244.0
133
+ },
134
+ {
135
+ "task_id": "pptarena_case_26_match_slide_colors_to_theme",
136
+ "family": "pptx",
137
+ "primary_tag": "Theme & Background",
138
+ "split": "eval",
139
+ "score": 0.005,
140
+ "success": false,
141
+ "steps": 15,
142
+ "elapsed_s": 501.9
143
+ },
144
+ {
145
+ "task_id": "finch_10",
146
+ "family": "xlsx",
147
+ "primary_tag": "Calculation",
148
+ "split": "eval",
149
+ "score": 0.03,
150
+ "success": false,
151
+ "steps": 15,
152
+ "elapsed_s": 200.3
153
+ },
154
+ {
155
+ "task_id": "finch_35",
156
+ "family": "xlsx",
157
+ "primary_tag": "Calculation",
158
+ "split": "eval",
159
+ "score": 0.005,
160
+ "success": false,
161
+ "steps": 15,
162
+ "elapsed_s": 155.6
163
+ },
164
+ {
165
+ "task_id": "finch_38",
166
+ "family": "xlsx",
167
+ "primary_tag": "Calculation",
168
+ "split": "eval",
169
+ "score": 0.03,
170
+ "success": false,
171
+ "steps": 15,
172
+ "elapsed_s": 154.6
173
+ },
174
+ {
175
+ "task_id": "finch_112",
176
+ "family": "xlsx",
177
+ "primary_tag": "Cross-sheet/file Retrieval",
178
+ "split": "eval",
179
+ "score": 0.03,
180
+ "success": false,
181
+ "steps": 15,
182
+ "elapsed_s": 116.6
183
+ },
184
+ {
185
+ "task_id": "finch_154",
186
+ "family": "xlsx",
187
+ "primary_tag": "Data Entry / Import",
188
+ "split": "eval",
189
+ "score": 0.03,
190
+ "success": false,
191
+ "steps": 15,
192
+ "elapsed_s": 156.3
193
+ },
194
+ {
195
+ "task_id": "finch_14",
196
+ "family": "xlsx",
197
+ "primary_tag": "Financial Modeling",
198
+ "split": "eval",
199
+ "score": 0.005,
200
+ "success": false,
201
+ "steps": 15,
202
+ "elapsed_s": 163.4
203
+ },
204
+ {
205
+ "task_id": "finch_168",
206
+ "family": "xlsx",
207
+ "primary_tag": "Structuring / Formatting",
208
+ "split": "eval",
209
+ "score": 0.005,
210
+ "success": false,
211
+ "steps": 15,
212
+ "elapsed_s": 238.0
213
+ },
214
+ {
215
+ "task_id": "finch_59",
216
+ "family": "xlsx",
217
+ "primary_tag": "Structuring / Formatting",
218
+ "split": "eval",
219
+ "score": 0.03,
220
+ "success": false,
221
+ "steps": 15,
222
+ "elapsed_s": 111.0
223
+ },
224
+ {
225
+ "task_id": "finch_122",
226
+ "family": "xlsx",
227
+ "primary_tag": "Summary / Visualization",
228
+ "split": "eval",
229
+ "score": 0.005,
230
+ "success": false,
231
+ "steps": 15,
232
+ "elapsed_s": 226.1
233
+ },
234
+ {
235
+ "task_id": "finch_158",
236
+ "family": "xlsx",
237
+ "primary_tag": "Validation / Review",
238
+ "split": "eval",
239
+ "score": 0.005,
240
+ "success": false,
241
+ "steps": 15,
242
+ "elapsed_s": 185.1
243
+ }
244
+ ]
245
+ }
runs/sft_eval_v2/bpHigh_qwen3b-office-sft-kimi/results.json ADDED
@@ -0,0 +1,245 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "model": "bpHigh/qwen3b-office-sft-kimi",
3
+ "split": "eval",
4
+ "family": "all",
5
+ "n_tasks": 22,
6
+ "avg_score": 0.0061,
7
+ "success_rate": 0.0,
8
+ "total_elapsed_s": 5901.1,
9
+ "by_family": {
10
+ "docx": {
11
+ "n": 4,
12
+ "avg": 0.005
13
+ },
14
+ "pptx": {
15
+ "n": 8,
16
+ "avg": 0.005
17
+ },
18
+ "xlsx": {
19
+ "n": 10,
20
+ "avg": 0.0075
21
+ }
22
+ },
23
+ "results": [
24
+ {
25
+ "task_id": "osworld_0a0faba3",
26
+ "family": "docx",
27
+ "primary_tag": "check_tabstops",
28
+ "split": "eval",
29
+ "score": 0.005,
30
+ "success": false,
31
+ "steps": 15,
32
+ "elapsed_s": 315.9
33
+ },
34
+ {
35
+ "task_id": "osworld_0b17a146",
36
+ "family": "docx",
37
+ "primary_tag": "compare_docx_files",
38
+ "split": "eval",
39
+ "score": 0.005,
40
+ "success": false,
41
+ "steps": 15,
42
+ "elapsed_s": 202.0
43
+ },
44
+ {
45
+ "task_id": "osworld_66399b0d",
46
+ "family": "docx",
47
+ "primary_tag": "compare_docx_tables",
48
+ "split": "eval",
49
+ "score": 0.005,
50
+ "success": false,
51
+ "steps": 15,
52
+ "elapsed_s": 167.1
53
+ },
54
+ {
55
+ "task_id": "osworld_0810415c",
56
+ "family": "docx",
57
+ "primary_tag": "compare_line_spacing",
58
+ "split": "eval",
59
+ "score": 0.005,
60
+ "success": false,
61
+ "steps": 15,
62
+ "elapsed_s": 212.0
63
+ },
64
+ {
65
+ "task_id": "pptarena_case_60_fix_text_placement",
66
+ "family": "pptx",
67
+ "primary_tag": "Alignment, Distribution & Z-order",
68
+ "split": "eval",
69
+ "score": 0.005,
70
+ "success": false,
71
+ "steps": 15,
72
+ "elapsed_s": 264.9
73
+ },
74
+ {
75
+ "task_id": "pptarena_case_7_update_quarter_two_data_b",
76
+ "family": "pptx",
77
+ "primary_tag": "Charts",
78
+ "split": "eval",
79
+ "score": 0.005,
80
+ "success": false,
81
+ "steps": 15,
82
+ "elapsed_s": 296.3
83
+ },
84
+ {
85
+ "task_id": "pptarena_case_32_arrange_image_and_text",
86
+ "family": "pptx",
87
+ "primary_tag": "Images & Pictures",
88
+ "split": "eval",
89
+ "score": 0.005,
90
+ "success": false,
91
+ "steps": 15,
92
+ "elapsed_s": 343.5
93
+ },
94
+ {
95
+ "task_id": "pptarena_case_36_add_speaker_notes",
96
+ "family": "pptx",
97
+ "primary_tag": "Slide/Section Management & Footers",
98
+ "split": "eval",
99
+ "score": 0.005,
100
+ "success": false,
101
+ "steps": 15,
102
+ "elapsed_s": 221.6
103
+ },
104
+ {
105
+ "task_id": "pptarena_case_49_normalize_thousand_separators",
106
+ "family": "pptx",
107
+ "primary_tag": "Tables",
108
+ "split": "eval",
109
+ "score": 0.005,
110
+ "success": false,
111
+ "steps": 15,
112
+ "elapsed_s": 228.5
113
+ },
114
+ {
115
+ "task_id": "pptarena_case_35_structural_fix",
116
+ "family": "pptx",
117
+ "primary_tag": "Text & Typography",
118
+ "split": "eval",
119
+ "score": 0.005,
120
+ "success": false,
121
+ "steps": 15,
122
+ "elapsed_s": 327.4
123
+ },
124
+ {
125
+ "task_id": "pptarena_case_40_hindu_center_titles",
126
+ "family": "pptx",
127
+ "primary_tag": "Text & Typography",
128
+ "split": "eval",
129
+ "score": 0.005,
130
+ "success": false,
131
+ "steps": 15,
132
+ "elapsed_s": 388.8
133
+ },
134
+ {
135
+ "task_id": "pptarena_case_26_match_slide_colors_to_theme",
136
+ "family": "pptx",
137
+ "primary_tag": "Theme & Background",
138
+ "split": "eval",
139
+ "score": 0.005,
140
+ "success": false,
141
+ "steps": 15,
142
+ "elapsed_s": 531.2
143
+ },
144
+ {
145
+ "task_id": "finch_10",
146
+ "family": "xlsx",
147
+ "primary_tag": "Calculation",
148
+ "split": "eval",
149
+ "score": 0.03,
150
+ "success": false,
151
+ "steps": 15,
152
+ "elapsed_s": 234.0
153
+ },
154
+ {
155
+ "task_id": "finch_35",
156
+ "family": "xlsx",
157
+ "primary_tag": "Calculation",
158
+ "split": "eval",
159
+ "score": 0.005,
160
+ "success": false,
161
+ "steps": 15,
162
+ "elapsed_s": 271.9
163
+ },
164
+ {
165
+ "task_id": "finch_38",
166
+ "family": "xlsx",
167
+ "primary_tag": "Calculation",
168
+ "split": "eval",
169
+ "score": 0.005,
170
+ "success": false,
171
+ "steps": 15,
172
+ "elapsed_s": 203.0
173
+ },
174
+ {
175
+ "task_id": "finch_112",
176
+ "family": "xlsx",
177
+ "primary_tag": "Cross-sheet/file Retrieval",
178
+ "split": "eval",
179
+ "score": 0.005,
180
+ "success": false,
181
+ "steps": 15,
182
+ "elapsed_s": 268.3
183
+ },
184
+ {
185
+ "task_id": "finch_154",
186
+ "family": "xlsx",
187
+ "primary_tag": "Data Entry / Import",
188
+ "split": "eval",
189
+ "score": 0.005,
190
+ "success": false,
191
+ "steps": 15,
192
+ "elapsed_s": 159.2
193
+ },
194
+ {
195
+ "task_id": "finch_14",
196
+ "family": "xlsx",
197
+ "primary_tag": "Financial Modeling",
198
+ "split": "eval",
199
+ "score": 0.005,
200
+ "success": false,
201
+ "steps": 15,
202
+ "elapsed_s": 199.8
203
+ },
204
+ {
205
+ "task_id": "finch_168",
206
+ "family": "xlsx",
207
+ "primary_tag": "Structuring / Formatting",
208
+ "split": "eval",
209
+ "score": 0.005,
210
+ "success": false,
211
+ "steps": 15,
212
+ "elapsed_s": 224.1
213
+ },
214
+ {
215
+ "task_id": "finch_59",
216
+ "family": "xlsx",
217
+ "primary_tag": "Structuring / Formatting",
218
+ "split": "eval",
219
+ "score": 0.005,
220
+ "success": false,
221
+ "steps": 15,
222
+ "elapsed_s": 227.5
223
+ },
224
+ {
225
+ "task_id": "finch_122",
226
+ "family": "xlsx",
227
+ "primary_tag": "Summary / Visualization",
228
+ "split": "eval",
229
+ "score": 0.005,
230
+ "success": false,
231
+ "steps": 15,
232
+ "elapsed_s": 327.6
233
+ },
234
+ {
235
+ "task_id": "finch_158",
236
+ "family": "xlsx",
237
+ "primary_tag": "Validation / Review",
238
+ "split": "eval",
239
+ "score": 0.005,
240
+ "success": false,
241
+ "steps": 15,
242
+ "elapsed_s": 286.5
243
+ }
244
+ ]
245
+ }
runs/sft_eval_v2/cross_summary.json ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "bpHigh_qwen3b-office-sft-kimi": {
3
+ "avg_score": 0.0061,
4
+ "success_rate": 0.0,
5
+ "by_family": {
6
+ "docx": {
7
+ "n": 4,
8
+ "avg": 0.005
9
+ },
10
+ "pptx": {
11
+ "n": 8,
12
+ "avg": 0.005
13
+ },
14
+ "xlsx": {
15
+ "n": 10,
16
+ "avg": 0.0075
17
+ }
18
+ }
19
+ },
20
+ "bpHigh_qwen3b-office-sft-kimi-long": {
21
+ "avg_score": 0.0107,
22
+ "success_rate": 0.0,
23
+ "by_family": {
24
+ "docx": {
25
+ "n": 4,
26
+ "avg": 0.005
27
+ },
28
+ "pptx": {
29
+ "n": 8,
30
+ "avg": 0.005
31
+ },
32
+ "xlsx": {
33
+ "n": 10,
34
+ "avg": 0.0175
35
+ }
36
+ }
37
+ }
38
+ }
runs/sft_eval_v2/raw_logs.txt ADDED
The diff for this file is too large to render. See raw diff
 
server/app.py CHANGED
@@ -696,6 +696,22 @@ def build_dashboard() -> gr.Blocks:
696
  "[`data_pipeline/analyze_sft_logs.py`](https://github.com/bp-high/openenv_financial_task_env/blob/main/data_pipeline/analyze_sft_logs.py) "
697
  "(works on any HF Job ID, not just these two)."
698
  )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
699
 
700
  # ---- Plot ----
701
  gr.Markdown("## 4K vs 8K context length ablation")
 
696
  "[`data_pipeline/analyze_sft_logs.py`](https://github.com/bp-high/openenv_financial_task_env/blob/main/data_pipeline/analyze_sft_logs.py) "
697
  "(works on any HF Job ID, not just these two)."
698
  )
699
+ gr.Markdown(
700
+ "**Eval artifacts** — both adapters scored on the 22-task held-out split:\n\n"
701
+ "| Run | Eval results.json | Raw stdout log | HF Job page |\n"
702
+ "|---|---|---|---|\n"
703
+ "| 4K context | "
704
+ "[results.json](https://raw.githubusercontent.com/bp-high/openenv_financial_task_env/main/runs/sft_eval_v2/bpHigh_qwen3b-office-sft-kimi/results.json) | "
705
+ "[raw_logs.txt](https://raw.githubusercontent.com/bp-high/openenv_financial_task_env/main/runs/sft_eval_v2/raw_logs.txt) | "
706
+ "[Job 69ed97e5...2ad](https://huggingface.co/jobs/bpHigh/69ed97e5d2c8bd8662bcf2ad) |\n"
707
+ "| 8K context | "
708
+ "[results.json](https://raw.githubusercontent.com/bp-high/openenv_financial_task_env/main/runs/sft_eval_v2/bpHigh_qwen3b-office-sft-kimi-long/results.json) | "
709
+ "[raw_logs.txt](https://raw.githubusercontent.com/bp-high/openenv_financial_task_env/main/runs/sft_eval_v2/raw_logs.txt) | "
710
+ "[Job 69ed97e5...2ad](https://huggingface.co/jobs/bpHigh/69ed97e5d2c8bd8662bcf2ad) |\n\n"
711
+ "Both adapters were evaluated in a single HF Jobs run (L40S, ~30 min, ~$1) "
712
+ "via [`eval_lora.py`](https://github.com/bp-high/openenv_financial_task_env/blob/main/eval_lora.py) "
713
+ "with `--adapters A,B` so the base model loads once."
714
+ )
715
 
716
  # ---- Plot ----
717
  gr.Markdown("## 4K vs 8K context length ablation")