---
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="" 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>