import gradio as gr | |
import torch | |
from peft import PeftModel, PeftConfig | |
from transformers import AutoModelForCausalLM, AutoTokenizer | |
peft_model_id = "hackathon-somos-nlp-2023/bertin-gpt-j-6b-ner-es" | |
config = PeftConfig.from_pretrained(peft_model_id) | |
model = AutoModelForCausalLM.from_pretrained( | |
config.base_model_name_or_path, | |
return_dict=True, | |
load_in_8bit=True, | |
device_map="auto", | |
revision="half", | |
) | |
tokenizer = AutoTokenizer.from_pretrained(peft_model_id) | |
# Load the Lora model | |
model = PeftModel.from_pretrained(model, peft_model_id) | |
def gen_entities(text): | |
text = f"<SP> text: {text}\n\n entities: " | |
batch = tokenizer(text, return_tensors="pt") | |
with torch.cuda.amp.autocast(): | |
output_tokens = model.generate(**batch, max_new_tokens=256, eos_token_id=50258) | |
return tokenizer.decode(output_tokens[0], skip_special_tokens=False) | |
iface = gr.Interface(fn=gen_entities, inputs="text", outputs="text") | |
iface.launch() | |