peft safetensors gemma Gemma Portuguese Bode Alpaca pt doi:10.57967/hf/1879 license:mit model-index region:us
---
language:
- pt
license: mit
library_name: peft
tags:
- Gemma
- Portuguese
- Bode
- Alpaca
metrics:
- accuracy
- precision
- f1
- recall
model-index:
- name: GemBode-2b-it
  results:
  - task:
      type: text-generation
      name: Text Generation
    dataset:
      name: ENEM Challenge (No Images)
      type: eduagarcia/enem_challenge
      split: train
      args:
        num_few_shot: 3
    metrics:
    - type: acc
      value: 21.62
      name: accuracy
    source:
      url: https://huggingface.co/spaces/eduagarcia/open_pt_llm_leaderboard?query=recogna-nlp/GemBode-2b-it
      name: Open Portuguese LLM Leaderboard
  - task:
      type: text-generation
      name: Text Generation
    dataset:
      name: BLUEX (No Images)
      type: eduagarcia-temp/BLUEX_without_images
      split: train
      args:
        num_few_shot: 3
    metrics:
    - type: acc
      value: 25.45
      name: accuracy
    source:
      url: https://huggingface.co/spaces/eduagarcia/open_pt_llm_leaderboard?query=recogna-nlp/GemBode-2b-it
      name: Open Portuguese LLM Leaderboard
  - task:
      type: text-generation
      name: Text Generation
    dataset:
      name: OAB Exams
      type: eduagarcia/oab_exams
      split: train
      args:
        num_few_shot: 3
    metrics:
    - type: acc
      value: 27.33
      name: accuracy
    source:
      url: https://huggingface.co/spaces/eduagarcia/open_pt_llm_leaderboard?query=recogna-nlp/GemBode-2b-it
      name: Open Portuguese LLM Leaderboard
  - task:
      type: text-generation
      name: Text Generation
    dataset:
      name: Assin2 RTE
      type: assin2
      split: test
      args:
        num_few_shot: 15
    metrics:
    - type: f1_macro
      value: 53.1
      name: f1-macro
    source:
      url: https://huggingface.co/spaces/eduagarcia/open_pt_llm_leaderboard?query=recogna-nlp/GemBode-2b-it
      name: Open Portuguese LLM Leaderboard
  - task:
      type: text-generation
      name: Text Generation
    dataset:
      name: Assin2 STS
      type: eduagarcia/portuguese_benchmark
      split: test
      args:
        num_few_shot: 15
    metrics:
    - type: pearson
      value: 15.57
      name: pearson
    source:
      url: https://huggingface.co/spaces/eduagarcia/open_pt_llm_leaderboard?query=recogna-nlp/GemBode-2b-it
      name: Open Portuguese LLM Leaderboard
  - task:
      type: text-generation
      name: Text Generation
    dataset:
      name: FaQuAD NLI
      type: ruanchaves/faquad-nli
      split: test
      args:
        num_few_shot: 15
    metrics:
    - type: f1_macro
      value: 53.05
      name: f1-macro
    source:
      url: https://huggingface.co/spaces/eduagarcia/open_pt_llm_leaderboard?query=recogna-nlp/GemBode-2b-it
      name: Open Portuguese LLM Leaderboard
  - task:
      type: text-generation
      name: Text Generation
    dataset:
      name: HateBR Binary
      type: ruanchaves/hatebr
      split: test
      args:
        num_few_shot: 25
    metrics:
    - type: f1_macro
      value: 66.89
      name: f1-macro
    source:
      url: https://huggingface.co/spaces/eduagarcia/open_pt_llm_leaderboard?query=recogna-nlp/GemBode-2b-it
      name: Open Portuguese LLM Leaderboard
  - task:
      type: text-generation
      name: Text Generation
    dataset:
      name: PT Hate Speech Binary
      type: hate_speech_portuguese
      split: test
      args:
        num_few_shot: 25
    metrics:
    - type: f1_macro
      value: 24.22
      name: f1-macro
    source:
      url: https://huggingface.co/spaces/eduagarcia/open_pt_llm_leaderboard?query=recogna-nlp/GemBode-2b-it
      name: Open Portuguese LLM Leaderboard
  - task:
      type: text-generation
      name: Text Generation
    dataset:
      name: tweetSentBR
      type: eduagarcia-temp/tweetsentbr
      split: test
      args:
        num_few_shot: 25
    metrics:
    - type: f1_macro
      value: 37.47
      name: f1-macro
    source:
      url: https://huggingface.co/spaces/eduagarcia/open_pt_llm_leaderboard?query=recogna-nlp/GemBode-2b-it
      name: Open Portuguese LLM Leaderboard
---

# GemBode-2b-it


<!--- PROJECT LOGO -->
<p align="center">
  <img src="https://huggingface.co/recogna-nlp/GemBode-2b-it/resolve/main/gembode.jpg" alt="Phi-Bode Logo" width="400" style="margin-left:'auto' margin-right:'auto' display:'block'"/>
</p>

