MiniCPM5-1B-Turkish / README.md
thealper2's picture
Update README.md
8db58fb verified
|
Raw
History Blame Contribute Delete
7.39 kB
---
language:
- tr
- en
license: apache-2.0
library_name: transformers
pipeline_tag: text-generation
base_model: openbmb/MiniCPM5-1B
tags:
- turkish
- türkçe
- instruction-tuning
- sft
- full-finetune
- code
- code-generation
- minicpm
- conversational
- gguf
- edge-ai
datasets:
- AlicanKiraz0/Turkce-Atlas-Instruct
- tascib/turkish-instruction
- sixfingerdev/turkish-qa-multi-dialog-dataset
- berhaan/Turkish-CodeAlpaca-20k
- alztrk/turkish-code-instructions
- bysismo/Turkish-Python-instruction-500k
---
# MiniCPM5-1B-Turkish
`openbmb/MiniCPM5-1B` tabanlı, **Türkçe talimat takibi** ve **kod üretimi** için tam ince ayar (full fine-tuning) yapılmış bir sohbet modeli.
A **fully fine-tuned** (not LoRA/QLoRA) chat model derived from `openbmb/MiniCPM5-1B`, targeting Turkish instruction following and Turkish-instructed code generation.
## Özet / At a glance
| | |
|---|---|
| Taban model / Base model | `openbmb/MiniCPM5-1B` |
| Mimari / Architecture | LlamaForCausalLM (MiniCPM5) |
| Parametre / Parameters | 1,080,632,832 |
| Eğitilen parametre / Trained | 1,080,632,832 (100.0%) |
| Yöntem / Method | Supervised fine-tuning (SFT), full-parameter |
| Diller / Languages | Türkçe (birincil), İngilizce (korunmuş) |
| Bağlam / Context | eğitim 2048 token (taban model 131k) |
| Precision | torch.bfloat16 |
| Lisans / License | apache-2.0 |
## Kullanım / Usage
### Transformers
```python
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
model_id = "thealper2/MiniCPM5-1B-Turkish"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
model_id, dtype=torch.bfloat16, device_map="auto"
)
messages = [
{"role": "user", "content": "Python'da bir CSV dosyasını okuyup eksik değerleri temizleyen bir fonksiyon yaz."}
]
inputs = tokenizer.apply_chat_template(
messages, add_generation_prompt=True, return_tensors="pt"
).to(model.device)
# do_sample=True sarttir - asagidaki nota bakin / see the decoding note below
out = model.generate(inputs, max_new_tokens=512, do_sample=True, temperature=0.7, top_p=0.95)
print(tokenizer.decode(out[0][inputs.shape[1]:], skip_special_tokens=True))
```
> Sohbet şablonu taban modelin ChatML türevidir (`<|im_start|>role\n...<|im_end|>`). Her zaman `apply_chat_template` kullanın; prompt'u elle kurmayın.
Model, yanıtlarına boş bir düşünme bloğu (`<think>\n\n</think>`) ile başlayacak şekilde eğitildi; bu, taban modelin `enable_thinking=False` biçimiyle uyumludur. Uzun zincirleme akıl yürütme (CoT) verisiyle eğitilmedi.
### llama.cpp / GGUF
```bash
llama-cli -hf thealper2/MiniCPM5-1B-Turkish -p "Merhaba, kendini tanıt."
# veya yerel dosyayla:
llama-cli -m MiniCPM5-1B-Turkish-Q8_0.gguf -cnv
```
| dosya / file | tür / type | boyut / size |
|---|---|---|
| `MiniCPM5-1B-Turkish-BF16.gguf` | BF16 | 2066 MB |
| `MiniCPM5-1B-Turkish-Q4_K_M.gguf` | Q4_K_M | 656 MB |
| `MiniCPM5-1B-Turkish-Q5_K_M.gguf` | Q5_K_M | 750 MB |
| `MiniCPM5-1B-Turkish-Q8_0.gguf` | Q8_0 | 1100 MB |
## Eğitim verisi / Training data
Tüm kaynaklar tek bir konuşma şemasına (`messages`) normalize edildi; ardından temizleme, **tüm veri setleri arasında** birebir tekrar temizliği (exact dedup) ve kategori bazlı ağırlıklı örnekleme uygulandı. Veri setleri körlemesine birleştirilmedi.
| kaynak / source | kategori | ham satır | temizlik sonrası | seçilen |
|---|---|---|---|---|
| `AlicanKiraz0/Turkce-Atlas-Instruct` | general_turkish | 336,146 | 336,099 | 55,000 |
| `tascib/turkish-instruction` | general_turkish | 324,080 | 311,627 | 55,000 |
| `sixfingerdev/turkish-qa-multi-dialog-dataset` | qa_dialog | 21,282 | 18,790 | 20,000 |
| `berhaan/Turkish-CodeAlpaca-20k` | coding | 19,996 | 19,565 | 19,474 |
| `alztrk/turkish-code-instructions` | coding | 2,676 | 1,895 | 1,895 |
| `bysismo/Turkish-Python-instruction-500k` | coding | 335,286 | 330,668 | 48,631 |
- Birebir tekrar silinen / exact duplicates removed: **27,709**
- Eğitim örneği / train examples: **195,876**
- Doğrulama örneği / validation examples: **3,960**
- Eğitim token'ı / training tokens: **82,165,802** (bunun 42,684,848 tanesi kayıp hesabına giriyor)
- Hedef dağılım / target mix: general_turkish 55%, coding 35%, qa_dialog 10%
## Eğitim yöntemi / Training procedure
| ayar / setting | değer / value |
|---|---|
| Yöntem | Full fine-tuning (LoRA/QLoRA **kullanılmadı**) |
| Kayıp / Loss | Yalnızca asistan token'ları (kullanıcı ve sistem token'ları -100 ile maskelendi) |
| Epoch | 1 |
| Learning rate | 2e-05 |
| Scheduler | cosine (warmup 0.03) |
| Optimizer | paged_adamw_8bit |
| Weight decay | 0.1 |
| Grad clipping | 1.0 |
| Batch | 1 x 16 accum |
| Sekans uzunluğu | 2048 |
| Sequence packing | True |
| Gradient checkpointing | True |
| Precision | torch.bfloat16 |
| Donanım / Hardware | NVIDIA GeForce RTX 5060 Ti |
### Eğitim metrikleri / Training metrics
- İlk kayıp / first loss: `2.0483232498168946`
- Son kayıp / last loss: `1.3010472297668456`
- En iyi doğrulama kaybı / best eval loss: `1.276915431022644`
- Zirve GPU belleği / peak VRAM: `5.435 GB`
## Değerlendirme / Evaluation
Değerlendirme, taban model ile ince ayarlı model üzerinde **aynı prompt'lar ve aynı çözümleme ayarlarıyla** yapıldı. Türkçe kazanımının genel bir iyileşme anlamına gelmediğini görebilmek için İngilizce ve akıl yürütme yetenekleri de ayrıca ölçüldü (regresyon testi).
| sonuç / verdict | prompt |
|---|---|
| improved | 9 |
| not auto-scored | 9 |
| possible regression | 2 |
| unchanged | 10 |
**Olası gerilemeler / possible regressions**
- `code_js_01` (code_generation): 0/1 vs 1/1 checks
- `en_code_02` (english_coding): 0/2 vs 2/2 checks
## Sınırlar ve riskler / Limitations
- 1B parametreli küçük bir modeldir; olgusal doğruluk sınırlıdır ve **halüsinasyon görülebilir**.
- Eğitim verisi büyük ölçüde sentetik/derlenmiş Türkçe talimat setlerinden gelir; kaynaklardaki hatalar modele geçmiş olabilir.
- Kaynaklardan biri (`alztrk/turkish-code-instructions`) Türkçe karakterleri ASCII'ye indirgenmiş metin içerir; bu nedenle katkısı bilinçli olarak düşük tutuldu.
- Kod çıktıları **çalıştırılmadan doğrulanmamıştır**; üretime almadan önce test edin.
- Tam ince ayar yapıldığı için taban modelin bazı yetenekleri (ör. araç çağırma, uzun bağlam, 2048 token üstü davranış) zayıflamış olabilir.
- Güvenlik hizalaması ayrıca eğitilmedi; taban modelden gelen davranış korunmaya çalışıldı ancak garanti edilmez.
- Model tıbbi, hukuki veya finansal tavsiye için kullanılmamalıdır.
## Yeniden üretim / Reproduction
```bash
python scripts/inspect_datasets.py
python scripts/prepare_datasets.py
python scripts/train.py --dry_run
python scripts/train.py
python scripts/compare_models.py --run
```
Tüm hiperparametreler `config/training.yaml` içindedir ve eğitim çıktısıyla birlikte `config.yaml`, `dataset_report.json`, `training_summary.json` olarak kaydedilir.
## Atıf / Citation
```bibtex
@misc{minicpm5_turkish,
title = {MiniCPM5-1B-Turkish},
note = {Full supervised fine-tune of openbmb/MiniCPM5-1B for Turkish instruction following and coding},
year = {2026}
}
```
Taban model / base model: [`openbmb/MiniCPM5-1B`](https://huggingface.co/openbmb/MiniCPM5-1B)