Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Benchmark de LLMs e BERT para Detecção de Fake News em Português

Benchmark comparativo entre modelos locais de linguagem (LLMs) e um BERT fine-tunado na tarefa de classificação de notícias falsas em português brasileiro. Avalia três estratégias de prompting (zero-shot, few-shot e chain-of-thought) contra um baseline de BERT fine-tunado, em dois datasets (Fake.Br Corpus e FakeRecogna).

Instalação

O projeto usa uv e pyproject.toml (Python ≥3.13):

uv sync

Para GPU com CUDA:

pip install torch --index-url https://download.pytorch.org/whl/cu121   # CUDA 12.1
pip install torch --index-url https://download.pytorch.org/whl/cu118   # CUDA 11.8

Modelos avaliados

Categoria Modelo Parâmetros VRAM aprox.
Pequeno Qwen/Qwen2-1.5B-Instruct 1.5B ~4 GB
Pequeno CEIA-UFG/Gemma-3-Gaia-PT-BR-4b-it 4B ~6 GB
Médio Qwen/Qwen2-7B-Instruct 7B ~8 GB
Médio meta-llama/Meta-Llama-3-8B-Instruct 8B ~10 GB
Médio lucianosb/boto-7B-v1.1 7B ~10 GB
Médio recogna-nlp/bode-7b-alpaca-pt-br 7B ~10 GB

Baseline: neuralmind/bert-base-portuguese-cased (BERTimbau) fine-tunado em cada dataset.

Valores de VRAM considerando quantização 4-bit.

Datasets

Baixados automaticamente via Hugging Face.

Uso

O fluxo de trabalho é baseado em Jupyter notebooks. Execute-os a partir da raiz do projeto; eles configuram sys.path para importar os módulos em src/.

Ordem de execução:

  1. 01_data_exploration.ipynb — carrega e inspeciona os datasets.
  2. 02_single_model_test.ipynb — sanity-check em um único modelo/estratégia.
  3. 03_full_benchmark.ipynb — sweep completo (modelos × estratégias × datasets). Dura várias horas; grava um JSON por combinação em reports/.
  4. 03_train_bert.ipynb — fine-tuning do BERTimbau.
  5. 04_benchmark_analysis.ipynb — consolida os JSONs em reports/benchmark_report.{csv,xlsx,md} e gera figuras.

Configurações centrais em src/config.py (MODELS, DATASETS, PROMPTING_STRATEGIES, EXPERIMENT_CONFIG). Templates de prompt em src/models/prompts.py.

Métricas

Desempenho: Acurácia, Precisão, Recall, F1-Score (com pos_label=1 para "fake"). Práticas: tempo médio de inferência (s/notícia) e uso de VRAM (GB).

Estrutura do projeto

.
├── main.py
├── pyproject.toml
├── uv.lock
├── README.md
├── src/
│   ├── config.py
│   ├── data/
│   │   └── data_loader.py
│   ├── models/
│   │   ├── model_handler.py
│   │   ├── prompts.py
│   │   └── metrics.py
│   └── visualization/
├── data/
│   └── processed/         # datasets pré-processados (CSV)
├── notebooks/
│   ├── 01_data_exploration.ipynb
│   ├── 02_single_model_test.ipynb
│   ├── 03_full_benchmark.ipynb
│   ├── 03_train_bert.ipynb
│   └── 04_benchmark_analysis.ipynb
├── reports/        # resultados gerados pelos notebooks
└── models/
    └── partial_results/   # checkpoints locais do BERT fine-tunado

Requisitos de hardware

Configuração VRAM Modelos
Mínima 8 GB Qwen2-1.5B, Gemma-4B
Recomendada 16 GB Todos até 8B
Ideal 24 GB Todos

Ollama

O benchmark usa Ollama por padrão nos notebooks (via ModelHandlerOllama). Os modelos listados em OLLAMA_MODEL_MAPPING (em src/config.py) precisam estar disponíveis localmente. Uso direto:

from models.model_handler import ModelHandlerOllama

handler = ModelHandlerOllama("meta-llama/Meta-Llama-3-8B-Instruct")
response = handler.generate(prompt)

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages