GoLLeM v4 — 250M (polski, checkpointy badawcze — trajektoria treningu)
⚠️ STATUS: BADAWCZY / W TRAKCIE TRENINGU (work-in-progress). To repozytorium zawiera pośrednie punkty treningu modelu (seria migawek, ~4–45% zaplanowanego budżetu), udostępnione wyłącznie do celów badawczych. To nie jest gotowy model — jakość rośnie z każdą kolejną migawką i będzie znacząco wyższa na końcu treningu. Nie używaj go w zastosowaniach produkcyjnych ani do oceny „jak dobry jest GoLLeM".
Polski model językowy typu dekoder (GPT), 250 mln parametrów, trenowany od zera na polskim korpusie. Projekt Laboratorium Slayer. Udostępniamy serię migawek z kolejnych etapów treningu, aby umożliwić badanie dynamiki uczenia się modelu.
Autor: Arkadiusz Słota (Laboratorium Slayer).
Do czego służy (a do czego nie)
Służy do: badań nad skalowaniem i dynamiką uczenia (porównywanie kolejnych migawek), analizy polskiego modelu językowego, testów płynności i kontynuacji polskiego tekstu.
Nie służy do wydawania poleceń: to model bazowy (wstępnie wytrenowany), a nie model dostrojony do instrukcji — kontynuuje podany tekst, ale nie wykonuje poleceń. Rozumie tylko język polski — po angielsku oraz przy odpowiadaniu na pytania bez kontekstu radzi sobie słabo, zgodnie z założeniem. Na tym etapie nie kończy wypowiedzi w sposób niezawodny (nie wstawia stabilnie znacznika końca <|endoftext|>) i generuje tekst aż do limitu długości — jest to normalne dla modelu bazowego we wczesnej fazie treningu i nie stanowi błędu.
Migawki treningu (trajektoria)
| Migawka | Krok | % treningu | strata walidacyjna | BPB |
|---|---|---|---|---|
ckpt_2000 |
2000 | ~4% | 3.416 | 1.135 |
ckpt_6000 |
6000 | ~12% | 2.966 | 1.001 |
ckpt_8000 |
8000 | ~16% | 2.937 | 0.978 |
ckpt_10000 |
10000 | ~20% | 2.878 | 0.961 |
ckpt_12000 |
12000 | ~25% | 2.846 | 0.947 |
ckpt_14000 |
14000 | ~29% | 2.849 | 0.938 |
ckpt_16000 |
16000 | ~33% | 2.789 | 0.932 |
ckpt_18000 |
18000 | ~37% | 2.799 | 0.924 |
ckpt_20000 |
20000 | ~41% | 2.757 | 0.915 |
ckpt_22000 |
22000 | ~45% | 2.756 | 0.910 |
ckpt_24000 |
24000 | ~49% | 2.689 | 0.903 |
ckpt_26000 |
26000 | ~53% | 2.670 | 0.901 |
ckpt_28000 |
28000 | ~57% | 2.652 | 0.897 |
ckpt_30000 |
30000 | ~61% | 2.672 | 0.891 |
Migawki dokładamy w miarę postępu treningu (obecnie do ckpt_30000, ~61% budżetu). Widać jednostajny spadek — model naprawdę się uczy (strata walidacyjna ≈ strata treningowa, brak przeuczenia; prognozę sprawdzamy poza oknem dopasowania — @18000 trafiła, @20000–26000 realny wynik wyszedł poniżej ekstrapolacji (model uczył się szybciej niż krzywa potęgowa), @28000–30000 zgodne z odświeżonym dopasowaniem (Δ≈−0.002…−0.004, forward-check HOLDS)). BPB spada monotonicznie (0.978→0.891); wahania straty walidacyjnej to szum pojedynczego batcha, nie zmiana trendu.
Prognoza na koniec treningu (24 mld tokenów, ~48828 kroków): BPB rzędu ~0.87–0.89 — odręczny przedział (nie formalne CI) z dopasowania power-law na 11 punktach pomiarowych (kroki 2000–22000). To wartość RUCHOMA i jeszcze niezabankowana: wszystkie punkty są sprzed wygaszania współczynnika uczenia (annealing), gdzie krzywa może zmienić nachylenie. Rzetelny test prognozy nastąpi dopiero na punktach z fazy annealingu (>40 tys. kroków). Teoretyczne dno języka ~0.83. Podajemy orientacyjnie, z niepewnością, nie jako twardą liczbę. Strata walidacyjna ~2.5–2.8 (metryka szumna, końcowa wartość niepewna; z wygaszaniem współczynnika uczenia realny wynik bliżej dolnej granicy). Model dotąd bije prognozę power-law na dwóch niezależnych metrykach (strata walidacyjna i BPB) — spadek jest realny; przedziały zawężą się w miarę treningu.
Architektura
| Parametry | 247 954 432 (~250 mln, współdzielone embeddingi) |
| Warstwy (n_layer) | 17 |
| Wymiar (d_model) | 1024 |
| Głowice uwagi (n_head) | 16 (wymiar głowicy 64) |
| Długość kontekstu (block) | 1024 |
| Słownik (vocab) | 32 000 (tokenizer V32k, polski BPE) |
| Pozycje | wyuczone embeddingi pozycyjne (nn.Embedding, nie RoPE) |
| Blok | pre-LayerNorm, uwaga SDPA (przyczynowa), warstwa MLP z GELU 4× |
| Wagi | embedding i głowica wyjściowa współdzielone (weight tying, jak w GPT-2) |
Architektura jest niestandardowa — nie wczytuje się przez transformers/AutoModel. Użyj dołączonego wczytywacza modeling_gollem.py (samodzielny, wymaga jedynie torch, tokenizers i safetensors).
Dane treningowe
Korpus SlayerLab/gollem-corpus-16b-pl — 16,58 mld tokenów, w 100% polski, oczyszczony (deduplikacja, filtr danych osobowych, dekontaminacja):
| Rejestr | Tokeny | Udział |
|---|---|---|
| web (HPLT v3 PL, oczyszczony) | 14,62 mld | 88,2% |
| encyklopedyczny (Wikipedia PL) | 984 mln | 5,9% |
| nauka | 522 mln | 3,1% |
| wiadomości | 211 mln | 1,3% |
| prawniczy | 176 mln | 1,1% |
| literacki | 60 mln | 0,4% |
| mieszany | 1,6 mln | 0,01% |
Trening: cel 24 mld tokenów (~1,45 epoki, świadomy trening nadmiarowy ~5× względem Chinchilli — optymalny pod kątem kosztu późniejszej inferencji, nie samego treningu). Sprzęt: pojedyncza karta RTX 5090.
Jak użyć
pip install torch tokenizers safetensors
# najnowsza migawka (domyślnie):
python generate.py "Polska to kraj" --n 100 --temp 0.8 --topk 50
# wybrana migawka trajektorii:
python generate.py "Polska to kraj" --ckpt ckpt_6000.safetensors --n 100
from modeling_gollem import GollemGPT
m = GollemGPT.from_pretrained("./") # najnowsza migawka
# m = GollemGPT.from_pretrained("./", ckpt="ckpt_6000.safetensors") # wybrany etap
print(m.generate("Stolica Polski to", max_new_tokens=100, temperature=0.8, top_k=50))
Pliki w repozytorium: ckpt_*.safetensors (wagi każdej migawki, format bez pikli), config.json (architektura + lista migawek), tokenizer.json (V32k), modeling_gollem.py i generate.py (samodzielny wczytywacz i skrypt generowania).
Uwaga o formacie: wagi zapisane jako
safetensors(czyste tensory, zero wykonywalnego kodu) — bezpieczniejsze do publicznego udostępnienia niż surowy format.pt(pickle). Pełne checkpointy treningowe (ze stanem optymalizatora, do wznowienia treningu) pozostają wewnętrzne.
Ograniczenia i uwagi etyczne
- Modele są pośrednie i niedojrzałe — nie odzwierciedlają finalnej jakości.
- Trenowane na danych z internetu (rejestr web) — mimo filtrów mogą powielać uprzedzenia, błędy i treści obecne w korpusie.
- Zastosowano filtr danych osobowych (pozostałość ≈0,0018%), co jednak nie gwarantuje całkowitego braku danych osobowych.
- Wyłącznie do badań — Laboratorium Slayer nie ponosi odpowiedzialności za zastosowania produkcyjne.
Licencja i pochodzenie danych
Dane pochodzą m.in. z korpusu HPLT v3 (PL) oraz zasobów na licencji cc-by-sa (rejestr encyklopedyczny, część prawniczego i literackiego). Pochodzenie każdego rejestru opisano w manifeście korpusu. Wagi udostępniamy do celów badawczych.
GoLLeM v4 — Laboratorium Slayer. Autor: Arkadiusz Słota. Checkpointy badawcze (trajektoria treningu), w trakcie prac; kartę utrzymuje zespół Slayer.
- Downloads last month
- 1,059