Yedikule 202M Instruct

Türkçe için sıfırdan eğitilmiş 202 milyon parametreli dil modelinin talimat ayarlı sürümü.

Geliştirici Ahmet Karakuş, Marul AI
Model türü Decoder-only Transformer, talimat ayarlı
Dil Türkçe
Parametre 202.1M
Bağlam 2048 token
Ağırlık biçimi bf16, safetensors
Temel model Yedikule Base
Lisans Yedikule Model Lisansı 2.0
Sürüm 2026

Temel modelden farkı, sohbet şablonunu tanıması ve sorulan soruya yanıt vermesidir. Model kimliğini bilir: adı Yedikule, geliştiricisi Marul AI, bilgi kesim tarihi 2026.

Mimari

  • 24 katman, 768 gizli boyut, 2304 ara boyut
  • Grouped Query Attention: 12 sorgu başlığı, 4 anahtar/değer başlığı, başlık boyutu 64
  • Pre norm RMSNorm, RoPE (theta 10000), SwiGLU
  • QK-Norm, başlık boyutunda, RoPE'den önce uygulanır
  • Bağlı giriş ve çıkış gömmeleri, hiçbir katmanda bias yok
  • Tokenizer: Marul 48k Byte-Level BPE, Türkçe için eğitilmiş

Mimari model.py içinde tanımlıdır, torch dışında bağımlılığı yoktur.

Sohbet şablonu

Şablon eğitimde görülen biçimin birebir aynısıdır. Değiştirmeyin.

<|bos|>
<|im_start|><|system|>\n{sistem}<|im_end|>\n
<|im_start|><|user|>\n{kullanici}<|im_end|>\n
<|im_start|><|assistant|>\n{asistan}<|im_end|>\n

Standart ChatML değildir: rol adı düz metin değil, ayrı bir özel tokendir.

Token kimlikleri: <|bos|> 3, <|im_start|> 4, <|im_end|> 5, <|system|> 6, <|user|> 7, <|assistant|> 8.

Üretimi <|im_end|> (5) tokeninde durdurun. <|endoftext|> (0) beklerseniz model konuşmayı kendi kendine sürdürmeye çalışır.

Sistem promptu

Eğitim setindeki 159.734 örneğin tamamı aynı sistem promptuyla başlar:

Sen Marul AI tarafından geliştirilen Yedikule adlı bir Türkçe yapay zeka asistanısın. Kullanıcılara doğru, açık ve yardımsever yanıtlar ver.

Bu metni değiştirmeyin. Model bu promptu görmeye koşullandı, farklı bir sistem promptu yanıt kalitesini düşürür. Kişiselleştirme yapacaksanız ek talimatı bu promptun altına ekleyin, yerine koymayın.

Kullanım

pip install torch tokenizers safetensors
import torch
from tokenizers import Tokenizer
from safetensors.torch import load_file

from config import ModelConfig
from model import MarulLLM

SYSTEM = ("Sen Marul AI tarafından geliştirilen Yedikule adlı bir Türkçe yapay "
          "zeka asistanısın. Kullanıcılara doğru, açık ve yardımsever yanıtlar ver.")
BOS, IM_START, IM_END = 3, 4, 5
ROLE = {"system": 6, "user": 7, "assistant": 8}

cfg = ModelConfig.load("model_config.json")
model = MarulLLM(cfg)
model.load_state_dict({k: v.float() for k, v in load_file("model.safetensors").items()})

device = "cuda" if torch.cuda.is_available() else "cpu"
model.eval().to(device)
if device == "cuda":
    model.to(torch.bfloat16)

tok = Tokenizer.from_file("tokenizer.json")
nl = tok.encode("\n", add_special_tokens=False).ids


def build(turns):
    ids = [BOS]
    for role, text in [("system", SYSTEM)] + turns:
        ids += [IM_START, ROLE[role]] + nl
        ids += tok.encode(text, add_special_tokens=False).ids
        ids += [IM_END] + nl
    return ids + [IM_START, ROLE["assistant"]] + nl


ids = build([("user", "Türkiye'nin başkenti neresidir?")])
out = model.generate(
    torch.tensor([ids], device=device),
    max_new_tokens=400, temperature=0.3, top_k=50, top_p=0.9, min_p=0.05,
    repetition_penalty=1.08, no_repeat_ngram_size=0, eos_token_id=IM_END,
)

