File size: 10,269 Bytes
d9249ae
c93c33a
d9249ae
 
 
 
 
 
 
 
 
 
 
 
 
 
52b3731
4c2cfcd
368eda3
 
 
 
 
 
 
 
 
 
 
 
 
d9249ae
716777f
 
 
 
 
 
 
791eb6a
716777f
 
 
 
 
791eb6a
716777f
7a45691
716777f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
791eb6a
 
716777f
 
 
 
4c2cfcd
716777f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
791eb6a
d9249ae
 
abe9546
d9249ae
 
791eb6a
d9249ae
791eb6a
d9249ae
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
791eb6a
 
d9249ae
 
 
 
4c2cfcd
d9249ae
 
 
 
 
 
 
 
abe9546
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d9249ae
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
---
license: llama2
datasets:
- ju-resplande/rebel-pt
- paulofinardi/OIG_small_chip2_portuguese_brasil
- Guilherme34/Cabrita-lora-ptbr
- dominguesm/Canarim-Instruct-PTBR-Dataset
language:
- pt
- en
pipeline_tag: text-generation
library_name: transformers
tags:
- llama
- peft
- portuguese
- instruct

model-index:
- name: boana-7b-instruct
  results:
  - task:
      type: text-generation
    dataset:
      type: Muennighoff/xwinograd
      name: XWinograd (pt)
      config: pt
      split: test
    metrics:
    - type: Accuracy
      value: 50.19
---

<hr>

# PT - README

<hr>

# Boana-7B-Instruct

<p align="center">
  <img width="250" alt="Boana Logo" src="https://cdn-uploads.huggingface.co/production/uploads/658c21f4c1229bf113295773/_Dc6z1IAL-zUiy0LMSSqf.png">
</p>

