Buckets:
| Name | Size | Uploaded | Xet hash |
|---|---|---|---|
| .gitattributes | 2.52 kB xet | 7a90f855 | |
| README.md | 6.55 kB xet | ee82a69b | |
| output_kanun_tokensli.json | 372 MB xet | fcada0f3 |
📚 Veri Seti Hakkında
Veri seti, hukuk öğrencilerinden doktora seviyesindeki araştırmacılara kadar geniş bir kitleye hitap eden, kanun maddeleri ve mahkeme kararlarına atıfta bulunan zengin içerikli soru-cevap çiftlerinden oluşmaktadır.
1. Veri Toplama ve İşleme
- Kaynaklar: 2025 yılının ilk çeyreğinde, Türkiye'nin önde gelen hukuk platformlarından olan
ayboga.com.tr,barandogan.av.tr,kadimhukuk.com.tr,kalemci.av.tr,oner.av.tr,or.av.tr,sen.av.trvezulkufarslan.com.trsitelerindeki tüm makaleler derlenmiştir. - Segmentasyon: Toplanan bu geniş metin arşivi, daha yönetilebilir ve işlenebilir olması amacıyla yaklaşık 285-300 adet
.txtdosyasına bölünmüştür.
2. Soru-Cevap Üretimi (Data Generation)
- Yapay Zeka Modeli: Her bir metin segmenti, Google AI Studio aracılığıyla
gemini-2.5-promodeline sunulmuştur. - Prompt Mühendisliği: Veri setinin kalitesini ve çeşitliliğini artırmak amacıyla, iki farklı seviyede ve hedef kitleye yönelik prompt'lar kullanılarak modelden JSON formatında çıktılar alınmıştır. Bu çıktılar, kanun maddesi ve mahkeme kararı referansları içerecek şekilde tasarlanmıştır.
Prompt 1 (Doktora Seviyesi):
"Bana, ekteki verilerden hukuk alanında doktora yapan öğrencilerin seviyesine uygun 200 adet sınav sorusu hazırla. Her soru-cevapta varsa ilgili kanun maddesine, ilgili mahkeme kararına atıfta bulun veya parantez içinde belirt ve aşağıdaki JSON formatında soru-cevap şeklinde sunulmalı:
[ {"soru": "Soru metni burada yer alacak.", "cevap": "Cevap metni burada yer alacak, ilgili kanun maddeleri referans gösterilecek ve ayrıntılı açıklama yapılacak."}, {"soru": "Soru metni burada yer alacak.", "cevap": "Cevap metni burada yer alacak, ilgili kanun maddeleri referans gösterilecek ve ayrıntılı açıklama yapılacak."} ]
Prompt 2 (Lisans Seviyesi):
"Bana, ekteki verilerden hukuk öğrencilerinin seviyesine uygun 200 adet sınav sorusu hazırla. Her soru-cevapta varsa ilgili kanun maddesine, ilgili mahkeme kararına atıfta bulun veya parantez içinde belirt ve aşağıdaki JSON formatında soru-cevap şeklinde sunulmalı:
[ {"soru": "Soru metni burada yer alacak.", "cevap": "Cevap metni burada yer alacak, ilgili kanun maddeleri referans gösterilecek ve ayrıntılı açıklama yapılacak."}, {"soru": "Soru metni burada yer alacak.", "cevap": "Cevap metni burada yer alacak, ilgili kanun maddeleri referans gösterilecek ve ayrıntılı açıklama yapılacak."} ]
🤖 Model Eğitimi (Fine-Tuning)
Oluşturulan bu zengin veri seti, google/gemma-3-1b-pt temel modelini fine-tune etmek için kullanılmıştır. Eğitim süreci, hyperbolic.ai üzerinden kiralanan H100 GPU'lar ve Unsloth kütüphanesinin sağladığı optimizasyonlar ile gerçekleştirilmiştir.
Teknik Detaylar ve Hiperparametreler
- Temel Model (Base Model):
google/gemma-3-1b-pt - Eğitim Kütüphaneleri:
Unsloth,PyTorch,Transformers,TRL,Accelerate - Fine-Tuning Metodu: PEFT (Parameter-Efficient Fine-Tuning) - LoRA
- Donanım: NVIDIA H100
- Hassasiyet (Precision):
BF16(BFloat16) - Prompt Formatı: Alpaca
LoRA Konfigürasyonu:
r: 256lora_alpha: 512lora_dropout: 0.05target_modules:["q_proj", "k_proj", "v_proj", "o_proj", "gate_proj", "up_proj", "down_proj"]
Eğitim Argümanları:
per_device_train_batch_size: 64gradient_accumulation_steps: 2 (Efektif Batch Boyutu: 128)optimizer: adamw_8bitlearning_rate: 2e-4lr_scheduler_type: cosinemax_steps: ~1 epoch + 3500 adım (Early Stopping ile en iyi model seçildi)early_stopping_patience: 3 (Değerlendirme kaybı 3 adımda iyileşmezse durdur)
Eğitim Kodunun Özeti
Aşağıda, model eğitim sürecinde kullanılan temel Python betiğinin basitleştirilmiş bir versiyonu bulunmaktadır. Bu kod, Unsloth kütüphanesi kullanılarak H100 GPU'larda verimli bir fine-tuning süreci gerçekleştirmektedir.
import os
import torch
from unsloth import FastLanguageModel
from datasets import load_dataset
from huggingface_hub import login
from trl import SFTTrainer
from transformers import TrainingArguments, EarlyStoppingCallback
# 1. Hugging Face'e Giriş
hf_token = "YOUR_HF_TOKEN"
login(token=hf_token)
# 2. Model ve Tokenizer'ı Unsloth ile Yükleme
model_id = "google/gemma-3-1b-pt"
model, tokenizer = FastLanguageModel.from_pretrained(
model_name=model_id,
max_seq_length=2048,
dtype=None, # H100 için otomatik olarak bf16 seçilir
load_in_4bit=False, # H100'de tam hassasiyet (bf16) kullanılır
)
# 3. Veri Setini Hazırlama
dataset = load_dataset("sinanelms/output_kanun_tokensli.json", split="train")
dataset_split = dataset.train_test_split(test_size=0.1, seed=42)
train_dataset = dataset_split["train"]
eval_dataset = dataset_split["test"]
# 4. PEFT LoRA Yapılandırması
model = FastLanguageModel.get_peft_model(
model,
r=256,
lora_alpha=512,
lora_dropout=0.05,
bias="none",
use_gradient_checkpointing="unsloth",
target_modules=[
"q_proj", "k_proj", "v_proj", "o_proj",
"gate_proj", "up_proj", "down_proj",
],
)
# 5. Eğitim Argümanlarını Belirleme
training_args = TrainingArguments(
output_dir="gemma-3b-hukuk-unsloth-H100-optimized",
per_device_train_batch_size=64,
gradient_accumulation_steps=2,
bf16=True,
optim="adamw_8bit",
max_steps=6031, # Örnek adım sayısı
learning_rate=2e-4,
lr_scheduler_type="cosine",
eval_strategy="steps",
eval_steps=200,
save_strategy="steps",
save_steps=200,
load_best_model_at_end=True,
metric_for_best_model="loss",
greater_is_better=False,
seed=3407,
)
# 6. SFTTrainer ile Eğitimi Başlatma
trainer = SFTTrainer(
model=model,
tokenizer=tokenizer,
train_dataset=train_dataset,
eval_dataset=eval_dataset,
dataset_text_field="text",
max_seq_length=2048,
args=training_args,
callbacks=[EarlyStoppingCallback(early_stopping_patience=3)],
)
# Eğitimi başlat
trainer.train()
# Modeli kaydet ve Hugging Face Hub'a yükle
final_model_path = "sinanelms/Gemma3B-Hukuk-r256-a512-BF16-H100-v1.0"
trainer.model.push_to_hub(final_model_path, token=hf_token)
tokenizer.push_to_hub(final_model_path, token=hf_token)
---
license: mit
---
- Total size
- 372 MB
- Files
- 3
- Last updated
- Jun 4
- Pre-warmed CDN
- US EU US EU