demo_gpt2 / final_app.py
CedricZ's picture
Upload 4 files
5ba1135 verified
import gradio as gr
from transformers import pipeline, GenerationConfig
#Load pipeline
generator = pipeline("text-generation", model="gpt2")
config = GenerationConfig.from_pretrained("gpt2")
def greet(prompt, temperature, max_lenth, top_p, samples):
#Enable greedy decoding if temperature is 0
config.do_sample = True if temperature != 0 else False
#Takes temperature and top_p value
config.temperature = temperature
config.top_p = top_p
#Samples
sample_input = {'Sample 1': 'Hi, this is a demo prompt for you',
'Sample 2': 'Alber Einstein is a famous physicist graduated from',
'Sample 3': 'University of Zurich located in'}
#Choose between samples
if samples and prompt == '':
prompt = sample_input[samples]
#Streaming the output
for i in range(max_lenth):
a = generator(prompt, max_new_tokens=1, generation_config=config)
prompt=a[0]['generated_text']
yield a[0]['generated_text']
demo = gr.Interface(
fn=greet,
inputs=[gr.Textbox(placeholder = "Write a tagline for an ice cream shop.", label="prompt", lines=5),
gr.Slider(value=1, minimum=0, maximum=2, label='temperature',
info='''Temperature controls the randomness of the text generation.
1.0 makes the model more likely to generate diverse and sometimes more unexpected outputs.
0.0 makes the model's responses more deterministic and predictable.'''),
gr.Slider(value=16, minimum=1, maximum=256, step=1, label='max_lenth',
info='''Maximum number of tokens that the model will generate in the output.'''),
gr.Slider(value=1, minimum=0, maximum=1, label='top_p',
info='''Top-p controls the model's focus during text generation.
It allows only the most probable tokens to be considered for generation, where the cumulative probability of these tokens must exceed this value.'''),
gr.Dropdown(['Sample 1', 'Sample 2', 'Sample 3'], label="Sample Prompts",
info='''Some sample Prompts for you!''')],
outputs=[gr.Textbox(label='Output texts')],
)
demo.launch()