Boana-7B-Instruct é um LLM treinado em dados da língua portuguesa. O modelo é baseado no [LLaMA2-7B](https://huggingface.co/meta-llama/Llama-2-7b-chat-hf), uma versão de 7B de parâmetros do LLaMA-2. O projeto Boana tem como objetivo oferecer opções de LLM em língua portuguesa, ao mesmo tempo que disponibiliza um modelo menos complexo para que, dessa forma, usuários com menos poder computacional possam usufruir das LLMs.

Em apoio aos países de língua portuguesa. 

<p align="center">
  <img width="250" alt="Countries Logo" src="https://cdn-uploads.huggingface.co/production/uploads/658c21f4c1229bf113295773/d3twZrXng5eDjg_LbH4pF.png">
</p>

### Descrição do Modelo

- **Desenvolvido por:** [Leonardo Souza](https://huggingface.co/lrds-code)
- **Tipo do modelo:** LLaMA-Based
- **Licença:** Academic Free License v3.0
- **Fine-tunado do modelo:** [LLaMA2-7B](https://huggingface.co/meta-llama/Llama-2-7b-chat-hf)

## Estilo do Prompt

Usamos o mesmo prompt usado no fine-tune do modelo [Cabrita](https://huggingface.co/22h/cabrita-lora-v0-1). Você pode saber mais no repositório oficial no [GitHub](https://github.com/22-hours/cabrita/blob/main/notebooks/train_lora.ipynb).

## Como Usar

```python
from transformers import AutoModelForCausalLM, AutoTokenizer, GenerationConfig

def GeneratePrompt(input, instruction):
    if input!='' and instruction!=0:
        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.
                   ### Instrução:
                   {instruction}
                   ### Entrada:
                   {input}'''
    else:
        return f'''Abaixo está uma instrução que descreve uma tarefa. Escreva uma resposta que complete adequadamente o pedido.
                   ### Instrução:
                   {instruction}
                   ### '''

model_config = GenerationConfig.from_model_config(model.generation_config)
model.generation_config.temperature = 0.9 # Você pode variar esse valor entre 0 e 1.

model = AutoModelForCausalLM.from_pretrained('lrds-code/boana-7b-instruct')
tokenizer = AutoTokenizer.from_pretrained('lrds-code/boana-7b-instruct')

instruction = 'Como desenvolver habilidades de programação em python?'
text = GeneratePrompt(input='', instruction=instruction)
inputs = tokenizer(text, return_tensors='pt')
outputs = model.generate(input_ids=inputs['input_ids'], attention_mask=inputs['attention_mask'], generation_config=model_config, repetition_penalty=1.1, do_sample=False
# repetition_penalty:
# Observamos que em alguns casos de entrada o modelo repetiu excessivamente algumas palavras.
# Esse parâmetro é usado para tentar reduzir esse comportamento.
# Atribuir um valor muito alto para esse parâmetro pode fazer com que o modelo busque excessivamente por outras palavras e, sendo assim, talvez usar palavras da língua inglesa na saída.

print(tokenizer.decode(outputs[0], skip_special_tokens=True))

## Abaixo está uma instrução que descreve uma tarefa. Escreva uma resposta que complete adequadamente o pedido.
##                 ### Instrução:
##                 Como desenvolver habilidades de programação em python?
##                 ### Resposta:
##                 Aqui estão algumas dicas para aprender Python:
##                 1. Comece com os fundamentos. Aprenda as principais palavras-chave e conceitos básicos, como variáveis, tipos de dados, funções, módulos, etc.
##                 2. Pratique com exercícios. Experimentar com diferentes tipos de problemas pode ajudá-lo a entender melhor o idioma.
##                 3. Leia documentação. Aprenda sobre as funcionalidades específicas do Python e como elas são usadas.
##                 4. Use recursos on-line. Há muitos recursos disponíveis online que podem ajudá-lo a aprender Python, como cursos, tutoriales, livros, etc.
##                 5. Participe de comunidades. Encontre um grupo de pessoas que compartilham seus interesses e se conectem com eles.
##                 6. Faça perguntas. Se você tiver alguma dúvida ou precisar de ajuda, não hesite em perguntar.
##                 7. Aprenda com outros. Aprenda com outros programadores e compartilhe suas próprias ideias.
##                 8. Desenvolva projetos. Crie algo que possa ser útil para você ou para outras pessoas.
##                 9. Lembre-se de que aprender é um processo contínuo. Não se esqueça de continuar praticando e aprendendo novas coisas.
##                 10. Certifique-se de ter paciência. Aprender um idioma é um processo lento e exigente, mas valerá a pena.
```

<hr>

# EN - README

<hr>


# Boana-7B-Instruct

<p align="center">
  <img width="250" alt="Boana Logo" src="https://cdn-uploads.huggingface.co/production/uploads/658c21f4c1229bf113295773/_Dc6z1IAL-zUiy0LMSSqf.png">
</p>

Boana-7B-Instruct is an LLM trained on portuguese language data. The model is based on [LLaMA2-7B](https://huggingface.co/meta-llama/Llama-2-7b-chat-hf), a 7B parameter version of LLaMA-2. The LLM Boana project aims to provide more LLM options in portuguese, while also providing less complex models so that users with less computational power can take advantage of the LLMs.

In support of portuguese-speaking countries. 

<p align="center">
  <img width="250" alt="Countries Logo" src="https://cdn-uploads.huggingface.co/production/uploads/658c21f4c1229bf113295773/d3twZrXng5eDjg_LbH4pF.png">
</p>

### Model Description

- **Developed by:** [Leonardo Souza](https://huggingface.co/lrds-code)
- **Model type:** LLaMA-Based
- **License:** Academic Free License v3.0
- **Finetuned from model:** [LLaMA2-7B](https://huggingface.co/meta-llama/Llama-2-7b-chat-hf)

## Prompt Style

We used the same prompt used in the fine-tune of the [Cabrita](https://huggingface.co/22h/cabrita-lora-v0-1) model. You can find out more in the official repository on [GitHub](https://github.com/22-hours/cabrita/blob/main/notebooks/train_lora.ipynb).

## How to Use

```python
from transformers import AutoModelForCausalLM, AutoTokenizer, GenerationConfig

def GeneratePrompt(input, instruction):
    if input!='' and instruction!=0:
        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.
                   ### Instrução:
                   {instruction}
                   ### Entrada:
                   {input}'''
    else:
        return f'''Abaixo está uma instrução que descreve uma tarefa. Escreva uma resposta que complete adequadamente o pedido.
                   ### Instrução:
                   {instruction}
                   ### '''

model_config = GenerationConfig.from_model_config(model.generation_config)
model.generation_config.temperature = 0.9 # You can vary this value between 0 and 1.

model = AutoModelForCausalLM.from_pretrained('lrds-code/boana-7b-instruct')
tokenizer = AutoTokenizer.from_pretrained('lrds-code/boana-7b-instruct')

instruction = 'Como desenvolver habilidades de programação em python?'
text = GeneratePrompt(input='', instruction=instruction)
inputs = tokenizer(text, return_tensors='pt')
outputs = model.generate(input_ids=inputs['input_ids'], attention_mask=inputs['attention_mask'], generation_config=model_config, repetition_penalty=1.1, do_sample=False)

# repetition_penalty:
# We observed that in some input cases the model began to repeat words excessively in its output.
# This parameter is used to try to reduce this behavior.
# Setting a very high value for this parameter can cause the model to search excessively for new words and, therefore, may use English words in the output.

print(tokenizer.decode(outputs[0], skip_special_tokens=True))

## Abaixo está uma instrução que descreve uma tarefa. Escreva uma resposta que complete adequadamente o pedido.
##                 ### Instrução:
##                 Como desenvolver habilidades de programação em python?
##                 ### Resposta:
##                 Aqui estão algumas dicas para aprender Python:
##                 1. Comece com os fundamentos. Aprenda as principais palavras-chave e conceitos básicos, como variáveis, tipos de dados, funções, módulos, etc.
##                 2. Pratique com exercícios. Experimentar com diferentes tipos de problemas pode ajudá-lo a entender melhor o idioma.
##                 3. Leia documentação. Aprenda sobre as funcionalidades específicas do Python e como elas são usadas.
##                 4. Use recursos on-line. Há muitos recursos disponíveis online que podem ajudá-lo a aprender Python, como cursos, tutoriales, livros, etc.
##                 5. Participe de comunidades. Encontre um grupo de pessoas que compartilham seus interesses e se conectem com eles.
##                 6. Faça perguntas. Se você tiver alguma dúvida ou precisar de ajuda, não hesite em perguntar.
##                 7. Aprenda com outros. Aprenda com outros programadores e compartilhe suas próprias ideias.
##                 8. Desenvolva projetos. Crie algo que possa ser útil para você ou para outras pessoas.
##                 9. Lembre-se de que aprender é um processo contínuo. Não se esqueça de continuar praticando e aprendendo novas coisas.
##                 10. Certifique-se de ter paciência. Aprender um idioma é um processo lento e exigente, mas valerá a pena.
```