Maggio33 commited on
Commit
f5b81b7
·
verified ·
1 Parent(s): a845152

English by default with PL switch

Browse files
Files changed (2) hide show
  1. README.md +4 -3
  2. index.html +121 -3
README.md CHANGED
@@ -1,5 +1,5 @@
1
  ---
2
- title: Misja – Slayer 1B
3
  emoji: 📈
4
  colorFrom: green
5
  colorTo: blue
@@ -9,8 +9,9 @@ license: apache-2.0
9
  short_description: Polish 1B LM trained from scratch, version by version
10
  ---
11
 
12
- # Misja – Slayer 1B
13
 
14
  Arkadiusz Słota – Fabryka AI (SlayerLab). Polish ~1B-parameter base language model trained from scratch and continued
15
- version by version; versions, checkpoints, evaluation history and links. Numbers on the page come from the model cards
 
16
  and `scores-history.csv` (measured values only).
 
1
  ---
2
+ title: Mission – Slayer 1B
3
  emoji: 📈
4
  colorFrom: green
5
  colorTo: blue
 
9
  short_description: Polish 1B LM trained from scratch, version by version
10
  ---
11
 
12
+ # Mission – Slayer 1B (Misja – Slayer 1B)
13
 
14
  Arkadiusz Słota – Fabryka AI (SlayerLab). Polish ~1B-parameter base language model trained from scratch and continued
15
+ version by version; versions, checkpoints, evaluation history and links. English by default, Polish via the PL switch
16
+ (or `?lang=pl`). Numbers on the page come from the model cards
17
  and `scores-history.csv` (measured values only).
index.html CHANGED
@@ -1,9 +1,9 @@
1
  <!DOCTYPE html>
2
- <html lang="pl">
3
  <head>
4
  <meta charset="utf-8">
5
  <meta name="viewport" content="width=device-width, initial-scale=1">
6
- <title>Misja – Slayer 1B</title>
7
  <style>
