GradioMistral / app.py
kasim90's picture
Update app.py
b0fe154 verified
raw
history blame
2.24 kB
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()