vitorandrade commited on
Commit
a56b79b
·
verified ·
1 Parent(s): e3a47c4

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +40 -5
app.py CHANGED
@@ -1,16 +1,51 @@
1
  import gradio as gr
2
- from transformers import pipeline
 
 
3
 
4
- # Carrega o modelo de Resposta a Perguntas
5
- qa_model = pipeline("question-answering", model="vsvasconcelos/Phi-2_PT_QA_2_v3")
 
6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7
 
8
  # Define a função para responder às perguntas
9
  def answer_question(context, question):
10
  if context:
11
- return qa_model(question=question, context=context)['answer']
12
  else:
13
- return qa_model(question=question)['answer']
 
14
 
15
  # Cria a interface Gradio
16
  iface = gr.Interface(
 
1
  import gradio as gr
2
+ from transformers import AutoModelForCausalLM, AutoTokenizer
3
+ from peft import PeftModel
4
+ import torch
5
 
6
+ # Modelos
7
+ base_model = "microsoft/phi-2"
8
+ model_peft = "vsvasconcelos/Phi-2_PT_QA_2_v3"
9
 
10
+ # Carrega o tokenizer
11
+ tokenizer = AutoTokenizer.from_pretrained(base_model)
12
+
13
+ # Carrega o modelo base e o modelo treinado com PEFT
14
+ model = AutoModelForCausalLM.from_pretrained(base_model)
15
+ model = PeftModel.from_pretrained(model, model_peft)
16
+
17
+ # Adicione uma mensagem de confirmação
18
+ print("Modelo PEFT vsvasconcelos/Phi-2_PT_QA_2_v3 carregado com sucesso!")
19
+
20
+ # Define a função para gerar respostas
21
+ def generate_response(model, tokenizer, prompt, max_length=512, num_return_sequences=1):
22
+ # Tokenizando o prompt de entrada
23
+ inputs = tokenizer(prompt, return_tensors='pt')
24
+
25
+ model.eval()
26
+
27
+ # Gerando a resposta usando o modelo
28
+ with torch.no_grad():
29
+ outputs = model.generate(
30
+ inputs['input_ids'],
31
+ max_length=max_length,
32
+ num_return_sequences=num_return_sequences,
33
+ pad_token_id=tokenizer.eos_token_id,
34
+ eos_token_id=tokenizer.eos_token_id,
35
+ early_stopping=True
36
+ )
37
+
38
+ # Tokenizar a resposta gerada
39
+ response = tokenizer.decode(outputs[0], skip_special_tokens=True)
40
+ return response
41
 
42
  # Define a função para responder às perguntas
43
  def answer_question(context, question):
44
  if context:
45
+ prompt = f"Context: {context}\nQuestion: {question}"
46
  else:
47
+ prompt = f"Question: {question}"
48
+ return generate_response(model, tokenizer, prompt)
49
 
50
  # Cria a interface Gradio
51
  iface = gr.Interface(