gen = out[0].tolist()[len(ids):]
if IM_END in gen:
    gen = gen[:gen.index(IM_END)]
print(tok.decode(gen, skip_special_tokens=True).strip())

Bu kodun ürettiği örnek çıktılar:

Türkiye'nin başkenti neresidir?
  Türkiye'nin başkenti Ankara'dır.

Sen kimsin?
  Ben Yedikule, Marul AI tarafından geliştirilen bir Türkçe yapay zeka
  asistanıyım. Sorularını yanıtlamak, metin yazmak ve aklına takılan
  konularda yardımcı olmak için buradayım.

Çok turlu kullanımda geçmişi build fonksiyonuna sırayla verin. Sohbet 2048 tokeni aşarsa en eski turları atın, sistem promptunu ve <|bos|> tokenini her zaman koruyun, üretim için yer ayırın. Diziyi baştan kırpmayın, model bozuk girdi görür.

GGUF sürümü Ollama ve llama.cpp ile doğrudan çalışır: MarulAI/Yedikule-202M-Instruct-GGUF.

Örnekleme ayarları

Önerilen değerler generation_config.json içindedir:

Ayar Değer
temperature 0.3
top_k 50
top_p 0.9
min_p 0.05
repetition_penalty 1.08
no_repeat_ngram_size 0
max_new_tokens 400

Sıcaklık 0.3 olgusal ve tutarlı yanıt için seçildi; aynı soruya tekrar tekrar aynı cevabı verir. Daha çeşitli üretim için 0.7 civarına çıkarabilirsiniz, ancak 202 milyon parametrelik bir modelde yüksek sıcaklık uydurma oranını belirgin biçimde artırır.

Tekrar cezasını 1.2 seviyesine çıkarmayın, Türkçe ekleri bozar.

Eğitim

Başlangıç noktası Yedikule Base
SFT verisi 159.734 örnek, 60.3 milyon token
Ortalama örnek uzunluğu 378 token
Denetlenen token oranı yaklaşık yüzde 49
En iyi doğrulama kaybı 1.6044 (yaklaşık 5.0 perplexity)

Kayıp yalnızca asistan içeriği ve onu kapatan <|im_end|> tokeni üzerinde hesaplandı; model durmayı bu şekilde öğrendi. Sistem ve kullanıcı turları maskelendi.

Eğitim verisi ve lisansları

Bu bölüm yalnızca talimat ayarı aşamasında kullanılan veriyi anlatır. Modelin temel dil bilgisi ön eğitim corpus'undan gelir; o corpus kısmen uonlp/CulturaX Türkçe alt kümesinden, kısmen kendi web taramamızdan derlenmiştir ve kendi lisans koşullarına tabidir. Ayrıntı için MarulAI/Yedikule-202M-Base model kartına bakın.

Veri kümesi herkese açık Türkçe kaynaklardan derlendi. Kaynaklar olduğu gibi kullanılmadı: her örnek unicode ve boşluk normalizasyonundan geçirildi, bozuk kayıtlar ayıklandı, roller onarıldı ve yinelenenler atıldı. Elenen ve düzeltilen örnek sayıları aşağıda özetlenmiştir.

Ana kaynak kilicai/turkish-sft-master-180k derlemesidir. Bu derleme kendi içinde birden çok alt kümeden oluşur ve kendi sayfasında bir lisans beyan etmemektedir. Alt kümelerin lisansları, izlenebildiği kadarıyla şöyledir:

