Spaces:
Running
Running
File size: 3,370 Bytes
97266bf 2a9ec14 3ffc7cc 2a9ec14 40efd3f 2a9ec14 25869c0 2a9ec14 97266bf 2a9ec14 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
import gradio as gr
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
from peft import PeftModel
from typing import Dict, Any
class LlamaInterface:
def __init__(
self,
base_model_name: str = "meta-llama/Llama-3.2-1B",
lora_model_name: str = "Anlam-Lab/Llama-3.2-1B-it-anlamlab-SA-Chatgpt4mini"
):
self.device = "cuda" if torch.cuda.is_available() else "cpu"
self.tokenizer = AutoTokenizer.from_pretrained(base_model_name)
# Padding token'ı ayarla
self.tokenizer.pad_token = self.tokenizer.eos_token
self.model = AutoModelForCausalLM.from_pretrained(
base_model_name,
device_map="auto",
torch_dtype=torch.float16
)
self.model = PeftModel.from_pretrained(self.model, lora_model_name)
self.model.eval()
def generate_response(self, input_text: str) -> str:
if not input_text or not input_text.strip():
return "Error: Please provide valid input text."
try:
inputs = self.tokenizer(
input_text,
return_tensors="pt",
padding=True,
truncation=True,
max_length=512
).to(self.device)
generation_config: Dict[str, Any] = {
"max_length": 512,
"temperature": 0.01,
"do_sample": True,
"pad_token_id": self.tokenizer.pad_token_id,
"eos_token_id": self.tokenizer.eos_token_id,
"num_return_sequences": 1,
"top_k": 50,
"top_p": 0.95,
}
with torch.no_grad():
outputs = self.model.generate(**inputs, **generation_config)
response = self.tokenizer.decode(outputs[0], skip_special_tokens=True)
return response.split("<|end_header_id|>")[-1].split("<|eot_id|>")[0].strip()
except Exception as e:
return f"Error generating response: {str(e)}"
def create_interface(self) -> gr.Interface:
return gr.Interface(
fn=self.generate_response,
inputs=gr.Textbox(
lines=5,
placeholder="Metninizi buraya girin...",
label="Giriş Metni"
),
outputs=gr.Textbox(
lines=5,
label="Model Çıktısı"
),
title="Anlam-Lab Duygu Analizi",
description="Metin girişi yaparak duygu analizi sonucunu alabilirsiniz.",
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."],
],
theme="default"
)
def main():
try:
llama_interface = LlamaInterface()
interface = llama_interface.create_interface()
interface.launch(
share=False,
debug=True,
server_name="0.0.0.0",
server_port=7860
)
except Exception as e:
print(f"Error launching interface: {str(e)}")
raise
if __name__ == "__main__":
main() |