Mer1Alii's picture
Upload README.md with huggingface_hub
b5989c5 verified
|
Raw
History Blame Contribute Delete
5.22 kB
---
language:
- tr
license: apache-2.0
base_model: unsloth/qwen2.5-1.5b-instruct-unsloth-bnb-4bit
tags:
- peft
- lora
- qwen2
- e-commerce
- customer-support
- turkish
---
# TR-ECommerce-CustomerSupport-LoRA
Bu model, e-ticaret müşteri destek alanındaki Türkçe metinleri daha iyi anlayıp cevap üretebilmesi için `unsloth/qwen2.5-1.5b-instruct-unsloth-bnb-4bit` modeli üzerine LoRA ile fine-tune edilmiştir.
## 📊 MMLU Benchmark Karşılaştırması
Fine-tune edilmiş bu model, öncelikle genel kültür ve muhakeme yeteneğini ölçmek adına Türkçe Yapay Zeka MMLU veri setinin **1000 soruluk** kapsamlı bir alt kümesi üzerinden test edilmiştir. Base model ile yapılan karşılaştırmalı performans testi sonuçları aşağıdadır:
| Model | Model Tipi | Başarı Oranı (%) | Doğru Cevap | Çözülen Soru | Toplam Süre (sn)* |
| :--- | :--- | :--- | :--- | :--- | :--- |
| `unsloth/qwen2.5-1.5b-instruct-unsloth-bnb-4bit` | Base Model | **%22.00** | 220 | 1000 | 881.830 |
| `Mer1Alii/TR-ECommerce-CustomerSupport-LoRA` | Fine-Tuned (LoRA) | **%34.10** | 341 | 1000 | 567.668 |
> **MMLU Değerlendirmesi:** Çoktan seçmeli bir testte %22'lik başarı şans faktörüne (random guessing) oldukça yakındır. Fine-tune işlemi sonrası bu oranın %34.10'a çıkması, modelin genel kültür bilgisinin artmasından ziyade; **verilen "sadece şıkkın harfini yaz" talimatına ve formata çok daha iyi uyum sağlamasından** kaynaklanmaktadır. Bu test göstermektedir ki LoRA eğitimi yıkıcı unutmaya (catastrophic forgetting) yol açmamış, modelin formatı öğrenme kapasitesini belirgin şekilde artırmıştır.
>
> *\*Not: Süredeki dramatik iyileşme, kısmen GPU/Cache ısınmasından ve modelin talimata uyarak gereksiz uzunlukta token üretmeyi bırakmasından (doğrudan tek harf üretmesi) kaynaklanmaktadır.*
---
## 🎯 Özel E-Ticaret Benchmark Karşılaştırması (Asıl Odak)
Model e-ticaret müşteri desteği için fine-tune edildiğinden, modelin asıl başarısını ölçmek adına **500 soruluk özel bir e-ticaret test seti (TR-ECommerce-CustomerSupport-Benchmark)** oluşturulmuştur. Bu veri seti, eğitim verisinden tamamen ayrılmış %10'luk bir kısımdır.
Önceki değerlendirmelerde vurgulanan *"bölüm bazlı (stratified) örnekleme"* önerisine uygun olarak; test seti 5 ana kategoriye ayrılmış ve her kategoriden tam **100'er adet** dengeli soru seçilmiştir.
| Model | Basari (%) | Dogru | Toplam Soru | Sure (sn) |
| :--- | :--- | :--- | :--- | :--- |
| `Qwen2.5-1.5B (Base Model)` | **%27.40** | 137 | 500 | 310.5 |
| `TR-ECommerce-LoRA (Fine-Tuned)` | **%39.80** | 199 | 500 | 240.9 |
| `Gemma-3-1B-IT` | **%49.80** | 249 | 500 | 321.5 |
| `Llama-3.2-1B-Instruct` | **%23.40** | 117 | 500 | 241.8 |
| `Qwen2.5-0.5B-Instruct` | **%42.40** | 212 | 500 | 316.9 |
> **Analiz (Gerçek E-Ticaret Performansı):** Kendi hazırladığımız dengeli (stratified) 500 soruluk test setinde Qwen 2.5 1.5B Base modeli %27.40 başarı gösterirken, aynı modelin üzerine eğittiğimiz LoRA versiyonu **%39.80** puana (oransal olarak ~%45 iyileşme) çıkmıştır. Bu artış, modelin e-ticaret domaininde (kargo, iade, fatura vb. müşteri şikayetleri) hedeflediğimiz uzmanlaşmayı başarıyla kazandığını ispatlamaktadır. Llama 3.2 gibi popüler modelleri de bu spesifik alanda geride bırakmıştır.
## 🚀 Kullanım (Usage)
Modeli `transformers` ve `peft` kütüphaneleri ile kolayca kullanabilirsiniz:
```python
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel
import torch
base_model_id = "unsloth/qwen2.5-1.5b-instruct-unsloth-bnb-4bit"
peft_model_id = "Mer1Alii/TR-ECommerce-CustomerSupport-LoRA"
tokenizer = AutoTokenizer.from_pretrained(base_model_id)
model = AutoModelForCausalLM.from_pretrained(base_model_id, torch_dtype=torch.float16, device_map="auto")
model = PeftModel.from_pretrained(model, peft_model_id)
prompt = "Kargom 3 gündür yolda gözüküyor, ne yapmalıyım?"
messages = [{"role": "user", "content": prompt}]
text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
inputs = tokenizer(text, return_tensors="pt").to(model.device)
outputs = model.generate(**inputs, max_new_tokens=100)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
```
## 🔗 Veri Seti ve Test Kodu (Dataset & Benchmark)
Tüm test kodları ve veri setleri tamamen şeffaf bir şekilde bu deponun "Files and versions" sekmesinde yer almaktadır:
- **Özel E-Ticaret Benchmark Testi:** Modelin kendi e-ticaret senaryomuzda test edildiği 500 soruluk JSON veri seti (`custom_benchmark_final.json`) ve 4-bit optimize test kodu (`custom_benchmark_test.py`).
- **MMLU Testi:** Önceki MMLU testini yapmak için kullanılan kod (`hf_olcum.py`).
Model eğitimi sırasında kullanılan asıl veri setine ve tokenizer'a aşağıdaki linklerden ulaşabilirsiniz:
- Dataset: [Mer1Alii/TR-ECommerce-CustomerSupport-Instructions](https://huggingface.co/datasets/Mer1Alii/TR-ECommerce-CustomerSupport-Instructions)
- Tokenizer: [Mer1Alii/TR-ECommerce-CustomerSupport-Tokenizer](https://huggingface.co/Mer1Alii/TR-ECommerce-CustomerSupport-Tokenizer)