Instructions to use Maggio33/GoLLeM-110M-PL-v2 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use Maggio33/GoLLeM-110M-PL-v2 with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="Maggio33/GoLLeM-110M-PL-v2")# pip install -U transformers accelerate # Load model directly from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("Maggio33/GoLLeM-110M-PL-v2") model = AutoModelForCausalLM.from_pretrained("Maggio33/GoLLeM-110M-PL-v2", device_map="auto") - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use Maggio33/GoLLeM-110M-PL-v2 with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "Maggio33/GoLLeM-110M-PL-v2" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "Maggio33/GoLLeM-110M-PL-v2", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }'Use Docker
docker model run hf.co/Maggio33/GoLLeM-110M-PL-v2
- SGLang
How to use Maggio33/GoLLeM-110M-PL-v2 with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "Maggio33/GoLLeM-110M-PL-v2" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "Maggio33/GoLLeM-110M-PL-v2", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "Maggio33/GoLLeM-110M-PL-v2" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "Maggio33/GoLLeM-110M-PL-v2", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }' - Docker Model Runner
How to use Maggio33/GoLLeM-110M-PL-v2 with Docker Model Runner:
docker model run hf.co/Maggio33/GoLLeM-110M-PL-v2
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