Mima-Pico-15m — mima-15m-turkce-bpe8k-v1

A 15.54M-parameter decoder-only language model (tied embeddings) trained from scratch in Turkish. It was trained on a single consumer GPU (NVIDIA GeForce MX450, 2 GB VRAM) using a 6-stage curriculum. This repository ships the finished checkpoint (step 32,750 — final stage A3-karma / consolidation).

Türkçe özet: Türkçe odaklı, sıfırdan eğitilmiş 15.54M parametreli (bağlı embedding) decoder-only dil modeli. Tek bir tüketici GPU'sunda (NVIDIA MX450, 2 GB VRAM) 6 aşamalı müfredatla eğitilmiştir. Bu depo eğitim tamamlanmış final modeli içerir (adım 32.750, A3-karma/konsolidasyon).

Model details / Model detayları

Field Value
Parameters 15,537,792 (~15.54M; tied embedding)
state-dict total 18,683,520 (~18.68M; includes duplicate lm_head copy)
Layers 7
Attention heads 6 (head_dim 64)
Hidden size 384
FFN SwiGLU, 1024 hidden (3 matmuls)
Normalization RMSNorm (pre-norm)
Positional RoPE (θ = 10,000)
Context window 512 tokens
Vocabulary 8192 byte-level BPE (8187 BPE + 5 special tokens), trained on a Turkish corpus
Special tokens <bos>=0, <user>=1, <asst>=2, <end>=3, <pad>=4
File size 74.7 MB (fp32 safetensors)

TR: Parametre 15,537,792 (~15,54M); katman 7; dikkat başlığı 6; gizli boyut 384; FFN SwiGLU 1024; RMSNorm; RoPE θ=10.000; bağlam 512 token; sözlük 8192 byte-level BPE; özel tokenlar <bos>=0, <user>=1, <asst>=2, <end>=3, <pad>=4; 74,7 MB fp32.

Evaluation / Değerlendirme

Language modeling (validation split)

Metric Value
Validation loss 0.5522
Validation perplexity 1.74
Training loss (final step) 0.5368
Training step 32,750
Status A3-karma — training finished

Note: validation loss is measured on the final stage's (multi-source consolidation) distribution, so it is not directly comparable to the earlier stages' numbers.

TR: Doğrulama kaybı 0.5522; ppl 1.74. Kayıp müfredatın son (konsolidasyon) aşamasının dağılımı üzerindedir, eski aşamalarla doğrudan karşılaştırılamaz.

MMLU-TR (Q-bert/mmlu-turkish, validation)

  • 23% (23/100) — conditional log-likelihood letter scoring (prompt + " A"/" B"/ " C"/" D" → pick the option with the highest summed log-prob).

Comparison on the same method & n=100:

Model Parameters MMLU-TR
Mima-Pico-15m (this model) 15.5M 23%
mima-v4 15.5M 19%
mima-skel-8m (A1) 8.4M 17%
supra-mini-8m 7M 28%
SmolLM2-135M-Instruct 134M 27%
Qwen2.5-0.5B-Instruct 494M 27%
random / majority-class baseline — 25% / 35%

23% is below the majority-class baseline (35%) — at this scale multiple-choice performance is weak and prompt-sensitive; the model's real strength is language modeling (ppl 1.74) and chat-style training.

TR: MMLU-TR %23; 23/100 doğru. Çoğunluk-sınıf tabanı (%35) altındadır; bu ölçekte çoktan seçmeli performans zayıf ve prompt-duyarlıdır. Gerçek güç dil modelleme (ppl 1.74) ve sohbet tarzı eğitimdir.

Training methodology / Eğitim yöntemi

Curriculum learning. Instead of a single large mixed corpus, 6 stages ordered by difficulty; each stage focuses on its own data while earlier stages are preserved through replay:

Stage Steps Data focus LR Goal
A0-dil 12,207 plain Turkish text 0.0015 agglutinative morphology, word order
A1-kitap 57 MEB textbook sentences 0.0009 informational sentence patterns
A2-bilgi 6,714 turkish-knowledge-sft + text replay 0.0007 knowledge-heavy SFT
A3-sentetik 2,686 math + templated lesson data 0.0005 rule-based reasoning
A4-sohbet 2,197 Turkish dialog corpus 0.00035 chat style
A5 / A3-karma 3,662 all sources (30M tokens) 0.00025 → 0.00015 consolidation

Optimization: AdamW (weight_decay 0.1), cosine LR schedule (0.0015 → 0.00015), 200-step linear warmup, grad-norm clip 1.0, batch 16 × 512 = 8,192 token/step. Loss: standard next-token cross-entropy (assistant turns only in chat data).

Efficiency: gradient checkpointing (per layer), chunked cross-entropy (2048-token chunks — limits the fp32 logit copy on 2 GB VRAM), tied embedding (lm_head = wte). BPE-8k selection: 4.9× more Turkish context in the same VRAM vs. byte-level, with 3M fewer parameters.

