Örnek çıktı
Model, apply_chat_template(..., tokenize=True) çok-modlu (image-text-to-text)
işlemci formatı gerektirdiği için mesaj içeriği [{"type": "text", "text": ...}]
şeklinde verilmeli (bkz. odev3_finetune/test_inference.py).
Soru: "Nietzsche'nin üst-insan (übermensch) kavramı nedir?"
(Model önce İngilizce bir "thinking" bölümü üretiyor, ardından Türkçe
cevaba geçiyor — taban model bir reasoning modeli olduğu için bu davranış
beklenen; kısa max_new_tokens ile test edildiğinde cevap bu noktada
kesildi.) Türkçe cevap bölümü üst-insanı değerler yaratma, geleneksel
ahlakı aşma ve "Tanrı öldü" sonrası anlam arayışı bağlamında doğru şekilde
özetliyor.
Soru: "Varoluşçuluk nedir, temsilcileri kimlerdir?"
"Varoluşçuluk, insanın varoluşunun önceliği, özgürlüğü ve sorumluluğu
üzerine kurulu bir felsefi akımdır. Varoluşçular, insanın doğuştan bir öz
veya amaçla yüklü olmadığını, varoluşunun kendisiyle başladığını
savunurlar..." (Sartre, Camus, Kierkegaard, Heidegger, de Beauvoir temsilci
olarak sayıldı.)
Soru: "Descartes'ın 'düşünüyorum öyleyse varım' önermesi ne anlama gelir?"
Model, önermeyi Discourse on Method/Meditations bağlamına oturtup
şüphe etme ediminin bile varoluşu kanıtladığını doğru şekilde açıkladı.
Üçü de konuya hakim, tutarlı ve Türkçe felsefi içerik üretti — LoRA
adaptörünün taban modeli felsefe domain'ine yönlendirdiği gözlemlendi.
Daha uzun/kesilmemiş cevaplar için max_new_tokens artırılmalı.
MMLU Benchmark: Taban Model vs Fine-Tune (LoRA)
Model, alibayram/yapay_zeka_turkce_mmlu_bolum_sonuclari deposundaki Türkçe MMLU test seti ve değerlendirme mantığı (olcum.py) kullanılarak taban modelle (unsloth/Qwen3.5-4B) karşılaştırmalı olarak test edildi.
Yöntem notu: Orijinal olcum.py Ollama üzerinden çalışıyor; bu model Ollama'da değil (LoRA adaptörü olarak HF'de) bulunduğundan, aynı veri seti, aynı prompt formatı ve aynı doğruluk kontrolü (harf eşleşmesi + belirsiz cevaplarda sentence-transformers/paraphrase-multilingual-mpnet-base-v2 ile anlamsal benzerlik) unsloth.FastModel üzerinden doğrudan çalıştırılarak birebir uygulandı (kod). 62 bölümün her birinden rastgele (seed=42) 15 soru örneklendi (toplam 930 soru/model, tüm 6200 soru değil) — greedy decoding (do_sample=False), enable_thinking=False.
Genel sonuç
Table with columns: Model, Doğru, Toplam, Başarı, Süre| Model | Doğru | Toplam | Başarı | Süre |
|---|
Taban — unsloth/Qwen3.5-4B | 588 | 930 | %63.23 | 438.4s |
Fine-tune (LoRA) — yoitsmeyusuf/felsefe-lora | 578 | 930 | %62.15 | 575.5s |
Genel MMLU başarısında fark: -1.08 puan (LoRA − Taban).
Felsefe verisiyle yapılan dar kapsamlı (527 satır, 1 epoch) bir LoRA fine-tune'un genel bilgi MMLU'sunda gözle görülür bir artış sağlaması beklenmiyordu — hedef zaten genel yetenek değil, felsefe domain'inde üslup/derinlikti (bkz. yukarıdaki örnek çıktılar). İlginç şekilde Felsefe bölümünün kendisinde de bu örneklemde taban model daha iyi çıktı (Taban %60.0 vs LoRA %53.33) — n=15 soruluk küçük örneklemde bir soru bile birkaç puanlık oynamaya yol açtığından (±1 doğru cevap ≈ ±6.7 puan) ve LoRA'nın çıktı stilini kısa tek harften ziyade daha açıklamalı/uzun cevaplara kaydırmış olabileceğinden (bu benchmark yalnızca tek harf cevabını puanlıyor), bu sonucu 'fine-tune felsefe bilgisini kötüleştirdi' şeklinde değil, MCQ-tarzı kısa cevap formatına karşı bir üslup uyumsuzluğu + küçük örneklem gürültüsü olarak okumak daha doğru.
Bölüm bazlı sonuçlar (62 bölüm, bölüm başına 15 soru)
Table with columns: Bölüm, Taban, LoRA, Fark| Bölüm | Taban | LoRA | Fark |
|---|
| Sağlık Kurumları İşletmeciliği | %66.67 | %86.67 | +20.00 |
| Turizm ve Otel İşletmeciliği | %60.00 | %80.00 | +20.00 |
| Adalet | %53.33 | %66.67 | +13.34 |
| Kültürel Miras ve Turizm | %53.33 | %66.67 | +13.34 |
Ham cevaplar ve tam sonuç JSON'ları bu repoda: sonuclar/.
Kullanım
from unsloth import FastModel
model, tokenizer = FastModel.from_pretrained(
model_name="yoitsmeyusuf/felsefe-lora",
max_seq_length=2048,
load_in_4bit=True,
)
FastModel.for_inference(model)
messages = [{"role": "user", "content": [{"type": "text", "text": "Sokrates kimdir?"}]}]
inputs = tokenizer.apply_chat_template(
messages, add_generation_prompt=True, tokenize=True, return_tensors="pt"
).to(model.device)
out = model.generate(input_ids=inputs, max_new_tokens=512)
print(tokenizer.decode(out[0], skip_special_tokens=True))
Bu qwen3_5 modeli Unsloth ile 2x
daha hızlı eğitildi.