|
import gradio as gr |
|
import torch |
|
import numpy as np |
|
from model import Transformer |
|
from transformers import AutoTokenizer |
|
from utils import ( |
|
BLOCK_SIZE, |
|
DEVICE, |
|
DROPOUT, |
|
NUM_EMBED, |
|
NUM_HEAD, |
|
NUM_LAYER, |
|
encode, |
|
decode |
|
) |
|
|
|
|
|
tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased") |
|
vocab_size = tokenizer.vocab_size |
|
|
|
|
|
model = Transformer( |
|
vocab_size=vocab_size, |
|
num_embed=NUM_EMBED, |
|
block_size=BLOCK_SIZE, |
|
num_heads=NUM_HEAD, |
|
num_layers=NUM_LAYER, |
|
dropout=DROPOUT |
|
) |
|
|
|
m = model.to(DEVICE) |
|
|
|
|
|
m = torch.load("base_model.pth", map_location=torch.device(DEVICE)) |
|
m.eval() |
|
|
|
|
|
|
|
|
|
def model_generate(text): |
|
|
|
|
|
|
|
text_input = str(input()) |
|
context_np = np.array(encode(text_input, tokenizer)) |
|
context_np = np.array([context_np]) |
|
context = torch.from_numpy(context_np) |
|
|
|
|
|
return decode(enc_sec=m.generate(idx=context, max_new_tokens=100, block_size=BLOCK_SIZE)[0], tokenizer=tokenizer) |
|
|
|
iface = gr.Interface(fn=model_generate, inputs="text", outputs="text") |
|
iface.launch() |