Views
No views yet
1
2# Downloads necessários
3!pip install transformers
4!pip install einops accelerate bitsandbytes
5!pip install sentence_transformers
6!pip install git+https://github.com/huggingface/peft.git
7
8
9from peft import PeftModel
10from transformers import AutoModelForCausalLM, AutoTokenizer, GenerationConfig
11import transformers
12import torch
13from peft import PeftModel, PeftConfig
14
15llm_model = "recogna-nlp/Bode-3.1-8B-Instruct-lora"
16hf_auth = 'HF_KEY'
17config = PeftConfig.from_pretrained(llm_model)
18model = AutoModelForCausalLM.from_pretrained(config.base_model_name_or_path, trust_remote_code=True, return_dict=True, load_in_4bit=True, device_map='auto', token=hf_auth)
19tokenizer = AutoTokenizer.from_pretrained(config.base_model_name_or_path, token=hf_auth)
20model = PeftModel.from_pretrained(model, llm_model) # Caso ocorra o seguinte erro: "ValueError: We need an `offload_dir`... Você deve acrescentar o parâmetro: offload_folder="./offload_dir".
21model.eval()
22
23
24#Testando geração de texto
25def generate_prompt(instruction, input=None):
26 if input:
27 return f"""Abaixo está uma instrução que descreve uma tarefa, juntamente com uma entrada que fornece mais contexto. Escreva uma resposta que complete adequadamente o pedido.
28
29### Instrução:
30{instruction}
31
32### Entrada:
33{input}
34
35### Resposta:"""
36 else:
37 return f"""Abaixo está uma instrução que descreve uma tarefa. Escreva uma resposta que complete adequadamente o pedido.
38
39### Instrução:
40{instruction}
41
42### Resposta:"""
43
44generation_config = GenerationConfig(
45 num_beams=2,
46 do_sample=False,
47 pad_token_id=tokenizer.eos_token_id
48)
49def evaluate(instruction, input=None):
50 prompt = generate_prompt(instruction, input)
51 inputs = tokenizer(prompt, return_tensors="pt")
52 input_ids = inputs["input_ids"].cuda()
53 attention_mask = inputs["attention_mask"].cuda()
54 generation_output = model.generate(
55 input_ids=input_ids,
56 attention_mask=attention_mask,
57 generation_config=generation_config,
58 return_dict_in_generate=True,
59 output_scores=True,
60 max_length=800,
61 )
62 for s in generation_output.sequences:
63 output = tokenizer.decode(s, skip_special_tokens=True)
64 print("Resposta:", output.split("### Resposta:")[1].strip())
65
66evaluate("Faça uma função em python de multiplicação entre 3 valores")