GoLLeM-110M-PL-v2

Polski model językowy 110M (GPT-2-class), trenowany od zera na AMD Radeon RX 7900 XTX (ROCm/WSL2). Model bazowy (completion) — kontynuuje tekst, nie jest chatbotem (nie odpowiada na pytania; daj mu początek zdania).

Druga iteracja serii GoLLeM. Główna zmiana vs v1: czysty, wielo-źródłowy korpus (dodane wiedza+literatura) → lepsze fakty i forma, zero web-boilerplate.

Trening

  • Architektura: 12 warstw / 12 głowic / d=768, kontekst 512, vocab 32000, weight-tied (110M param).
  • Dane: ~2.0B tokenów, 1 epoka, czysty multi-source:
    • 58% curated (wiedza+literatura): Wikipedia, Wikisource, Wolne Lektury, 1000 Novels, Wikiquote/Wikibooks/Wikinews/Wikivoyage, eltec.
    • 42% web (HPLT v3 pol, po czyszczeniu).
    • Zero legalese (świadomie wykluczone eur-lex/parlament, by nie zdominowały rejestru).
  • Higiena: otwarte licencje (CC-BY-SA dominują — patrz sekcja Licencja; HPLT web = CC0), PII-scrubowane (telefon/email/PESEL/NIP → tagi), web-boilerplate usunięty u źródła (span+line strip; emisja boilerplate ~0).
  • Sprzęt: 1× AMD 7900 XTX (24GB), ROCm/WSL2, bf16, grad-accum, ~8.3h.

vs v1 (GoLLeM-110M-PL)

  • Lepsze fakty/forma (dodany korpus wiedzy: encyklopedyczny/przepisowy rejestr; v1 był web-only).
  • Zero emisji web-boilerplate (v1 emitował śmieci typu "OdpowiedzUsuń").
  • val-ppl 34.6 (held-out).

Przepis treningu

Wszystko poniżej pochodzi ze skryptu treningu i logu biegu tego modelu; wartości, których log nie zapisał, są oznaczone jako niezapisane.

Skrypt: train_125m.py w tym repozytorium (kopia pliku o sha256 a7fc85ad5352a2e7… z lokalnymi ścieżkami domyślnymi zamienionymi na ./… i wczytywaniem checkpointów przy wznowieniu przez torch.load(..., weights_only=True); bez innych zmian). Jeden proces na jednej karcie AMD Radeon RX 7900 XTX (24 GB), ROCm na WSL2.

Architektura 12 warstw, d_model 768, 12 głów, kontekst 512, słownik 32 000; bloki pre-LayerNorm, atencja przyczynowa, MLP 4× z GELU, uczone embeddingi pozycji, wspólne wagi embeddingu wejścia i głowy wyjścia; 110 025 216 parametrów
Inicjalizacja domyślna PyTorch (bez własnej)
Optymalizator AdamW, beta (0.9, 0.95), eps 1e-8 (domyślne PyTorch), weight decay 0.1 na wszystkich parametrach (jedna grupa), przycinanie gradientu 1.0
Learning rate szczyt 3e-4, liniowa rozgrzewka przez 1 % zaplanowanych kroków, potem cosine do 3e-5 (0.1 × szczyt)
Batch 64 sekwencje × 512 tokenów = 32 768 tokenów na krok
Precyzja autocast bf16; wagi i stan optymalizatora w fp32
Próbkowanie danych losowe okna 512 tokenów z powtórzeniami z jednego pliku tokenów, więc „epoka” = budżet tokenów ÷ rozmiar korpusu, a nie kolejne przejście po danych
Seed nieustawiony (biegi nie są odtwarzalne bit w bit)
Checkpointy co 2 000 kroków; wznowienie wczytuje model, optymalizator i krok (bez stanu generatora losowego); wydanie = ostatni krok

Ten model (v2):

  • Dane: SlayerLab/gollem-corpus-2b-pl; trener zapisał 1 990 106 427 tokenów; 1 epoka; trening od zera.
  • 60 733 kroki (rozgrzewka 607); wydany checkpoint = krok 60 733; ~8,3 h.
  • Gradient accumulation był użyty (według tej karty); jego wartość nie jest zapisana. Dokładna komenda: niezapisana.

Użycie

from transformers import AutoModelForCausalLM, AutoTokenizer
m = AutoModelForCausalLM.from_pretrained("Maggio33/GoLLeM-110M-PL-v2")
t = AutoTokenizer.from_pretrained("Maggio33/GoLLeM-110M-PL-v2")
ids = t("Stolicą Polski jest miasto", return_tensors="pt").input_ids
print(t.decode(m.generate(ids, max_new_tokens=80, do_sample=True, temperature=0.7, repetition_penalty=1.3)[0]))

Tip: to model bazowy — dawaj POCZĄTEK zdania ("Przepis na rosół:", "Warszawa to"), nie pytania.

Ograniczenia

  • 110M = mały → konfabuluje konkretne fakty (nie jest bazą wiedzy). Uczy się głównie płynności i formy polskiego.
  • Base/completion, nie chat — nie odpowiada na pytania (do tego potrzebny SFT/instruct-tuning).
  • PII scrubowane w treningu → model zwraca tagi zamiast realnych danych; nie jest źródłem PII.
  • Tylko polski.

Licencja i atrybucja

Korpus = CC-BY-SA-4.0 (licencja dominująca, share-alike). Skład per-źródło:

  • Wikipedia, Wikisource, Wikibooks/Wikiquote/Wikinews/Wikivoyage — CC-BY-SA-3.0 (Wikimedia Foundation)
  • Wolne Lektury — CC-BY-SA-4.0 / Wolna Sztuka 1.3
  • 1000 Novels, eltec_pol — CC-BY-4.0
  • HPLT v3 (web, ~42%) — CC0-1.0

→ Użycie wymaga ATTRIBUTION (Wikimedia Foundation, Wolne Lektury, autorzy 1000 Novels, HPLT / CLARIN-PL) oraz SHARE-ALIKE (derywaty na licencji CC-BY-SA-kompatybilnej).

Model: CC-BY-SA-4.0 (share-alike, spójny z licencją korpusu).

Autor: Arkadiusz Słota.

Downloads last month
181
Safetensors
Model size
0.1B params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Space using Maggio33/GoLLeM-110M-PL-v2 1