import gradio as gr import gradio as gr from transformers import AutoModelForCausalLM, AutoTokenizer, GenerationConfig from transformers import GPT2TokenizerFast,GPT2LMHeadModel tokenizer = GPT2TokenizerFast.from_pretrained("AlexWortega/instruct_rugptlarge") special_tokens_dict = {'additional_special_tokens': ['', '', '', '', '']} tokenizer.add_special_tokens(special_tokens_dict) device = 'cpu' # мэх дорога model = GPT2LMHeadModel.from_pretrained("AlexWortega/instruct_rugptlarge") # model.resize_token_embeddings(len(tokenizer)) def generate_prompt(instruction, input=None): if input: return f"{input}:" return f"{instruction}" def generate_seqs(q, temp, topp, topk, nb, maxtok): k=1 gen_kwargs = { "min_length": 20, "max_new_tokens": maxtok, "top_k": topk, "top_p": topp, "do_sample": True, "early_stopping": True, "no_repeat_ngram_size": 2, "temperature":temp, "eos_token_id": tokenizer.eos_token_id, "pad_token_id": tokenizer.eos_token_id, "use_cache": True, "repetition_penalty": 1.5, "length_penalty": 0.8, "num_beams": nb, "num_return_sequences": k } if len(q)>0: q = q + '' else: q = 'Как зарабатывать денег на нейросетях ?' + '' t = tokenizer.encode(q, return_tensors='pt').to(device) g = model.generate(t, **gen_kwargs) generated_sequences = tokenizer.batch_decode(g, skip_special_tokens=False) #print(generated_sequences) # Add A: after the question and before each generated sequence #sequences = [f"H:{q}A:{s.replace(q, '')}" for s in generated_sequences] # Compute the reward score for each generated sequence #cores = [reward_model.reward_score(q, s.split('A:')[-1]) for s in sequences] # Return the k sequences with the highest score and their corresponding scores # results = [(s, score) for score, s in sorted(zip(scores, sequences), reverse=True)[:k]] ans = generated_sequences[0].replace('','\n').replace('','').replace('<|endoftext|>','') return ans description_html = '''

Обучена на 2v100, коллективом авторов:

''' g = gr.Interface( fn=generate_seqs, inputs=[ gr.components.Textbox( lines=2, label="Впишите сюда задачу, а я попробую решить", placeholder="Как зарабатывать денег на нейросетях?" ), #gr.components.Textbox(lines=2, label="Вход", placeholder="Нет"), gr.components.Slider(minimum=0.1, maximum=2, value=1.0, label="Temperature"), gr.components.Slider(minimum=0, maximum=1, value=0.9, label="Top p"), gr.components.Slider(minimum=0, maximum=100, value=50, label="Top k"), gr.components.Slider(minimum=0, maximum=5, step=1, value=4, label="Beams"), gr.components.Slider( minimum=1, maximum=256, step=1, value=100, label="Max tokens" ), ], outputs=[ gr.inputs.Textbox( lines=5, label="Output", ) ], title="ruInstructlarge", description=description_html) g.queue(concurrency_count=5) g.launch()