File size: 6,610 Bytes
d204378
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
---
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.