Spaces:
Sleeping
Sleeping
import gradio as gr | |
from transformers import AutoModelForCausalLM, AutoTokenizer | |
import torch | |
import torch.nn.functional as F | |
from peft import ( | |
LoraConfig, | |
PeftModel, | |
prepare_model_for_kbit_training, | |
get_peft_model, | |
) | |
model_name = "google/gemma-2-2b-it" | |
lora_model_name="Anlam-Lab/gemma-2-2b-it-anlamlab-SA-Chatgpt4mini" | |
device = "cuda" if torch.cuda.is_available() else "cpu" | |
def load_model(): | |
tokenizer = AutoTokenizer.from_pretrained(model_name) | |
model = AutoModelForCausalLM.from_pretrained( | |
model_name, | |
device_map=device, | |
torch_dtype=torch.float16 if device == "cuda" else torch.float32, | |
low_cpu_mem_usage=True | |
) | |
model = PeftModel.from_pretrained(model, lora_model_name) | |
model.eval() | |
return model, tokenizer | |
model, tokenizer = load_model() | |
def generate_response(text): | |
example = f"""<|begin_of_text|><|start_header_id|>system<|end_header_id|>Bir duygu analisti olarak sana verilen metinleri analiz et ve aşağıdaki kategorilerden yalnızca birini seçerek metnin duygu durumunu belirle:Positive,Negative,Neutral<|eot_id|><|start_header_id|>user<|end_header_id|>{text}<|eot_id|><|start_header_id|>assistant<|end_header_id|>""" | |
inputs = tokenizer(example, return_tensors="pt") | |
with torch.no_grad(): | |
model_output = model(**inputs) | |
logits = model_output.logits | |
probabilities = F.softmax(logits, dim=-1) | |
top_probs, top_tokens = torch.topk(probabilities[0, -1, :], k=10) | |
predicted_label = tokenizer.decode(top_tokens[0]) | |
return predicted_label | |
iface = gr.Interface( | |
fn=generate_response, | |
inputs=gr.Textbox(lines=5, placeholder="Metninizi buraya girin..."), | |
outputs=gr.Textbox(lines=5, label="Model Çıktısı"), | |
title="Anlam-Lab", | |
examples=[ | |
["Akıllı saati uzun süre kullandım ve şık tasarımı, harika sağlık takibi özellikleri ve uzun pil ömrüyle çok memnun kaldım."], | |
["Ürünü aldım ama pil ömrü kısa, ekran parlaklığı yetersiz ve sağlık takibi doğru sonuçlar vermedi."], | |
] | |
) | |
if __name__ == "__main__": | |
iface.launch() |