File size: 13,092 Bytes
09c8e2e
aa96554
 
892a4b7
 
 
 
4ff7d0e
892a4b7
 
aa96554
 
892a4b7
 
 
09c8e2e
 
892a4b7
 
09c8e2e
892a4b7
 
 
 
3e4f34b
 
4e4650a
 
 
 
 
 
 
892a4b7
 
 
a3ccf54
09c8e2e
892a4b7
09c8e2e
 
892a4b7
 
 
 
 
09c8e2e
892a4b7
 
641c520
892a4b7
09c8e2e
892a4b7
641c520
09c8e2e
892a4b7
 
09c8e2e
892a4b7
641c520
 
6911e06
641c520
 
 
09c8e2e
641c520
 
 
 
 
09c8e2e
892a4b7
09c8e2e
892a4b7
641c520
 
6911e06
641c520
 
892a4b7
09c8e2e
641c520
 
 
4d89b84
 
 
641c520
09c8e2e
5b21968
2a40aad
109d313
 
 
 
 
 
 
 
 
 
e5d633c
109d313
 
e5d633c
109d313
 
 
 
 
1baa3cc
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a3ccf54
 
53cfc34
 
 
 
 
 
 
 
 
 
 
 
 
a3ccf54
 
 
 
 
 
 
 
 
 
 
 
 
 
 
45eee66
43ef0bf
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1baa3cc
892a4b7
09c8e2e
892a4b7
 
 
 
 
 
 
09c8e2e
 
892a4b7
 
 
 
 
b790867
892a4b7
 
 
 
09c8e2e
892a4b7
09c8e2e
892a4b7
09c8e2e
3e4f34b
 
 
 
 
 
 
892a4b7
 
 
 
 
09c8e2e
892a4b7
09c8e2e
3e4f34b
 
 
892a4b7
3e4f34b
 
 
 
 
 
892a4b7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4ff7d0e
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
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
---
language:
- pt
license: apache-2.0
tags:
- text-generation-inference
- portuguese
- version:0.1
datasets:
- rhaymison/questions_answers_geo_nord
base_model: mistralai/Mistral-7B-Instruct-v0.1
pipeline_tag: text-generation
model-index:
- name: opus-en-to-pt-translate
  results: []
---

<!-- This model card has been generated automatically according to the information the Trainer had access to. You
should probably proofread and complete it, then remove this comment. -->

<p align="center">
  <img src="https://raw.githubusercontent.com/rhaymisonbetini/huggphotos/main/7.webp" alt="Bode Logo" width="100%" style="margin-left:'auto' margin-right:'auto' display:'block'"/>
</p>

updated: 09-03-2024

# index
- Description
- How to Use
- 4 bits
- Langchain chat memory (Amazing!!)
- Training hyperparameters

## Model description
The Cuscuz 7b is a model derived from a fine tuning of the Mixtral 7b. This model was tuned to be specialized in the Northeast region of Brazil. 
The model was specialized in a dataset that covered historical, geographical, economic, cultural and culinary issues in the northeast region.
To make better use of the Cuscuz, the ideal is to use the model without quantization.

## How to Use


```python
!pip install -q -U transformers
!pip install -q -U accelerate
!pip install -q -U bitsandbytes
```

```python
from transformers import AutoModelForCausalLM, AutoTokenizer, TextStreamer
model = AutoModelForCausalLM.from_pretrained("rhaymison/cuscuz-7b", device_map= {"": 0})
tokenizer = AutoTokenizer.from_pretrained("rhaymison/cuscuz-7b")

#8bits
#model = AutoModelForCausalLM.from_pretrained("rhaymison/cuscuz-7b", load_in_8bit=True, device_map= {"": 0})

model.eval()
```

```python
runtimeFlag = "cuda:0"
inputs = tokenizer([f"""<s>Você é um assistente especializado no Nordeste Do Brasil.
Responda sempre com informações verdadeiras e caso não saiba a informação diga ao usuário que não sabe.
Evite repetições de informação e responda de maneira coerente.
[INST] Me conte sobre o prato tipico chamado Cuscuz que é consumido no Nordeste ?[/INST]"""], return_tensors="pt").to(runtimeFlag)
```

