File size: 3,404 Bytes
7252d11
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>One Script, Every Benchmark</title>
<link rel="stylesheet" href="../style.css">
</head>
<body>
<script type="module" src="../summarize.js" defer></script><script src="../script.js" defer></script>

<div class="background"></div>

<main class="article">

<a class="back" href="../index.html">&larr; Back</a>

<div class="meta">July 2026 &middot; Tooling</div>

<h1>One Script, Every Benchmark</h1>

<p>Until today, every Bench Labs benchmark had its own eval files β€” a notebook here, an lm-eval config there, a custom scorer somewhere else. It worked, but reproducing a leaderboard entry meant figuring out which pipeline produced it. That's over.</p>

<h2>Download, run, done</h2>

<pre><code>curl -sLO https://huggingface.co/spaces/bench-labs/BenchLabs-Leaderboard/resolve/main/script.py
pip install torch transformers
python script.py --model your/model</code></pre>

<p>That's the whole workflow. One <code>script.py</code>, hosted in the leaderboard Space itself, runs the full suite:</p>

<ul>
  <li><strong>bench-effortless-6-2026</strong> β€” normalized exact-match.</li>
  <li><strong>bench-easy-6-2026</strong> β€” the hybrid category-aware scorer (strict / flexible / semantic), same routing as the original evaluator. Plain exact-match is reported alongside.</li>
  <li><strong>bench-mid-6-2026</strong> β€” lm-eval-style loglikelihood over <code>target_scores</code>: <code>acc</code>, <code>acc_norm</code>, <code>soft_score</code>, <code>soft_score_norm</code>.</li>
  <li><strong>bench-AGI</strong> β€” auto-skipped while the scoring pipeline is reworked; it will slot in when ready.</li>
</ul>

<h2>Full category breakdown, not one number</h2>

<p>Every run reports overall, per-category, and per-subcategory scores, with macro averages and stderr:</p>

<pre><code>=== bench-mid-6-2026 (tier 3) ===
  headline [soft_score_norm]: 0.6103   (n=155, stderr=0.0388)
  also: acc=0.5806  acc_norm=0.6000  soft_score=0.5871
  category                       n  soft_score_norm
  Math                          28  0.675
    - arithmetic                 8  0.625
    - pattern                   10  0.800
    - reasoning                 10  0.500
  ...</code></pre>

<h2>Straight into the leaderboard</h2>

<p>Besides <code>results.json</code> and per-sample CSVs, the script writes <code>leaderboard.json</code> β€” an entry already in the exact shape of the leaderboard's <code>models.json</code>, category breakdown included. Submitting is now: run the script, paste the entry, open a PR on the Space. Same scoring for everyone, reproducible with one command.</p>

<p>Options worth knowing: <code>--benchmarks effortless,easy,mid</code> to pick tiers, <code>--limit 10</code> for a smoke test, <code>--device</code> / <code>--dtype</code> / <code>--batch-size</code> for hardware, <code>--no-chat-template</code> to force plain QA prompting. <code>--help</code> has the rest.</p>

<p><a href="https://huggingface.co/spaces/bench-labs/BenchLabs-Leaderboard" target="_blank" rel="noopener">Leaderboard</a> &middot; <a href="https://huggingface.co/spaces/bench-labs/BenchLabs-Leaderboard/blob/main/script.py" target="_blank" rel="noopener">script.py</a></p>

<hr>

<p><em>Bench Labs &middot; Simple, Reliable, Open sourced</em></p>

</main>

</body>
</html>