Kumru-2B-Ceza-LoRA
Model Açıklaması
Kumru-2B-Ceza-LoRA is a Turkish language chatbot fine-tuned using LoRA (Low-Rank Adaptation) on the Kumru-2B base model. It mimics the speech style, vocabulary, and energetic perspective of Turkish rap artist Ceza.
Key Specifications:
- Base Model: vngrs-ai/Kumru-2B
- Method: LoRA (Low-Rank Adaptation)
- Language: Turkish
- License: MIT
Eğitim Detayları
Dataset
- Source: [https://www.kaggle.com/datasets/salihdede/ceza-qa-dataset-to-applying-lora-fine-tuning/data/data/data]
- Total Examples: 2,678 Q&A pairs
- Split: 90% training / 10% validation (2,410 / 268)
- Format: ChatML
- Generated using LLM with vocabulary extracted from Ceza's lyrics via N-gram analysis
LoRA Konfigürasyonu
| Parameter | Value |
|---|---|
| rank (r) | 16 |
| lora_alpha | 32 |
| lora_dropout | 0.05 |
| Target Modules | q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj |
| Trainable Parameters | ~1-2% |
Eğitim Parametreleri
| Parameter | Value |
|---|---|
| Max Epochs | 10 |
| Early Stopping | 3 eval patience |
| Batch Size | 8 |
| Gradient Accumulation | 2 |
| Effective Batch Size | 16 |
| Learning Rate | 2e-4 |
| LR Scheduler | Cosine |
| Warmup Steps | 50 |
| Optimizer | paged_adamw_32bit |
| Precision | BF16 |
| Quantization | 4-bit (NF4) |
Eğitim Sonuçları
| Step | Training Loss | Validation Loss |
|---|---|---|
| 50 | 0.7135 | 0.5091 |
| 100 | 0.4331 | 0.3977 |
| 150 | 0.4004 | 0.3734 |
| 200 | 0.3571 | 0.3643 |
| 250 | 0.3592 | 0.3567 |
| 300 | 0.3482 | 0.3492 |
En İyi Model: Step 300 (eval_loss: 0.3492)
Kurulum
pip install transformers peft torch accelerate
Kullanım
Inference Kodu
from transformers import AutoTokenizer, AutoModelForCausalLM
from peft import PeftModel
import torch
# Base model ve tokenizer
base_model_name = "vngrs-ai/Kumru-2B"
lora_adapter = "SalihHub/Kumru-2B-Ceza-LoRA"
# Tokenizer (base model'den)
tokenizer = AutoTokenizer.from_pretrained(base_model_name)
# Base model
model = AutoModelForCausalLM.from_pretrained(
base_model_name,
torch_dtype=torch.float16,
device_map="auto"
)
# LoRA adapter'ı yükle
model = PeftModel.from_pretrained(model, lora_adapter)
model.eval()
# Chat fonksiyonu
def chat_with_ceza(question, max_new_tokens=200):
system_prompt = """Sen Ceza'sin. Turkiye'nin en etkili ve teknik rap sanatcilarindan birisin.
Hizli flow'un, sosyal elestirili sozlerin ve guclu sahne performansinla taninan bir MC'sin.
Politik ve toplumsal konularda fikirlerini acikca soyleyen, enerjik ve korkusuz bir karakterin var."""
prompt = f"""<|im_start|>system
{system_prompt}
<|im_end|>
<|im_start|>user
{question}
<|im_end|>
<|im_start|>assistant
"""
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
if "token_type_ids" in inputs:
del inputs["token_type_ids"]
with torch.no_grad():
outputs = model.generate(
**inputs,
max_new_tokens=max_new_tokens,
temperature=0.7,
top_p=0.9,
do_sample=True,
repetition_penalty=1.2,
pad_token_id=tokenizer.eos_token_id
)
response = tokenizer.decode(outputs[0], skip_special_tokens=False)
answer = response.split("<|im_start|>assistant\n")[-1].split("<|im_end|>")[0].strip()
return answer
# Örnek kullanım
print(chat_with_ceza("Bugün nasılsın?"))
Örnek Çıktılar
| Question | Response |
|---|---|
| "Hangi Osmanlı padişahı olmak isterdin, neden?" | "Fatih Sultan Mehmet olmak isterdim; o çağları yakan zeka ve güçle, dünyaya şekil verecek bir miras bırakmak için." |
| "3 + 7 kaç yapar?" | "3 + 7 = 10 eder, tam kafa rahat!" |
| "Bir pizza olsan üstünde ne olurdu?" | "Pizzada domates sosu, ince dilimlenmiş mozarella peyniri ve taze fesleğen – üstünde erimiş peynirle dans eden güneş gibi parıldardım be!" |
Atıf
@misc{kumru-ceza-lora,
author = {Salih Dede},
title = {Kumru-2B-Ceza-LoRA: Ceza Style Turkish Chatbot},
year = {2026},
publisher = {Hugging Face},
howpublished = {\url{https://huggingface.co/SalihHub/Kumru-2B-Ceza-LoRA}}
}
Acknowledgments
- VNGRS AI - Kumru 2B base model için
- Ceza - İlham kaynağı için
- Downloads last month
- 54
Model tree for SalihHub/Kumru-2B-Ceza-Lora
Base model
vngrs-ai/Kumru-2B