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

!pip install -q -U transformers
!pip install -q -U accelerate
!pip install -q -U bitsandbytes
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()
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)
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.
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)
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.

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)
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!
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)
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

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

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

Downloads last month
18
Safetensors
Model size
7.24B params
Tensor type
BF16
·
Inference Examples
This model does not have enough activity to be deployed to Inference API (serverless) yet. Increase its social visibility and check back later, or deploy to Inference Endpoints (dedicated) instead.

Model tree for rhaymison/cuscuz-7b

Finetuned
(140)
this model

Dataset used to train rhaymison/cuscuz-7b