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 niestandardowanie 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-pl16,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
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support