TR: Müfredat öğrenme: zorluk sırasına dizilmiş 6 aşama, replay ile koruma. A0-dil 12.207 adım (saf Türkçe), A1-kitap 57 adım (MEB ders kitapları), A2-bilgi 6.714 adım, A3-sentetik 2.686 adım, A4-sohbet 2.197 adım, A5/A3-karma 3.662 adım. Optimizasyon AdamW, cosine LR, batch 16×512 token. Yalnızca asistan turlarında cross-entropy kayıp. Gradient checkpointing, parçalı cross-entropy, bağlı embedding. BPE-8k → aynı VRAM'de 4.9× daha fazla Türkçe, 3M parametre daha az.

Training data and attribution / Eğitim verisi ve atıflar

Total corpus: 235.9M Turkish tokens (951 MB) — text pool: wiki 50% + FineWeb-2 35% + tascib 15%. The dataset is not shipped in this repo; each source's license applies (below):

Source Usage License
Turkish Wikipedia (text pool 50%) A0, replays CC BY-SA 4.0
FineWeb-2 (Turkish subset, 35%) A0, replays ODC-BY 1.0
tascib — academic abstracts (15%) A0, replays internal compilation
MEB textbooks (kitap1–6, 137,485 tokens) A1, A5 public source
turkish-knowledge-sft A2, A5 HuggingFace open license
Synthetic math + templated lesson data A3 produced in this project
turkish_llm_train.jsonl (dialogs) A4 internal compilation

Chat format: <bos><user>{question}<asst>{answer}<end>.

TR: Toplam korpus 235.9M token Türkçe (951 MB); metin havuzu wiki %50 + FineWeb-2 %35 + tascib %15. Veri depoda bulunmaz; kaynak lisansları geçerli: Vikipedi CC BY-SA 4.0, FineWeb-2 ODC-BY 1.0. Sohbet formatı: <bos><user>{soru}<asst>{cevap}<end>.

Usage / Kullanım

The architecture is custom (transformers does not know it) — loading requires trust_remote_code=True:

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer

