| | --- |
| | language: |
| | - tr |
| | license: mit |
| | library_name: transformers |
| | tags: |
| | - mathematics |
| | - gsm8k |
| | - turkish |
| | - text-generation |
| | - sft |
| | - dpo |
| | base_model: ytu-ce-cosmos/turkish-gpt2-medium |
| | datasets: |
| | - malhajar/gsm8k-tr |
| | --- |
| | |
| | # Cosmos-Math-Gpt2 (Türkçe Matematik Modeli) |
| |
|
| | Bu model, Türkçe matematik problemlerini adım adım mantık yürüterek (Chain of Thought) çözmek için geliştirilmiştir. Model ilk olarak next token prediction ile pre-training yapılmıştır. |
| | 2.adım olarak Sft uygulanmış ve son olarak Dpo algoritması uygulanarak fine-tuning işlemleri yapılmıştır. |
| |
|
| | **ytu-ce-cosmos/turkish-gpt2-medium** taban modeli üzerine inşa edilmiş olup, önce **SFT (Supervised Fine-Tuning)** ardından **DPO (Direct Preference Optimization)** yöntemleri ile **GSM8K-TR** veri seti üzerinde eğitilmiştir. |
| |
|
| | ## Model Yetenekleri |
| | - İlkokul ve ortaokul seviyesindeki matematik problemlerini çözer. |
| | - Problemi parçalara ayırır ve adım adım anlatır. |
| | - Sonucu `#### [Cevap]` formatında verir. |
| |
|
| | ## Nasıl Kullanılır? |
| |
|
| | Modeli kullanmak için aşağıdaki Python kodunu çalıştırabilirsiniz. Model **"### Soru:"** ve **"### Cevap:"** formatına duyarlıdır. |
| |
|
| | ```python |
| | from transformers import AutoModelForCausalLM, AutoTokenizer |
| | import torch |
| | |
| | # 1. Modeli Yükle |
| | model_name = "KullaniciAdin/Cosmos-TR-Math-v1" # Burayı kendi kullanıcı adınla değiştir |
| | device = "cuda" if torch.cuda.is_available() else "cpu" |
| | |
| | model = AutoModelForCausalLM.from_pretrained( |
| | model_name, |
| | torch_dtype=torch.float16, |
| | device_map="auto" |
| | ) |
| | tokenizer = AutoTokenizer.from_pretrained(model_name) |
| | |
| | # 2. Tahmin Fonksiyonu |
| | def solve_math_problem(question): |
| | # Prompt formatı eğitimdeki gibi olmalı |
| | prompt = f"### Soru: {question}\n### Cevap:" |
| | |
| | inputs = tokenizer(prompt, return_tensors="pt").to(device) |
| | |
| | with torch.no_grad(): |
| | outputs = model.generate( |
| | **inputs, |
| | max_new_tokens=256, # Cevap uzunluğu |
| | do_sample=False, # Deterministik (Daha tutarlı cevaplar için) |
| | temperature=0.0, |
| | pad_token_id=tokenizer.eos_token_id |
| | ) |
| | |
| | # Sadece cevabı al |
| | full_text = tokenizer.decode(outputs[0], skip_special_tokens=True) |
| | return full_text.split("### Cevap:")[-1].strip() |
| | |
| | # 3. Örnek Kullanım |
| | soru = "Ali'nin 50 lirası var. Tanesi 5 lira olan kalemlerden 3 tane alırsa geriye kaç lirası kalır?" |
| | cevap = solve_math_problem(soru) |
| | |
| | print(f"SORU: {soru}") |
| | print("-" * 30) |
| | print(f"CEVAP:\n{cevap}") |