Uploaded model

  • Developed by: srhskrkc
  • License: apache-2.0
  • Finetuned from model : unsloth/Llama-3.2-1B-Instruct-bnb-4bit

This llama model was trained 2x faster with Unsloth

Hafta 2.1 Ödev: Fine-Tune Edilen Modelin Benchmark Testine Sokulması

⎉ 🇹🇷 Türkçe MMLU Benchmark Karşılaştırması

Modelin genel mantık yürütme ve Türkçe anlama kapasitesini ölçmek için Ali Bayram Hocanın Türkçe MMLU veri setinin 3.100 soruluk (yaklaşık %50'lik) kısmı üzerinde test yapılmıştır.

Model Test Edilen Soru Başarı Skoru
unsloth/Llama-3.2-1B-Instruct-bnb-4bit (Base Model) 3,100 %27.87
srhskrkc/odysseia-llama-lora (Fine-Tuned Model) 3,100 %27.94

Sonuç Değerlendirmesi: Yapılan LoRA fine-tuning işlemi (Odysseia verisi ile) modelde Catastrophic Forgetting (Yıkıcı Unutma) yaratmamış; aksine modelin genel çoktan seçmeli soru çözme başarısını koruyup ufak bir artış sağlamıştır.

⚡︎ ⌲ Kullanım (Inference) Kodu Bu LoRA adaptörünü kendi projelerinizde veya testlerinizde base model üzerine yükleyerek şu şekilde kullanabilirsiniz:
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel
import torch

# 1. Base modeli ve tokenizer'ı yükleyin
base_model_id = "unsloth/Llama-3.2-1B-Instruct-bnb-4bit"
tokenizer = AutoTokenizer.from_pretrained(base_model_id)
base_model = AutoModelForCausalLM.from_pretrained(
    base_model_id,
    torch_dtype=torch.float16,
    device_map="auto"
)

# 2. LoRA adaptörünü base model üzerine entegre edin
model = PeftModel.from_pretrained(base_model, "srhskrkc/odysseia-llama-lora")

# 3. Test promptu oluşturun
prompt = "Girdiğiniz metin veya soru buraya yazılır..."
inputs = tokenizer(prompt, return_tensors="pt").to("cuda")

outputs = model.generate(**inputs, max_new_tokens=128)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
▤ Tıklayın: MMLU Değerlendirme (Evaluation) Kodu

Modelin başarı skorlarını (3.100 soru üzerinden) hesaplarken kullanılan MMLU benchmark test kodunun temel yapısı:

from unsloth import FastLanguageModel
import pandas as pd
import torch

mmlu_veri = pd.read_parquet("hf://datasets/alibayram/yapay_zeka_turkce_mmlu_model_cevaplari/data/train-00000-of-00001.parquet")
test_verisi = mmlu_veri.head(3100) # İlk 3.100 soru

model_id = "srhskrkc/odysseia-llama-lora"
model, tokenizer = FastLanguageModel.from_pretrained(model_name = model_id, max_seq_length = 2048, load_in_4bit = True)
FastLanguageModel.for_inference(model)

harfler = ['A', 'B', 'C', 'D', 'E']
dogru_cevap_sayisi = 0

for i in range(len(test_verisi)):
    soru_metni = test_verisi.iloc[i]['soru'] + "\n"
    secenekler = test_verisi.iloc[i]['secenekler']
    dogru_harf = harfler[test_verisi.iloc[i]['cevap']]

    for j in range(len(secenekler)):
        soru_metni += harfler[j] + ": " + secenekler[j] + "\n"

    prompt = "Sana soru ve seçenekleri veriyorum. Sadece hangi seçeneğin sorunun doğru cevabı olduğunu yaz.\nSoru: " + soru_metni + "Cevap:"
    
    inputs = tokenizer([prompt], return_tensors="pt").to("cuda")
    outputs = model.generate(**inputs, max_new_tokens=5, pad_token_id=tokenizer.eos_token_id)
    cevap_metni = tokenizer.batch_decode(outputs, skip_special_tokens=True)[0]
    verilen_cevap = cevap_metni.split("Cevap:")[-1].strip().upper()

    if len(verilen_cevap) > 0 and verilen_cevap[0] == dogru_harf:
        dogru_cevap_sayisi += 1

print(f"Başarı Oranı: %{(dogru_cevap_sayisi / len(test_verisi)) * 100:.2f}")

🎛️ Eğitim Hiperparametreleri

Model, kaynak optimizasyonu sağlamak adına Unsloth kütüphanesi ve LoRA (Low-Rank Adaptation) tekniği kullanılarak eğitilmiştir:

Parametre Değer
Max Sequence Length 2048
LoRA R (Rank) 16
LoRA Alpha 32
Learning Rate 2e-4
Optimizer AdamW 8-bit
Quantization 4-bit (BitsAndBytes NF4)

⚛︎ Veri Seti ve Hazırlık Süreci

Bu LoRA adaptörü, klasik MMLU veya hazır veri setleri yerine, tamamen özgün olarak derlenen Odysseia Destanı Türkçe veri seti ile eğitilmiştir.

Hafta 2.2 Ödev: Özel Benchmark Oluşturma Ödevi

⌖ ⌬ Model Değerlendirmesi ve Benchmark Karşılaştırması

Proje kapsamında geliştirilen srhskrkc/odysseia-llama-lora modeli, Homeros'un Odysseia destanındaki bağlamsal ilişkileri ölçmek amacıyla özel olarak hazırlanan 100 soruluk Odysseia Benchmark Veri Seti üzerinde teste tabi tutulmuştur.

Ödev yönergesi gereği, modelin başarısını kıyaslayabilmek adına aynı test (Zero-Shot formatında) 4 farklı açık kaynaklı temel model üzerinde daha uygulanmış ve sonuçlar aşağıda listelenmiştir.

🎚️ Test Sonuçları Tablosu

Model Adı Parametre / Tür Doğru Sayısı Başarı Oranı
Llama-3.2-3B-Instruct 3B (Temel Model) 64 %64.00
srhskrkc/odysseia-llama-lora Özel Fine-Tune 53 %53.00
Mistral-7B-Instruct-v0.3 7B (Temel Model) 27 %27.00
Gemma-3-1B-IT 1B (Temel Model) 20 %20.00
Qwen2.5-1.5B-Instruct 1.5B (Temel Model) 10 %10.00

Sonuç Analizi: 4 seçenekli (rastgele başarı ihtimali %25 olan) bu benchmark setinde test edilen temel modeller (Gemma, Mistral, Qwen) %10 ile %27 arasında sonuç vermiştir. Hedef alana özel olarak fine-tune edilen srhskrkc/odysseia-llama-lora modeli ise %53 başarı oranına ulaşmıştır.


🧬 Veri Seti Kalite Kontrol ve İnsan Doğrulama Süreci

Benchmark veri setindeki 100 sorunun 10'u ödev yönergesi gereği tamamen manuel olarak, 90'ı ise LLM desteğiyle (sentetik olarak) üretilmiştir. Sentetik veriler üretildikten sonra doğrudan kabul edilmemiş, aşağıdaki insan doğrulama (human-in-the-loop) süreçlerinden geçirilerek kalite kontrolü sağlanmıştır:

  1. Halüsinasyon (Hallucination) Teyidi: Sentetik olarak üretilen soruların cevapları, Odysseia destanının kaynak metinleriyle manuel olarak çapraz kontrole sokulmuş ve modelin uydurma yapmadığı doğrulanmıştır.
  2. Çeldirici (Distractor) Kalitesi ve Bias: A, B, C, D seçeneklerindeki çeldirici şıkların mantıklı olması, soruyu çok kolaylaştıracak absürtlükte olmaması ve doğru cevapların dengeli dağılması manuel olarak sağlanmıştır.
  3. Format Standardizasyonu: Soruların MMLU yapısına uygunluğu ve JSON alanlarının (question, choices, answer) regex ile tam uyumlu çalışacak şekilde temizlenmesi sağlanmıştır.

🌌 Tartışma: Dar Alan Öğrenmesi ve Catastrophic Forgetting

Uygulanan ince ayar (fine-tuning) sonucunda modelin Odysseia Benchmark testinde %53 başarıya ulaşırken, Genel Türkçe MMLU testindeki başarısının taban modele kıyasla neredeyse aynı kalması (%27.87'den %27.94'e) bir dezavantaj değil, planlanan bir başarıdır:

  • Bu durum, modelin sadece dar alanda öğrenip genelleme yapamadığı şeklinde değil; aksine Catastrophic Forgetting (Yıkıcı Unutma) probleminin başarıyla engellendiği şeklinde yorumlanmalıdır.
  • Model, hedef bağlam olan Odysseia destanı üzerinde uzmanlaşırken, temel dil yeteneklerini ve genel dünya bilgisini (Genel MMLU) bozmamıştır. Uygulanan LoRA konfigürasyonu, temel modelin ağırlıklarını yıkmadan yeni bilgiyi entegre etmede başarılı olmuştur.
Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for srhskrkc/odysseia-llama-lora