Spaces:
Runtime error
Runtime error
import gradio as gr | |
import os | |
from datasets import load_dataset | |
from transformers import AutoTokenizer, AutoModelForCausalLM, TrainingArguments, Trainer | |
from huggingface_hub import login | |
import os | |
os.environ["CUDA_VISIBLE_DEVICES"] = "0" | |
os.environ["TORCH_CUDA_ARCH_LIST"] = "" | |
# Hugging Face Token'ı Secrets'ten al | |
HF_TOKEN = os.getenv("HF_TOKEN") | |
if HF_TOKEN: | |
login(HF_TOKEN) | |
else: | |
raise ValueError("Hugging Face Token bulunamadı! Lütfen Secrets bölümüne ekleyin.") | |
# Model ve tokenizer yükleme | |
model_name = "mistralai/Mistral-7B-v0.1" | |
tokenizer = AutoTokenizer.from_pretrained(model_name, token=HF_TOKEN) | |
# Modeli 32-bit hassasiyetle yükleme (CPU uyumlu) | |
model = AutoModelForCausalLM.from_pretrained(model_name, device_map="auto", token=HF_TOKEN) | |
# OSCAR Türkçe'yi yükleme fonksiyonu | |
def load_and_clean_oscar(): | |
dataset = load_dataset("oscar-corpus/OSCAR-2301", lang="tr", split="train") | |
# Veri temizleme | |
def clean_text(example): | |
text = example["text"].replace("\n", " ") # Satır sonlarını temizle | |
return {"text": text} | |
dataset = dataset.map(clean_text) | |
return dataset | |
# Fine-tuning fonksiyonu | |
def fine_tune(epochs, lr): | |
dataset = load_and_clean_oscar() | |
training_args = TrainingArguments( | |
output_dir="./mistral-finetuned", | |
per_device_train_batch_size=1, | |
gradient_accumulation_steps=8, | |
save_steps=1000, | |
save_total_limit=2, | |
num_train_epochs=int(epochs), | |
learning_rate=float(lr), | |
logging_dir="./logs", | |
logging_steps=50 | |
) | |
trainer = Trainer( | |
model=model, | |
args=training_args, | |
train_dataset=dataset | |
) | |
trainer.train() | |
return "Fine-tuning tamamlandı!" | |
# Gradio Arayüzü | |
with gr.Blocks() as demo: | |
gr.Markdown("# Mistral Türkçe Fine-Tuning") | |
epochs = gr.Number(value=3, label="Epoch Sayısı") | |
lr = gr.Textbox(value="2e-4", label="Öğrenme Oranı (Learning Rate)") | |
train_button = gr.Button("Eğitimi Başlat") | |
output_text = gr.Textbox(label="Sonuç") | |
train_button.click(fine_tune, inputs=[epochs, lr], outputs=output_text) | |
# Public link oluşturmak için 'share=True' parametresini ekliyoruz | |
demo.launch() | |