tok = AutoTokenizer.from_pretrained(".", trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(".", trust_remote_code=True)
model.eval()

# Chat format: <bos><user>...<asst>...<end>
ids = [0] + [1] + tok.encode("merhaba", add_special_tokens=False).tolist() + [2]
out = model.generate(torch.tensor([ids]), max_new_tokens=100,
                     temperature=0.85, top_k=40)
print(tok.decode(out[0, len(ids):].tolist()))

sohbet.py is a runnable terminal chat (python sohbet.py). The architecture code lives in modeling_mima.py and is identical to src/model.py in the training repository.

TR: Mimari custom — trust_remote_code=True şart. Yukarıdaki kodörnek. sohbet.py terminal sohbeti içerir; mimari modeling_mima.py içinde ve eğitim deposundaki src/model.py ile birebir aynı.

Example conversations / Örnek konuşmalar (Türkçe)

Generated with temperature=0.85, top_k=40, up to 120 new tokens, stopping at <end>. Outputs are illustrative: a 15.5M model frequently hallucinates; judge the style, not factual accuracy.

TR: Aşağıdaki örnekler temperature=0.85, top_k=40, en fazla 120 yeni token ve <end> durma koşuluyla üretilmiştir. Çıktılar temsilidir; 15,5M'lik bir model sıkça yanıltır; tarzı değerlendirin, gerçek doğruluğu değil.

Q (user): Merhaba! Kim olduğunu söyleyebilir misin? A (model): Sahne birşey! Kestaneye ve sıradan birşey! Bir şey mi? Kestane!

Q: İki artı üç kaç eder? A: İkinci artı artı iki artı üç arasındaki sayı 8'dir.

Q: Fransa'nın başkenti neresi? A: Floransa'nın güneydoğusunda, Rio de France'in 35. büyük kenti ve Cascade'dir.

Q: Türkçe'de ekler nasıl kullanılır? A: Metrozlar, bir insan yapısı oluşturmak için insan yapısı bileşenlerinin ve nesnelerin bir araya getirilmesi, bir insan yapısı oluşturmak için bir araçtır. Bir insan yapısı oluşturmak için bir bilgisayar ve bilgisayar programisi gibi çeşitli görevleri otomatikleştirmek için kullanılabilir.

Q: Lütfen bana kısa bir hikaye anlat. A: Bir zamanlar, hayat çok zordu. İlk başta onunla arkadaş oldu, ancak ona her zaman orada olduğunu söyledi.

Q: Makine öğrenmesi nedir? A: Makine öğrenmesi algoritma, tahminler ve doğr Sayısal İletişimde algoritma tarafından eğitilmektedir.

Q: Python gezegeni kaç yıldızlı? A: Python gezegenleri yaklaşık olarak 125 yıldıza eşittir ve gezegenlerin çoğu Güneş'tir... (nonsensical continuation omitted)

Q: Bir kuş ve bir balık arasındaki fark nedir? A: Bir kuşu bir balık ile birlikte tutan bir balık, bir kaya türü, bir cips, bir skala veya bir kaya türüdür... (repetitive geological drift)

Limitations and risks / Sınırlılıklar ve riskler

  • Only 15.5M parameters. Factual errors, repetition and inconsistency are frequent; coherence degrades over long contexts (512 tokens).
  • No safety alignment. Trained on unfiltered web text; may produce misleading, inappropriate, or offensive content. Add filters for production use.
  • 8,192 BPE vocabulary. Rare proper nouns / place names get fragmented.
  • Training corpus may contain mojibake (double-encoded UTF-8); a known data-quality boundary.
  • Does not give medical / legal / financial advice.

TR: 15,5M parametre çok küçüktür — yanlış bilgi, tekrar, tutarsızlık sık görülür; uzun bağlamda tutarlılık düşer. Güvenlik hizalaması yoktur; filtresiz web verisiyle eğitilmiştir, yanıltıcı/uygunsuz/rahatsız edici çıktı üretebilir, üretimde ek filtre gerekir. 8192 BPE sözlüğü nadir isimleri parçalar. Korpus mojibake içerebilir. Tıbbi/hukuki/finansal tavsiye vermez.

License / Lisans

  • Model weights and architecture code: Apache-2.0.
  • Training data follows the original sources' licenses (table above): Turkish Wikipedia CC BY-SA 4.0, FineWeb-2 ODC-BY 1.0, turkish-knowledge-sft under its HuggingFace open license. Attribution rules of each source apply; this repo distributes only weights and code.

TR: Model ağırlıkları ve mimari kodu Apache-2.0. Eğitim verisi kaynak lisanslarına tabidir (yukarıdaki tablo). Bu depo yalnızca ağırlık ve kodu dağıtır.

Original project (Mima18); training dumps, curriculum and evaluation code live in the project repository. This package was regenerated from the live checkpoint on 2026-10-14.

TR: Özgün proje (Mima18). Eğitim dökümü, müfredat ve değerlendirme kodu proje deposunda; paket 2026-10-14 tarihinde canlı checkpoint'tan üretilmiştir.

Örnek çıktılar

Aşağıdaki örnekler yerel checkpoint (/home/root_sys-n/son.pt, adım 32750) ile temperature=0.75, top_k=40, rep_penalty=1.2 ve seed seçimi yapılarak üretildi. 15.5M parametreli bir model olduğundan çıktılar kısa ve değişken; çoğunlukla kural dışı cümleler içerir. Üretilen metinler küratörlü değildir, modelin "kendi haline" bırakılmış çıktılarıdır.

Girdi koşulu: Bir varmis bir yokmus, eski zamanlarda

--- seed=40 ---
dagillarin ve eski zamanların dagistliklerle dolu olduğunu düşünen eski bir adam. 

Çünkü eski zamanlara denk gelen bir adama sahip olan adam, bir doguyu yaratmak istiyor

--- seed=48 ---
bu kadar fazla insan yoktu. Birisi, onu unutmamak için bir yol buldu. Hiçbiri, bu yüzden onu unutmalıydık. 

Sorun değil, anlatabildiklerindi

--- seed=51 ---
butun-u gül gibi bir sevinçten biri olarak, 

bir alimi gördüm, sevdim ve esirdım.
biri bana her birine yari da, el verdim

--- seed=57 ---
, eski zamanlardan beri, daha eski üne göre adlar kullanılmaktaydı. Bu isimlerin hepsinin de yazılı olduğu bir dönemde, zamanın diğerlerine nazaran, "Kral" adı verilen yeni bir adı

--- seed=64 ---
Sanklar ve eski zamanlardan beri 
O kadar 
İşte eski zamanlarda 
Çakıl taş duvarlari, 
Yasin ki 
Şu o anki zamanlar

--- seed=82 ---
Yokmuyd, eskide bir yokum, eskiden bir yokmus; eski zamanlardan beri 
Bilmezdim
Güzeldi, çoktandır, çoktandır, eskiden

--- seed=86 ---
bir köyden doğmuş. Köyde bir avcı vardı, köyde çok sayıda hayvan bulunuyordu. Köye ilişkin adli kayıtlar yeterli. Köyde ise köylüler arasında avcılık ile ilgili kayıtlar mevcut.

Tekrar üretmek için:

import torch, random
from transformers import AutoModelForCausalLM
from tokenizers import Tokenizer

tok = Tokenizer.from_file("tokenizer.json")
model = AutoModelForCausalLM.from_pretrained(".", trust_remote_code=True)
prompt = "Bir varmis bir yokmus, eski zamanlarda"
ids = tok.encode(prompt, add_special_tokens=False).ids
g = torch.Generator().manual_seed(48)          # yukarıdaki seed'ler
out = model.generate(torch.tensor([ids]), max_new_tokens=45,
                     temperature=0.75, top_k=40, generator=g)
print(tok.decode(out[0, len(ids):].tolist()))

Not: Sohbet formatında (<bos><user>...<asst>...) modelin cevapları çoğu zaman kural dışıdır; yaratıcı tamamlamada daha anlamlı çıktılar görülmektedir. Bu sınırlılık README'nin "Sınırlılıklar" bölümünde ayrıca açıklanmıştır.

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