OzanLLM-40M / README.md
coderian's picture
OzanLLM-40M: model kartini ve dosyalari guncelle
d204378 verified
|
Raw History Blame Contribute Delete
6.61 kB
---
language:
- tr
license: apache-2.0
library_name: transformers
pipeline_tag: text-generation
datasets:
- tascib/turkish-llm-dataset
tags:
- turkish
- turkce
- causal-lm
- ozanllm
- base-model
- pretraining
inference: false
---
# OzanLLM-40M
Sıfırdan eğitilmiş **38.3M parametreli küçük bir Türkçe dil modeli**. Base model'dir:
instruction tuning yapılmamıştır; sohbet veya talimat takibi için değil, **metin
tamamlama** için tasarlanmıştır.
## Model Detayları
| | |
|---|---|
| Geliştirici | coderian |
| Yayın tarihi | Eylül 2026 |
| Dil | Türkçe (tr) |
| Lisans | Apache 2.0 |
| Mimari | Decoder-only Transformer (OzanLLM) |
| Parametre | 38.329.280 (38.3M) |
| Katman | 5 |
| Gizli boyut | 320 |
| Dikkat | Tek kafalı nedensel (causal) self-attention |
| Bağlam uzunluğu | 512 token |
| Kelime dağarcığı | 50.000 (BPE) |
| Konum kodlaması | Öğrenilebilir konum gömlemesi (512 × 320) |
| Aktivasyon | GELU (FFN genişliği 4× = 1.280) |
| Normalizasyon | Pre-norm LayerNorm |
| Çıktı katmanı | LM head (320 → 50.000), bağsız (untied) |
| KV cache | Yok (`use_cache=False`) |
| Hassasiyet | float32 |
## Mimari
- 5 adet Transformer bloğu; her blokta pre-norm LayerNorm ve residual bağlantılar
- Nedensel öz-dikkat: Q/K/V projeksiyonları → ölçekli iç çarpım (1/√320) → gelecek
pozisyonların maskelenmesi → softmax → 320 boyutlu çıktı
- FFN: 320 → 1.280 (GELU) → 320
- Girdi: token gömlemesi + öğrenilebilir konum gömlemesi toplamı
- Çıkış: son LayerNorm + LM head; kayıp, kaydırılmış çapraz entropidir
- Dropout ve ağırlık paylaşımı (weight tying) yok
## Hızlı Başlangıç
```bash
pip install -U transformers torch
```
```python
from transformers import AutoModelForCausalLM, AutoTokenizer
model_id = "coderian/OzanLLM-40M"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id, trust_remote_code=True)
prompt = "Türkiye'nin en kalabalık şehri"
inputs = tokenizer(prompt, return_tensors="pt")
cikti = model.generate(
**inputs,
max_new_tokens=64,
do_sample=True,
temperature=0.8,
top_p=0.9,
repetition_penalty=1.1, # küçük model tekrara düşmesin
)
print(tokenizer.decode(cikti[0], skip_special_tokens=True))
```
`trust_remote_code=True` gereklidir: model mimarisi standart transformers
sınıflarından biri olmadığı için kendi kodunu (`model.py`,
`configuration_ozanllm.py`) indirir. transformers 5.x ile yerel bir klasörden
yüklerken de bu bayrak gereklidir.
Modeli indirdiğiniz klasörden yüklemek için:
```python
model = AutoModelForCausalLM.from_pretrained("ozanllm", trust_remote_code=True)
```
## Üretim Notları
- Model belgeleri `[BOS] ... [EOS]` çerçevesiyle eğitildi; en iyi sonuç için prompt'un
başına `bos_token_id` (2) ekleyin.
- Bağlam 512 token ile sınırlıdır; bu sınırın üzerindeki girdiler desteklenmez.
- KV cache olmadığı için üretim token token ilerler ve uzun çıktılar yavaştır.
- 38M'lik bir modelde tekrara düşme sık görülür; `repetition_penalty≈1.1` önerilir.
- Örnekleme için `temperature≈0.8`, `top_p≈0.9` iyi çalışır.
## Eğitim
### Veri
| | |
|---|---|
| Veri seti | [tascib/turkish-llm-dataset](https://huggingface.co/datasets/tascib/turkish-llm-dataset) (CC BY-SA 4.0) |
| Kullanılan dilim | Akış (streaming) modunda alınan ilk 600.000 belge; yaklaşık 213M token |
| İşleme | Belgeler `[BOS] … [EOS]` olarak token'lanır ve 512'lik dizilere paketlenir; padding yoktur |
| Tokenizer | [coderian/QraXAi-Turkish-Tok-50K](https://huggingface.co/coderian/QraXAi-Turkish-Tok-50K) — BPE, 50.000 token, `[PAD]=0 [UNK]=1 [BOS]=2 [EOS]=3` |
### Hiperparametreler
| | |
|---|---|
| Optimizer adımı | 3.252 |
| Etkin batch | 128 dizi × 512 token = 65.536 token/adım |
| Toplam token | ≈213M |
| Optimizer | AdamW (β₁=0.9, β₂=0.95, weight decay 0.1) |
| Öğrenme oranı | 3e-4; 200 adım ısınma, ardından kosinüs ile 0.1×'e düşüş |
| Gradyan kırpma | 1.0 |
| Karışık hassasiyet | fp16 + GradScaler |
| Donanım | Kaggle, 2× Tesla T4 (otomatik DataParallel) |
| Çerçeve | PyTorch + Hugging Face transformers/datasets, safetensors |
Eğitim betiği tek dosyadır (`train.py`); model boyutları `EMBED_DIM=320`,
`N_LAYERS=5`, `SEQ_LEN=512`, `BATCH_SIZE=16`, `GRAD_ACCUM=8` ile ayarlanmıştır.
## Kullanım Amacı
Uygun kullanımlar:
- Türkçe metin tamamlama, taslak sürdürme, yaratıcı yazı denemeleri
- Türkçe NLP araştırmaları ve küçük model deneyleri
- Fine-tuning için başlangıç noktası (base model)
Uygun olmayan kullanımlar:
- Soru-cevap, sohbet, talimat takibi (instruction tuning yoktur)
- Olgusal doğruluk gerektiren üretim kullanımları
- Hukuki, tıbbi veya güvenlik açısından kritik karar sistemleri
## Sınırlamalar ve Önyargılar
- 38M parametre ve ≈213M token ile eğitilmiş küçük bir base modeldir; bilgisi,
akıcılığı ve tutarlılığı sınırlıdır.
- Uzun üretimlerde tekrara düşebilir veya konudan sapabilir.
- Eğitim verisi filtrelenmemiş web metni içerdiği için model önyargılı veya
istenmeyen ifadeler üretebilir; çıktılar kullanılmadan önce gözden geçirilmelidir.
- Türkçe dışındaki dillerde ve kod üretiminde güvenilir değildir.
- Resmî bir benchmark değerlendirmesi yapılmamıştır.
## Dosyalar
| Dosya | Açıklama |
|---|---|
| `model.safetensors` | Model ağırlıkları (float32, ~153 MB) |
| `config.json` | Model yapılandırması (`auto_map` ile özel kod bağlantıları) |
| `generation_config.json` | Varsayılan üretim ayarları (BOS/EOS/PAD id'leri) |
| `model.py` | OzanLLM mimarisi (`trust_remote_code`) |
| `configuration_ozanllm.py` | `GPTConfig` yapılandırma sınıfı |
| `tokenizer.json`, `tokenizer_config.json` | Tokenizer (50.000 token) |
| `README.md` | Bu model kartı |
## Atıf
```bibtex
@misc{ozanllm-40m,
title = {OzanLLM-40M: Turkish Base Language Model},
author = {coderian},
year = {2026},
url = {https://huggingface.co/coderian/OzanLLM-40M}
}
```
---
## English Summary
**OzanLLM-40M** is a 38.3M-parameter Turkish base language model trained from
scratch on the first 600k documents (~213M tokens) of the
`tascib/turkish-llm-dataset`. It is a 5-layer, 320-dim decoder-only Transformer
with single-head causal attention, learned absolute position embeddings and a
50k BPE tokenizer. It is a base model intended for Turkish text completion, not
for chat or instruction following. Use `trust_remote_code=True` to load it.