AlexWortega commited on
Commit
9ecda95
·
1 Parent(s): 5eceee5

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +97 -1
app.py CHANGED
@@ -1,3 +1,99 @@
1
  import gradio as gr
2
 
3
- gr.Interface.load("models/AlexWortega/instruct_rugptlarge").launch()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  import gradio as gr
2
 
3
+
4
+ import gradio as gr
5
+ from transformers import AutoModelForCausalLM, AutoTokenizer, GenerationConfig
6
+
7
+ from transformers import GPT2TokenizerFast,GPT2LMHeadModel
8
+ tokenizer = GPT2TokenizerFast.from_pretrained("AlexWortega/instruct_rugptlarge")
9
+ special_tokens_dict = {'additional_special_tokens': ['<code>', '</code>', '<instructionS>', '<instructionE>', '<next>']}
10
+
11
+ tokenizer.add_special_tokens(special_tokens_dict)
12
+ device = 'cuda' # мэх дорога
13
+ model = GPT2LMHeadModel.from_pretrained("AlexWortega/instruct_rugptlarge")
14
+ #
15
+
16
+ model.resize_token_embeddings(len(tokenizer))
17
+
18
+ def generate_prompt(instruction, input=None):
19
+ if input:
20
+ return f"{input}:"
21
+ return f"{instruction}"
22
+
23
+ def generate_seqs(q, temp, topp, topk, nb, maxtok):
24
+ k=1
25
+ gen_kwargs = {
26
+ "min_length": 20,
27
+ "max_new_tokens": maxtok,
28
+ "top_k": topk,
29
+ "top_p": topp,
30
+ "do_sample": True,
31
+ "early_stopping": True,
32
+ "no_repeat_ngram_size": 2,
33
+ "temperature":temp,
34
+
35
+ "eos_token_id": tokenizer.eos_token_id,
36
+ "pad_token_id": tokenizer.eos_token_id,
37
+ "use_cache": True,
38
+ "repetition_penalty": 1.5,
39
+ "length_penalty": 0.8,
40
+ "num_beams": nb,
41
+ "num_return_sequences": k
42
+ }
43
+ if len(q)>0:
44
+ q = q + '<instructionS>'
45
+ else:
46
+ q = 'Как зарабатывать денег на нейросетях?' + '<instructionS>'
47
+ t = tokenizer.encode(q, return_tensors='pt').to(device)
48
+ g = model.generate(t, **gen_kwargs)
49
+ generated_sequences = tokenizer.batch_decode(g, skip_special_tokens=False)
50
+ #print(generated_sequences)
51
+ # Add </s></s>A: after the question and before each generated sequence
52
+ #sequences = [f"H:{q}</s></s>A:{s.replace(q, '')}" for s in generated_sequences]
53
+
54
+ # Compute the reward score for each generated sequence
55
+ #cores = [reward_model.reward_score(q, s.split('</s></s>A:')[-1]) for s in sequences]
56
+
57
+ # Return the k sequences with the highest score and their corresponding scores
58
+ # results = [(s, score) for score, s in sorted(zip(scores, sequences), reverse=True)[:k]]
59
+ ans = generated_sequences[0].replace('<instructionS>','\n').replace('<instructionE>','').replace('<|endoftext|>','')
60
+ return ans
61
+
62
+ description_html = '''
63
+ <p>Обучена на 2v100, коллективом авторов:</p>
64
+ <ul>
65
+ <li><a href="https://t.me/YallenGusev" target="_blank">@YallenGusev</a></li>
66
+ <li><a href="https://t.me/lovedeathtransformers" target="_blank">@lovedeathtransformers</a></li>
67
+ <li><a href="https://t.me/alexkuk" target="_blank">@alexkuk</a></li>
68
+ <li><a href="https://t.me/chckdskeasfsd" target="_blank">@chckdskeasfsd</a></li>
69
+ <li><a href="https://t.me/dno5iq" target="_blank">@dno5iq</a></li>
70
+ </ul>
71
+ '''
72
+
73
+ g = gr.Interface(
74
+ fn=generate_seqs,
75
+ inputs=[
76
+ gr.components.Textbox(
77
+ lines=2, label="Впишите сюда задачу, а я попробую решить", placeholder="Как зарабатывать денег на нейросетях?"
78
+ ),
79
+ #gr.components.Textbox(lines=2, label="Вход", placeholder="Нет"),
80
+ gr.components.Slider(minimum=0.1, maximum=2, value=1.0, label="Temperature"),
81
+ gr.components.Slider(minimum=0, maximum=1, value=0.9, label="Top p"),
82
+ gr.components.Slider(minimum=0, maximum=100, value=50, label="Top k"),
83
+ gr.components.Slider(minimum=0, maximum=5, step=1, value=4, label="Beams"),
84
+ gr.components.Slider(
85
+ minimum=1, maximum=256, step=1, value=100, label="Max tokens"
86
+ ),
87
+ ],
88
+ outputs=[
89
+ gr.inputs.Textbox(
90
+ lines=5,
91
+ label="Output",
92
+ )
93
+ ],
94
+ title="ruInstructlarge",
95
+ description=description_html)
96
+
97
+
98
+ g.queue(concurrency_count=5)
99
+ g.launch(share=True)