Views
No views yet

| Quantidade de parâmetros | PEFT | Modelo |
|---|---|---|
| 7b | ✓ | recogna-nlp/bode-7b-alpaca-pt-br |
| 13b | ✓ | recogna-nlp/bode-13b-alpaca-pt-br |
| 7b | recogna-nlp/bode-7b-alpaca-pt-br-no-peft | |
| 13b | recogna-nlp/bode-13b-alpaca-pt-br-no-peft | |
| 7b-gguf | recogna-nlp/bode-7b-alpaca-pt-br-gguf | |
| 13b-gguf | recogna-nlp/bode-13b-alpaca-pt-br-gguf |
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
8from transformers import AutoModelForCausalLM, AutoTokenizer, GenerationConfig
9from peft import PeftModel, PeftConfig
10
11llm_model = 'recogna-nlp/bode-7b-alpaca-pt-br'
12hf_auth = 'HF_ACCESS_KEY'
13config = PeftConfig.from_pretrained(llm_model)
14model = AutoModelForCausalLM.from_pretrained(config.base_model_name_or_path, trust_remote_code=True, return_dict=True, load_in_8bit=True, device_map='auto', token=hf_auth)
15tokenizer = AutoTokenizer.from_pretrained(config.base_model_name_or_path, token=hf_auth)
16model = 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".
17model.eval()
18
19#Testando geração de texto
20def generate_prompt(instruction, input=None):
21 if input:
22 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.
23
24### Instrução:
25{instruction}
26
27### Entrada:
28{input}
29
30### Resposta:"""
31 else:
32 return f"""Abaixo está uma instrução que descreve uma tarefa. Escreva uma resposta que complete adequadamente o pedido.
33
34### Instrução:
35{instruction}
36
37### Resposta:"""
38
39generation_config = GenerationConfig(
40 temperature=0.2,
41 top_p=0.75,
42 num_beams=2,
43 do_sample=True
44)
45
46def evaluate(instruction, input=None):
47 prompt = generate_prompt(instruction, input)
48 inputs = tokenizer(prompt, return_tensors="pt")
49 input_ids = inputs["input_ids"].cuda()
50 generation_output = model.generate(
51 input_ids=input_ids,
52 generation_config=generation_config,
53 return_dict_in_generate=True,
54 output_scores=True,
55 max_length=300
56 )
57 for s in generation_output.sequences:
58 output = tokenizer.decode(s)
59 print("Resposta:", output.split("### Resposta:")[1].strip())
60
61evaluate("Responda com detalhes: O que é um bode?")
62#Exemplo de resposta obtida (pode variar devido a temperatura): Um bode é um animal do gênero Bubalus, da família Bovidae, que é um membro da ordem Artiodactyla. Os bodes são mamíferos herbívoros que são nativos da Ásia, África e Europa. Eles são conhecidos por seus cornos, que podem ser usados para defesa e como uma ferramenta. @misc{bode2024,
title={Introducing Bode: A Fine-Tuned Large Language Model for Portuguese Prompt-Based Task},
author={Gabriel Lino Garcia and Pedro Henrique Paiola and Luis Henrique Morelli and Giovani Candido and Arnaldo Cândido Júnior and Danilo Samuel Jodas and Luis C. S. Afonso and Ivan Rizzo Guilherme and Bruno Elias Penteado and João Paulo Papa},
year={2024},
eprint={2401.02909},
archivePrefix={arXiv},
primaryClass={cs.CL}
}| Metric | Value |
|---|---|
| Average | 53.21 |
| ENEM Challenge (No Images) | 34.36 |
| BLUEX (No Images) | 28.93 |
| OAB Exams | 30.84 |
| Assin2 RTE | 79.83 |
| Assin2 STS | 43.47 |
| FaQuAD NLI | 67.45 |
| HateBR Binary | 85.06 |
| PT Hate Speech Binary | 65.73 |
| tweetSentBR | 43.25 |