Spaces:
Runtime error
Runtime error
testing for tabbed interface features
Browse files
app.py
CHANGED
@@ -66,6 +66,53 @@ def single_generation(text,min_length,max_length,temperature,top_k,top_p,num_bea
|
|
66 |
else:
|
67 |
return error_unknown
|
68 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
69 |
|
70 |
# create the variable needed for the gradio app
|
71 |
forinput=[gr.Textbox(lines=5, label="Input Text"),
|
@@ -78,7 +125,10 @@ forinput=[gr.Textbox(lines=5, label="Input Text"),
|
|
78 |
gr.Number(label="Repetition Penalty", value=2.0),
|
79 |
gr.Dropdown(label="Do Sample?", choices=[True,False], value=True, multiselect=False)]
|
80 |
|
81 |
-
|
|
|
|
|
|
|
82 |
|
83 |
examples = [
|
84 |
["Indonesia adalah negara kepulauan", 10, 30, 1.0, 25, 0.92, 5, 2.0, True],
|
@@ -118,15 +168,27 @@ article = """<p style='text-align: center'>
|
|
118 |
<a href='https://huggingface.co/spaces/anugrahap/gpt2-indo-text-gen/tree/main' target='_blank'>Link to the Project Repository<b> |</b></a>
|
119 |
<a href='https://huggingface.co/datasets/anugrahap/output-gpt2-indo-textgen/' target='_blank'>Link to the Autosaved Generated Output<b> |</b></a>
|
120 |
<a href='https://d4mucfpksywv.cloudfront.net/better-language-models/language_models_are_unsupervised_multitask_learners.pdf' target='_blank'>Original Paper</a><br></p>
|
121 |
-
<p style='text-align: center'>
|
122 |
-
<p style='text-align: center'>
|
123 |
"""
|
124 |
|
125 |
# using gradio interfaces
|
126 |
-
|
127 |
fn=single_generation,
|
128 |
inputs=forinput,
|
129 |
-
outputs=
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
130 |
examples=examples,
|
131 |
title=title,
|
132 |
description=description,
|
@@ -135,6 +197,7 @@ app = gr.Interface(
|
|
135 |
flagging_options=['Well Performed', 'Inappropriate Word Selection', 'Wordy', 'Strange Word', 'Others'],
|
136 |
flagging_callback=hf_writer)
|
137 |
|
|
|
138 |
|
139 |
if __name__=='__main__':
|
140 |
-
|
|
|
66 |
else:
|
67 |
return error_unknown
|
68 |
|
69 |
+
# create the decoder parameter to generate the text
|
70 |
+
def multiple_generation(text,min_length,max_length,temperature,top_k,top_p,num_beams,repetition_penalty,do_sample):
|
71 |
+
# create local variable for error parameter
|
72 |
+
error_rep=ValueError(f"ERROR: repetition penalty cannot be lower than one! Given rep penalty = {repetition_penalty}")
|
73 |
+
error_temp=ValueError(f"ERROR: temperature cannot be zero or lower! Given temperature = {temperature}")
|
74 |
+
error_minmax=ValueError(f"ERROR: min length must be lower than or equal to max length! Given min length = {min_length}")
|
75 |
+
error_numbeams_type=TypeError(f"ERROR: number of beams must be an integer not {type(num_beams)}")
|
76 |
+
error_topk_type=TypeError(f"ERROR: top k must be an integer not {type(top_k)}")
|
77 |
+
error_minmax_type=TypeError(f"ERROR: min length and max length must be an integer not {type(min_length)} and {type(max_length)}")
|
78 |
+
error_empty=ValueError("ERROR: Input Text cannot be empty!")
|
79 |
+
error_unknown=TypeError("Unknown Error.")
|
80 |
+
|
81 |
+
if text != '':
|
82 |
+
if type(min_length) == int and type(max_length) == int:
|
83 |
+
if type(top_k) == int:
|
84 |
+
if type(num_beams) == int:
|
85 |
+
if min_length <= max_length:
|
86 |
+
if temperature > 0:
|
87 |
+
if repetition_penalty >= 1:
|
88 |
+
result = generator(text,
|
89 |
+
min_length=min_length,
|
90 |
+
max_length=max_length,
|
91 |
+
temperature=temperature,
|
92 |
+
top_k=top_k,
|
93 |
+
top_p=top_p,
|
94 |
+
num_beams=num_beams,
|
95 |
+
repetition_penalty=repetition_penalty,
|
96 |
+
do_sample=do_sample,
|
97 |
+
no_repeat_ngram_size=2,
|
98 |
+
num_return_sequences=3)
|
99 |
+
return result[0]["generated_text"], result[1]["generated_text"], result[2]["generated_text"],
|
100 |
+
elif repetition_penalty < 1:
|
101 |
+
return error_rep,error_rep,error_rep
|
102 |
+
elif temperature <= 0:
|
103 |
+
return error_temp,error_temp,error_temp
|
104 |
+
elif min_length > max_length:
|
105 |
+
return error_minmax,error_minmax,error_minmax
|
106 |
+
elif type(num_beams) != int:
|
107 |
+
return error_numbeams_type,error_numbeams_type,error_numbeams_type
|
108 |
+
elif type(top_k) != int:
|
109 |
+
return error_topk_type,error_topk_type,error_topk_type
|
110 |
+
elif type(min_length) != int or type(max_length) != int:
|
111 |
+
return error_minmax_type,error_minmax_type,error_minmax_type
|
112 |
+
elif text == '':
|
113 |
+
return error_empty,error_empty,error_empty
|
114 |
+
else:
|
115 |
+
return error_unknown,error_unknown,error_unknown
|
116 |
|
117 |
# create the variable needed for the gradio app
|
118 |
forinput=[gr.Textbox(lines=5, label="Input Text"),
|
|
|
125 |
gr.Number(label="Repetition Penalty", value=2.0),
|
126 |
gr.Dropdown(label="Do Sample?", choices=[True,False], value=True, multiselect=False)]
|
127 |
|
128 |
+
output1=gr.Textbox(lines=5, max_lines=50, label="Generated Text with Greedy/Beam Search Decoding")
|
129 |
+
output2=[gr.Textbox(lines=5, max_lines=50, label="#1 Generated Text with Greedy/Beam Search Decoding"),
|
130 |
+
gr.Textbox(lines=5, max_lines=50, label="#2 Generated Text with Greedy/Beam Search Decoding"),
|
131 |
+
gr.Textbox(lines=5, max_lines=50, label="#3 Generated Text with Greedy/Beam Search Decoding")]
|
132 |
|
133 |
examples = [
|
134 |
["Indonesia adalah negara kepulauan", 10, 30, 1.0, 25, 0.92, 5, 2.0, True],
|
|
|
168 |
<a href='https://huggingface.co/spaces/anugrahap/gpt2-indo-text-gen/tree/main' target='_blank'>Link to the Project Repository<b> |</b></a>
|
169 |
<a href='https://huggingface.co/datasets/anugrahap/output-gpt2-indo-textgen/' target='_blank'>Link to the Autosaved Generated Output<b> |</b></a>
|
170 |
<a href='https://d4mucfpksywv.cloudfront.net/better-language-models/language_models_are_unsupervised_multitask_learners.pdf' target='_blank'>Original Paper</a><br></p>
|
171 |
+
<p style='text-align: center'> Trained on Indo4B Benchmark Dataset of Indonesian language Wikipedia with a Causal Language Modeling (CLM) objective<br></p>
|
172 |
+
<p style='text-align: center'>Copyright Anugrah Akbar Praramadhan 2023</p>
|
173 |
"""
|
174 |
|
175 |
# using gradio interfaces
|
176 |
+
app1 = gr.Interface(
|
177 |
fn=single_generation,
|
178 |
inputs=forinput,
|
179 |
+
outputs=output1,
|
180 |
+
examples=examples,
|
181 |
+
title=title,
|
182 |
+
description=description,
|
183 |
+
article=article,
|
184 |
+
allow_flagging='manual',
|
185 |
+
flagging_options=['Well Performed', 'Inappropriate Word Selection', 'Wordy', 'Strange Word', 'Others'],
|
186 |
+
flagging_callback=hf_writer)
|
187 |
+
|
188 |
+
app2 = gr.Interface(
|
189 |
+
fn=multiple_generation,
|
190 |
+
inputs=forinput,
|
191 |
+
outputs=output2,
|
192 |
examples=examples,
|
193 |
title=title,
|
194 |
description=description,
|
|
|
197 |
flagging_options=['Well Performed', 'Inappropriate Word Selection', 'Wordy', 'Strange Word', 'Others'],
|
198 |
flagging_callback=hf_writer)
|
199 |
|
200 |
+
final_app = gr.TabbedInterface([app1,app2],["Single Generation", "Multiple Generation (high computation)"])
|
201 |
|
202 |
if __name__=='__main__':
|
203 |
+
final_app.launch()
|