Mission – Slayer 1B
Arkadiusz Słota – Fabryka AI (SlayerLab)
We are building a Polish language model of ~1 billion parameters from scratch and improving it through checkpointed continuation. Released model weights are public; resumable checkpoint archives are published separately. Follow each archive link for its current files. Training progress and measured evaluation results are reported separately below.
Versions
Slayer1B 1.03 training complete
Resume 6750 → 7150 completed on 4×L40S. The final 7150 model weights and lm-eval benchmark results are public.
Checkpoint SHA-256: d7cad9673f3ee706f3022ad6a97fa7593604806d4d25ba936c27885a8f115d97
Slayer1B 1.04 released
Corpus continuation 7150 → 10010 on 4×L40S, constant learning rate. The run then moved to 8×L40S at this checkpoint after independent SHA-256 verification (three sources) and a proof that the global batch is reproduced.
Checkpoint SHA-256: 04438959d7b317d1a8d972b264e9610a06fd8addde7349c6e9f458ee56dc1e51
Slayer1B 1.05 released
Continuation 10010 → 12870 on 8×L40S, same model, data order and global batch, constant learning rate.
Checkpoint SHA-256: 435082ff36becfbb96803622139f38d2afa0ba1a9d2fc284bad96f5a8edc1181
Slayer1B 1.06 released · full corpus
Continuation 12870 → 13848 on 8×L40S. It ends where the prepared corpus ends: every token of the corpus was seen exactly once (measured, not planned). Final training loss 2.276; no learning-rate decay yet.
Checkpoint SHA-256: 1fc7396ca1790805128244b2f827e02b9fe88e352534cd887d0c488f121d1e4d
Results
| test | 1.00 | 1.01 | 1.02 | 1.03 | 1.04 | 1.05 | 1.06 |
|---|---|---|---|---|---|---|---|
| training tokens | 1.5 B | 3.0 B | 6.0 B | 7.5 B | 10.5 B | 13.5 B | 14.5 B |
| native step | 1430 | 2860 | 5720 | 7150 | 10010 | 12870 | 13848 |
| ARC-Easy (EN), % | 42.89 | 47.98 | 48.99 | — | 50.59 | 52.19 | 52.99 |
| BLiMP (EN, grammar), % | 71.51 | 73.63 | 74.71 | — | 74.17 | 75.53 | 76.12 |
| WikiText-2, byte perplexity ↓ | 2.5857 | 2.4230 | 2.3735 | — | 2.3078 | 2.2816 | 2.2849 |
| MultiBLiMP (PL, grammar), % | 97.89 | 98.29 | 98.38 | — | 98.87 | 98.47 | 98.41 |
| ARC-Easy-PL, % | 36.91 | 40.36 | 41.84 | — | 44.02 | 45.20 | 45.03 |
One instrument for the versions that have values (1.00–1.02 and 1.04–1.06): leaderboard protocol of track.fabryka.ai/models, zero-shot, on the released checkpoints. Column 1.03 is a dash on purpose: its run (1.03) was measured with the older lm-eval task set (hellaswag, piqa, lambada, arc_challenge, boolq, mmlu — see the additional history section), so there are no values in this instrument; the dash is not a missing measurement. 1.00 and 1.01 ended with a learning-rate decay; 1.02 and 1.04–1.06 did not, so comparisons across that boundary are not clean. Neighbouring checkpoints differ by up to about a point on single tests, so small differences between 1.05 and 1.06 are within run noise.
Additional benchmark history
16 checkpoints from 1.00–1.03, through final 7150 have separate lm-eval 0.4.13, zero-shot, fp32 results: 13 historical points plus 6900, 7050 and 7150. These results use a different benchmark procedure from the table above.
Accuracy and normalized accuracy are distinct series, in fractions (0–1); LAMBADA perplexity is separate.
The scan found n-gram overlap in shared/en for BoolQ, MMLU and ARC; its significance is still being assessed.
Overlap is not by itself a measured contamination rate. Open Charts and filter by eval/.
This is an imported result series, not a native automatic-benchmark job.
The three new points use the same runner and task procedure, but a different runtime: Torch 2.8.0+cu128, tokenizers 0.23.2 and NumPy 2.2.6, versus 2.14.1+cu126, 0.23.3 and 2.5.3 for the historical points. The 6750 → 6900 boundary is not an identical-environment checkpoint comparison.
Score curves: 1.00–1.06

