luel's picture
Add request queue for handling high traffic
0e3daa0 verified
import gradio as gr
from transformers import pipeline, GPT2TokenizerFast
modelId = "luel/gpt2-tigrinya-medium"
tokenizer = GPT2TokenizerFast.from_pretrained(modelId, model_max_length=128)
generator = pipeline("text-generation", model=modelId, tokenizer=tokenizer, pad_token_id=tokenizer.pad_token_id, eos_token_id=tokenizer.eos_token_id)
def generate_text(prompt, max_length, temperature):
try:
generated = generator(
prompt,
max_length=max_length,
temperature=temperature,
do_sample=True,
repetition_penalty=1.4
)
return generated[0]['generated_text']
except Exception as e:
return f"Something went wrong, try again. Error: {str(e)}"
def create_interface():
with gr.Blocks() as demo:
gr.Markdown("# Tigrinya Text Generator (GPT-2)")
gr.Markdown(
"This is a GPT-2 model trained from scratch on Tigrinya text data, primarily from news sources. "
"Enter your Tigrinya text prompt and adjust the parameters to generate text."
)
gr.Markdown(
"**Parameters:**\n"
"- **Temperature**: Controls the creativity of the output. Lower values (e.g., 0.2) make the text more focused and predictable, while higher values (e.g., 0.8) make it more diverse and creative.\n"
"- **Maximum Length**: Defines how long the generated text will be. Higher values may take more time to generate but provide longer and more detailed results."
)
with gr.Row():
input_temperature = gr.Slider(
minimum=0.1,
maximum=1.0,
value=0.7,
step=0.1,
label="Temperature",
)
input_max_length = gr.Slider(
minimum=10,
maximum=128,
value=60,
step=1,
label="Maximum Length",
)
with gr.Row():
with gr.Column(scale=1):
input_prompt = gr.Textbox(
label="Enter your Tigrinya text prompt",
placeholder="ክልል α‰΅αŒαˆ«α‹­",
lines=5
)
with gr.Column(scale=1):
output_text = gr.Textbox(
label="Generated Text",
lines=5,
interactive=True
)
with gr.Row():
generate_btn = gr.Button("Generate", variant="primary")
clear_btn = gr.ClearButton([input_prompt, output_text])
generate_btn.click(
fn=generate_text,
inputs=[input_prompt, input_max_length, input_temperature],
outputs=output_text
)
gr.Examples(
examples=[
["ክልል α‰΅αŒαˆ«α‹­"],
["መረጻ ኣሜαˆͺካ"],
["αˆ°αˆ‹αˆ"],
["α‰΅αŠ«αˆ αŒ₯α‹•αŠ“ α‹“αˆˆαˆ"],
["αŒ₯αŠ•α‰³α‹Š ሡልጣነ"],
["α‹²αˆžαŠ­αˆ«αˆ²"]
],
inputs=input_prompt
)
return demo
if __name__ == "__main__":
demo = create_interface()
demo.queue().launch(debug=True)