8
  :root { --bg:#0f1115; --card:#171a21; --line:#2a2f3a; --fg:#e8eaee; --muted:#9aa3b2; --acc:#4fb477; --acc2:#e0565b; --acc3:#4c8bd6; }
9
  * { box-sizing:border-box; }
@@ -38,10 +38,111 @@
38
  .wrap { overflow-x:auto; }
39
  footer { margin-top:56px; color:var(--muted); font-size:.9rem; border-top:1px solid var(--line); padding-top:16px; }
40
  a { color:var(--acc3); }
 
 
 
 
41
  </style>
42
  </head>
43
- <body>
 
44
  <main>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
45
  <header>
46
  <h1>Misja – Slayer 1B</h1>
47
  <p class="by">Arkadiusz Słota – Fabryka AI (SlayerLab)</p>
@@ -135,6 +236,23 @@
135
  </section>
136
 
137
  <footer>Arkadiusz Słota – Fabryka AI (SlayerLab) · modele: <a href="https://huggingface.co/SlayerLab">huggingface.co/SlayerLab</a></footer>
 
138
  </main>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
139
  </body>
140
  </html>
 
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>Mission – Slayer 1B</title>
7
  <style>
8
  :root { --bg:#0f1115; --card:#171a21; --line:#2a2f3a; --fg:#e8eaee; --muted:#9aa3b2; --acc:#4fb477; --acc2:#e0565b; --acc3:#4c8bd6; }
9
  * { box-sizing:border-box; }
 
38
  .wrap { overflow-x:auto; }
39
  footer { margin-top:56px; color:var(--muted); font-size:.9rem; border-top:1px solid var(--line); padding-top:16px; }
40
  a { color:var(--acc3); }
41
+ .lang { position:fixed; top:14px; right:16px; display:flex; gap:4px; background:var(--card); border:1px solid var(--line); border-radius:999px; padding:3px; z-index:10; }
42
+ .lang button { background:none; border:0; color:var(--muted); font:600 .85rem system-ui,sans-serif; padding:4px 10px; border-radius:999px; cursor:pointer; }
43
+ .lang button[aria-pressed="true"] { background:var(--line); color:var(--fg); }
44
+ body[data-lang="en"] .l-pl, body[data-lang="pl"] .l-en { display:none; }
45
  </style>
46
  </head>
47
+ <body data-lang="en">
48
+ <nav class="lang" aria-label="Language"><button type="button" data-set="en" aria-pressed="true">EN</button><button type="button" data-set="pl" aria-pressed="false">PL</button></nav>
49
  <main>
50
+ <div class="l-en" lang="en">
51
+ <header>
52
+ <h1>Mission – Slayer 1B</h1>
53
+ <p class="by">Arkadiusz Słota – Fabryka AI (SlayerLab)</p>
54
+ <p class="lead">We are building a Polish language model of ~1 billion parameters from scratch and improving it version by
55
+ version — each version continues training from a checkpoint of the previous one taken before its final learning-rate
56
+ decay, on new data. All versions, checkpoints and results are public.</p>
57
+ <div class="pills">
58
+ <span class="pill"><b>1,073,912,851</b> parameters</span>
59
+ <span class="pill">tokenizer <b>32,768</b>, Polish</span>
60
+ <span class="pill">context <b>4096</b> tokens</span>
61
+ <span class="pill">data: ~82% Polish, ~18% English</span>
62
+ <span class="pill">weights license <b>Apache-2.0</b></span>
63
+ </div>
64
+ </header>
65
+
66
+ <section>
67
+ <h2>Versions</h2>
68
+ <div class="cards">
69
+ <div class="card">
70
+ <h3>Slayer1B 1.00 <span class="tag dec">decayed</span></h3>
71
+ <div class="meta">1.5 B training tokens</div>
72
+ <a href="https://huggingface.co/SlayerLab/Slayer1B-1.00">model</a> ·
73
+ <a href="https://huggingface.co/SlayerLab/Slayer1B-1.00-checkpoints">checkpoints</a> ·
74
+ <a href="https://track.fabryka.ai/run/48744ed2-3155-4294-b899-a6fda1f851da">run</a>
75
+ </div>
76
+ <div class="card">
77
+ <h3>Slayer1B 1.01 <span class="tag dec">decayed</span></h3>
78
+ <div class="meta">3.0 B tokens · continued from 1.00</div>
79
+ <a href="https://huggingface.co/SlayerLab/Slayer1B-1.01">model</a> ·
80
+ <a href="https://huggingface.co/SlayerLab/Slayer1B-1.01-checkpoints">checkpoints</a> ·
81
+ <a href="https://track.fabryka.ai/run/4934429a-d393-42e0-8aac-03eae6b71ff7">run</a>
82
+ </div>
83
+ <div class="card">
84
+ <h3>Slayer1B 1.02 <span class="tag const">constant LR</span></h3>
85
+ <div class="meta">6.0 B tokens · continued from 1.01</div>
86
+ <a href="https://huggingface.co/SlayerLab/Slayer1B-1.02">model</a> ·
87
+ <a href="https://huggingface.co/SlayerLab/Slayer1B-1.02-checkpoints">checkpoints</a> ·
88
+ <a href="https://track.fabryka.ai/run/21ae1234-82c2-42b7-887b-cbcc69901ae1">run</a>
89
+ </div>
90
+ </div>
91
+ </section>
92
+
93
+ <section>
94
+ <h2>Results</h2>
95
+ <div class="wrap">
96
+ <table>
97
+ <tr><th>test</th><th>1.00</th><th>1.01</th><th>1.02</th></tr>
98
+ <tr><td>training tokens</td><td>1.5 B</td><td>3.0 B</td><td>6.0 B</td></tr>
99
+ <tr><td>ARC-Easy (EN), %</td><td>42.89</td><td>47.98</td><td class="best">48.99</td></tr>
100
+ <tr><td>BLiMP (EN, grammar), %</td><td>71.51</td><td>73.63</td><td class="best">74.71</td></tr>
101
+ <tr><td>WikiText-2, byte perplexity ↓</td><td>2.5857</td><td>2.4230</td><td class="best">2.3735</td></tr>
102
+ <tr><td>MultiBLiMP (PL, grammar), %</td><td>97.89</td><td>98.29</td><td class="best">98.38</td></tr>
103
+ <tr><td>ARC-Easy-PL, %</td><td>36.91</td><td>40.36</td><td class="best">41.84</td></tr>
104
+ </table>
105
+ </div>
106
+ <p class="note">One instrument for all versions (leaderboard protocol of
107
+ <a href="https://track.fabryka.ai/models">track.fabryka.ai/models</a>, zero-shot). Item-by-item comparison 1.01 → 1.02:
108
+ BLiMP +1.08 pp (95% interval [+0.78; +1.37]); on the other tests the direction is positive but the difference is
109
+ unresolved. 1.00 and 1.01 ended with a learning-rate decay, 1.02 did not — so 1.02 vs 1.01 is not a clean comparison.</p>
110
+ </section>
111
+
112
+ <section>
113
+ <h2>How the scores grow during training</h2>
114
+ <figure><img src="scores-history.png" alt="Evaluation history of Slayer1B 1.00, 1.01 and 1.02 versus training tokens"></figure>
115
+ <p class="note">Measured values only, no fits: one checkpoint every 150 steps. Data: <a href="scores-history.csv">scores-history.csv</a>.</p>
116
+ </section>
117
+
118
+ <section>
119
+ <h2>How we do it</h2>
120
+ <ol class="steps">
121
+ <li><b>From scratch.</b> A transformer (20 layers, width 2048), our own Polish tokenizer, Polish data with an English
122
+ minority (<a href="https://huggingface.co/datasets/SlayerLab/slayer-pl-8x3b">slayer-pl-8x3b</a>).</li>
123
+ <li><b>Continued training instead of a new run.</b> Each version starts from a checkpoint of the previous one —
124
+ taken before its final learning-rate decay — and gets a new portion of data the model has not seen yet.</li>
125
+ <li><b>From 1.02 on, no decay along the way.</b> We keep training on the whole prepared corpus (~24 B tokens) and
126
+ apply the final decay once, at the end.</li>
127
+ <li><b>We verify everything.</b> Every checkpoint has a SHA-256 sum recorded off the training machine; files are
128
+ downloaded back and compared with it. From version 1.01 on, a loss forecast is written down before each run and
129
+ evaluated afterwards.</li>
130
+ </ol>
131
+ <p class="note">Technical report:
132
+ <a href="https://github.com/slayerlabs/Fabryka-AI-Notes/tree/main/papers/slayerlabs/2026-10-23_slayer1b-continuation">Slayer1B: Continuing a Polish-Dominant Base Model</a>.</p>
133
+ </section>
134
+
135
+ <section>
136
+ <h2>What's next</h2>
137
+ <p><b>Slayer1B 1.03</b> — another 1.5 B tokens (7.5 B in total), continued from 1.02 on our own 4×RTX 4090 cards.
138
+ Live progress on <a href="https://track.fabryka.ai/models">track.fabryka.ai</a>.</p>
139
+ <p class="note">These are base models: they predict the continuation of a text, they were not tuned for chat or for
140
+ following instructions, and they can be wrong.</p>
141
+ </section>
142
+
143
+ <footer>Arkadiusz Słota – Fabryka AI (SlayerLab) · models: <a href="https://huggingface.co/SlayerLab">huggingface.co/SlayerLab</a></footer>
144
+ </div>
145
+ <div class="l-pl" lang="pl">
146
  <header>
147
  <h1>Misja – Slayer 1B</h1>
148
  <p class="by">Arkadiusz Słota – Fabryka AI (SlayerLab)</p>
 
236
  </section>
237
 
238
  <footer>Arkadiusz Słota – Fabryka AI (SlayerLab) · modele: <a href="https://huggingface.co/SlayerLab">huggingface.co/SlayerLab</a></footer>
239
+ </div>
240
  </main>
241
+ <script>
242
+ (function () {
243
+ var q = new URLSearchParams(location.search).get("lang");
244
+ var saved = null; try { saved = localStorage.getItem("slayer-lang"); } catch (e) {}
245
+ function set(l) {
246
+ if (l !== "pl") l = "en";
247
+ document.body.setAttribute("data-lang", l);
248
+ document.documentElement.lang = l;
249
+ document.title = l === "pl" ? "Misja – Slayer 1B" : "Mission – Slayer 1B";
250
+ document.querySelectorAll(".lang button").forEach(function (b) { b.setAttribute("aria-pressed", String(b.dataset.set === l)); });
251
+ try { localStorage.setItem("slayer-lang", l); } catch (e) {}
252
+ }
253
+ document.querySelectorAll(".lang button").forEach(function (b) { b.addEventListener("click", function () { set(b.dataset.set); }); });
254
+ set(q || saved || "en");
255
+ })();
256
+ </script>
257
  </body>
258
  </html>