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–20% 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.
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 |
Kolejne migawki (ckpt_12000 i dalej) dokładamy w miarę postępu treningu. Widać jednostajny spadek — model naprawdę się uczy (strata walidacyjna ≈ strata treningowa, brak przeuczenia; prognoza sprawdzona poza oknem dopasowania przy krokach 8000 i 10000 na dwóch niezależnych metrykach: stracie walidacyjnej i BPB).
Prognoza na koniec treningu (24 mld tokenów, ~48828 kroków): BPB ~0.89 (dopasowanie ciasne i wiarygodne — 5 punktów pomiarowych na zbiorze walidacyjnym; teoretyczne dno języka ~0.83). Strata walidacyjna ~2.5–2.8 (orientacyjnie — dopasowanie tej metryki jest niejednoznaczne przy szumie pomiaru, końcowa wartość niepewna w tym oknie; z końcowym wygaszaniem współczynnika uczenia realny wynik bliżej dolnej granicy). Przedziały zawężą się w miarę treningu — BPB jest tu naszą wiarygodną metryką prognozy, stratę walidacyjną podajemy z wyraźnie zaznaczoną niepewnością.
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. Checkpointy badawcze (trajektoria treningu), w trakcie prac. Kartę opracował: Hart (N-02).
- Downloads last month
- -