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.

1,073,912,851 parameters tokenizer 32,768, Polish context 4096 tokens data: ~82% Polish, ~18% English released weights: Apache-2.0

Versions

Slayer1B 1.00 decayed

1.5 B training tokens
model · checkpoints · run

Slayer1B 1.01 decayed

3.0 B tokens · continued from 1.00
model · checkpoints · run

Slayer1B 1.02 constant LR

6.0 B tokens · continued from 1.01
model · checkpoints · run

Slayer1B 1.03 training complete

native step 7150 · training loss 2.3955

Resume 6750 → 7150 completed on 4×L40S. The final 7150 model weights and lm-eval benchmark results are public.

Checkpoint SHA-256: d7cad9673f3ee706f3022ad6a97fa7593604806d4d25ba936c27885a8f115d97

model · completed training run · checkpoint benchmarks · native checkpoint archive — current files

Slayer1B 1.04 released

native step 10010 · 10.5 B training tokens

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

model · checkpoints · run

Slayer1B 1.05 released

native step 12870 · 13.5 B training tokens

Continuation 10010 → 12870 on 8×L40S, same model, data order and global batch, constant learning rate.

Checkpoint SHA-256: 435082ff36becfbb96803622139f38d2afa0ba1a9d2fc284bad96f5a8edc1181

model · checkpoints · run

Slayer1B 1.06 released · full corpus

native step 13848 · 14.5 B training tokens · one full pass

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

model · checkpoints · run

Results

test1.001.011.021.031.041.051.06
training tokens1.5 B3.0 B6.0 B7.5 B10.5 B13.5 B14.5 B
native step1430286057207150100101287013848
ARC-Easy (EN), %42.8947.9848.99—50.5952.1952.99
BLiMP (EN, grammar), %71.5173.6374.71—74.1775.5376.12
WikiText-2, byte perplexity ↓2.58572.42302.3735—2.30782.28162.2849
MultiBLiMP (PL, grammar), %97.8998.2998.38—98.8798.4798.41
ARC-Easy-PL, %36.9140.3641.84—44.0245.2045.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

Evaluation history of Slayer1B 1.00 to 1.06 versus training tokens

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

test1.04 · 100101.05 · 128701.06 · 13848
BLiMP (EN, grammar), %74.1775.5376.12
ARC-Easy (EN), %50.5952.1952.99
WikiText-2, byte perplexity ↓2.30782.28162.2849
WikiText-2, token perplexity ↓31.2929.8630.03
MultiBLiMP (PL, grammar), %98.8798.4798.41
ARC-Easy-PL, %44.0245.2045.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

  1. From scratch. A transformer (20 layers, width 2048), our own Polish tokenizer, Polish data with an English minority (slayer-pl-8x3b).
  2. 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.
  3. Source and model units. The source corpus is counted as ~24 B cl100k tokens. Our v6/32k tokenizer produces separate uint16 train/validation files. Actual model-token counts and stream boundaries come from pinned manifests. Next packs are prepared while the current stage trains.
  4. 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.

1 073 912 851 parametrów tokenizer 32 768, polski kontekst 4096 tokenów dane: ~82 % PL, ~18 % EN opublikowane wagi: Apache-2.0

Wersje

Slayer1B 1.00 wygaszony

1,5 mld tokenów treningu
model · punkty kontrolne · przebieg

Slayer1B 1.01 wygaszony

3,0 mld tokenów · dalszy trening 1.00
model · punkty kontrolne · przebieg

Slayer1B 1.02 stały LR

6,0 mld tokenów · dalszy trening 1.01
model · punkty kontrolne · przebieg

Slayer1B 1.03 trening zakończony

krok native 7150 · strata treningowa 2,3955

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

model · zakończony przebieg treningu · benchmarki checkpointów · archiwum checkpointów natywnych — aktualne pliki

Slayer1B 1.04 wydany

krok native 10010 · 10,5 mld tokenów treningu

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

model · punkty kontrolne · przebieg

Slayer1B 1.05 wydany

krok native 12870 · 13,5 mld tokenów treningu

Kontynuacja 10010 → 12870 na 8×L40S: ten sam model, kolejność danych i globalny batch, stałe tempo uczenia.

SHA-256 checkpointu: 435082ff36becfbb96803622139f38d2afa0ba1a9d2fc284bad96f5a8edc1181

model · punkty kontrolne · przebieg

Slayer1B 1.06 wydany · cały korpus

krok native 13848 · 14,5 mld tokenów treningu · jedno pełne przejście

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

model · punkty kontrolne · przebieg

Wyniki

test1.001.011.021.031.041.051.06
tokeny treningu1,5 mld3,0 mld6,0 mld7,5 mld10,5 mld13,5 mld14,5 mld
krok native1430286057207150100101287013848
ARC-Easy (EN), %42,8947,9848,99—50,5952,1952,99
BLiMP (EN, gramatyka), %71,5173,6374,71—74,1775,5376,12
WikiText-2, perpleksja na bajt ↓2,58572,42302,3735—2,30782,28162,2849
MultiBLiMP (PL, gramatyka), %97,8998,2998,38—98,8798,4798,41
ARC-Easy-PL, %36,9140,3641,84—44,0245,2045,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

Historia wyników Slayer1B od 1.00 do 1.06 w funkcji liczby tokenów treningu

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

test1.04 · 100101.05 · 128701.06 · 13848
BLiMP (EN, gramatyka), %74,1775,5376,12
ARC-Easy (EN), %50,5952,1952,99
WikiText-2, perpleksja na bajt ↓2,30782,28162,2849
WikiText-2, perpleksja na token ↓31,2929,8630,03
MultiBLiMP (PL, gramatyka), %98,8798,4798,41
ARC-Easy-PL, %44,0245,2045,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

  1. Od zera. Architektura typu transformer (20 warstw, szerokość 2048), własny polski tokenizer, polskie dane z mniejszością angielską (slayer-pl-8x3b).
  2. 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.
  3. 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 w uint16. Liczby tokenów modelu i granice strumieni pochodzą z przypiętych manifestów. Następne wsady przygotowujemy podczas bieżącego treningu.
  4. 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ć.