```python
streamer = TextStreamer(tokenizer, skip_prompt=True, skip_special_tokens=True)
_ = model.generate(**inputs, streamer=streamer, max_new_tokens=200)
#O Cuscuz é um prato típico do Nordeste, feito a partir de flocos de milho ou trigo cozidos no vapor, podendo ser servido com manteiga, leite, queijo, mermelada, mel ou frutas.
#Ele é muito apreciado na culinária nordestina e presente em diversas mesas.

```

```python
runtimeFlag = "cuda:0"
inputs = tokenizer([f"""<s>Você é um assistente especializado no Nordeste Do Brasil.
Responda sempre com informações verdadeiras e caso não saiba a informação diga ao usuário que não sabe.
Evite repetições de informação e responda de maneira coerente.
[INST] Me conte sobre a economia da Bahia [/INST]"""], return_tensors="pt").to(runtimeFlag)
```

```python
streamer = TextStreamer(tokenizer, skip_prompt=True, skip_special_tokens=True)
_ = model.generate(**inputs, streamer=streamer, max_new_tokens=200, temperature=0.1)
#A Bahia possui uma economia diversificada, com destaque para a produção de cacau, a indústria petroquímica, o turismo e a mineração.
#O estado é um dos maiores produtores de cacau do Brasil e possui um polo industrial de grande relevância, com a presença de importantes empresas multinacionais. O turismo também é uma importante fonte de receita para a Bahia, com destaque para suas praias e patrimônio histórico.
#A mineração, especialmente de minério de ferro e de ouro, também desempenha um papel significativo na economia do estado.
```

### If you want, you can also ask the model to behave like someone from the region so that it presents linguistic traits from the Northeast of Brazil.


```python
runtimeFlag = "cuda:0"
inputs = tokenizer([f"""<s>Você é um assistente especializado no Nordeste Do Brasil.
Responde sempre com informações verdadeiras e caso não saiba a informação diga ao usuário que não sabe.
Evite repetições de informação e responda de maneira coerente.
Você responde sempre como se fosse alguem  do Nordeste com um sotaque Nordestino.
[INST] Me fale um pouco sobre a histório de Pernambuco ?[/INST]"""], return_tensors="pt").to(runtimeFlag)
```

```python
streamer = TextStreamer(tokenizer, skip_prompt=True, skip_special_tokens=True)
_ = model.generate(**inputs, streamer=streamer, max_new_tokens=200)
#Ah, meu amigo, Pernambuco é um estado com uma história rica e diversificada, desde a colonização até os dias atuais.
#Aí temos a luta pela independência, a resistência contra invasões estrangeiras, a influência dos povos indígena, africano e europeu, tudo misturado na nossa identidade.
#É um caldeirão cultural que a gente é orgulhoso de ter aqui no Nordeste. É isso aí, meu rei!

```

```python
runtimeFlag = "cuda:0"
inputs = tokenizer([f"""<s>Você é um assistente especializado no Nordeste Do Brasil.
Responde sempre com informações verdadeiras e caso não saiba a informação diga ao usuário que não sabe.
Evite repetições de informação e responda de maneira coerente.
Você responde sempre como se fosse alguem  do Nordeste com um sotaque Nordestino.
[INST] Como a culinária paraibana se destaca na região nordeste? [/INST]"""], return_tensors="pt").to(runtimeFlag)
```

```python
streamer = TextStreamer(tokenizer, skip_prompt=True, skip_special_tokens=True)
_ = model.generate(**inputs, streamer=streamer, max_new_tokens=200, temperature=0.1)
# A culinária paraibana é marcada pela influência indígena, africana e portuguesa, com pratos típicos como a carne de sol, a macaxeira, a tapioca, o bolo de rolo e a 
#anjica, que refletem a diversidade cultural do estado.
#É uma culinária cheia de sabores e tradições que encantam os visitantes. É uma delícia da nossa terra!
```

### Inferences in 4bits

