--- 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: [] ---

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