import gradio as gr from textPreprocessing import text2prompt from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig import torch """ Необходимо раскомментить при досутпе к GPU bnb_config = BitsAndBytesConfig( load_in_4bit=True, bnb_4bit_use_double_quant=True, bnb_4bit_quant_type="fp4", bnb_4bit_compute_dtype=torch.bfloat16 )""" model = AutoModelForCausalLM.from_pretrained( "mistralai/Mistral-7B-Instruct-v0.1", # quantization_config=bnb_config # Необходимо раскомментить при досутпе к GPU ) tokenizer = AutoTokenizer.from_pretrained("mistralai/Mistral-7B-Instruct-v0.1") def predict(input_text, t, m): """ Вывести финансовую рекомендацию на основе: input_text: str - Контекст в виде новости из области экономики t: tokenizer - Токенизатор для модели m: model - Instruct-based модель """ prompt = text2prompt(input_text) inputs = tokenizer(prompt, return_tensors="np") generate_ids = model.generate(inputs.input_ids, max_new_tokens=128) answer = tokenizer.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0] return answer.replace(prompt, "") gradio_app = gr.Interface( predict, inputs=gr.Textbox( label="Входная новость", sources=['upload', 'webcam'], container=True, lines=8, placeholder="Акции кредитного банка \"X\" обрушились в цене из-за дефолта по ипотечным кредитам" ), outputs=[gr.Label(label="Финансовая рекомендация на основе новости:")], title="Finam Finetuned Mistral Instruct (FFMI)", ) if __name__ == "__main__": gradio_app.launch()