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 version by version — each version continues training from a checkpoint of the previous one taken before its final learning-rate decay, on new data. All versions, checkpoints and results are public.

1,073,912,851 parameters tokenizer 32,768, Polish context 4096 tokens data: ~82% Polish, ~18% English weights license 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

Results

test1.001.011.02
training tokens1.5 B3.0 B6.0 B
ARC-Easy (EN), %42.8947.9848.99
BLiMP (EN, grammar), %71.5173.6374.71
WikiText-2, byte perplexity ↓2.58572.42302.3735
MultiBLiMP (PL, grammar), %97.8998.2998.38
ARC-Easy-PL, %36.9140.3641.84

One instrument for all versions (leaderboard protocol of track.fabryka.ai/models, zero-shot). Item-by-item comparison 1.01 → 1.02: BLiMP +1.08 pp (95% interval [+0.78; +1.37]); on the other tests the direction is positive but the difference is 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.

How the scores grow during training

Evaluation history of Slayer1B 1.00, 1.01 and 1.02 versus training tokens

Measured values only, no fits: one checkpoint every 150 steps. Data: scores-history.csv.

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. Continued training instead of a new run. Each version starts from a checkpoint of the previous one — taken before its final learning-rate decay — and gets a new portion of data the model has not seen yet.
  3. From 1.02 on, no decay along the way. We keep training on the whole prepared corpus (~24 B tokens) and apply the final decay once, at the end.
  4. We verify everything. Every checkpoint has a SHA-256 sum recorded off the training machine; files are downloaded back and compared with it. 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

Slayer1B 1.03 — another 1.5 B tokens (7.5 B in total), continued from 1.02 on our own 4×RTX 4090 cards. Live progress on track.fabryka.ai.

At the end of the line: one final learning-rate decay, then extending the context window in stages — first to 32k tokens, with up to 256k as the target, each stage checked with long-context tests.

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 wersja po wersji — każdą wersję trenujemy dalej od punktu kontrolnego poprzedniej sprzed jej końcowego wygaszania tempa uczenia, na nowych danych. Wszystkie wersje, punkty kontrolne i wyniki są publiczne.

1 073 912 851 parametrów tokenizer 32 768, polski kontekst 4096 tokenów dane: ~82 % PL, ~18 % EN licencja wag 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

Wyniki

test1.001.011.02
tokeny treningu1,5 mld3,0 mld6,0 mld
ARC-Easy (EN), %42,8947,9848,99
BLiMP (EN, gramatyka), %71,5173,6374,71
WikiText-2, perpleksja na bajt ↓2,58572,42302,3735
MultiBLiMP (PL, gramatyka), %97,8998,2998,38
ARC-Easy-PL, %36,9140,3641,84

Jeden przyrząd dla wszystkich wersji (protokół tablicy track.fabryka.ai/models, zero-shot). Porównanie 1.01 → 1.02 pytanie po pytaniu: BLiMP +1,08 pp (95 % przedział [+0,78; +1,37]); na pozostałych testach kierunek dodatni, ale różnica nierozstrzygnięta. 1.00 i 1.01 kończyły się wygaszaniem tempa uczenia, 1.02 nie — więc 1.02 nie jest „czystym” porównaniem z 1.01.

Jak rosną wyniki w trakcie treningu

Historia wyników Slayer1B 1.00, 1.01 i 1.02 w funkcji liczby tokenów treningu

Same pomiary, bez dopasowań: punkt kontrolny co 150 kroków. Dane: scores-history.csv.

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. Dalszy trening zamiast nowego. Każda wersja startuje z punktu kontrolnego poprzedniej — sprzed końcowego wygaszania tempa uczenia — i dostaje nową porcję danych, której model jeszcze nie widział.
  3. Od 1.02 nie wygaszamy po drodze. Trenujemy dalej na całym przygotowanym zasobie (~24 mld tokenów), a końcowe wygaszanie zrobimy raz, na końcu.
  4. Wszystko sprawdzamy. Każdy punkt kontrolny ma sumę SHA-256 zapisaną poza maszyną treningową, a pliki pobieramy z powrotem i porównujemy z nią; 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

Slayer1B 1.03 — kolejne 1,5 mld tokenów (razem 7,5 mld), dalszy trening 1.02 na naszych kartach 4×RTX 4090. Postęp na żywo pojawi się na track.fabryka.ai.

Na końcu linii: jedno końcowe wygaszanie tempa uczenia, a potem etapami wydłużanie okna kontekstu — najpierw do 32k tokenów, docelowo do 256k, każdy etap sprawdzany testami długiego kontekstu.

To modele bazowe: przewidują dalszy ciąg tekstu, nie były dostrajane do rozmowy ani wykonywania poleceń i mogą się mylić.