SozKZ Core Qwen 500M KK Base v1
Қазақ тіліне арналған Qwen2.5-архитектурасындағы 447M параметрлі dense тілдік моделі. Нөлден бастап ~7 миллиард қазақша токенде үйретілген (kz-transformers/multidomain-kazakh-dataset) sozkz-morphbpe-100k-kk-v1 — морфологияға бейімделген 100K токенайзер арқылы.
Это базовая (base / pretraining) модель казахского языка на архитектуре Qwen2.5, обученная с нуля на ~7B токенов с использованием морфологически-ориентированного токенизатора с 100K словарём.
Model Details
- Model type: Qwen2 Causal LM (decoder-only, Qwen2.5-0.5B style)
- Language: Kazakh (kk)
- License: MIT
- Tokenizer:
stukenov/sozkz-morphbpe-100k-kk-v1 - Training data:
kz-transformers/multidomain-kazakh-dataset
Architecture
| Parameter | Value |
|---|---|
| Total params | 447.5M |
| Hidden size | 896 |
| Layers | 24 |
| Attention heads | 14 |
| KV heads (GQA) | 2 (7:1) |
| Head dim | 64 |
| Intermediate size (SwiGLU) | 4864 |
| Vocab size | 100,000 |
| Max position embeddings | 32,768 |
| RoPE theta | 1,000,000 |
| RMSNorm eps | 1e-6 |
| Tied embeddings | yes |
| Attention bias (Q/K/V) | yes |
Это точные параметры Qwen2.5-0.5B, но:
- Vocab изменён с 151k (Qwen мультиязычный) на 100k (казахский morphbpe)
- Tied embeddings (Qwen2.5-0.5B также имеет
tie_word_embeddings=True)
Training
| Parameter | Value |
|---|---|
| Dataset tokens | 6.999B |
| Total steps | 26,702 |
| Effective batch | 262,144 tokens/step (16 × 8 GPU × 2 accum × 1024 seq) |
| Sequence length | 1024 |
| Peak LR | 4e-4 (cosine, 500 warmup) |
| Optimizer | AdamW (β1=0.9, β2=0.95, wd=0.1) |
| Precision | bfloat16 (AMP) |
| Z-loss | 1e-4 |
| Hardware | 8× H100 SXM 80GB (RunPod) |
| Throughput | ~938K tokens/s |
| Wall-clock | 2.07 h |
| Peak VRAM | 42.1 GB |
Final Metrics
| Metric | Value |
|---|---|
| Train loss | 2.040 |
| Val bits-per-byte | 0.474 |
| Total tokens seen | 7.0B |
Usage
import torch
from transformers import AutoModelForCausalLM, PreTrainedTokenizerFast
from huggingface_hub import hf_hub_download
REPO = "stukenov/sozkz-core-qwen-500m-kk-base-v1"
# Load tokenizer directly from tokenizer.json (version-independent)
tok_file = hf_hub_download(REPO, "tokenizer.json")
tok = PreTrainedTokenizerFast(tokenizer_file=tok_file)
tok.pad_token_id = 1
model = AutoModelForCausalLM.from_pretrained(REPO, torch_dtype=torch.bfloat16).to("cuda")
model.train(False) # inference mode
prompt = "Қазақстан Республикасы"
ids = tok(prompt, return_tensors="pt").input_ids.to("cuda")
out = model.generate(
ids,
max_new_tokens=80,
do_sample=True,
temperature=0.8,
top_k=50,
repetition_penalty=1.15,
pad_token_id=1,
)
print(tok.decode(out[0], skip_special_tokens=True))
Generation Examples
Сгенерировано на NVIDIA A10 с temperature=0.8, top_k=50, repetition_penalty=1.15:
PROMPT: Қазақстан Республикасы
OUTPUT: Қазақстан Республикасы Үкіметінің қаулысы 2014 жылғы 15 шілде
N 213. Қазақстан Республикасының Үкіметі ҚАУЛЫ ЕТЕДІ: 1. Қоса беріліп
отырған Қазақстан Республикасының «Мемлекеттік сатып алу туралы» Заңы
жобасы тұжырымдамасының жобасы мақұлдансын...
PROMPT: Астана — Қазақстанның
OUTPUT: Астана — Қазақстанның қазіргі Президенті Нұрсұлтан Әбішұлы
Назарбаевтың саяси ерік-жігері мен азаматтық парызы үшін, сондай-ақ
біздің елімізге деген сүйіспеншілігі мен құрметіне байланысты
«Қазақстан Республикасының Тұңғыш Президенті — Елбасы Н.Ә.Назарбаевтың
мәртебесі мен өкілеттігі туралы» Қазақстан Республикасының Заңына қол
қойды...
PROMPT: Абай Құнанбайұлы
OUTPUT: Абай Құнанбайұлы . Абайдың әкесі Құнанбайдан үш жас үлкен. Бала
Абай он жасында туады. Әкесі Құнанбай да қазақтың тұңғыш батыры болып
саналады. Абай 1845 жылы 28 шілдеде қазіргі Шығыс Қазақстан облысының
Абай ауданында туған...
PROMPT: Ғылым мен білімнің
OUTPUT: Ғылым мен білімнің ғылымының дамуына қосқан үлесі үшін Құрмет
грамотасы, ҚР БҒМ-нің Құрмет грамоталары берілді. Сонымен қатар,
Қазақстан Республикасының Білім және Ғылым Министрлігі бекіткен жоғары
оқу орындарының (ЖОО) тізбесіне сәйкес жыл сайын ұйымдастырылатын
байқауларға қатысуға шақырамыз...
Модель уверенно различает регистры: юридический, биографический, новостной, образовательный. Грамматика (падежи, окончания, пунктуация) безошибочная.
Comparison with other SozKZ Core KK base models
Все sozkz-core-llama-* модели учились на том же текстовом корпусе, но через токенизатор sozkz-core-llama-50k (50K BPE). Эта модель — первая в серии использует sozkz-morphbpe-100k-kk-v1.
| Model | Params | Vocab | Tokens | Wall-clock | Val BPB ↓ | Train loss ↓ |
|---|---|---|---|---|---|---|
| llama-300m | 325M | 50k | 9.0B | 1.82h (8×H100) | 0.781 | 2.848 |
| qwen-500m (this) | 447M | 100k | 7.0B | 2.07h (8×H100) | 0.474 | 2.040 |
| llama-600m | 587M | 50k | 9.0B | 5.90h (4×H100) | 0.756 | 2.713 |
| llama-1b | 1078M | 50k | 16.2B | 9.53h (8×H100) | 0.673 | 2.636 |
Why does the 500M beat the 1B on BPB?
Три фактора работают вместе:
Больший словарь (100k vs 50k). Morphbpe-100k разбивает казахские слова по морфемам, а не по статистическим BPE-merges. Это резко сокращает длину последовательности на том же тексте и повышает эффективную информацию на токен. Метрика
bits-per-byteby design tokenizer-invariant, но более крупный vocab всё равно даёт системное преимущество для морфологически богатых языков.Архитектура Qwen2.5. GQA 7:1 (14 Q heads / 2 KV heads), RoPE theta 1M, bias на Q/K/V, RMSNorm eps 1e-6. Это зрелая, хорошо отлаженная конфигурация — Qwen2.5-0.5B по публичным бенчмаркам обгоняет Llama-1B в ряде задач.
Более глубокая сеть. 24 слоя × 896 даёт бо́льшую глубину по сравнению с 18 слоями × 1024 (llama-300m), что улучшает композиционные представления.
Caveats о сравнении
val_bpb=nats_per_token / log(2) / bytes_per_token, гдеbytes_per_token— константа, зашитая в пайплайн обучения (для morphbpe-100k = 6.5, для llama-50k ≈ 4.5). Метрика by design tokenizer-invariant, но её точность зависит от корректности константы.sozkz-core-llama-*модели учились на одном текстовом корпусе, но через разные токенизации. 7B токенов morphbpe-100k ≈ 9–11B токенов llama-50k по покрытию текста.- Это base модель (pretrained only), не SFT. Без fine-tuning она не умеет следовать инструкциям — только продолжать текст.
Limitations
- Только казахский. Русский, английский и код не были в обучающей выборке — модель их плохо понимает и не генерирует (редкие заимствования работают).
- Base model. Не instruction-tuned. Для диалога нужен SFT.
- Зацикливания. На коротких или абстрактных промптах без
repetition_penaltyуходит в повторы. Всегда используйтеrepetition_penalty ≥ 1.1. - Фактологические галлюцинации. Как любая LM этого размера, выдаёт правдоподобный, но не всегда точный текст. Не использовать без верификации.
- Нет safety fine-tuning. Может генерировать неподобающий контент на adversarial промптах.
Training Pipeline
Весь код обучения и инференса открыт:
- Training script:
autoresearch/train_500m_ddp.py - Data prep:
autoresearch/prepare_500m.py - HF upload:
autoresearch/upload_500m_to_hf.py - Full pipeline:
autoresearch/run_500m_training.sh
Citation
@misc{sozkz-core-qwen-500m-kk-base-v1,
author = {Saken Tukenov},
title = {SozKZ Core Qwen 500M KK Base v1},
year = {2026},
publisher = {HuggingFace},
howpublished = {\url{https://huggingface.co/stukenov/sozkz-core-qwen-500m-kk-base-v1}},
}
Acknowledgements
Part of the SozKZ open Kazakh LM initiative. Data: kz-transformers/multidomain-kazakh-dataset. Hardware: RunPod (8× H100 SXM). Tokenizer: sozkz-morphbpe-100k-kk-v1.
- Downloads last month
- 517