Spaces:
Build error
Build error
| 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(): | |
| start_time = time.time() | |
| model_output = model(**inputs) | |
| inference_time = time.time() - start_time | |
| 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() |