Measured values only, no fits, no trend lines. 1.00–1.02: leaderboard protocol, one checkpoint every 150 steps; shaded bands mark the learning-rate decay of 1.00 and 1.01. 1.03: training loss only — it was evaluated with an older lm-eval task set, so it has no points in the score panels. 1.04–1.06: one continuation from step 7150 at a constant learning rate; diamonds mark the releases 1.04 (10010), 1.05 (12870) and 1.06 (13848, end of the corpus). The in-run evaluator measured every 50 steps up to 9100, then control points 9400/9700/10000, then every 200 steps; breaks in the line are gaps in that schedule, not missing training. eff = (BLiMP + ARC + WikiScore) / 3, the board formula, which reproduces every published 1.00–1.02 value within 0.01. Data: scores-history-106.csv.
Release points: 1.04 → 1.06
| test | 1.04 · 10010 | 1.05 · 12870 | 1.06 · 13848 |
|---|---|---|---|
| BLiMP (EN, grammar), % | 74.17 | 75.53 | 76.12 |
| ARC-Easy (EN), % | 50.59 | 52.19 | 52.99 |
| WikiText-2, byte perplexity ↓ | 2.3078 | 2.2816 | 2.2849 |
| WikiText-2, token perplexity ↓ | 31.29 | 29.86 | 30.03 |
| MultiBLiMP (PL, grammar), % | 98.87 | 98.47 | 98.41 |
| ARC-Easy-PL, % | 44.02 | 45.20 | 45.03 |
Measured on the released checkpoints by the run's automatic evaluator (same instrument as the results table), read from the public continuation run. The whole continuation used a constant learning rate; a final decay has not been applied, so these are not end-of-training numbers for the model line.
How we do it
- From scratch. A transformer (20 layers, width 2048), our own Polish tokenizer, Polish data with an English minority (slayer-pl-8x3b).
- Checkpointed continuation. Earlier decayed versions branched from checkpoints before their final decay. Version names mark milestones in one global data trajectory, not mandatory process restarts. Retention maintenance resumed from verified checkpoint 7750 without resetting the data order. The final learning-rate decay is planned once, at the end.
- Source and model units. The source corpus is counted as ~24 B
cl100ktokens. Our v6/32k tokenizer produces separateuint16train/validation files. Actual model-token counts and stream boundaries come from pinned manifests. Next packs are prepared while the current stage trains. - We verify everything. Checkpoint SHA-256 records are preserved outside the training machine. Before local pruning, a full copy on a separate archive is verified and its receipt is persisted atomically. From version 1.01 on, a loss forecast is written down before each run and evaluated afterwards.
Technical report: Slayer1B: Continuing a Polish-Dominant Base Model.
What's next
Corpus continuation 1.04–1.06 — complete. The global trajectory ran from native step 7150 to 13848, the end of the prepared corpus: 14.5 B training tokens, one full pass, about 13.5 tokens per parameter. Releases 1.04 (10010), 1.05 (12870) and 1.06 (13848) are public, each with its checkpoint archive. Training run.
The linked runs belong to the author's Track account. The completed 1.03 run includes its resumed steps; corpus continuation and benchmark history are separate records of the same model lineage.
Beyond 13848 — roadmap candidates, not scheduled runs: continuing to about 20 tokens per parameter with fresh data, a final learning-rate decay, and extending the context window in stages (first 32k tokens, up to 256k as the target), each stage checked with long-context tests. Each follow-up needs its own plan, cost estimate and go-ahead.
These are base models: they predict the continuation of a text, they were not tuned for chat or for following instructions, and they can be wrong.
Misja – Slayer 1B
Arkadiusz Słota – Fabryka AI (SlayerLab)
Budujemy od zera polski model językowy wielkości ~1 mld parametrów i ulepszamy go przez kontynuację z punktów kontrolnych. Wagi wydanych modeli są publiczne; archiwa checkpointów do wznowienia publikujemy osobno. Linki archiwów pokazują ich aktualne pliki. Postęp treningu i zmierzone wyniki ewaluacji pokazujemy poniżej oddzielnie.
Wersje
Slayer1B 1.03 trening zakończony
Wznowienie 6750 → 7150 zakończone na 4×L40S. Wagi końcowego modelu 7150 i wyniki benchmarków lm-eval są publiczne.
SHA-256 checkpointu: d7cad9673f3ee706f3022ad6a97fa7593604806d4d25ba936c27885a8f115d97
Slayer1B 1.04 wydany
Kontynuacja korpusu 7150 → 10010 na 4×L40S, stałe tempo uczenia. Na tym checkpoincie bieg przeszedł na 8×L40S po niezależnej weryfikacji SHA-256 (trzy źródła) i dowodzie, że globalny batch jest odtworzony.
SHA-256 checkpointu: 04438959d7b317d1a8d972b264e9610a06fd8addde7349c6e9f458ee56dc1e51
Slayer1B 1.05 wydany
Kontynuacja 10010 → 12870 na 8×L40S: ten sam model, kolejność danych i globalny batch, stałe tempo uczenia.
SHA-256 checkpointu: 435082ff36becfbb96803622139f38d2afa0ba1a9d2fc284bad96f5a8edc1181
Slayer1B 1.06 wydany · cały korpus
Kontynuacja 12870 → 13848 na 8×L40S. Kończy się tam, gdzie kończy się przygotowany korpus: każdy jego token model zobaczył dokładnie raz (zmierzone, nie zaplanowane). Końcowa strata treningowa 2,276; bez wygaszania tempa uczenia.
SHA-256 checkpointu: 1fc7396ca1790805128244b2f827e02b9fe88e352534cd887d0c488f121d1e4d
Wyniki
| test | 1.00 | 1.01 | 1.02 | 1.03 | 1.04 | 1.05 | 1.06 |
|---|---|---|---|---|---|---|---|
| tokeny treningu | 1,5 mld | 3,0 mld | 6,0 mld | 7,5 mld | 10,5 mld | 13,5 mld | 14,5 mld |
| krok native | 1430 | 2860 | 5720 | 7150 | 10010 | 12870 | 13848 |
| ARC-Easy (EN), % | 42,89 | 47,98 | 48,99 | — | 50,59 | 52,19 | 52,99 |
| BLiMP (EN, gramatyka), % | 71,51 | 73,63 | 74,71 | — | 74,17 | 75,53 | 76,12 |
| WikiText-2, perpleksja na bajt ↓ | 2,5857 | 2,4230 | 2,3735 | — | 2,3078 | 2,2816 | 2,2849 |
| MultiBLiMP (PL, gramatyka), % | 97,89 | 98,29 | 98,38 | — | 98,87 | 98,47 | 98,41 |
| ARC-Easy-PL, % | 36,91 | 40,36 | 41,84 | — | 44,02 | 45,20 | 45,03 |
Jeden przyrząd dla wersji, które mają wartości (1.00–1.02 oraz 1.04–1.06): protokół tablicy track.fabryka.ai/models, zero-shot, na wydanych checkpointach. Kolumna 1.03 ma kreskę celowo: jej run (1.03) mierzono starszym zestawem lm-eval (hellaswag, piqa, lambada, arc_challenge, boolq, mmlu — patrz sekcja dodatkowej historii), więc w tym przyrządzie nie ma wartości; kreska nie oznacza brakującego pomiaru. 1.00 i 1.01 kończyły się wygaszaniem tempa uczenia, 1.02 i 1.04–1.06 nie — porównania przez tę granicę nie są „czyste”. Sąsiednie checkpointy różnią się na pojedynczych testach nawet o ok. punkt, więc małe różnice między 1.05 a 1.06 mieszczą się w szumie biegu.
Dodatkowa historia benchmarków
16 checkpointów 1.00–1.03, do końcowego 7150 ma osobne wyniki lm-eval 0.4.13, zero-shot, fp32: 13 historycznych punktów oraz 6900, 7050 i 7150. To inna procedura benchmarkowa niż w tabeli powyżej.
Trafność i trafność normalizowana to osobne serie, w ułamkach (0–1); perpleksja LAMBADA jest oddzielnie.
Skan wykrył nakładkę n-gramową w shared/en dla BoolQ, MMLU i ARC; ocena jej znaczenia nadal trwa.
Sama nakładka nie jest pomiarem odsetka rzeczywistego przecieku. W Charts wpisz w filtrze eval/.
To seria zaimportowanych wyników, nie natywny job automatycznej ewaluacji.
Trzy nowe punkty mają ten sam runner i procedurę zadań, ale inne środowisko: Torch 2.8.0+cu128, tokenizers 0.23.2 i NumPy 2.2.6 zamiast 2.14.1+cu126, 0.23.3 i 2.5.3 dla punktów historycznych. Granica 6750 → 6900 nie jest porównaniem checkpointów w identycznym środowisku.
Krzywe wyników: 1.00–1.06