GemmBode é um modelo de linguagem ajustado para o idioma português, desenvolvido a partir do modelo base de instruções Gemma-2b-it fornecido pela [Google](https://huggingface.co/google/gemma-2b-it). Este modelo foi refinado através do processo de fine-tuning utilizando o dataset Alpaca traduzido para o português. O principal objetivo deste modelo é ser viável para pessoas
que não possuem recursos computacionais disponíveis para o uso de LLMs (Large Language Models). Ressalta-se que este é um trabalho em andamento e o modelo ainda apresenta problemas na geração de texto em português.

## Características Principais

- **Modelo Base:** Gemma-2b-it, criado pela Google, com 2 bilhões de parâmetros.
- **Dataset para Fine-tuning:** Uso do dataset Alpaca traduzido para português para adaptar o modelo às nuances da língua portuguesa.
- **Quantização:** O modelo base Gemma-2b-it foi quantizado em 4 bits para reduzir o tamanho e a complexidade computacional.
- **Treinamento:** O treinamento foi realizado utilizando o método LoRa, visando eficiência computacional e otimização de recursos.
- **Merge de Modelos:** Após o treinamento, o modelo treinado quantizado em 4 bits foi mesclado com o modelo base para preservar a qualidade do modelo.

## Outros modelos disponíveis

| Quantidade de parâmetros       | PEFT | Modelo                                                                                      | 
| :-:                            | :-:  |  :-:                                                                                         | 
| 7b                             | &check; | [recogna-nlp/bode-7b-alpaca-pt-br](https://huggingface.co/recogna-nlp/bode-7b-alpaca-pt-br)  |
| 13b                            | &check; | [recogna-nlp/bode-13b-alpaca-pt-br](https://huggingface.co/recogna-nlp/bode-13b-alpaca-pt-br)|
| 7b                             |    | [recogna-nlp/bode-7b-alpaca-pt-br-no-peft](https://huggingface.co/recogna-nlp/bode-7b-alpaca-pt-br-no-peft)  |
| 7b-gguf                             |    | [recogna-nlp/bode-7b-alpaca-pt-br-gguf](https://huggingface.co/recogna-nlp/bode-7b-alpaca-pt-br-gguf)  |
| 13b                             |    | [recogna-nlp/bode-13b-alpaca-pt-br-no-peft](https://huggingface.co/recogna-nlp/bode-13b-alpaca-pt-br-no-peft)  |
| 13b-gguf                             |    | [recogna-nlp/bode-13b-alpaca-pt-br-gguf](https://huggingface.co/recogna-nlp/bode-13b-alpaca-pt-br-gguf)  |
| 2b                             |    | [recogna-nlp/Phi-Bode](https://huggingface.co/recogna-nlp/Phi-Bode)  |

## Utilização

O modelo GemBode-2b-it pode ser utilizado para uma variedade de tarefas de processamento de linguagem natural (PLN) em português, como geração de texto, classificação, sumarização de texto, entre outros.

### Exemplo de uso

Abaixo, colocamos um exemplo simples de como carregar o modelo e gerar texto:

```python
!pip3 -q install -q -U bitsandbytes==0.42.0
!pip3 -q install -q -U accelerate==0.27.1
!pip3 -q install -q -U transformers==4.38.0

from transformers import AutoModelForCausalLM, AutoTokenizer

hf_auth = 'HF_ACCESS_KEY'

model_id = "recogna-nlp/GemBode-2b-it"
model = AutoModelForCausalLM.from_pretrained(model_id, device_map={"":0}, trust_remote_code=True, token=hf_auth)
tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True, token=hf_auth)
tokenizer.pad_token = tokenizer.eos_token
tokenizer.padding_side = "right"

def get_completion(model, tokenizer, query : str, input : str = '', device = 'cuda:0', max_new_tokens=128) -> str:
    if len(input) == 0:
      prompt_template = """Abaixo está uma instrução que descreve uma tarefa. Escreva uma resposta que complete adequadamente o pedido.
      ### Instrução: {query}
      ### Resposta:"""
      prompt = prompt_template.format(query=query)
    else:
      prompt_template = """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: {query}
      ### Entrada: {input}
      ### Resposta:"""
      prompt = prompt_template.format(query=query, input=input)
    encodeds = tokenizer(prompt, return_tensors="pt", add_special_tokens=True)
    model_inputs = encodeds.to(device)
    generated_ids = model.generate(**model_inputs,
                                   max_new_tokens=max_new_tokens,
                                   do_sample=True,
                                   pad_token_id=tokenizer.eos_token_id)
    decoded = tokenizer.decode(generated_ids[0], skip_special_tokens=True)
    return (decoded[len(prompt):])

result = get_completion(model=model, tokenizer=tokenizer, query="Qual é a capital da França?")
print(result)
#Exemplo de resposta obtida: A capital da França é Paris. Paris é um das cidades mais populosas da França e é o lar do Parlamento francês, de grandes instituições educacionais e importantes museums. 
```

## Contribuições
Contribuições para a melhoria deste modelo são bem-vindas. Sinta-se à vontade para abrir problemas e solicitações pull.

## Citação
Se você deseja utilizar o GemBode-2b-it em sua pesquisa, cite-o da seguinte maneira:

```
@misc {gembode2024,
	author       = {Pedro Henrique Paiola and Gabriel Lino Garcia and João Paulo Papa},
	title        = { GemBode-2b-it},
	year         = {2024},
	url          = { https://huggingface.co/recogna-nlp/GemBode-2b-it },
	doi          = { 10.57967/hf/1879 },
	publisher    = { Hugging Face }
}
```
# [Open Portuguese LLM Leaderboard Evaluation Results](https://huggingface.co/spaces/eduagarcia/open_pt_llm_leaderboard)
Detailed results can be found [here](https://huggingface.co/datasets/eduagarcia-temp/llm_pt_leaderboard_raw_results/tree/main/recogna-nlp/GemBode-2b-it)

|          Metric          |  Value  |
|--------------------------|---------|
|Average                   |**36.08**|
|ENEM Challenge (No Images)|    21.62|
|BLUEX (No Images)         |    25.45|
|OAB Exams                 |    27.33|
|Assin2 RTE                |    53.10|
|Assin2 STS                |    15.57|
|FaQuAD NLI                |    53.05|
|HateBR Binary             |    66.89|
|PT Hate Speech Binary     |    24.22|
|tweetSentBR               |    37.47|

