dyamo / app.py
Teroye's picture
Update app.py
cb8f9f9
import gradio as gr
from flask import Flask, jsonify
from transformers import AutoTokenizer
import os
import json
import torch
import torch.nn.functional as F
print("library loaded-------------------------------------------------")
app = Flask(__name__)
# load tokenizor and set device to cpu or gpu
tokenizer = AutoTokenizer.from_pretrained('KB/bert-base-swedish-cased', model_max_length=128)
device = torch.device("cuda") if torch.cuda.is_available() else torch.device("cpu")
# load model
path_inapp = './inapp_model'
inapp_model = torch.load(path_inapp, map_location=torch.device('cpu'))
path_conf = './conf_model'
conf_model = torch.load(path_conf, map_location=torch.device('cpu'))
def greet(txt):
print('model is predicting-----------------------------------------')
btc = tokenizer(txt, padding='max_length', truncation=True, return_tensors='pt')
btc.to(device)
with torch.no_grad():
outputs_inapp = inapp_model(**btc)
predictions = F.softmax(outputs_inapp.logits, dim=1)
inapp_score = [predictions[0][0].item(), predictions[0][1].item()]
inapp_labels = torch.argmax(predictions, dim=1)
with torch.no_grad():
outputs_conf = conf_model(**btc)
predictions = F.softmax(outputs_conf.logits, dim=1)
conf_score = [predictions[0][0].item(), predictions[0][1].item()]
conf_labels = torch.argmax(predictions, dim=1)
flag_inapp = str(inapp_labels[0].item()) #0 IS GOOD, 1 IS BAD
flag_conf = str(conf_labels[0].item())
post_body = {"text": txt, "flag_inappropriate": {"is_inappropiate": flag_inapp, "score": inapp_score}, "flag_confidential": {"is_private": flag_conf, "score": conf_score}}
return post_body
iface = gr.Interface(fn=greet, inputs="text", outputs=gr.outputs.JSON(label="Output"))
iface.launch()