| import os | |
| import gradio as gr | |
| from transformers import AutoTokenizer, AutoModelForCausalLM | |
| tokenizer = AutoTokenizer.from_pretrained("afrizalha/Sasando-1-25M") | |
| tiny = AutoModelForCausalLM.from_pretrained("afrizalha/Sasando-1-25M") | |
| tinier = AutoModelForCausalLM.from_pretrained("afrizalha/Sasando-1-7M") | |
| desc = """Sasando-1 is a tiny, highly experimental text generator built using the Phi-3 architecture. It comes with two variations of microscopic sizes: 7M and 25M parameters. It is trained on a tightly-controlled Indo4B dataset filtered to only have 18000 unique words. The method is inspired by Microsoft's TinyStories paper which demonstrates that a tiny language model can produce fluent text when trained on tightly-controlled dataset.\n\nTry prompting with two simple words, and let the model continue. Fun examples provided below.""" | |
| def generate(starting_text, choice, temp, top_p): | |
| if choice == '7M': | |
| model = tinier | |
| elif choice == '25M': | |
| model = tiny | |
| elif choice == "Info": | |
| yield desc | |
| return | |
| results = [] | |
| for i in range(5): | |
| inputs = tokenizer([starting_text], return_tensors="pt").to(model.device) | |
| outputs = model.generate( | |
| inputs=inputs.input_ids, | |
| max_new_tokens=32-len(inputs.input_ids[0]), | |
| do_sample=True, | |
| temperature=temp, | |
| top_p=top_p | |
| ) | |
| outputs = tokenizer.batch_decode(outputs, skip_special_tokens=True)[0] | |
| outputs = outputs[:outputs.find(".")] | |
| results.append(outputs) | |
| yield "\n\n".join(results) | |
| with gr.Blocks(theme=gr.themes.Soft()) as app: | |
| starting_text = gr.Textbox(label="Starting text", value="cinta adalah") | |
| res = gr.Textbox(label="Continuation", value="cinta adalah", scale=2) | |
| choice = gr.Radio(["7M", "25M", "Info"], label="Select model", value='Info') | |
| temp = gr.Slider(label="Temperature", minimum=0.1, maximum=1.0, step=0.1, value=0.7) | |
| top_p = gr.Slider(label="Top P", minimum=0.1, maximum=1.0, step=0.1, value=0.5) | |
| gr.Interface( | |
| fn=generate, | |
| inputs=[starting_text,choice,temp,top_p], | |
| outputs=[res], | |
| allow_flagging="never", | |
| title="Sasando-1", | |
| ) | |
| examples=gr.Examples([["gue"], ["presiden"], ["cinta adalah"], ["allah, aku"], ["dia marah karena"], | |
| ["inflasi"], ["kolam renang"], ["messi"], ["jalan-jalan"], ["komputer itu"]], [starting_text]) | |
| app.launch() |