Same pomiary, bez dopasowań i bez linii trendu. 1.00–1.02: protokół tablicy, punkt co 150 kroków; pasma oznaczają wygaszanie LR w 1.00 i 1.01. 1.03: tylko strata treningowa — mierzony starszym zestawem lm-eval, więc w panelach wyników nie ma punktów. 1.04–1.06: jedna kontynuacja od kroku 7150 przy stałym LR; romby oznaczają wydania 1.04 (10010), 1.05 (12870) i 1.06 (13848, koniec korpusu). Ewaluator w biegu mierzył co 50 kroków do 9100, potem punkty kontrolne 9400/9700/10000, potem co 200 kroków; przerwy w linii to luki w tym harmonogramie, nie brakujący trening. eff = (BLiMP + ARC + WikiScore) / 3, formuła tablicy, która odtwarza każdą opublikowaną wartość 1.00–1.02 z dokładnością 0,01. Dane: scores-history-106.csv.
Punkty wydań: 1.04 → 1.06
| test | 1.04 · 10010 | 1.05 · 12870 | 1.06 · 13848 |
|---|---|---|---|
| BLiMP (EN, gramatyka), % | 74,17 | 75,53 | 76,12 |
| ARC-Easy (EN), % | 50,59 | 52,19 | 52,99 |
| WikiText-2, perpleksja na bajt ↓ | 2,3078 | 2,2816 | 2,2849 |
| WikiText-2, perpleksja na token ↓ | 31,29 | 29,86 | 30,03 |
| MultiBLiMP (PL, gramatyka), % | 98,87 | 98,47 | 98,41 |
| ARC-Easy-PL, % | 44,02 | 45,20 | 45,03 |
Zmierzone na wydanych checkpointach automatycznym ewaluatorem biegu (ten sam przyrząd co tabela wyników), odczytane z publicznego biegu kontynuacji. Cała kontynuacja szła przy stałym tempie uczenia; końcowego wygaszania nie zastosowano, więc to nie są końcowe liczby tej linii modelu.
Jak to robimy
- Od zera. Architektura typu transformer (20 warstw, szerokość 2048), własny polski tokenizer, polskie dane z mniejszością angielską (slayer-pl-8x3b).
- Kontynuacja z checkpointów. Wcześniejsze wygaszane wersje odgałęziały się sprzed końcowego wygaszania. Nazwy wersji oznaczają etapy jednej globalnej trajektorii danych, nie obowiązkowe restarty procesu. Konserwacja retencji wznowiła trening ze zweryfikowanego checkpointu 7750 bez zerowania kolejności danych. Końcowe wygaszanie tempa uczenia planujemy raz, na końcu.
- Jednostki źródła i modelu. Około 24 mld tokenów źródła liczymy przez
cl100k. Nasz tokenizer v6/32k tworzy osobne pliki train/val wuint16. Liczby tokenów modelu i granice strumieni pochodzą z przypiętych manifestów. Następne wsady przygotowujemy podczas bieżącego treningu. - Wszystko sprawdzamy. Sumy SHA-256 checkpointów zachowujemy poza maszyną treningową. Przed lokalnym usunięciem pełna kopia na osobnym archiwum jest weryfikowana, a jej receipt utrwalany atomowo. Od wersji 1.01 przed każdym biegiem zapisujemy prognozę straty i potem ją oceniamy.
Raport techniczny: Slayer1B: Continuing a Polish-Dominant Base Model.
Co dalej
Kontynuacja korpusu 1.04–1.06 — zakończona. Globalna trajektoria przeszła od kroku native 7150 do 13848, czyli do końca przygotowanego korpusu: 14,5 mld tokenów treningu, jedno pełne przejście, ok. 13,5 tokenu na parametr. Wydania 1.04 (10010), 1.05 (12870) i 1.06 (13848) są publiczne, każde z archiwum checkpointów. Bieg treningu.
Powiązane przebiegi są na koncie autora w Tracku. Zakończony run 1.03 obejmuje wznowione kroki; dalszy trening i historia benchmarków to osobne zapisy tej samej linii modelu.
Po 13848 — kandydaci roadmapy, nie zaplanowane biegi: dalszy trening do ok. 20 tokenów na parametr na świeżych danych, końcowe wygaszanie tempa uczenia oraz etapami wydłużanie okna kontekstu (najpierw 32k tokenów, docelowo do 256k), każdy etap sprawdzany testami długiego kontekstu. Każdy z tych kroków wymaga własnego planu, wyceny i zgody.
To modele bazowe: przewidują dalszy ciąg tekstu, nie były dostrajane do rozmowy ani wykonywania poleceń i mogą się mylić.