Alt küme Kalan örnek Lisans Not
InstrucTurca 60.945 CC BY-SA 4.0 turkish-nlp-suite, dokuz İngilizce kümeden Snowflake Arctic ile çevrilmiş
MetaMathQA-Turkish 19.951 kaynak MetaMathQA: MIT Türkçe çeviri, çevirinin lisansı ayrıca beyan edilmemiş
Hendrycks-Math-Turkish 11.438 kaynak MATH: MIT aynı
GradeSchoolMath-Turkish 8.790 kaynak GSM8K: MIT aynı
Turkish-Alpaca 8.592 doğrulanamadı Alpaca soyundan geliyor, özgün Alpaca CC BY-NC 4.0
WildChat-Turkish 6.016 kaynak WildChat: ODC-BY aynı
turkish-sentiment 6.000 doğrulanamadı
merve-turkish-instructions 4.541 Apache 2.0 merve/turkish_instructions
turkish-news 3.380 doğrulanamadı haber metni özetleme
turkish-news-short 3.379 doğrulanamadı aynı
MATH-Hard-Turkish 2.531 kaynak MATH: MIT
InstrucTurca-simulated 1.962 CC BY-SA 4.0 InstrucTurca türevi
Turkish-Finance 1.221 doğrulanamadı
GPQA-Turkish 544 kaynak GPQA: CC BY 4.0 üç alt küme toplamı

İkinci kaynak, araç çağırma örnekleri için kullanılan cturan/lamba-turkish-sft kümesidir: ODC-BY lisanslı, kendisi de allenai/WildChat-4.8M üzerinden filtrelenmiş ve sentetik üretimle genişletilmiş. Bu kümeden yalnızca tools alanı dolu olan dilim alındı, 8.032 örnek kaldı.

Kalan iki kaynak bu projeye aittir. Bunlardan ilki 11.477 örneklik çok turlu sentetik settir; DeepSeek V4 Flash ile üretilmiş, ardından bu proje tarafından temizlenip yeniden biçimlendirilmiştir. İkincisi 935 örneklik kimlik setidir ve tamamen elle yazılmıştır (85 özgün örnek, eğitimde tekrarlanarak kullanıldı).

Lisanslar hakkında dürüst uyarı. Yukarıdaki tablo, kaynak sayfalarında bulunabilen bilgiye dayanır. Türkçe çevirilerin çoğu, özgün kümenin lisansını devraldığını açıkça yazmaz; "doğrulanamadı" yazan satırlarda kaynak sayfada bir lisans beyanı bulunamamıştır. En büyük alt küme olan InstrucTurca CC BY-SA 4.0'dır ve bu lisans türev çalışmaların aynı koşullarla paylaşılmasını ister; model ağırlıklarının veri kümesinin türevi sayılıp sayılmayacağı hukuken netleşmiş bir konu değildir. Ticari kullanım düşünen taraf bu noktaları kendi hukuk danışmanıyla değerlendirmelidir.

Yapılan temizlik

Ham kaynaktaki 176.112 örnek şu işlemlerden geçti:

İşlem Adet
Yinelenen örnek atıldı 33.570
GSM cevap işareti normalize edildi 11.950
Askıda kalan kullanıcı turu atıldı 8.235
Yanıtı tekrarlayan araç örneği atıldı 2.151
Düzleştirilmiş konuşma tekrar turlara ayrıldı 2.059
Bağlam penceresini aşan örnek atıldı 1.651
Ayrılamayan </s> artığı taşıyan örnek atıldı 581
Ardışık aynı rol birleştirildi 544
Yabancı alfabe içeren örnek atıldı 329
Başka bir yapay zekadan söz eden yanıt atıldı 283
Çevrilmemiş İngilizce yanıt atıldı 225
Kendini tekrarlayan bozuk örnek atıldı 213
Bozuk karakter içeren örnek atıldı 29
Eski bilgi kesim tarihi iddiası içeren yanıt atıldı 14

Ayrıca dolar tutarları Türk lirasına çevrildi (sayılar yeniden ölçeklenmeden, yalnızca birim etiketi değiştirilerek), İngilizce duygu etiketleri Türkçeleştirildi ve GSM8K'nın <<12*3=36>> hesap makinesi artıkları temizlendi.

Değerlendirme

Yöntem

Çoktan seçmeli görevlerde her seçeneğin log P(seçenek | bağlam) değeri hesaplanır ve en yüksek olan seçilir; lm-evaluation-harness protokolü budur. Üretim yapılmaz, bu yüzden sonuçlar örnekleme ayarlarından bağımsızdır ve birebir tekrarlanabilir.

Kullanılan veri kümeleri: XCOPA-TR için cambridgeltl/xcopa (tr, validation+test), Belebele-TR için facebook/belebele (tur_Latn, test). Perplexity, sekiz düz Türkçe paragraf üzerinde token başına ortalama çapraz entropi olarak ölçüldü.

