|
--- |
|
language: |
|
- pt |
|
- en |
|
license: mit |
|
library_name: peft |
|
tags: |
|
- Phi-2B |
|
- Portuguese |
|
- Bode |
|
- LLM |
|
- Alpaca |
|
metrics: |
|
- accuracy |
|
- f1 |
|
- precision |
|
- recall |
|
pipeline_tag: text-generation |
|
model-index: |
|
- name: Phi-Bode |
|
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: 33.94 |
|
name: accuracy |
|
source: |
|
url: https://huggingface.co/spaces/eduagarcia/open_pt_llm_leaderboard?query=recogna-nlp/Phi-Bode |
|
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.31 |
|
name: accuracy |
|
source: |
|
url: https://huggingface.co/spaces/eduagarcia/open_pt_llm_leaderboard?query=recogna-nlp/Phi-Bode |
|
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: 28.56 |
|
name: accuracy |
|
source: |
|
url: https://huggingface.co/spaces/eduagarcia/open_pt_llm_leaderboard?query=recogna-nlp/Phi-Bode |
|
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: 68.1 |
|
name: f1-macro |
|
- type: pearson |
|
value: 30.57 |
|
name: pearson |
|
source: |
|
url: https://huggingface.co/spaces/eduagarcia/open_pt_llm_leaderboard?query=recogna-nlp/Phi-Bode |
|
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: 43.97 |
|
name: f1-macro |
|
source: |
|
url: https://huggingface.co/spaces/eduagarcia/open_pt_llm_leaderboard?query=recogna-nlp/Phi-Bode |
|
name: Open Portuguese LLM Leaderboard |
|
- task: |
|
type: text-generation |
|
name: Text Generation |
|
dataset: |
|
name: HateBR Binary |
|
type: eduagarcia/portuguese_benchmark |
|
split: test |
|
args: |
|
num_few_shot: 25 |
|
metrics: |
|
- type: f1_macro |
|
value: 60.51 |
|
name: f1-macro |
|
- type: f1_macro |
|
value: 54.6 |
|
name: f1-macro |
|
source: |
|
url: https://huggingface.co/spaces/eduagarcia/open_pt_llm_leaderboard?query=recogna-nlp/Phi-Bode |
|
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: 46.78 |
|
name: f1-macro |
|
source: |
|
url: https://huggingface.co/spaces/eduagarcia/open_pt_llm_leaderboard?query=recogna-nlp/Phi-Bode |
|
name: Open Portuguese LLM Leaderboard |
|
--- |
|
|
|
# Phi-Bode |
|
|
|
|
|
<!--- PROJECT LOGO --> |
|
<p align="center"> |
|
<img src="https://huggingface.co/recogna-nlp/Phi-Bode/resolve/main/phi-bode.jpg" alt="Phi-Bode Logo" width="400" style="margin-left:'auto' margin-right:'auto' display:'block'"/> |
|
</p> |
|
|
|
Phi-Bode é um modelo de linguagem ajustado para o idioma português, desenvolvido a partir do modelo base Phi-2B fornecido pela [Microsoft](https://huggingface.co/microsoft/phi-2). 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:** Phi-2B, criado pela Microsoft, com 2.7 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 Phi-2B 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 | ✓ | [recogna-nlp/bode-7b-alpaca-pt-br](https://huggingface.co/recogna-nlp/bode-7b-alpaca-pt-br) | |
|
| 13b | ✓ | [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) | |
|
| 13b | | [recogna-nlp/bode-13b-alpaca-pt-br-no-peft](https://huggingface.co/recogna-nlp/bode-13b-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-gguf | | [recogna-nlp/bode-13b-alpaca-pt-br-gguf](https://huggingface.co/recogna-nlp/bode-13b-alpaca-pt-br-gguf) | |
|
|
|
## Utilização |
|
|
|
O modelo Phi-Bode 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/Phi-Bode" |
|
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) |
|
|
|
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. A cidade tem uma estratégia de transporte moderno difícil entre todos os lugares, incluindo ferroviário, busca, metro e línguações. Para obter uma avaliação completa da cidade, visita esta aumentar a experiência gastronômica, cultural e natural. |
|
``` |
|
|
|
## 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 Phi-Bode em sua pesquisa, cite-o da seguinte maneira: |
|
|
|
``` |
|
@misc {phibode_2024, |
|
author = { Pedro Henrique Paiola and Gabriel Lino Garcia and João Paulo Papa}, |
|
title = { Phi-Bode}, |
|
year = {2024}, |
|
url = { https://huggingface.co/recogna-nlp/Phi-Bode }, |
|
doi = { 10.57967/hf/1880 }, |
|
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/Phi-Bode) |
|
|
|
| Metric | Value | |
|
|--------------------------|---------| |
|
|Average |**43.59**| |
|
|ENEM Challenge (No Images)| 33.94| |
|
|BLUEX (No Images) | 25.31| |
|
|OAB Exams | 28.56| |
|
|Assin2 RTE | 68.10| |
|
|Assin2 STS | 30.57| |
|
|FaQuAD NLI | 43.97| |
|
|HateBR Binary | 60.51| |
|
|PT Hate Speech Binary | 54.60| |
|
|tweetSentBR | 46.78| |
|
|
|
|