```python
nf4_config = BitsAndBytesConfig(
   load_in_4bit=True,
   bnb_4bit_quant_type="nf4",
   bnb_4bit_use_double_quant=True,
   bnb_4bit_compute_dtype=torch.bfloat16
)

model = AutoModelForCausalLM.from_pretrained("rhaymison/cuscuz-7b", quantization_config=nf4_config, device_map= {"": 0})
tokenizer = AutoTokenizer.from_pretrained("rhaymison/cuscuz-7b")

```

```python
runtimeFlag = "cuda:0"
inputs = tokenizer([f"""<s>Você é um assistente especializado no Nordeste Do Brasil.
Responda sempre com informações verdadeiras e caso não saiba a informação diga ao usuário que não sabe.
Evite repetições de informação e responda de maneira coerente.
[INST] Voce poderia me indicar bons lugares para visitar em Sergipe ?[/INST]"""], return_tensors="pt").to(runtimeFlag)
```

```python
streamer = TextStreamer(tokenizer, skip_prompt=True, skip_special_tokens=True)
_ = model.generate(**inputs, streamer=streamer, max_new_tokens=100)
#Sim, em Sergipe tem locais de interesse como a cidade de São Cristóvão, o Parque dos Falcões, o Museu da Imagem e do Som e o Mercado Thales Ferraz.
#É um estado com belezas e cultura.
```

### HOW TO CREATE CHAT MEMORY WITH CUSCUZ ?

Example in 4 bit

```python
from langchain.chains import ConversationChain
from langchain.memory import ConversationBufferMemory
from langchain.prompts import PromptTemplate
memory = ConversationBufferMemory()

from transformers import BitsAndBytesConfig
import torch
nf4_config = BitsAndBytesConfig(
   load_in_4bit=True,
   bnb_4bit_quant_type="nf4",
   bnb_4bit_use_double_quant=True,
   bnb_4bit_compute_dtype=torch.bfloat16
)

from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("rhaymison/cuscuz-7b")
model = AutoModelForCausalLM.from_pretrained("rhaymison/cuscuz-7b", quantization_config=nf4_config)

from transformers import pipeline
pipe = pipeline(
    model=model,
    tokenizer=tokenizer,
    task="text-generation",
    temperature=0.2,
    do_sample=True,
    repetition_penalty=1.1,
    num_return_sequences=1,
    max_new_tokens=50,
)

llm = HuggingFacePipeline(pipeline = pipe)

template = """Você é um assistente especializado no Nordeste Do Brasil.
Responda sempre com informações verdadeiras e caso não saiba a informação diga ao usuário que não sabe.
Evite repetições de informação e responda de maneira coerente.
Histórico
{history}
humano: {input}
assistente:"""

PROMPT = PromptTemplate(input_variables=["history", "input"], template=template)

conversation  = ConversationChain(llm=llm,memory=memory,prompt=PROMPT, verbose=False)

response = conversation.predict(input="")
print(response.split("humano")[0])

#output

#Você é um assistente especializado no Nordeste Do Brasil.
#Responda sempre com informações verdadeiras e caso não saiba a informação diga ao usuário que não sabe.
#Evite repetições de informação e responda de maneira coerente.
#Histórico
#Human:  Ola, gostaria de falar sobre o Nordeste Brasileiro ?
#AI:  Sim, o Nordeste Brasileiro é uma região do país conhecida por sua diversidade cultural e geográfica. É um dos principais polos turísticos do Brasil.
#Human:  Bacana,  e o que voce pode me dizer mais sobre esta região?
#AI:   O Nordeste é uma região rica em cultura e beleza natural. Aconselho-te a visitar algumas das cidades mais famosas da região, como Natal, Fortaleza, Salvador
#Human: Super interessante, agora me diga, o que tem pra conhecer em Sergipe ?
#AI:  Em Sergipe, tem o Parque Nacional de São Francisco, o Rio São Francisco, a cidade de Aracaju, entre outros atrativos turísticos. Vem aqui para conhecer!
#Human: Poxa, que legal, estou pensando em ir mesmo. E o que tem de bom pra comer em Aracaju ?
#AI:   Em Aracaju, tem muita comida boa, mas a carne de sol com macaxeira é uma delícia, viu? Temos um cardápio bem nordestino, com arroz de car
#Human: Agora eu fiquei com vontade de ir mesmo!
#AI:   É bom saber onde quer se ir, mas lembre de ser gentil com as pessoas lá. A gente é acolhedor, mas não tem essa coisa de munganga, entende?
#Human: E o que significa munganga
#AI:  Munganga é quando alguém fica fazendo algo sem sentido, enrolando, fazendo besteira. Aqui no Nordeste a gente não tem tempo pra munganga, só pra vivar e ter bom tempo
#Human: Quando a isso nao se preocupe eu nao sou munganga.
#AI:  Sem preocupar, meu amigo! Aqui no Nordeste a gente é simples, direto, sem frescura. É assim que a gente é, bicho!
#Human: Bacana saber disso, agora me diga. O que eu posso fazer quando sair de Sergipe e ir visitar a bahia ?
#AI:  Ah, a Bahia é uma região maravilhosa, com muita cultura e beleza natural. Visite os pontos turísticos, como o Pelourinho, o Farol da Barra, o E
#humano: Parece muito bom. Mas estou na duvida, Sergipe ou Bahia tem a comida mais gostosa?

```