Görev seçimi bilinçlidir. 202 milyon parametrelik bir model MMLU veya ARC gibi bilgi yoğun ölçütlerde rastgele tahmin seviyesinden anlamlı biçimde ayrılamaz; oradaki bir iki puanlık farklar gürültüdür. Aşağıdaki üç ölçüt, bu boyuttaki bir modelin gerçekten sinyal ürettiği yerlerdir.

Sonuçlar

Ölçüt n Rastgele Base SFT
Perplexity (düz Türkçe metin) 8 metin 17.39 15.23
XCOPA-TR, nedensel çıkarım (acc) 600 50.0 59.5 58.8
Belebele-TR, okuduğunu anlama (acc) 900 25.0 31.2 30.9

Perplexity düşük olan iyidir, diğerlerinde yüksek olan.

Talimat ayarı dil modelleme kalitesini belirgin biçimde iyileştirmiş (perplexity 17.39'dan 15.23'e), buna karşılık çoktan seçmeli görevlerde fark ölçüm hatası sınırları içinde kalmış. Bu beklenen bir sonuçtur: SFT modele yeni bilgi öğretmez, var olan bilgiyi talimat biçiminde kullanmayı öğretir.

Standart liderlik tablosu ölçütleri

Karşılaştırma isteyenler için, OpenLLM Turkish Leaderboard protokolüyle daha önce alınan sonuçlar aşağıdadır. Bu ölçütlerde model rastgele tahmin seviyesindedir ve sonuçlar bir yetenek göstergesi olarak okunmamalıdır.

Ölçüt n Rastgele Base SFT
HellaSwag-TR (acc_norm) 1000 25.0 34.8 34.3
ARC-TR (acc_norm) 1167 25.0 26.9 27.2
MMLU-TR (acc) 1710 25.0 23.7 25.8
TruthfulQA-TR mc1 (acc) 817 21.0 24.8 25.5
GSM8K-TR (5-shot, üretim) 120 0.0 1.7 0.8

Yalnızca HellaSwag rastgele tabanın belirgin üzerindedir. GSM8K'daki sonuç, çok adımlı aritmetiğin bu modelde çalışmadığını doğrular.

Bağlam penceresi 2048 token olduğu için ARC 25-shot ve HellaSwag 10-shot yerine 5-shot çalıştırıldı; 25-shot promptu tek başına bağlamı taşırıyordu. Bu sapma üç koşula da aynı uygulandığı için base ile SFT karşılaştırması iç tutarlılığını korur, ancak sayılar başka modellerin liderlik tablosu skorlarıyla doğrudan kıyaslanamaz.

Araç çağırma

Model, talimat ayarı sırasında araç çağırmayı öğrendi. Araç şemaları sistem turuna bir <tools> bloğu olarak eklenir, model <tool_call> satırı üretir, sonuç kullanıcı turunda <tool_response> olarak geri verilir. Ayrı bir tool rolü yoktur.

Eğitimde görülen 15 aracın tamamı tools.json dosyasındadır. Dosya her araç için şunları içerir:

  • Eğitimdeki şemanın birebir kendisi
  • O aracın eğitim setinde kaç kez çağrıldığı
  • Modelin o aracı gerçekten nasıl çağırdığını gösteren tam bir örnek: kullanıcı mesajı, modelin ürettiği çağrı, araç sonucu ve modelin nihai yanıtı

Örnekler uydurulmamıştır, doğrudan eğitim setinden alınmıştır. Sistem promptuna araç bloğunun nasıl ekleneceği de aynı dosyada tarif edilir.

Model bu 15 araçta belirgin biçimde daha başarılıdır. Ölçüm: her araç için eğitimdeki örnek soru üç farklı tohumla denendi, 45 denemenin 45'inde geçerli çağrı üretildi; bozuk JSON ve eksik zorunlu alan çıkmadı.

Bu oran sorunun net olmasına bağlıdır. Kısa veya belirsiz isteklerde model çağırmamayı seçebiliyor; "Ankara'da hava nasıl?" yerine "Ankara'nın bugünkü hava durumunu öğrenebilir misin?" gibi açık bir istek çağrı olasılığını artırıyor. tools.json içindeki örnekler eğitimde görülen soru tarzını gösterir.

