File size: 2,571 Bytes
fbcf499
90c4f8c
3315cc0
fbcf499
 
87f8cbf
90c4f8c
af05640
fbcf499
 
 
90c4f8c
fbcf499
 
 
 
 
 
 
90c4f8c
fbcf499
 
 
90c4f8c
 
 
fbcf499
90c4f8c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
fbcf499
90c4f8c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import gradio as gr
import random
import os
from transformers import AutoTokenizer, AutoModelForCausalLM

auth_token = os.environ['TOKEN'] or True

model = AutoModelForCausalLM.from_pretrained("aronvandepol/K-GPT125M", use_auth_token=auth_token)

tokenizer = AutoTokenizer.from_pretrained("EleutherAI/gpt-neo-125M")

def get_gen(sample: str, length: int=30, beam: int =1):
    input_ids = tokenizer(sample, return_tensors='pt').input_ids
    output = model.generate(input_ids, 
        max_length = length, 
        num_beams = 5,
        no_repeat_ngram_size  = 3,
        early_stopping = True,
        do_sample=True,
        num_return_sequences = 10,
        pad_token_id=tokenizer.eos_token_id
    )
    generation = tokenizer.batch_decode(output, skip_special_tokens=True)
    gen_text = generation[beam-1]
    return gen_text


with gr.Blocks() as app:
    gr.Markdown("<h1><center>K-GPT_NEO</center></h1>")
    gr.Markdown(
        """
        <justify>
        Interact with the K-GPT_NEO model and generate kpop song texts! By entering a few words into the <i>input</i> prompt and press generate to get the most probable sentence. If you want to see some less probable results press the <i>I'm feeling lucky</i> button.
        </justify>
        """
        )
    beam=gr.Number(value=1, visible=False, precision=0)
    with gr.Row():
        length = gr.Slider(0, 100, step=5, label="Max generated words", value=30)
    with gr.Group():
        txt1 = gr.Textbox(label = "Input", placeholder="Type here and press enter...", lines=4)
        txt2 = gr.Textbox(label = "Output", placeholder="Generated sentence will appear here", lines=4, interactive=False)
    with gr.Row():
        btn = gr.Button("Generate most probable")
        rnd = gr.Button("Feeling Lucky!")
    btn.click(fn=get_gen, inputs=[txt1, length, beam], outputs=txt2)
    rnd.click(fn=get_gen, inputs=[txt1, length, gr.Number(value=random.randint(2, 10), visible=False, precision=0)], outputs=txt2)
    gr.Examples(examples=[['I miss you'], ['My Love has not faded yet'], ['Dancing the stars away']], inputs=txt1, outputs=txt2, fn=get_gen, cache_examples=True)
    gr.Markdown(
        """
        <br>
        <br>
        <br>
        <justify>
        K-GPT_NEO is based on the GPT-Neo text generation model developed by Eleuther AI. 
        This architecture was fine-tuned on 2000 English translations of K-pop songs ranging from BTS and BLACKPINK, to TWICE and ZONE. For more information on the training and data, please visit: 
        </justify>
        """
        )

app.launch()