gpt2 / app.py
alonsosilva's picture
Add app
90ff66b
Raw
History Blame Contribute Delete
1.96 kB
import torch
import solara
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained('gpt2')
model = AutoModelForCausalLM.from_pretrained('gpt2')
prompt = solara.reactive("Alan Turing theorized that computers would one day become")
sample = solara.reactive(False)
answer = solara.reactive("")
seed = solara.reactive(False)
seed_int = solara.reactive(42)
num_tokens = solara.reactive(10)
@solara.component
def Page():
css = """
.myclass{
color:blue!important;
font-size:2em;
}
"""
solara.Style(css)
def generate(tokens):
if seed.value:
torch.manual_seed(seed_int.value)
outputs = model.generate(tokens, do_sample=sample.value, max_new_tokens=num_tokens.value)
else:
outputs = model.generate(tokens, do_sample=sample.value, max_new_tokens=num_tokens.value)
response = ""
for output in outputs[0][len(tokens[0]):]:
response += tokenizer.decode([output])
return response
with solara.Column(margin=10):
title = "GPT-2"
with solara.Head():
solara.Title(title)
solara.Markdown(f"#{title}")
with solara.Row():
checkbox_sample = solara.Checkbox(label="Sample", value=sample)
checkbox_seed = solara.Checkbox(label="Seed", value=seed)
if seed.value:
solara.InputInt("Enter a seed value:", value=seed_int)
solara.InputText("Enter text:", value=prompt, continuous_update=True)
if prompt.value != "":
tokens = tokenizer.encode(prompt.value, return_tensors="pt")
def on_click():
answer.value = ""
answer.value = generate(tokens)
with solara.Row():
solara.Button(label="Generate Response", on_click=on_click)
solara.SliderInt(f"number of new tokens: {num_tokens.value}", value=num_tokens, min=1, max=40)
solara.Markdown("")
with solara.Row():
if answer.value != "":
solara.Text(f"""{answer.value}""", classes=["myclass"])