aitouiazzaneali49's picture
Update app.py
b64737f verified
Raw
History Blame Contribute Delete
2.25 kB
import gradio as gr
import torch
from transformers import pipeline
import os
from huggingface_hub import CommitScheduler
from pathlib import Path
import uuid
import json
import logging
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
handlers=[
logging.FileHandler("app.log"),
logging.StreamHandler()
]
)
logger = logging.getLogger("darija-masked-lm")
key = os.environ["HF_KEY"]
submit_file = Path("user_submit/") / f"data_{uuid.uuid4()}.json"
feedback_file = submit_file
submit_file.parent.mkdir(exist_ok=True, parents=True)
scheduler = CommitScheduler(
repo_id="atlasia/atlaset_inference_ds",
repo_type="dataset",
folder_path=submit_file.parent,
path_in_repo="masked_lm",
every=5,
token=key
)
def save_feedback(input, output):
with scheduler.lock:
try:
with feedback_file.open("a") as f:
f.write(json.dumps({"input": input, "output": output}))
f.write("\n")
except Exception as e:
logger.error(f"Error saving feedback: {str(e)}")
def load_model():
print("[INFO] Loading model...")
pipe = pipeline(
task="feature-extraction",
model="aitouiazzaneali49/result_model",
token=key,
device=-1,
dtype=torch.float32
)
print("[INFO] Model loaded!")
return pipe
print("[INFO] load model ...")
pipe = load_model()
print("[INFO] model loaded")
def predict(text1, text2):
emb1 = pipe(text1)[0][0]
emb2 = pipe(text2)[0][0]
t1 = torch.tensor(emb1)
t2 = torch.tensor(emb2)
similarity = torch.nn.functional.cosine_similarity(t1, t2, dim=0).item()
result = {"Similarite": round(similarity, 4)}
save_feedback(f"{text1} | {text2}", result)
return result
with gr.Blocks() as demo:
with gr.Row():
with gr.Column():
input_text1 = gr.Textbox(label="Phrase 1")
input_text2 = gr.Textbox(label="Phrase 2")
submit_btn = gr.Button("Comparer", variant="primary")
output_labels = gr.Label(label="Résultat")
submit_btn.click(predict, inputs=[input_text1, input_text2], outputs=output_labels)
demo.queue()
demo.launch()