Görülmemiş şemalarda ise üretilen JSON çoğunlukla bozuk çıkıyor: model şemayı okuyup alan doldurmak yerine büyük ölçüde isim ile çağrı eşlemesi ezberlemiş durumda. Aynı ada sahip bir araca sonradan zorunlu bir alan eklendiğinde de o alanı doldurmuyor, ezberlediği çağrıyı üretiyor.

Kendi aracınızı tanımlayacaksanız, tools.json içindeki adlardan ve alan adlarından birini kullanmak başarı oranını belirgin biçimde artırır.

Eğitim setindeki 8.032 araç örneğinin 4.070'i gerçekten araç çağırıyor, 3.963'ü araç verilmesine rağmen çağırmıyor. Model ne zaman çağırmaması gerektiğini de öğrendi.

Sınırlar ve riskler

Çok adımlı aritmetik güvenilir değildir. Bilgi 2026 yılına kadardır, internet erişimi yoktur. Çoktan seçmeli akademik ölçütlerde model rastgele tahmin seviyesine yakın sonuç verir; 202 milyon parametre bu tür görevler için düşük bir bütçedir. Güçlü olduğu alan günlük Türkçe sohbet, kısa açıklama, özetleme ve metin düzeltmedir.

Model, büyük ölçüde çeviri ve sentetik üretimle hazırlanmış veriyle eğitildi. Kaynak metinlerdeki hatalar, önyargılar ve kültürel çarpıklıklar modele geçmiş olabilir. Ürettiği bilgi doğrulanmadan kullanılmamalı; tıbbi, hukuki, finansal veya güvenlik açısından kritik kararlarda tek başına kullanılmamalıdır.

Dosyalar

Dosya İçerik
model.safetensors bf16 ağırlıklar, 404 MB
model.py model mimarisi
config.py ModelConfig veri sınıfı
model_config.json mimari parametreleri
tokenizer.json Marul 48k Byte-Level BPE
tokenizer_config.json tokenizer meta bilgisi
tokenizer_info.json özel tokenler ve tokenizasyon örnekleri
generation_config.json önerilen örnekleme ayarları
tools.json eğitimde görülen 15 araç, şemaları ve gerçek örnekleri
LICENSE.md lisans tam metni

Lisans

Yedikule Model Lisansı 2.0. Telif hakkı sahibi Ahmet Karakuş (Marul AI). Bağlayıcı metin LICENSE.md dosyasındadır.

İzin almadan yapabilecekleriniz: modeli çalıştırmak, eğitim ve araştırmada kullanmak, üzerine ince ayar yapmak, damıtmak, birleştirmek, nicelemek, başka biçimlere çevirmek ve sonucu yayımlamak. Hepsi ticari olmayan kullanımla sınırlıdır.

Uymanız gerekenler: Yedikule'ye atıf yapmak, türev modelinizin adında Yedikule geçirmek, lisansı model ile birlikte dağıtmak ve telif bilgisini korumak.

Türevler de bu lisansa tabidir. Modelden türettiğiniz her çalışma aynı koşullara bağlı kalır; kendi lisansınızla yeniden lisanslayamazsınız. Türev modeli siz eğitmiş olsanız bile ticari kullanımı izne bağlıdır.

Ticari kullanım yazılı izne bağlıdır. Ayrıca kaynak veri kümelerinin lisansları bağımsız olarak yürürlüktedir (yukarıdaki uyarıya bakın).

Ticari lisans ve izin talepleri: marulai.resmi@gmail.com (Ahmet Karakuş, Marul AI)

Atıf

Yedikule, 202M parametreli Türkçe dil modeli.
Ahmet Karakuş, Marul AI, 2026.
https://huggingface.co/MarulAI/Yedikule-202M-Instruct
Downloads last month

-

Downloads are not tracked for this model. How to track
Safetensors
Model size
0.2B params
Tensor type
BF16
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for MarulAI/Yedikule-202M-Instruct

Finetuned
(1)
this model
Quantizations
1 model

Collection including MarulAI/Yedikule-202M-Instruct