luelhagos commited on
Commit
96c86c7
Β·
1 Parent(s): 61b42f7
Files changed (2) hide show
  1. app.py +95 -0
  2. requirements.txt +2 -0
app.py ADDED
@@ -0,0 +1,95 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ from transformers import pipeline, GPT2TokenizerFast
3
+
4
+ modelId = "luel/gpt2-tigrinya-small"
5
+
6
+ print("Loading tokenizer...")
7
+ tokenizer = GPT2TokenizerFast.from_pretrained(modelId, model_max_length=128)
8
+ print("Tokenizer loaded.")
9
+
10
+ print("Loading model...")
11
+ generator = pipeline("text-generation", model=modelId, tokenizer=tokenizer, pad_token_id=tokenizer.pad_token_id, eos_token_id=tokenizer.eos_token_id)
12
+ print("Model loaded.")
13
+
14
+ def generate_text(prompt, max_length, temperature):
15
+ try:
16
+ generated = generator(
17
+ prompt,
18
+ max_length=max_length,
19
+ temperature=temperature,
20
+ do_sample=True,
21
+ repetition_penalty=1.5
22
+ )
23
+ return generated[0]['generated_text']
24
+ except Exception as e:
25
+ return f"Something went wrong, try again. Error: {str(e)}"
26
+
27
+ def create_interface():
28
+ with gr.Blocks() as demo:
29
+ gr.Markdown("# Tigrinya Text Generator (GPT-2)")
30
+ gr.Markdown(
31
+ "This is a GPT-2 model trained from scratch on Tigrinya text data, primarily from news sources. "
32
+ "Enter your Tigrinya text prompt and adjust the parameters to generate text."
33
+ )
34
+
35
+ with gr.Row():
36
+ input_temperature = gr.Slider(
37
+ minimum=0.1,
38
+ maximum=1.0,
39
+ value=0.7,
40
+ step=0.1,
41
+ label="Temperature",
42
+ )
43
+ input_max_length = gr.Slider(
44
+ minimum=10,
45
+ maximum=128,
46
+ value=60,
47
+ step=1,
48
+ label="Maximum Length",
49
+ )
50
+
51
+ with gr.Row():
52
+ with gr.Column(scale=1):
53
+ input_prompt = gr.Textbox(
54
+ label="Enter your Tigrinya text prompt",
55
+ placeholder="α‰΅αŒαˆ«α‹­",
56
+ lines=5
57
+ )
58
+
59
+ with gr.Column(scale=1):
60
+ output_text = gr.Textbox(
61
+ label="Generated Text",
62
+ lines=5,
63
+ interactive=True
64
+ )
65
+
66
+ with gr.Row():
67
+ generate_btn = gr.Button("Generate", variant="primary")
68
+ clear_btn = gr.Button("Clear")
69
+
70
+ generate_btn.click(
71
+ fn=generate_text,
72
+ inputs=[input_prompt, input_max_length, input_temperature],
73
+ outputs=output_text
74
+ )
75
+
76
+ clear_btn.click(
77
+ fn=lambda: ("", ""),
78
+ inputs=[],
79
+ outputs=[input_prompt, output_text]
80
+ )
81
+
82
+ gr.Examples(
83
+ examples=[
84
+ ["α‰΅αŒαˆ«α‹­"],
85
+ ["αŠ£α‹²αˆ΅ αŠ£α‰ α‰£"],
86
+ ["αˆ°αˆ‹αˆ"]
87
+ ],
88
+ inputs=input_prompt
89
+ )
90
+
91
+ return demo
92
+
93
+ if __name__ == "__main__":
94
+ demo = create_interface()
95
+ demo.queue().launch(debug=True)
requirements.txt ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ transformers==4.46.0
2
+ torch==2.5.0