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