Kaleto commited on
Commit
6052894
·
verified ·
1 Parent(s): 928cf15

Ergebnisse aktualisiert (12 Läufe)

Browse files
Files changed (17) hide show
  1. app.js +151 -57
  2. chart.umd.min.js +0 -0
  3. index.html +79 -3
  4. methodology.html +2 -1
  5. runs/15.html +2 -1
  6. runs/16.html +2 -1
  7. runs/17.html +2 -1
  8. runs/18.html +2 -1
  9. runs/19.html +2 -1
  10. runs/20.html +2 -1
  11. runs/21.html +2 -1
  12. runs/22.html +2 -1
  13. runs/23.html +2 -1
  14. runs/26.html +196 -0
  15. runs/27.html +196 -0
  16. runs/29.html +196 -0
  17. style.css +5 -0
app.js CHANGED
@@ -116,68 +116,162 @@
116
  }
117
  };
118
 
119
- var overview = readJson("overview-data");
120
- if (overview && overview.bars.length) {
121
- new Chart(document.getElementById("bar-chart"), {
122
- type: "bar",
123
- data: {
124
- labels: overview.bars.map(function (b) { return b.label; }),
125
- datasets: [{
126
- label: "Gesamtscore",
127
- data: overview.bars.map(function (b) { return b.value; }),
128
- backgroundColor: series[0],
129
- borderRadius: 4,
130
- borderSkipped: "start",
131
- barPercentage: 0.8,
132
- categoryPercentage: 0.9,
133
- maxBarThickness: 18
134
- }]
135
- },
136
- options: {
137
- indexAxis: "y",
138
- maintainAspectRatio: false,
139
- animation: false,
140
- layout: { padding: { right: 40 } },
141
- scales: { x: axis("Score (0–100)", { min: 0, max: 100 }), y: axis(null, { grid: { display: false } }) },
142
- plugins: {
143
- legend: { display: false },
144
- tooltip: { callbacks: { label: function (c) { return "Gesamt: " + c.parsed.x.toFixed(1); } } }
145
- }
146
- },
147
- plugins: [barValueLabels]
148
- });
149
  }
150
 
151
- if (overview && overview.scatter.length) {
152
- new Chart(document.getElementById("scatter-chart"), {
153
- type: "scatter",
154
- data: {
155
- datasets: [{
156
- label: "Modellvarianten",
157
- data: overview.scatter,
158
- backgroundColor: series[0],
159
- borderColor: surface,
160
- borderWidth: 2,
161
- pointRadius: 5,
162
- pointHoverRadius: 7,
163
- pointHitRadius: 12
164
- }]
165
- },
166
- options: {
167
- maintainAspectRatio: false,
168
- animation: false,
169
- scales: { x: axis("Generierung (Tokens/s)", { beginAtZero: true }), y: axis("Gesamtscore", { min: 0, max: 100 }) },
170
- plugins: {
171
- legend: { display: false },
172
- tooltip: {
173
- callbacks: {
174
- label: function (c) { return c.raw.label + ": " + c.raw.y.toFixed(1) + " Punkte, " + c.raw.x.toFixed(1) + " t/s"; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
175
  }
176
  }
177
- }
178
- }
 
 
 
 
 
 
 
 
179
  });
180
- }
 
 
 
181
 
182
  var categories = readJson("category-data");
183
  if (categories && categories.series.length) {
 
116
  }
117
  };
118
 
119
+ // Wunschbereich im Streudiagramm: rechts von min. Tokens/s und über min. Note, leicht grün hinterlegt.
120
+ // Fehlt einer der Werte, ist der Bereich zu dieser Seite hin offen.
121
+ var zone = token("--zone");
122
+ var zonePlugin = {
123
+ id: "zone",
124
+ beforeDatasetsDraw: function (chart, args, opts) {
125
+ if (!opts || (opts.minX == null && opts.minY == null)) return;
126
+ var area = chart.chartArea;
127
+ var left = opts.minX == null ? area.left : Math.max(area.left, chart.scales.x.getPixelForValue(opts.minX));
128
+ var bottom = opts.minY == null ? area.bottom : Math.min(area.bottom, chart.scales.y.getPixelForValue(opts.minY));
129
+ if (left >= area.right || bottom <= area.top) return;
130
+ var ctx = chart.ctx;
131
+ ctx.save();
132
+ ctx.fillStyle = zone;
133
+ ctx.fillRect(left, area.top, area.right - left, bottom - area.top);
134
+ ctx.restore();
135
+ }
136
+ };
137
+
138
+ // Gewählte Kategorie je Browser merken – nur Bequemlichkeit, ohne Speicher geht es mit „Gesamt“ los.
139
+ var CATEGORY_KEY = "bench.chartCategory";
140
+ function rememberedCategory() {
141
+ try { return window.localStorage.getItem(CATEGORY_KEY); } catch (e) { return null; }
142
+ }
143
+ function rememberCategory(key) {
144
+ try { window.localStorage.setItem(CATEGORY_KEY, key); } catch (e) { /* ohne Speicher */ }
 
 
 
 
145
  }
146
 
147
+ // Übersicht (Webseite und Space): je .chart-set ein Balken- und ein Streudiagramm, umschaltbar nach Kategorie.
148
+ document.querySelectorAll(".chart-set").forEach(function (set) {
149
+ var dataEl = set.querySelector("script.chart-data");
150
+ if (!dataEl) return;
151
+ var data = JSON.parse(dataEl.textContent);
152
+ var texts = data.texts;
153
+ var limits = data.thresholds || {};
154
+ var buttons = Array.prototype.slice.call(set.querySelectorAll("[data-chart-category]"));
155
+ var barBox = set.querySelector('[data-chart-box="bar"]');
156
+ var barTitle = set.querySelector('[data-chart-title="bar"]');
157
+ var scatterTitle = set.querySelector('[data-chart-title="scatter"]');
158
+ var barChart = null, scatterChart = null;
159
+
160
+ function titleOf(key) {
161
+ if (key === "overall") return texts.overall_title;
162
+ var match = data.categories.filter(function (c) { return c.key === key; })[0];
163
+ return match ? match.label : key;
164
+ }
165
+
166
+ function show(key) {
167
+ var title = titleOf(key);
168
+ buttons.forEach(function (b) {
169
+ var picked = b.dataset.chartCategory === key;
170
+ b.classList.toggle("active", picked);
171
+ b.setAttribute("aria-pressed", picked ? "true" : "false");
172
+ });
173
+ if (barTitle) barTitle.textContent = title;
174
+ if (scatterTitle) scatterTitle.textContent = title + texts.vs;
175
+ var bars = data.runs.filter(function (r) { return r.scores[key] !== null && r.scores[key] !== undefined; })
176
+ .sort(function (a, b) { return b.scores[key] - a.scores[key]; });
177
+ var points = bars.filter(function (r) { return r.tps !== null; })
178
+ .map(function (r) { return { label: r.label, x: r.tps, y: r.scores[key], source: r.tps_source }; });
179
+ // Hohl: Geschwindigkeit nur aus dem Speed-Test, der Lauf lieferte keine Werte.
180
+ var fills = points.map(function (p) { return p.source === "test" ? surface : series[0]; });
181
+ var edges = points.map(function (p) { return p.source === "test" ? series[0] : surface; });
182
+
183
+ // Balken der Modelle im Wunschbereich grün – dieselbe Regel wie das Rechteck im Streudiagramm.
184
+ var minTps = limits.min_gen_tps == null ? null : limits.min_gen_tps;
185
+ var minScore = limits.min_score == null ? null : limits.min_score;
186
+ function inZone(r) {
187
+ if (minTps === null && minScore === null) return false;
188
+ if (minTps !== null && (r.tps === null || r.tps < minTps)) return false;
189
+ return minScore === null || r.scores[key] >= minScore;
190
+ }
191
+
192
+ if (barChart) barChart.destroy();
193
+ if (barBox) barBox.style.height = (70 + 30 * Math.max(bars.length, 1)) + "px";
194
+ barChart = new Chart(set.querySelector('[data-chart="bar"]'), {
195
+ type: "bar",
196
+ data: {
197
+ labels: bars.map(function (r) { return r.label; }),
198
+ datasets: [{
199
+ label: title,
200
+ data: bars.map(function (r) { return r.scores[key]; }),
201
+ backgroundColor: bars.map(function (r) { return inZone(r) ? series[2] : series[0]; }),
202
+ borderRadius: 4,
203
+ borderSkipped: "start",
204
+ barPercentage: 0.8,
205
+ categoryPercentage: 0.9,
206
+ maxBarThickness: 18
207
+ }]
208
+ },
209
+ options: {
210
+ indexAxis: "y",
211
+ maintainAspectRatio: false,
212
+ animation: false,
213
+ layout: { padding: { right: 40 } },
214
+ scales: { x: axis(texts.score_axis, { min: 0, max: 100 }), y: axis(null, { grid: { display: false } }) },
215
+ plugins: {
216
+ legend: { display: false },
217
+ tooltip: { callbacks: { label: function (c) { return title + ": " + c.parsed.x.toFixed(1); } } }
218
+ }
219
+ },
220
+ plugins: [barValueLabels]
221
+ });
222
+
223
+ if (scatterChart) scatterChart.destroy();
224
+ var minX = limits.min_gen_tps == null ? null : limits.min_gen_tps;
225
+ var minY = limits.min_score == null ? null : limits.min_score;
226
+ scatterChart = new Chart(set.querySelector('[data-chart="scatter"]'), {
227
+ type: "scatter",
228
+ data: {
229
+ datasets: [{
230
+ label: title,
231
+ data: points,
232
+ backgroundColor: fills,
233
+ borderColor: edges,
234
+ borderWidth: 2,
235
+ pointRadius: 5,
236
+ pointHoverRadius: 7,
237
+ pointHitRadius: 12
238
+ }]
239
+ },
240
+ options: {
241
+ maintainAspectRatio: false,
242
+ animation: false,
243
+ scales: {
244
+ // Der Wunschbereich bleibt sichtbar, auch wenn alle Modelle langsamer sind.
245
+ x: axis(texts.tps_axis, { beginAtZero: true, suggestedMax: minX === null ? undefined : minX * 1.1 }),
246
+ y: axis(title, { min: 0, max: 100 })
247
+ },
248
+ plugins: {
249
+ legend: { display: false },
250
+ zone: { minX: minX, minY: minY },
251
+ tooltip: {
252
+ callbacks: {
253
+ label: function (c) {
254
+ var source = c.raw.source === "test" ? texts.source_test : texts.source_run;
255
+ return c.raw.label + ": " + c.raw.y.toFixed(1) + " " + texts.points + ", " + c.raw.x.toFixed(1) + " t/s (" + source + ")";
256
+ }
257
+ }
258
  }
259
  }
260
+ },
261
+ plugins: [zonePlugin]
262
+ });
263
+ }
264
+
265
+ buttons.forEach(function (b) {
266
+ b.addEventListener("click", function () {
267
+ show(b.dataset.chartCategory);
268
+ rememberCategory(b.dataset.chartCategory);
269
+ });
270
  });
271
+ var start = rememberedCategory();
272
+ var known = data.categories.some(function (c) { return c.key === start; });
273
+ show(known ? start : "overall");
274
+ });
275
 
276
  var categories = readJson("category-data");
277
  if (categories && categories.series.length) {
chart.umd.min.js ADDED
The diff for this file is too large to render. See raw diff
 
index.html CHANGED
@@ -29,7 +29,7 @@
29
  <thead><tr>
30
  <th data-sort="text">Model</th>
31
  <th data-sort="num" class="num">Overall</th>
32
- <th data-sort="num" class="num">Knowledge &amp; reasoning</th><th data-sort="num" class="num">Math</th><th data-sort="num" class="num">Instruction following</th><th data-sort="num" class="num">Code</th><th data-sort="num" class="num">German</th><th data-sort="num" class="num">gen t/s</th><th data-sort="num" class="num">pp t/s 4k</th><th data-sort="num" class="num">TTFT 4k ms</th> <th data-sort="text">Date</th>
33
  </tr></thead>
34
  <tbody>
35
  <tr data-reasoning="on">
@@ -44,6 +44,7 @@
44
  <td class="num strong" data-value="83.0" title="livecodebench_gen: 83.0 ± 2.7 (n=200)&#10;">83.0</td>
45
  <td class="num" data-value="77.36507936507935" title="mmlu_prox_de: 80.3 ± 2.3 (n=300)&#10;include_de_gen: 71.4 ± 3.7 (n=154)&#10;">77.4</td>
46
  <td class="num" data-value="">–</td>
 
47
  <td class="num" data-value="">–</td>
48
  <td class="num" data-value="">–</td>
49
  <td data-value="2026-09-18">2026-09-18</td>
@@ -60,6 +61,7 @@
60
  <td class="num" data-value="75.5" title="livecodebench_gen: 75.5 ± 3.0 (n=200)&#10;">75.5</td>
61
  <td class="num strong" data-value="81.13708513708514" title="mmlu_prox_de: 85.7 ± 2.0 (n=300)&#10;include_de_gen: 72.1 ± 3.6 (n=154)&#10;">81.1</td>
62
  <td class="num" data-value="26.376464212349354">26</td>
 
63
  <td class="num" data-value="2041.4640201348918">2041</td>
64
  <td class="num" data-value="1973.583644023165">1974</td>
65
  <td data-value="2026-09-17">2026-09-17</td>
@@ -76,6 +78,7 @@
76
  <td class="num" data-value="75.0" title="livecodebench_gen: 75.0 ± 3.1 (n=200)&#10;">75.0</td>
77
  <td class="num" data-value="74.51659451659451" title="mmlu_prox_de: 78.3 ± 2.4 (n=300)&#10;include_de_gen: 66.9 ± 3.8 (n=154)&#10;">74.5</td>
78
  <td class="num" data-value="16.51787775562755">17</td>
 
79
  <td class="num" data-value="1359.0489942173106">1359</td>
80
  <td class="num" data-value="2952.064286917448">2952</td>
81
  <td data-value="2026-09-18">2026-09-18</td>
@@ -92,6 +95,7 @@
92
  <td class="num" data-value="75.0" title="livecodebench_gen: 75.0 ± 3.1 (n=200)&#10;">75.0</td>
93
  <td class="num" data-value="76.4935064935065" title="mmlu_prox_de: 80.0 ± 2.3 (n=300)&#10;include_de_gen: 69.5 ± 3.7 (n=154)&#10;">76.5</td>
94
  <td class="num" data-value="16.51271607105954">17</td>
 
95
  <td class="num" data-value="1358.107397713914">1358</td>
96
  <td class="num" data-value="2954.110997961834">2954</td>
97
  <td data-value="2026-09-19">2026-09-19</td>
@@ -108,10 +112,28 @@
108
  <td class="num" data-value="65.0" title="livecodebench_gen: 65.0 ± 3.4 (n=200)&#10;">65.0</td>
109
  <td class="num" data-value="76.25974025974027" title="mmlu_prox_de: 79.0 ± 2.4 (n=300)&#10;include_de_gen: 70.8 ± 3.7 (n=154)&#10;">76.3</td>
110
  <td class="num" data-value="15.103805505442727">15</td>
 
111
  <td class="num" data-value="2550.5619640606633">2551</td>
112
  <td class="num" data-value="1577.6915270835161">1578</td>
113
  <td data-value="2026-09-18">2026-09-18</td>
114
  </tr>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
115
  <tr data-reasoning="off">
116
  <td data-value="qwen3.8-27b-abliterated">
117
  <a href="runs/23.html" class="strong">qwen3.8-27b-abliterated</a>
@@ -124,10 +146,28 @@
124
  <td class="num" data-value="59.5" title="livecodebench_gen: 59.5 ± 3.5 (n=200)&#10;">59.5</td>
125
  <td class="num" data-value="72.06637806637806" title="mmlu_prox_de: 74.3 ± 2.5 (n=300)&#10;include_de_gen: 67.5 ± 3.8 (n=154)&#10;">72.1</td>
126
  <td class="num" data-value="15.903617023850842">16</td>
 
127
  <td class="num" data-value="2472.0116600865786">2472</td>
128
  <td class="num" data-value="1627.824036986567">1628</td>
129
  <td data-value="2026-09-20">2026-09-20</td>
130
  </tr>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
131
  <tr data-reasoning="off">
132
  <td data-value="gemma-4-12b-it-heretic">
133
  <a href="runs/17.html" class="strong">gemma-4-12b-it-heretic</a>
@@ -140,6 +180,7 @@
140
  <td class="num" data-value="62.0" title="livecodebench_gen: 62.0 ± 3.4 (n=200)&#10;">62.0</td>
141
  <td class="num" data-value="67.66233766233766" title="mmlu_prox_de: 70.0 ± 2.7 (n=300)&#10;include_de_gen: 63.0 ± 3.9 (n=154)&#10;">67.7</td>
142
  <td class="num" data-value="21.360681311630678">21</td>
 
143
  <td class="num" data-value="5258.027383235864">5258</td>
144
  <td class="num" data-value="763.404164230451">763</td>
145
  <td data-value="2026-09-18">2026-09-18</td>
@@ -156,6 +197,7 @@
156
  <td class="num" data-value="53.0" title="livecodebench_gen: 53.0 ± 3.5 (n=200)&#10;">53.0</td>
157
  <td class="num" data-value="70.5108225108225" title="mmlu_prox_de: 72.0 ± 2.6 (n=300)&#10;include_de_gen: 67.5 ± 3.8 (n=154)&#10;">70.5</td>
158
  <td class="num" data-value="83.7975869946743">84</td>
 
159
  <td class="num" data-value="7236.849600555504">7237</td>
160
  <td class="num" data-value="554.1085170116276">554</td>
161
  <td data-value="2026-09-17">2026-09-17</td>
@@ -172,17 +214,51 @@
172
  <td class="num" data-value="46.5" title="livecodebench_gen: 46.5 ± 3.5 (n=200)&#10;">46.5</td>
173
  <td class="num" data-value="67.00144300144301" title="mmlu_prox_de: 69.3 ± 2.7 (n=300)&#10;include_de_gen: 62.3 ± 3.9 (n=154)&#10;">67.0</td>
174
  <td class="num" data-value="31.530246994028012">32</td>
 
175
  <td class="num" data-value="6290.925546819461">6291</td>
176
  <td class="num" data-value="639.6515059750527">640</td>
177
  <td data-value="2026-09-18">2026-09-18</td>
178
  </tr>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
179
  </tbody>
180
  </table>
181
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
182
  </section>
183
- <p class="hint">Scores run from 0 to 100; the best value per category is shown in bold. Hovering a category cell lists its tasks with standard error (±) and number of items (n). Speed: generation in tokens/s, prompt processing at 4k context in tokens/s, time to first token at 4k context in ms. Click a column header to sort.</p>
184
- <footer class="page-foot">As of 2026-09-21 · scores 0–100 · built with <code>bench publish</code></footer>
185
  </main>
 
186
  <script src="app.js"></script>
187
  </body>
188
  </html>
 
29
  <thead><tr>
30
  <th data-sort="text">Model</th>
31
  <th data-sort="num" class="num">Overall</th>
32
+ <th data-sort="num" class="num">Knowledge &amp; reasoning</th><th data-sort="num" class="num">Math</th><th data-sort="num" class="num">Instruction following</th><th data-sort="num" class="num">Code</th><th data-sort="num" class="num">German</th><th data-sort="num" class="num">gen t/s</th><th data-sort="num" class="num" title="Generation per request measured during the benchmark run; gen t/s before it comes from the synthetic speed test">gen t/s run</th><th data-sort="num" class="num">pp t/s 4k</th><th data-sort="num" class="num">TTFT 4k ms</th> <th data-sort="text">Date</th>
33
  </tr></thead>
34
  <tbody>
35
  <tr data-reasoning="on">
 
44
  <td class="num strong" data-value="83.0" title="livecodebench_gen: 83.0 ± 2.7 (n=200)&#10;">83.0</td>
45
  <td class="num" data-value="77.36507936507935" title="mmlu_prox_de: 80.3 ± 2.3 (n=300)&#10;include_de_gen: 71.4 ± 3.7 (n=154)&#10;">77.4</td>
46
  <td class="num" data-value="">–</td>
47
+ <td class="num" data-value="19.638176195686693" title="overall 58.4 t/s with 3 parallel requests, from 9 of 9 tasks">20</td>
48
  <td class="num" data-value="">–</td>
49
  <td class="num" data-value="">–</td>
50
  <td data-value="2026-09-18">2026-09-18</td>
 
61
  <td class="num" data-value="75.5" title="livecodebench_gen: 75.5 ± 3.0 (n=200)&#10;">75.5</td>
62
  <td class="num strong" data-value="81.13708513708514" title="mmlu_prox_de: 85.7 ± 2.0 (n=300)&#10;include_de_gen: 72.1 ± 3.6 (n=154)&#10;">81.1</td>
63
  <td class="num" data-value="26.376464212349354">26</td>
64
+ <td class="num" data-value="21.59310838133867" title="overall 64.4 t/s with 3 parallel requests, from 5 of 9 tasks">22</td>
65
  <td class="num" data-value="2041.4640201348918">2041</td>
66
  <td class="num" data-value="1973.583644023165">1974</td>
67
  <td data-value="2026-09-17">2026-09-17</td>
 
78
  <td class="num" data-value="75.0" title="livecodebench_gen: 75.0 ± 3.1 (n=200)&#10;">75.0</td>
79
  <td class="num" data-value="74.51659451659451" title="mmlu_prox_de: 78.3 ± 2.4 (n=300)&#10;include_de_gen: 66.9 ± 3.8 (n=154)&#10;">74.5</td>
80
  <td class="num" data-value="16.51787775562755">17</td>
81
+ <td class="num" data-value="13.757625586585043" title="overall 41.2 t/s with 3 parallel requests, from 5 of 9 tasks">14</td>
82
  <td class="num" data-value="1359.0489942173106">1359</td>
83
  <td class="num" data-value="2952.064286917448">2952</td>
84
  <td data-value="2026-09-18">2026-09-18</td>
 
95
  <td class="num" data-value="75.0" title="livecodebench_gen: 75.0 ± 3.1 (n=200)&#10;">75.0</td>
96
  <td class="num" data-value="76.4935064935065" title="mmlu_prox_de: 80.0 ± 2.3 (n=300)&#10;include_de_gen: 69.5 ± 3.7 (n=154)&#10;">76.5</td>
97
  <td class="num" data-value="16.51271607105954">17</td>
98
+ <td class="num" data-value="13.819760405181762" title="overall 41.0 t/s with 3 parallel requests, from 5 of 9 tasks">14</td>
99
  <td class="num" data-value="1358.107397713914">1358</td>
100
  <td class="num" data-value="2954.110997961834">2954</td>
101
  <td data-value="2026-09-19">2026-09-19</td>
 
112
  <td class="num" data-value="65.0" title="livecodebench_gen: 65.0 ± 3.4 (n=200)&#10;">65.0</td>
113
  <td class="num" data-value="76.25974025974027" title="mmlu_prox_de: 79.0 ± 2.4 (n=300)&#10;include_de_gen: 70.8 ± 3.7 (n=154)&#10;">76.3</td>
114
  <td class="num" data-value="15.103805505442727">15</td>
115
+ <td class="num" data-value="22.383948355383822" title="overall 67.6 t/s with 3 parallel requests, from 5 of 9 tasks">22</td>
116
  <td class="num" data-value="2550.5619640606633">2551</td>
117
  <td class="num" data-value="1577.6915270835161">1578</td>
118
  <td data-value="2026-09-18">2026-09-18</td>
119
  </tr>
120
+ <tr data-reasoning="off">
121
+ <td data-value="occamy-1.0">
122
+ <a href="runs/27.html" class="strong">occamy-1.0</a>
123
+ <div class="sub">NVFP4 · Reasoning off · direct · NVIDIA DGX Spark, 128 GB RAM</div>
124
+ </td>
125
+ <td class="num strong" data-value="64.03163768005874">64.0</td>
126
+ <td class="num" data-value="73.1057239057239" title="mmlu_pro: 84.0 ± 2.1 (n=300)&#10;gpqa_diamond_gen: 71.7 ± 3.2 (n=198)&#10;musr_gen: 63.6 ± 3.0 (n=250)&#10;">73.1</td>
127
+ <td class="num" data-value="62.4" title="omni_math_gen: 62.4 ± 3.1 (n=250)&#10;">62.4</td>
128
+ <td class="num" data-value="44.73182957393484" title="ifbench: 31.3 ± 2.7 (n=300)&#10;ifeval: 85.3 ± 2.9 (n=150)&#10;">44.7</td>
129
+ <td class="num" data-value="63.0" title="livecodebench_gen: 63.0 ± 3.4 (n=200)&#10;">63.0</td>
130
+ <td class="num" data-value="76.92063492063492" title="mmlu_prox_de: 79.7 ± 2.3 (n=300)&#10;include_de_gen: 71.4 ± 3.7 (n=154)&#10;">76.9</td>
131
+ <td class="num" data-value="36.719412085128695">37</td>
132
+ <td class="num" data-value="31.562617796089718" title="overall 94.1 t/s with 3 parallel requests, from 9 of 9 tasks">32</td>
133
+ <td class="num" data-value="5539.414736774487">5539</td>
134
+ <td class="num" data-value="726.4305330463685">726</td>
135
+ <td data-value="2026-09-21">2026-09-21</td>
136
+ </tr>
137
  <tr data-reasoning="off">
138
  <td data-value="qwen3.8-27b-abliterated">
139
  <a href="runs/23.html" class="strong">qwen3.8-27b-abliterated</a>
 
146
  <td class="num" data-value="59.5" title="livecodebench_gen: 59.5 ± 3.5 (n=200)&#10;">59.5</td>
147
  <td class="num" data-value="72.06637806637806" title="mmlu_prox_de: 74.3 ± 2.5 (n=300)&#10;include_de_gen: 67.5 ± 3.8 (n=154)&#10;">72.1</td>
148
  <td class="num" data-value="15.903617023850842">16</td>
149
+ <td class="num" data-value="21.942627395574263" title="overall 67.0 t/s with 3 parallel requests, from 9 of 9 tasks">22</td>
150
  <td class="num" data-value="2472.0116600865786">2472</td>
151
  <td class="num" data-value="1627.824036986567">1628</td>
152
  <td data-value="2026-09-20">2026-09-20</td>
153
  </tr>
154
+ <tr data-reasoning="off">
155
+ <td data-value="ternary-bonsai-2-27b">
156
+ <a href="runs/26.html" class="strong">ternary-bonsai-2-27b</a>
157
+ <div class="sub">FP8 · Reasoning off · direct · NVIDIA DGX Spark, 128 GB RAM</div>
158
+ </td>
159
+ <td class="num strong" data-value="61.28656742867268">61.3</td>
160
+ <td class="num" data-value="69.5077441077441" title="mmlu_pro: 77.7 ± 2.4 (n=300)&#10;gpqa_diamond_gen: 65.7 ± 3.4 (n=198)&#10;musr_gen: 65.2 ± 3.0 (n=250)&#10;">69.5</td>
161
+ <td class="num" data-value="59.599999999999994" title="omni_math_gen: 59.6 ± 3.1 (n=250)&#10;">59.6</td>
162
+ <td class="num" data-value="46.32581453634085" title="ifbench: 34.3 ± 2.7 (n=300)&#10;ifeval: 82.7 ± 3.1 (n=150)&#10;">46.3</td>
163
+ <td class="num" data-value="56.49999999999999" title="livecodebench_gen: 56.5 ± 3.5 (n=200)&#10;">56.5</td>
164
+ <td class="num" data-value="74.4992784992785" title="mmlu_prox_de: 77.3 ± 2.4 (n=300)&#10;include_de_gen: 68.8 ± 3.7 (n=154)&#10;">74.5</td>
165
+ <td class="num" data-value="28.488199681723682">28</td>
166
+ <td class="num" data-value="19.303084023060574" title="overall 58.5 t/s with 3 parallel requests, from 9 of 9 tasks">19</td>
167
+ <td class="num" data-value="898.1292759650371">898</td>
168
+ <td class="num" data-value="4480.424041044898">4480</td>
169
+ <td data-value="2026-09-21">2026-09-21</td>
170
+ </tr>
171
  <tr data-reasoning="off">
172
  <td data-value="gemma-4-12b-it-heretic">
173
  <a href="runs/17.html" class="strong">gemma-4-12b-it-heretic</a>
 
180
  <td class="num" data-value="62.0" title="livecodebench_gen: 62.0 ± 3.4 (n=200)&#10;">62.0</td>
181
  <td class="num" data-value="67.66233766233766" title="mmlu_prox_de: 70.0 ± 2.7 (n=300)&#10;include_de_gen: 63.0 ± 3.9 (n=154)&#10;">67.7</td>
182
  <td class="num" data-value="21.360681311630678">21</td>
183
+ <td class="num" data-value="21.121219019103503" title="overall 62.6 t/s with 3 parallel requests, from 5 of 9 tasks">21</td>
184
  <td class="num" data-value="5258.027383235864">5258</td>
185
  <td class="num" data-value="763.404164230451">763</td>
186
  <td data-value="2026-09-18">2026-09-18</td>
 
197
  <td class="num" data-value="53.0" title="livecodebench_gen: 53.0 ± 3.5 (n=200)&#10;">53.0</td>
198
  <td class="num" data-value="70.5108225108225" title="mmlu_prox_de: 72.0 ± 2.6 (n=300)&#10;include_de_gen: 67.5 ± 3.8 (n=154)&#10;">70.5</td>
199
  <td class="num" data-value="83.7975869946743">84</td>
200
+ <td class="num" data-value="70.42131680616991" title="overall 213.6 t/s with 3 parallel requests, from 5 of 9 tasks">70</td>
201
  <td class="num" data-value="7236.849600555504">7237</td>
202
  <td class="num" data-value="554.1085170116276">554</td>
203
  <td data-value="2026-09-17">2026-09-17</td>
 
214
  <td class="num" data-value="46.5" title="livecodebench_gen: 46.5 ± 3.5 (n=200)&#10;">46.5</td>
215
  <td class="num" data-value="67.00144300144301" title="mmlu_prox_de: 69.3 ± 2.7 (n=300)&#10;include_de_gen: 62.3 ± 3.9 (n=154)&#10;">67.0</td>
216
  <td class="num" data-value="31.530246994028012">32</td>
217
+ <td class="num" data-value="35.229241139471675" title="overall 106.0 t/s with 3 parallel requests, from 5 of 9 tasks">35</td>
218
  <td class="num" data-value="6290.925546819461">6291</td>
219
  <td class="num" data-value="639.6515059750527">640</td>
220
  <td data-value="2026-09-18">2026-09-18</td>
221
  </tr>
222
+ <tr data-reasoning="off">
223
+ <td data-value="zgcm-1-7b">
224
+ <a href="runs/29.html" class="strong">zgcm-1-7b</a>
225
+ <div class="sub">NVFP4 · Reasoning off · direct · NVIDIA DGX Spark, 128 GB RAM</div>
226
+ </td>
227
+ <td class="num strong" data-value="33.36777195514038">33.4</td>
228
+ <td class="num" data-value="34.68552188552189" title="mmlu_pro: 25.3 ± 2.5 (n=300)&#10;gpqa_diamond_gen: 32.3 ± 3.3 (n=198)&#10;musr_gen: 46.4 ± 3.2 (n=250)&#10;">34.7</td>
229
+ <td class="num" data-value="40.0" title="omni_math_gen: 40.0 ± 3.1 (n=250)&#10;">40.0</td>
230
+ <td class="num" data-value="44.33082706766917" title="ifbench: 33.0 ± 2.7 (n=300)&#10;ifeval: 78.7 ± 3.4 (n=150)&#10;">44.3</td>
231
+ <td class="num" data-value="23.0" title="livecodebench_gen: 23.0 ± 3.0 (n=200)&#10;">23.0</td>
232
+ <td class="num" data-value="24.82251082251082" title="mmlu_prox_de: 21.0 ± 2.4 (n=300)&#10;include_de_gen: 32.5 ± 3.8 (n=154)&#10;">24.8</td>
233
+ <td class="num" data-value="33.67868964254804">34</td>
234
+ <td class="num" data-value="34.0307978654491" title="overall 102.4 t/s with 3 parallel requests, from 9 of 9 tasks">34</td>
235
+ <td class="num" data-value="3957.900821130251">3958</td>
236
+ <td class="num" data-value="1022.5117260124534">1023</td>
237
+ <td data-value="2026-09-23">2026-09-23</td>
238
+ </tr>
239
  </tbody>
240
  </table>
241
  </div>
242
+ <div class="chart-set">
243
+ <script type="application/json" class="chart-data" id="charts-v3-quick">{"categories": [{"key": "overall", "label": "Overall"}, {"key": "knowledge", "label": "Knowledge \u0026 reasoning"}, {"key": "math", "label": "Math"}, {"key": "instructions", "label": "Instruction following"}, {"key": "code", "label": "Code"}, {"key": "german", "label": "German"}], "missing_tps": false, "reasoning_mark": "\ud83d\udcad", "runs": [{"label": "gpt-oss-120b \u00b7 \ud83d\udcad", "run_id": 18, "scores": {"code": 83.0, "german": 77.4, "instructions": 66.1, "knowledge": 68.5, "math": 70.4, "overall": 73.1}, "tps": 19.6, "tps_source": "run"}, {"label": "qwen3.8-flash-next-ple4", "run_id": 15, "scores": {"code": 75.5, "german": 81.1, "instructions": 49.6, "knowledge": 77.9, "math": 73.2, "overall": 71.5}, "tps": 21.6, "tps_source": "run"}, {"label": "gemma-4-12b-it", "run_id": 21, "scores": {"code": 75.0, "german": 74.5, "instructions": 51.3, "knowledge": 67.5, "math": 60.8, "overall": 65.8}, "tps": 13.8, "tps_source": "run"}, {"label": "gemma-4-12b-it-heretic", "run_id": 22, "scores": {"code": 75.0, "german": 76.5, "instructions": 50.0, "knowledge": 68.4, "math": 59.2, "overall": 65.8}, "tps": 13.8, "tps_source": "run"}, {"label": "qwen3.8-27b-mtp", "run_id": 20, "scores": {"code": 65.0, "german": 76.3, "instructions": 49.5, "knowledge": 69.9, "math": 60.4, "overall": 64.2}, "tps": 22.4, "tps_source": "run"}, {"label": "occamy-1.0", "run_id": 27, "scores": {"code": 63.0, "german": 76.9, "instructions": 44.7, "knowledge": 73.1, "math": 62.4, "overall": 64.0}, "tps": 31.6, "tps_source": "run"}, {"label": "qwen3.8-27b-abliterated", "run_id": 23, "scores": {"code": 59.5, "german": 72.1, "instructions": 46.1, "knowledge": 71.5, "math": 58.0, "overall": 61.4}, "tps": 21.9, "tps_source": "run"}, {"label": "ternary-bonsai-2-27b", "run_id": 26, "scores": {"code": 56.5, "german": 74.5, "instructions": 46.3, "knowledge": 69.5, "math": 59.6, "overall": 61.3}, "tps": 19.3, "tps_source": "run"}, {"label": "gemma-4-12b-it-heretic", "run_id": 17, "scores": {"code": 62.0, "german": 67.7, "instructions": 46.8, "knowledge": 63.7, "math": 48.4, "overall": 57.7}, "tps": 21.1, "tps_source": "run"}, {"label": "nemotron-3.5-lightning-dspark", "run_id": 16, "scores": {"code": 53.0, "german": 70.5, "instructions": 46.0, "knowledge": 55.8, "math": 40.4, "overall": 53.1}, "tps": 70.4, "tps_source": "run"}, {"label": "qwen3.5-9b-heretic-v2-mtp", "run_id": 19, "scores": {"code": 46.5, "german": 67.0, "instructions": 44.1, "knowledge": 65.1, "math": 35.6, "overall": 51.7}, "tps": 35.2, "tps_source": "run"}, {"label": "zgcm-1-7b", "run_id": 29, "scores": {"code": 23.0, "german": 24.8, "instructions": 44.3, "knowledge": 34.7, "math": 40.0, "overall": 33.4}, "tps": 34.0, "tps_source": "run"}], "texts": {"overall": "Overall", "overall_title": "Overall score", "points": "points", "score_axis": "Score (0\u2013100)", "source_run": "measured during the run", "source_test": "from the speed test", "tps_axis": "Generation (tokens/s)", "vs": " vs. generation (tokens/s)"}}</script>
244
+ <p class="segmented" role="group" aria-label="Chart category"><button type="button" data-chart-category="overall" class="active" aria-pressed="true">Overall</button><button type="button" data-chart-category="knowledge" class="" aria-pressed="false">Knowledge &amp; reasoning</button><button type="button" data-chart-category="math" class="" aria-pressed="false">Math</button><button type="button" data-chart-category="instructions" class="" aria-pressed="false">Instruction following</button><button type="button" data-chart-category="code" class="" aria-pressed="false">Code</button><button type="button" data-chart-category="german" class="" aria-pressed="false">German</button></p>
245
+ <div class="charts">
246
+ <figure class="chart-card">
247
+ <figcaption><span data-chart-title="bar">Overall score</span> <span class="sub">(💭 = with reasoning)</span></figcaption>
248
+ <div class="chart-box" data-chart-box="bar" style="height: 430px"><canvas data-chart="bar" role="img" aria-label="Score per model variant; the values are also in the table"></canvas></div>
249
+ </figure>
250
+ <figure class="chart-card">
251
+ <figcaption><span data-chart-title="scatter">Overall score vs. generation (tokens/s)</span> <span class="sub">(💭 = with reasoning)</span></figcaption>
252
+ <div class="chart-box" style="height: 320px"><canvas data-chart="scatter" role="img" aria-label="Score against generation speed in tokens per second; the values are also in the table"></canvas></div>
253
+ <p class="hint">x-axis: generation per request measured during the run; hollow points only have the speed-test value.</p>
254
+ </figure>
255
+ </div>
256
+ </div>
257
  </section>
258
+ <p class="hint">Scores run from 0 to 100; the best value per category is shown in bold. Hovering a category cell lists its tasks with standard error (±) and number of items (n). Speed: generation in tokens/s from the speed test and measured during the run (gen t/s run, per request), prompt processing at 4k context in tokens/s, time to first token at 4k context in ms. Click a column header to sort.</p>
259
+ <footer class="page-foot">As of 2026-09-23 · scores 0–100 · built with <code>bench publish</code></footer>
260
  </main>
261
+ <script src="chart.umd.min.js"></script>
262
  <script src="app.js"></script>
263
  </body>
264
  </html>
methodology.html CHANGED
@@ -117,8 +117,9 @@ on hardware and inference software.</p>
117
  </tbody>
118
  </table>
119
  </div>
120
- <footer class="page-foot">As of 2026-09-21 · scores 0–100 · built with <code>bench publish</code></footer>
121
  </main>
 
122
  <script src="app.js"></script>
123
  </body>
124
  </html>
 
117
  </tbody>
118
  </table>
119
  </div>
120
+ <footer class="page-foot">As of 2026-09-23 · scores 0–100 · built with <code>bench publish</code></footer>
121
  </main>
122
+ <script src="chart.umd.min.js"></script>
123
  <script src="app.js"></script>
124
  </body>
125
  </html>
runs/15.html CHANGED
@@ -188,8 +188,9 @@
188
  </table>
189
  </div>
190
  <p class="hint">Measured directly at the inference server.</p>
191
- <footer class="page-foot">As of 2026-09-21 · scores 0–100 · built with <code>bench publish</code></footer>
192
  </main>
 
193
  <script src="../app.js"></script>
194
  </body>
195
  </html>
 
188
  </table>
189
  </div>
190
  <p class="hint">Measured directly at the inference server.</p>
191
+ <footer class="page-foot">As of 2026-09-23 · scores 0–100 · built with <code>bench publish</code></footer>
192
  </main>
193
+ <script src="../chart.umd.min.js"></script>
194
  <script src="../app.js"></script>
195
  </body>
196
  </html>
runs/16.html CHANGED
@@ -188,8 +188,9 @@
188
  </table>
189
  </div>
190
  <p class="hint">Measured directly at the inference server.</p>
191
- <footer class="page-foot">As of 2026-09-21 · scores 0–100 · built with <code>bench publish</code></footer>
192
  </main>
 
193
  <script src="../app.js"></script>
194
  </body>
195
  </html>
 
188
  </table>
189
  </div>
190
  <p class="hint">Measured directly at the inference server.</p>
191
+ <footer class="page-foot">As of 2026-09-23 · scores 0–100 · built with <code>bench publish</code></footer>
192
  </main>
193
+ <script src="../chart.umd.min.js"></script>
194
  <script src="../app.js"></script>
195
  </body>
196
  </html>
runs/17.html CHANGED
@@ -188,8 +188,9 @@
188
  </table>
189
  </div>
190
  <p class="hint">Measured directly at the inference server.</p>
191
- <footer class="page-foot">As of 2026-09-21 · scores 0–100 · built with <code>bench publish</code></footer>
192
  </main>
 
193
  <script src="../app.js"></script>
194
  </body>
195
  </html>
 
188
  </table>
189
  </div>
190
  <p class="hint">Measured directly at the inference server.</p>
191
+ <footer class="page-foot">As of 2026-09-23 · scores 0–100 · built with <code>bench publish</code></footer>
192
  </main>
193
+ <script src="../chart.umd.min.js"></script>
194
  <script src="../app.js"></script>
195
  </body>
196
  </html>
runs/18.html CHANGED
@@ -126,8 +126,9 @@
126
  </table>
127
  </div>
128
  <p class="hint">Measured directly at the inference server.</p>
129
- <footer class="page-foot">As of 2026-09-21 · scores 0–100 · built with <code>bench publish</code></footer>
130
  </main>
 
131
  <script src="../app.js"></script>
132
  </body>
133
  </html>
 
126
  </table>
127
  </div>
128
  <p class="hint">Measured directly at the inference server.</p>
129
+ <footer class="page-foot">As of 2026-09-23 · scores 0–100 · built with <code>bench publish</code></footer>
130
  </main>
131
+ <script src="../chart.umd.min.js"></script>
132
  <script src="../app.js"></script>
133
  </body>
134
  </html>
runs/19.html CHANGED
@@ -188,8 +188,9 @@
188
  </table>
189
  </div>
190
  <p class="hint">Measured directly at the inference server.</p>
191
- <footer class="page-foot">As of 2026-09-21 · scores 0–100 · built with <code>bench publish</code></footer>
192
  </main>
 
193
  <script src="../app.js"></script>
194
  </body>
195
  </html>
 
188
  </table>
189
  </div>
190
  <p class="hint">Measured directly at the inference server.</p>
191
+ <footer class="page-foot">As of 2026-09-23 · scores 0–100 · built with <code>bench publish</code></footer>
192
  </main>
193
+ <script src="../chart.umd.min.js"></script>
194
  <script src="../app.js"></script>
195
  </body>
196
  </html>
runs/20.html CHANGED
@@ -188,8 +188,9 @@
188
  </table>
189
  </div>
190
  <p class="hint">Measured directly at the inference server.</p>
191
- <footer class="page-foot">As of 2026-09-21 · scores 0–100 · built with <code>bench publish</code></footer>
192
  </main>
 
193
  <script src="../app.js"></script>
194
  </body>
195
  </html>
 
188
  </table>
189
  </div>
190
  <p class="hint">Measured directly at the inference server.</p>
191
+ <footer class="page-foot">As of 2026-09-23 · scores 0–100 · built with <code>bench publish</code></footer>
192
  </main>
193
+ <script src="../chart.umd.min.js"></script>
194
  <script src="../app.js"></script>
195
  </body>
196
  </html>
runs/21.html CHANGED
@@ -188,8 +188,9 @@
188
  </table>
189
  </div>
190
  <p class="hint">Measured directly at the inference server.</p>
191
- <footer class="page-foot">As of 2026-09-21 · scores 0–100 · built with <code>bench publish</code></footer>
192
  </main>
 
193
  <script src="../app.js"></script>
194
  </body>
195
  </html>
 
188
  </table>
189
  </div>
190
  <p class="hint">Measured directly at the inference server.</p>
191
+ <footer class="page-foot">As of 2026-09-23 · scores 0–100 · built with <code>bench publish</code></footer>
192
  </main>
193
+ <script src="../chart.umd.min.js"></script>
194
  <script src="../app.js"></script>
195
  </body>
196
  </html>
runs/22.html CHANGED
@@ -188,8 +188,9 @@
188
  </table>
189
  </div>
190
  <p class="hint">Measured directly at the inference server.</p>
191
- <footer class="page-foot">As of 2026-09-21 · scores 0–100 · built with <code>bench publish</code></footer>
192
  </main>
 
193
  <script src="../app.js"></script>
194
  </body>
195
  </html>
 
188
  </table>
189
  </div>
190
  <p class="hint">Measured directly at the inference server.</p>
191
+ <footer class="page-foot">As of 2026-09-23 · scores 0–100 · built with <code>bench publish</code></footer>
192
  </main>
193
+ <script src="../chart.umd.min.js"></script>
194
  <script src="../app.js"></script>
195
  </body>
196
  </html>
runs/23.html CHANGED
@@ -188,8 +188,9 @@
188
  </table>
189
  </div>
190
  <p class="hint">Measured directly at the inference server.</p>
191
- <footer class="page-foot">As of 2026-09-21 · scores 0–100 · built with <code>bench publish</code></footer>
192
  </main>
 
193
  <script src="../app.js"></script>
194
  </body>
195
  </html>
 
188
  </table>
189
  </div>
190
  <p class="hint">Measured directly at the inference server.</p>
191
+ <footer class="page-foot">As of 2026-09-23 · scores 0–100 · built with <code>bench publish</code></footer>
192
  </main>
193
+ <script src="../chart.umd.min.js"></script>
194
  <script src="../app.js"></script>
195
  </body>
196
  </html>
runs/26.html ADDED
@@ -0,0 +1,196 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1">
6
+ <title>ternary-bonsai-2-27b – Local LLM Benchmarks</title>
7
+ <link rel="stylesheet" href="../style.css">
8
+ </head>
9
+ <body>
10
+ <header class="top">
11
+ <a class="brand" href="../index.html">Local LLM Benchmarks</a>
12
+ <nav>
13
+ <a href="../index.html">Overview</a>
14
+ <a href="../methodology.html">Methodology</a>
15
+ </nav>
16
+ </header>
17
+ <main>
18
+ <p class="sub"><a href="../index.html#v3-quick">← Overview</a></p>
19
+ <h1>ternary-bonsai-2-27b</h1>
20
+ <dl class="meta">
21
+ <dt>Quantization</dt><dd>FP8</dd>
22
+ <dt>Reasoning</dt><dd>off</dd>
23
+ <dt>Profile</dt><dd>quick</dd>
24
+ <dt>Suite</dt><dd>v2b</dd>
25
+ <dt>Date</dt><dd>2026-09-21 – 2026-09-23</dd>
26
+ <dt>Hardware</dt><dd>NVIDIA DGX Spark, 128 GB RAM</dd>
27
+ <dt>Inference software</dt><dd>vLLM 0.26.0</dd>
28
+ <dt>Measured</dt><dd>directly at the inference server</dd>
29
+ <dt>Overall</dt><dd class="strong">61.3</dd>
30
+ </dl>
31
+
32
+ <h2>Categories</h2>
33
+ <div class="table-wrap">
34
+ <table>
35
+ <thead><tr><th>Category</th><th class="num">Score</th></tr></thead>
36
+ <tbody>
37
+ <tr><td>Knowledge &amp; reasoning</td><td class="num">69.5</td></tr>
38
+ <tr><td>Math</td><td class="num">59.6</td></tr>
39
+ <tr><td>Instruction following</td><td class="num">46.3</td></tr>
40
+ <tr><td>Code</td><td class="num">56.5</td></tr>
41
+ <tr><td>German</td><td class="num">74.5</td></tr>
42
+ </tbody>
43
+ </table>
44
+ </div>
45
+
46
+ <h2>Tasks</h2>
47
+ <div class="table-wrap">
48
+ <table>
49
+ <thead><tr><th>Category</th><th>Task</th><th class="num">Score</th><th class="num">±</th><th class="num">n</th></tr></thead>
50
+ <tbody>
51
+ <tr>
52
+ <td>Knowledge &amp; reasoning</td>
53
+ <td>mmlu_pro</td>
54
+ <td class="num">77.7</td>
55
+ <td class="num">± 2.4</td>
56
+ <td class="num">300</td>
57
+ </tr>
58
+ <tr>
59
+ <td>Knowledge &amp; reasoning</td>
60
+ <td>gpqa_diamond_gen</td>
61
+ <td class="num">65.7</td>
62
+ <td class="num">± 3.4</td>
63
+ <td class="num">198</td>
64
+ </tr>
65
+ <tr>
66
+ <td>Knowledge &amp; reasoning</td>
67
+ <td>musr_gen</td>
68
+ <td class="num">65.2</td>
69
+ <td class="num">± 3.0</td>
70
+ <td class="num">250</td>
71
+ </tr>
72
+ <tr>
73
+ <td>Math</td>
74
+ <td>omni_math_gen</td>
75
+ <td class="num">59.6</td>
76
+ <td class="num">± 3.1</td>
77
+ <td class="num">250</td>
78
+ </tr>
79
+ <tr>
80
+ <td>Instruction following</td>
81
+ <td>ifbench</td>
82
+ <td class="num">34.3</td>
83
+ <td class="num">± 2.7</td>
84
+ <td class="num">300</td>
85
+ </tr>
86
+ <tr>
87
+ <td>Instruction following</td>
88
+ <td>ifeval</td>
89
+ <td class="num">82.7</td>
90
+ <td class="num">± 3.1</td>
91
+ <td class="num">150</td>
92
+ </tr>
93
+ <tr>
94
+ <td>Code</td>
95
+ <td>livecodebench_gen</td>
96
+ <td class="num">56.5</td>
97
+ <td class="num">± 3.5</td>
98
+ <td class="num">200</td>
99
+ </tr>
100
+ <tr>
101
+ <td>German</td>
102
+ <td>mmlu_prox_de</td>
103
+ <td class="num">77.3</td>
104
+ <td class="num">± 2.4</td>
105
+ <td class="num">300</td>
106
+ </tr>
107
+ <tr>
108
+ <td>German</td>
109
+ <td>include_de_gen</td>
110
+ <td class="num">68.8</td>
111
+ <td class="num">± 3.7</td>
112
+ <td class="num">154</td>
113
+ </tr>
114
+ </tbody>
115
+ </table>
116
+ </div>
117
+ <p class="hint">± is the standard error; the 95% interval spans roughly 1.96 standard errors around the score.</p>
118
+
119
+ <h2>Speed</h2>
120
+ <div class="table-wrap">
121
+ <table>
122
+ <thead><tr><th>Measure</th><th class="num">Context (target)</th><th class="num">Context (actual)</th><th class="num">Median</th><th class="num">p10</th><th class="num">p90</th><th class="num">n</th></tr></thead>
123
+ <tbody>
124
+ <tr>
125
+ <td>Generation [t/s]</td>
126
+ <td class="num">–</td>
127
+ <td class="num">–</td>
128
+ <td class="num">28.5</td>
129
+ <td class="num">28.5</td>
130
+ <td class="num">28.5</td>
131
+ <td class="num">5</td>
132
+ </tr>
133
+ <tr>
134
+ <td>Prompt processing [t/s]</td>
135
+ <td class="num">512</td>
136
+ <td class="num">529</td>
137
+ <td class="num">622.5</td>
138
+ <td class="num">602.7</td>
139
+ <td class="num">638.3</td>
140
+ <td class="num">5</td>
141
+ </tr>
142
+ <tr>
143
+ <td>Prompt processing [t/s]</td>
144
+ <td class="num">4096</td>
145
+ <td class="num">4024</td>
146
+ <td class="num">898.1</td>
147
+ <td class="num">896.5</td>
148
+ <td class="num">899.6</td>
149
+ <td class="num">5</td>
150
+ </tr>
151
+ <tr>
152
+ <td>Prompt processing [t/s]</td>
153
+ <td class="num">16384</td>
154
+ <td class="num">16001</td>
155
+ <td class="num">892.4</td>
156
+ <td class="num">886.4</td>
157
+ <td class="num">903.4</td>
158
+ <td class="num">5</td>
159
+ </tr>
160
+ <tr>
161
+ <td>Time to first token [ms]</td>
162
+ <td class="num">512</td>
163
+ <td class="num">529</td>
164
+ <td class="num">849.8</td>
165
+ <td class="num">828.8</td>
166
+ <td class="num">876.9</td>
167
+ <td class="num">5</td>
168
+ </tr>
169
+ <tr>
170
+ <td>Time to first token [ms]</td>
171
+ <td class="num">4096</td>
172
+ <td class="num">4024</td>
173
+ <td class="num">4480.4</td>
174
+ <td class="num">4473.0</td>
175
+ <td class="num">4488.6</td>
176
+ <td class="num">5</td>
177
+ </tr>
178
+ <tr>
179
+ <td>Time to first token [ms]</td>
180
+ <td class="num">16384</td>
181
+ <td class="num">16001</td>
182
+ <td class="num">17931.1</td>
183
+ <td class="num">17712.7</td>
184
+ <td class="num">18051.2</td>
185
+ <td class="num">5</td>
186
+ </tr>
187
+ </tbody>
188
+ </table>
189
+ </div>
190
+ <p class="hint">Measured directly at the inference server.</p>
191
+ <footer class="page-foot">As of 2026-09-23 · scores 0–100 · built with <code>bench publish</code></footer>
192
+ </main>
193
+ <script src="../chart.umd.min.js"></script>
194
+ <script src="../app.js"></script>
195
+ </body>
196
+ </html>
runs/27.html ADDED
@@ -0,0 +1,196 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1">
6
+ <title>occamy-1.0 – Local LLM Benchmarks</title>
7
+ <link rel="stylesheet" href="../style.css">
8
+ </head>
9
+ <body>
10
+ <header class="top">
11
+ <a class="brand" href="../index.html">Local LLM Benchmarks</a>
12
+ <nav>
13
+ <a href="../index.html">Overview</a>
14
+ <a href="../methodology.html">Methodology</a>
15
+ </nav>
16
+ </header>
17
+ <main>
18
+ <p class="sub"><a href="../index.html#v3-quick">← Overview</a></p>
19
+ <h1>occamy-1.0</h1>
20
+ <dl class="meta">
21
+ <dt>Quantization</dt><dd>NVFP4</dd>
22
+ <dt>Reasoning</dt><dd>off</dd>
23
+ <dt>Profile</dt><dd>quick</dd>
24
+ <dt>Suite</dt><dd>v2b</dd>
25
+ <dt>Date</dt><dd>2026-09-21 – 2026-09-22</dd>
26
+ <dt>Hardware</dt><dd>NVIDIA DGX Spark, 128 GB RAM</dd>
27
+ <dt>Inference software</dt><dd>vLLM 0.26.0</dd>
28
+ <dt>Measured</dt><dd>directly at the inference server</dd>
29
+ <dt>Overall</dt><dd class="strong">64.0</dd>
30
+ </dl>
31
+
32
+ <h2>Categories</h2>
33
+ <div class="table-wrap">
34
+ <table>
35
+ <thead><tr><th>Category</th><th class="num">Score</th></tr></thead>
36
+ <tbody>
37
+ <tr><td>Knowledge &amp; reasoning</td><td class="num">73.1</td></tr>
38
+ <tr><td>Math</td><td class="num">62.4</td></tr>
39
+ <tr><td>Instruction following</td><td class="num">44.7</td></tr>
40
+ <tr><td>Code</td><td class="num">63.0</td></tr>
41
+ <tr><td>German</td><td class="num">76.9</td></tr>
42
+ </tbody>
43
+ </table>
44
+ </div>
45
+
46
+ <h2>Tasks</h2>
47
+ <div class="table-wrap">
48
+ <table>
49
+ <thead><tr><th>Category</th><th>Task</th><th class="num">Score</th><th class="num">±</th><th class="num">n</th></tr></thead>
50
+ <tbody>
51
+ <tr>
52
+ <td>Knowledge &amp; reasoning</td>
53
+ <td>mmlu_pro</td>
54
+ <td class="num">84.0</td>
55
+ <td class="num">± 2.1</td>
56
+ <td class="num">300</td>
57
+ </tr>
58
+ <tr>
59
+ <td>Knowledge &amp; reasoning</td>
60
+ <td>gpqa_diamond_gen</td>
61
+ <td class="num">71.7</td>
62
+ <td class="num">± 3.2</td>
63
+ <td class="num">198</td>
64
+ </tr>
65
+ <tr>
66
+ <td>Knowledge &amp; reasoning</td>
67
+ <td>musr_gen</td>
68
+ <td class="num">63.6</td>
69
+ <td class="num">± 3.0</td>
70
+ <td class="num">250</td>
71
+ </tr>
72
+ <tr>
73
+ <td>Math</td>
74
+ <td>omni_math_gen</td>
75
+ <td class="num">62.4</td>
76
+ <td class="num">± 3.1</td>
77
+ <td class="num">250</td>
78
+ </tr>
79
+ <tr>
80
+ <td>Instruction following</td>
81
+ <td>ifbench</td>
82
+ <td class="num">31.3</td>
83
+ <td class="num">± 2.7</td>
84
+ <td class="num">300</td>
85
+ </tr>
86
+ <tr>
87
+ <td>Instruction following</td>
88
+ <td>ifeval</td>
89
+ <td class="num">85.3</td>
90
+ <td class="num">± 2.9</td>
91
+ <td class="num">150</td>
92
+ </tr>
93
+ <tr>
94
+ <td>Code</td>
95
+ <td>livecodebench_gen</td>
96
+ <td class="num">63.0</td>
97
+ <td class="num">± 3.4</td>
98
+ <td class="num">200</td>
99
+ </tr>
100
+ <tr>
101
+ <td>German</td>
102
+ <td>mmlu_prox_de</td>
103
+ <td class="num">79.7</td>
104
+ <td class="num">± 2.3</td>
105
+ <td class="num">300</td>
106
+ </tr>
107
+ <tr>
108
+ <td>German</td>
109
+ <td>include_de_gen</td>
110
+ <td class="num">71.4</td>
111
+ <td class="num">± 3.7</td>
112
+ <td class="num">154</td>
113
+ </tr>
114
+ </tbody>
115
+ </table>
116
+ </div>
117
+ <p class="hint">± is the standard error; the 95% interval spans roughly 1.96 standard errors around the score.</p>
118
+
119
+ <h2>Speed</h2>
120
+ <div class="table-wrap">
121
+ <table>
122
+ <thead><tr><th>Measure</th><th class="num">Context (target)</th><th class="num">Context (actual)</th><th class="num">Median</th><th class="num">p10</th><th class="num">p90</th><th class="num">n</th></tr></thead>
123
+ <tbody>
124
+ <tr>
125
+ <td>Generation [t/s]</td>
126
+ <td class="num">–</td>
127
+ <td class="num">–</td>
128
+ <td class="num">36.7</td>
129
+ <td class="num">36.7</td>
130
+ <td class="num">36.7</td>
131
+ <td class="num">5</td>
132
+ </tr>
133
+ <tr>
134
+ <td>Prompt processing [t/s]</td>
135
+ <td class="num">512</td>
136
+ <td class="num">529</td>
137
+ <td class="num">3523.5</td>
138
+ <td class="num">3387.4</td>
139
+ <td class="num">3545.5</td>
140
+ <td class="num">5</td>
141
+ </tr>
142
+ <tr>
143
+ <td>Prompt processing [t/s]</td>
144
+ <td class="num">4096</td>
145
+ <td class="num">4024</td>
146
+ <td class="num">5539.4</td>
147
+ <td class="num">5491.9</td>
148
+ <td class="num">5551.9</td>
149
+ <td class="num">5</td>
150
+ </tr>
151
+ <tr>
152
+ <td>Prompt processing [t/s]</td>
153
+ <td class="num">16384</td>
154
+ <td class="num">16001</td>
155
+ <td class="num">5467.9</td>
156
+ <td class="num">5449.6</td>
157
+ <td class="num">5483.6</td>
158
+ <td class="num">5</td>
159
+ </tr>
160
+ <tr>
161
+ <td>Time to first token [ms]</td>
162
+ <td class="num">512</td>
163
+ <td class="num">529</td>
164
+ <td class="num">150.1</td>
165
+ <td class="num">149.2</td>
166
+ <td class="num">156.0</td>
167
+ <td class="num">5</td>
168
+ </tr>
169
+ <tr>
170
+ <td>Time to first token [ms]</td>
171
+ <td class="num">4096</td>
172
+ <td class="num">4024</td>
173
+ <td class="num">726.4</td>
174
+ <td class="num">724.8</td>
175
+ <td class="num">732.7</td>
176
+ <td class="num">5</td>
177
+ </tr>
178
+ <tr>
179
+ <td>Time to first token [ms]</td>
180
+ <td class="num">16384</td>
181
+ <td class="num">16001</td>
182
+ <td class="num">2926.3</td>
183
+ <td class="num">2918.0</td>
184
+ <td class="num">2936.2</td>
185
+ <td class="num">5</td>
186
+ </tr>
187
+ </tbody>
188
+ </table>
189
+ </div>
190
+ <p class="hint">Measured directly at the inference server.</p>
191
+ <footer class="page-foot">As of 2026-09-23 · scores 0–100 · built with <code>bench publish</code></footer>
192
+ </main>
193
+ <script src="../chart.umd.min.js"></script>
194
+ <script src="../app.js"></script>
195
+ </body>
196
+ </html>
runs/29.html ADDED
@@ -0,0 +1,196 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1">
6
+ <title>zgcm-1-7b – Local LLM Benchmarks</title>
7
+ <link rel="stylesheet" href="../style.css">
8
+ </head>
9
+ <body>
10
+ <header class="top">
11
+ <a class="brand" href="../index.html">Local LLM Benchmarks</a>
12
+ <nav>
13
+ <a href="../index.html">Overview</a>
14
+ <a href="../methodology.html">Methodology</a>
15
+ </nav>
16
+ </header>
17
+ <main>
18
+ <p class="sub"><a href="../index.html#v3-quick">← Overview</a></p>
19
+ <h1>zgcm-1-7b</h1>
20
+ <dl class="meta">
21
+ <dt>Quantization</dt><dd>NVFP4</dd>
22
+ <dt>Reasoning</dt><dd>off</dd>
23
+ <dt>Profile</dt><dd>quick</dd>
24
+ <dt>Suite</dt><dd>v2b</dd>
25
+ <dt>Date</dt><dd>2026-09-23</dd>
26
+ <dt>Hardware</dt><dd>NVIDIA DGX Spark, 128 GB RAM</dd>
27
+ <dt>Inference software</dt><dd>vLLM 0.26.0</dd>
28
+ <dt>Measured</dt><dd>directly at the inference server</dd>
29
+ <dt>Overall</dt><dd class="strong">33.4</dd>
30
+ </dl>
31
+
32
+ <h2>Categories</h2>
33
+ <div class="table-wrap">
34
+ <table>
35
+ <thead><tr><th>Category</th><th class="num">Score</th></tr></thead>
36
+ <tbody>
37
+ <tr><td>Knowledge &amp; reasoning</td><td class="num">34.7</td></tr>
38
+ <tr><td>Math</td><td class="num">40.0</td></tr>
39
+ <tr><td>Instruction following</td><td class="num">44.3</td></tr>
40
+ <tr><td>Code</td><td class="num">23.0</td></tr>
41
+ <tr><td>German</td><td class="num">24.8</td></tr>
42
+ </tbody>
43
+ </table>
44
+ </div>
45
+
46
+ <h2>Tasks</h2>
47
+ <div class="table-wrap">
48
+ <table>
49
+ <thead><tr><th>Category</th><th>Task</th><th class="num">Score</th><th class="num">±</th><th class="num">n</th></tr></thead>
50
+ <tbody>
51
+ <tr>
52
+ <td>Knowledge &amp; reasoning</td>
53
+ <td>mmlu_pro</td>
54
+ <td class="num">25.3</td>
55
+ <td class="num">± 2.5</td>
56
+ <td class="num">300</td>
57
+ </tr>
58
+ <tr>
59
+ <td>Knowledge &amp; reasoning</td>
60
+ <td>gpqa_diamond_gen</td>
61
+ <td class="num">32.3</td>
62
+ <td class="num">± 3.3</td>
63
+ <td class="num">198</td>
64
+ </tr>
65
+ <tr>
66
+ <td>Knowledge &amp; reasoning</td>
67
+ <td>musr_gen</td>
68
+ <td class="num">46.4</td>
69
+ <td class="num">± 3.2</td>
70
+ <td class="num">250</td>
71
+ </tr>
72
+ <tr>
73
+ <td>Math</td>
74
+ <td>omni_math_gen</td>
75
+ <td class="num">40.0</td>
76
+ <td class="num">± 3.1</td>
77
+ <td class="num">250</td>
78
+ </tr>
79
+ <tr>
80
+ <td>Instruction following</td>
81
+ <td>ifbench</td>
82
+ <td class="num">33.0</td>
83
+ <td class="num">± 2.7</td>
84
+ <td class="num">300</td>
85
+ </tr>
86
+ <tr>
87
+ <td>Instruction following</td>
88
+ <td>ifeval</td>
89
+ <td class="num">78.7</td>
90
+ <td class="num">± 3.4</td>
91
+ <td class="num">150</td>
92
+ </tr>
93
+ <tr>
94
+ <td>Code</td>
95
+ <td>livecodebench_gen</td>
96
+ <td class="num">23.0</td>
97
+ <td class="num">± 3.0</td>
98
+ <td class="num">200</td>
99
+ </tr>
100
+ <tr>
101
+ <td>German</td>
102
+ <td>mmlu_prox_de</td>
103
+ <td class="num">21.0</td>
104
+ <td class="num">± 2.4</td>
105
+ <td class="num">300</td>
106
+ </tr>
107
+ <tr>
108
+ <td>German</td>
109
+ <td>include_de_gen</td>
110
+ <td class="num">32.5</td>
111
+ <td class="num">± 3.8</td>
112
+ <td class="num">154</td>
113
+ </tr>
114
+ </tbody>
115
+ </table>
116
+ </div>
117
+ <p class="hint">± is the standard error; the 95% interval spans roughly 1.96 standard errors around the score.</p>
118
+
119
+ <h2>Speed</h2>
120
+ <div class="table-wrap">
121
+ <table>
122
+ <thead><tr><th>Measure</th><th class="num">Context (target)</th><th class="num">Context (actual)</th><th class="num">Median</th><th class="num">p10</th><th class="num">p90</th><th class="num">n</th></tr></thead>
123
+ <tbody>
124
+ <tr>
125
+ <td>Generation [t/s]</td>
126
+ <td class="num">–</td>
127
+ <td class="num">–</td>
128
+ <td class="num">33.7</td>
129
+ <td class="num">33.7</td>
130
+ <td class="num">33.7</td>
131
+ <td class="num">5</td>
132
+ </tr>
133
+ <tr>
134
+ <td>Prompt processing [t/s]</td>
135
+ <td class="num">512</td>
136
+ <td class="num">526</td>
137
+ <td class="num">3487.7</td>
138
+ <td class="num">3466.3</td>
139
+ <td class="num">3494.1</td>
140
+ <td class="num">5</td>
141
+ </tr>
142
+ <tr>
143
+ <td>Prompt processing [t/s]</td>
144
+ <td class="num">4096</td>
145
+ <td class="num">4047</td>
146
+ <td class="num">3957.9</td>
147
+ <td class="num">3932.1</td>
148
+ <td class="num">3965.1</td>
149
+ <td class="num">5</td>
150
+ </tr>
151
+ <tr>
152
+ <td>Prompt processing [t/s]</td>
153
+ <td class="num">16384</td>
154
+ <td class="num">16107</td>
155
+ <td class="num">3928.9</td>
156
+ <td class="num">3924.4</td>
157
+ <td class="num">3936.6</td>
158
+ <td class="num">5</td>
159
+ </tr>
160
+ <tr>
161
+ <td>Time to first token [ms]</td>
162
+ <td class="num">512</td>
163
+ <td class="num">526</td>
164
+ <td class="num">150.8</td>
165
+ <td class="num">150.5</td>
166
+ <td class="num">151.7</td>
167
+ <td class="num">5</td>
168
+ </tr>
169
+ <tr>
170
+ <td>Time to first token [ms]</td>
171
+ <td class="num">4096</td>
172
+ <td class="num">4047</td>
173
+ <td class="num">1022.5</td>
174
+ <td class="num">1020.7</td>
175
+ <td class="num">1029.2</td>
176
+ <td class="num">5</td>
177
+ </tr>
178
+ <tr>
179
+ <td>Time to first token [ms]</td>
180
+ <td class="num">16384</td>
181
+ <td class="num">16107</td>
182
+ <td class="num">4099.6</td>
183
+ <td class="num">4091.6</td>
184
+ <td class="num">4104.3</td>
185
+ <td class="num">5</td>
186
+ </tr>
187
+ </tbody>
188
+ </table>
189
+ </div>
190
+ <p class="hint">Measured directly at the inference server.</p>
191
+ <footer class="page-foot">As of 2026-09-23 · scores 0–100 · built with <code>bench publish</code></footer>
192
+ </main>
193
+ <script src="../chart.umd.min.js"></script>
194
+ <script src="../app.js"></script>
195
+ </body>
196
+ </html>
style.css CHANGED
@@ -12,6 +12,7 @@
12
  --series-1: #2a78d6;
13
  --series-2: #eb6834;
14
  --series-3: #1baf7a;
 
15
  --warn: #fab219;
16
  --warn-ink: #7a5200;
17
  --danger: #c62828;
@@ -38,6 +39,7 @@
38
  --series-1: #3987e5;
39
  --series-2: #d95926;
40
  --series-3: #199e70;
 
41
  --warn-ink: #fab219;
42
  --danger: #ef5350;
43
  --ok: #4cc38a;
@@ -110,6 +112,9 @@ th[aria-sort="descending"]::after { content: " ▼"; }
110
  .chart-card { margin: 0 0 16px; padding: 12px; background: var(--surface); border: 1px solid var(--border); border-radius: 8px; }
111
  figcaption { font-weight: 600; margin-bottom: 8px; }
112
  .chart-box { position: relative; width: 100%; }
 
 
 
113
  .meta { display: grid; grid-template-columns: max-content 1fr; gap: 4px 16px; padding: 12px; background: var(--surface); border: 1px solid var(--border); border-radius: 8px; }
114
  .meta dt { color: var(--ink-2); }
115
  .meta dd { margin: 0; overflow-wrap: anywhere; }
 
12
  --series-1: #2a78d6;
13
  --series-2: #eb6834;
14
  --series-3: #1baf7a;
15
+ --zone: rgba(27, 175, 122, 0.12);
16
  --warn: #fab219;
17
  --warn-ink: #7a5200;
18
  --danger: #c62828;
 
39
  --series-1: #3987e5;
40
  --series-2: #d95926;
41
  --series-3: #199e70;
42
+ --zone: rgba(76, 195, 138, 0.14);
43
  --warn-ink: #fab219;
44
  --danger: #ef5350;
45
  --ok: #4cc38a;
 
112
  .chart-card { margin: 0 0 16px; padding: 12px; background: var(--surface); border: 1px solid var(--border); border-radius: 8px; }
113
  figcaption { font-weight: 600; margin-bottom: 8px; }
114
  .chart-box { position: relative; width: 100%; }
115
+ .thresholds { display: flex; flex-wrap: wrap; gap: 8px 12px; align-items: center; margin: 0; }
116
+ .thresholds label { display: inline-flex; gap: 6px; align-items: center; color: var(--ink-2); }
117
+ .thresholds input { width: 6em; }
118
  .meta { display: grid; grid-template-columns: max-content 1fr; gap: 4px 16px; padding: 12px; background: var(--surface); border: 1px solid var(--border); border-radius: 8px; }
119
  .meta dt { color: var(--ink-2); }
120
  .meta dd { margin: 0; overflow-wrap: anywhere; }