File size: 6,708 Bytes
aa3a1da
07c7a64
 
 
 
a1831fe
07c7a64
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f91e276
 
 
 
07c7a64
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f91e276
 
 
07c7a64
 
 
 
 
 
 
 
 
 
 
 
 
 
 
aa3a1da
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<base target="_blank">
<title>LoRA Speedrun — verified wall-clock leaderboard</title>
<style>
  :root{--page:#0d0d0d;--surface:#1a1a19;--ink:#fff;--ink2:#c3c2b7;--muted:#898781;
        --green:#21d321;--green-dim:#0ca30c;--track:#2c2c2a;--line:#333331}
  *{box-sizing:border-box;margin:0}
  body{background:var(--page);color:var(--ink2);font:16px/1.55 system-ui,-apple-system,"Segoe UI",sans-serif;padding:24px}
  .wrap{max-width:980px;margin:0 auto}
  h1{color:var(--ink);font-size:2.1rem;letter-spacing:-.5px}
  .sub{margin-top:6px}
  .meta{color:var(--muted);font-size:.86rem;margin-top:4px}
  .card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:22px 24px;margin-top:22px}
  h2{color:var(--ink);font-size:1.15rem;margin-bottom:2px}
  .target{color:var(--muted);font-size:.86rem;margin-bottom:14px}
  .rec{color:var(--green);font-weight:600;margin-bottom:14px}
  table{width:100%;border-collapse:collapse;font-size:.92rem}
  th{color:var(--muted);text-align:left;font-weight:500;padding:6px 10px 6px 0;border-bottom:1px solid var(--line)}
  td{padding:9px 10px 9px 0;border-bottom:1px solid #232322;vertical-align:top}
  tr.current td{color:var(--ink)}
  tr.current .time{color:var(--green);font-weight:700}
  .time{white-space:nowrap;font-variant-numeric:tabular-nums;color:var(--ink)}
  .delta{color:var(--green-dim);white-space:nowrap}
  a{color:#3987e5;text-decoration:none}
  a:hover{text-decoration:underline}
  .bar{height:7px;border-radius:4px;background:var(--track);margin-top:6px;overflow:hidden}
  .bar>i{display:block;height:100%;border-radius:4px;background:#6e6d68}
  tr.current .bar>i{background:var(--green-dim)}
  .cta{margin-top:26px;padding:18px 22px;background:var(--surface);border:1px solid var(--line);border-radius:14px}
  .cta b{color:var(--green);font-size:1.1rem}
  footer{color:var(--muted);font-size:.82rem;margin:26px 0 8px}
  .err{color:#e66767}
  @media(max-width:640px){.hide-m{display:none}}
</style>
</head>
<body>
<div class="wrap">
  <h1>LoRA Speedrun 🏁</h1>
  <p class="sub">Fastest verified LoRA fine-tune wins. Frozen tasks, one GPU (Modal L40S,
     network-blocked sandbox), every record re-run <b>3× with fresh seeds</b> by a referee
     before it counts. No self-reported numbers, ever.</p>
  <p class="meta">Live from <a href="https://github.com/Saivineeth147/lora-speedrun">github.com/Saivineeth147/lora-speedrun</a>
     · <span id="stamp"></span></p>

  <div id="boards"><div class="card">Loading records…</div></div>

  <div class="cta">
    <b>Beat the record — attempting is free.</b><br>
    Modal's monthly credits cover full runs on the exact spec hardware. Rules and quickstart:
    <a href="https://github.com/Saivineeth147/lora-speedrun#quickstart">README</a> ·
    <a href="https://github.com/Saivineeth147/lora-speedrun/blob/main/TASK.md">TASK.md</a> ·
    open lanes in the <a href="https://github.com/Saivineeth147/lora-speedrun/issues">issues</a>.
  </div>

  <footer>Every record row links its full <b>config</b> (all hyperparameters + data choices) and
    <b>notes</b> (what changed vs. the previous record, and what was tried and rejected).
    Verification runs happen publicly in <a href="https://github.com/Saivineeth147/lora-speedrun/pulls?q=is%3Apr">PR threads</a>, pass or fail.<br>
    Verification protocol: <a href="https://github.com/Saivineeth147/lora-speedrun/blob/main/JUDGING.md">JUDGING.md</a>
    · threat model: <a href="https://github.com/Saivineeth147/lora-speedrun/blob/main/SECURITY.md">SECURITY.md</a>
    · every report: <a href="https://github.com/Saivineeth147/lora-speedrun/tree/main/records/verifications">records/verifications/</a></footer>
</div>

<script>
const GH = "https://github.com/Saivineeth147/lora-speedrun";
const RAW = "https://raw.githubusercontent.com/Saivineeth147/lora-speedrun/main/records/records.json";
const TRACKS = {
  t1: {title:"Track 1 — GSM8K · Qwen2.5-1.5B", target:"target ≥ 57.0% exact-match · data: GSM8K train split only"},
  t2: {title:"Track 2 — SQuAD v1.1 · SmolLM2-1.7B", target:"target ≥ 75.5% EM · data: SQuAD train split only"},
};
const mmss = s => `${Math.floor(s/60)}m ${String(Math.round(s%60)).padStart(2,"0")}s`;
const pct = a => (100*a.reduce((x,y)=>x+y,0)/a.length).toFixed(1)+"%";

fetch(RAW).then(r=>r.json()).then(data=>{
  const boards = document.getElementById("boards");
  boards.innerHTML = "";
  document.getElementById("stamp").textContent = "loaded " + new Date().toUTCString();
  for (const [tid, meta] of Object.entries(TRACKS)) {
    const recs = data.records.filter(r=>(r.track||"t1")===tid && r.status==="verified");
    const maxT = Math.max(...recs.map(r=>r.time_seconds_mean), 1);
    const cur = recs[recs.length-1];
    const card = document.createElement("div");
    card.className = "card";
    let rows = "";
    let prev = null;
    for (const r of recs) {
      const delta = prev ? "−"+Math.round(100*(1-r.time_seconds_mean/prev))+"%" : "—";
      prev = r.time_seconds_mean;
      const isCur = r===cur;
      rows += `<tr class="${isCur?"current":""}">
        <td>#${r.id}</td>
        <td><a href="https://github.com/${r.github}">@${r.github}</a></td>
        <td>${r.description}
            <div class="bar"><i style="width:${100*r.time_seconds_mean/maxT}%"></i></div></td>
        <td class="time">${mmss(r.time_seconds_mean)}</td>
        <td class="hide-m">${pct(r.accuracies)}</td>
        <td class="delta hide-m">${delta}</td>
        <td class="hide-m" style="white-space:nowrap"><a href="${GH}/blob/main/${r.submission}/config.yaml">config</a> ·
            <a href="${GH}/blob/main/${r.submission}/NOTES.md">notes</a> ·
            <a href="${GH}/blob/main/${r.verification_report}">report</a></td>
      </tr>`;
    }
    card.innerHTML = `<h2>${meta.title}</h2><div class="target">${meta.target}</div>
      <div class="rec">${cur ? `Current record: ${mmss(cur.time_seconds_mean)} by @${cur.github}` : "Open for its first record."}</div>
      <table><thead><tr><th>#</th><th>author</th><th>technique</th><th>train&nbsp;time</th>
      <th class="hide-m">score</th><th class="hide-m">Δ</th><th class="hide-m"></th></tr></thead>
      <tbody>${rows || `<tr><td colspan="7">No entries yet — <a href="${GH}/blob/main/CONTRIBUTING.md">be the first</a>.</td></tr>`}</tbody></table>`;
    boards.appendChild(card);
  }
}).catch(e=>{
  document.getElementById("boards").innerHTML =
    `<div class="card err">Couldn't load records.json (${e}). See the <a href="${GH}">GitHub repo</a>.</div>`;
});
</script>
</body>
</html>