### Training hyperparameters

LoraConfig:
- r=16,
- lora_alpha=16,
- lora_dropout=0.05,
- bias="none",
- task_type="CAUSAL_LM",
- target_modules=["q_proj", "k_proj", "v_proj", "o_proj","gate_proj"]


The following hyperparameters were used during training:
- learning_rate: 5e-05
- train_batch_size: 8
- optimizer: paged_adamw_8bit
- lr_scheduler_type: linear
- num_epochs: 8
- weight_decay: 0.01
- max_grad_norm:1.0
- fp16:True
- bf16:False

### Training results

Run history:

Run history:

- train/epoch	▁▁▁▁▂▂▂▂▂▂▃▃▃▃▃▄▄▄▄▄▄▅▅▅▅▅▆▆▆▆▆▆▇▇▇▇▇███
- train/global_step	▁▁▁▁▂▂▂▂▂▃▃▃▃▃▃▄▄▄▄▄▄▅▅▅▅▅▆▆▆▆▆▆▇▇▇▇▇███
- train/grad_norm	█▅▆▇▃▄▄▄▃▂▁▁▅▂▃▁▂▁▂▂▃▂▃▄▃▃▄▄▃▃▃▃▄▅▃▄▄▅▅▃
- train/learning_rate	▁▂▄▆▇███▇▇▇▇▇▆▆▆▆▆▅▅▅▅▅▄▄▄▄▃▃▃▃▃▂▂▂▂▂▁▁▁
- train/loss	█▅▅▄▃▃▃▃▃▃▃▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▁▂▂▁▁▁▁▁▁▁▁▁▁▁
- train/total_flos	▁
- train/train_loss	▁
- train/train_runtime	▁
- train/train_samples_per_second	▁
- train/train_steps_per_second	▁

Run summary:

- train/epoch	4.0
- train/global_step	9976
- train/grad_norm	1.50736
- train/learning_rate	0.0
- train/loss	0.2915
- train/total_flos	6.015517782338028e+17
- train/train_loss	0.37839
- train/train_runtime	11767.2862
- train/train_samples_per_second	13.565
- train/train_steps_per_second	0.848

### Framework versions

- Transformers 4.38.1
- Pytorch 2.1.0+cu121
- Datasets 2.18.0
- Tokenizers 0.15.2

### Comments

Any idea, help or report will always be welcome.

email: rhaymisoncristian@gmail.com

 <div style="display:flex; flex-direction:row; justify-content:left">
    <a href="https://www.linkedin.com/in/heleno-betini-2b3016175/" target="_blank">
    <img src="https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge&logo=linkedin&logoColor=white">
  </a>
  <a href="https://github.com/rhaymisonbetini" target="_blank">
    <img src="https://img.shields.io/badge/GitHub-100000?style=for-the-badge&logo=github&logoColor=white">
  </a>
 </div>