Model Card for chatbot-canarim-ptbr

Chatbot de perguntas e respostas em português, obtido via fine-tuning do pierreguillou/gpt2-small-portuguese no dataset dominguesm/Canarim-Instruct-PTBR-Dataset.

Projeto desenvolvido para a Prova Substitutiva da Fase 4 (Machine Learning Engineering) da pós-graduação em ML Engineering da FIAP.

Model Details

Model Description

Este modelo é uma versão fine-tuned do GPorTuguese-2 (GPT-2 adaptado para português), ajustada para seguir o padrão Pergunta: ... / Resposta: ... e responder perguntas abertas em português de forma expositiva.

  • Developed by: gabifcavalheiro
  • Model type: Causal Language Model (GPT-2 small), fine-tuned para geração de respostas no formato pergunta/resposta
  • Language(s) (NLP): Português (pt-BR)
  • License: cc-by-nc-4.0 (herdada do dataset de fine-tuning, que é não-comercial; o modelo base é MIT)
  • Finetuned from model: pierreguillou/gpt2-small-portuguese

Model Sources

Uses

Direct Use

Uso educacional/demonstrativo em um playground interativo (Streamlit), para explorar como fine-tuning e parâmetros de geração (temperature, top_p, repetition_penalty) afetam a qualidade de respostas de um modelo de linguagem pequeno em português.

Out-of-Scope Use

  • Não é confiável para fatos (datas, números, eventos específicos) — o modelo tende a alucinar informação quando testado com perguntas factuais precisas.
  • Não deve ser usado em produção ou em qualquer contexto que exija respostas corretas, seguras ou verificadas (ex: aconselhamento médico, legal, financeiro).
  • Não segue bem instruções compostas (ex: perguntas com duas partes) nem formatos criativos específicos (ex: pedir um poema retorna prosa).
  • Uso comercial não é permitido, devido à licença não-comercial (cc-by-nc-4.0) do dataset de fine-tuning.

Bias, Risks, and Limitations

  • O modelo foi fine-tuned com apenas uma fatia de 3.000 exemplos (de mais de 316 mil disponíveis no dataset original), o que limita a variedade de padrões aprendidos.
  • Respostas tendem a começar coerentes e relevantes, mas divagam e perdem precisão conforme crescem (observado a partir de ~2-3 frases).
  • O modelo é sensível à formulação da pergunta: perguntas curtas, informais ou sem pontuação (ex. "o que é ia") tendem a gerar respostas com relevância muito menor do que a mesma pergunta escrita de forma completa.
  • Como o modelo base foi treinado em dados da Wikipedia em português, ele herda os vieses e lacunas de cobertura típicos desse tipo de corpus.
  • Repete padrões discursivos (ex: uso excessivo do conector "Além disso") mesmo com repetition_penalty ativo, já que essa penalidade atua sobre tokens repetidos, não sobre estrutura discursiva.

Uma avaliação qualitativa detalhada, com exemplos reais de pergunta/resposta e análise crítica, está disponível no repositório do GitHub em avaliacao_qualitativa.md.

Recommendations

Use este modelo apenas para fins exploratórios/educacionais. Não utilize as respostas geradas como fonte de informação factual sem verificação independente.

How to Get Started with the Model

from transformers import GPT2LMHeadModel, GPT2TokenizerFast

MODEL_ID = "gabifcavalheiro/chatbot-canarim-ptbr"

tokenizer = GPT2TokenizerFast.from_pretrained(MODEL_ID)
model = GPT2LMHeadModel.from_pretrained(MODEL_ID)
model.eval()

pergunta = "O que é inteligência artificial?"
prompt = f"Pergunta: {pergunta}\nResposta:"

entrada = tokenizer.encode(prompt, return_tensors="pt")
saida = model.generate(
    entrada,
    max_length=entrada.shape[1] + 120,
    do_sample=True,
    temperature=0.7,
    top_p=0.9,
    repetition_penalty=1.3,
    pad_token_id=tokenizer.eos_token_id,
)

texto = tokenizer.decode(saida[0], skip_special_tokens=True)
resposta = texto.split("Resposta:", 1)[-1].strip()
print(resposta)

Training Details

Training Data

dominguesm/Canarim-Instruct-PTBR-Dataset — dataset de instrução/resposta em português (mais de 316 mil exemplos no split de treino). Este modelo foi treinado com uma fatia de 3.000 exemplos, escolhida para viabilizar o treinamento em hardware doméstico dentro do prazo do projeto.

Training Procedure

Cada par (instruction, output) do dataset foi formatado como o texto:

Pergunta: {instruction}
Resposta: {output}<eos>

Os textos formatados foram tokenizados e concatenados em uma sequência única, depois divididos em blocos de tamanho fixo (block_size=128) para o treinamento — abordagem padrão para modelagem de linguagem causal.

Training Hyperparameters

Parâmetro Valor
Modelo base pierreguillou/gpt2-small-portuguese
Épocas 3
Batch size (por dispositivo) 2
Block size 128
Objetivo de treino Causal Language Modeling (mlm=False)
Framework 🤗 transformers.Trainer

Evaluation

A avaliação foi qualitativa, com 4 exemplos de pergunta/resposta analisados quanto a coerência, relevância e repetição, além de testes comparativos do efeito da temperature (0.3 vs. 1.3). O documento completo está disponível em avaliacao_qualitativa.md no repositório do GitHub.

Resumo dos resultados: o modelo produz respostas coerentes e relevantes no início, mas tende a divagar em respostas longas; não segue bem instruções compostas ou formatos criativos específicos; e é sensível à formulação da pergunta. O melhor equilíbrio de parâmetros de geração encontrado foi temperature=0.7, top_p=0.9, repetition_penalty=1.3.

Technical Specifications

Model Architecture and Objective

GPT-2 small (arquitetura Transformer decoder-only), com objetivo de modelagem de linguagem causal (prever o próximo token dado o contexto anterior).

Compute Infrastructure

Hardware

Treinado localmente em máquina com CPU (sem GPU dedicada de alta capacidade), Windows.

Software

  • 🤗 transformers
  • 🤗 datasets
  • PyTorch
  • Python 3.12

Model Card Contact

Dúvidas ou sugestões: abra uma issue no repositório do GitHub.

Downloads last month
-
Safetensors
Model size
0.1B params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for gabifcavalheiro/chatbot-canarim-ptbr

Finetuned
(10)
this model

Dataset used to train gabifcavalheiro/chatbot-canarim-ptbr