raphaelfontes's picture
Update README.md
06d0c34 verified
metadata
base_model: unsloth/llama-3-8b-Instruct-bnb-4bit
library_name: peft
tags:
  - text-generation-inference
  - transformers
  - unsloth
  - llama
  - llama-3
  - medical
  - pharmacoeconomics
  - json-extraction
  - conitec
license: apache-2.0
language:
  - pt
pipeline_tag: text-generation
inference:
  parameters:
    temperature: 0
    max_new_tokens: 512

Llama 3 8B - Extrator JSON CONITEC

Visão Geral do Modelo

  • Licença: Apache-2.0
  • Modelo Base: unsloth/llama-3-8b-Instruct-bnb-4bit
  • Idioma principal: Português (pt-BR)

Este modelo é um fine-tuning do Llama-3-8B-Instruct otimizado especificamente para Extração de Entidades Nomeadas (NER) e Informações Farmacoeconômicas em relatórios técnicos da CONITEC (Ministério da Saúde - Brasil). O modelo foi treinado de forma acelerada (2x mais rápido) utilizando a biblioteca Unsloth e a biblioteca TRL da Hugging Face.

Ele atua como um extrator determinístico, recebendo contextos textuais fragmentados (chunks semânticos extraídos de PDFs) e estruturando dados financeiros e epidemiológicos em um payload JSON estrito.


Arquitetura de Dados e Pipeline (Lakehouse)

O modelo atua como o "motor de cognição" na camada Gold de um pipeline de dados orquestrado por Apache Airflow:

  1. Camada Bronze: Extração bruta dos PDFs dos relatórios da CONITEC no S3.
  2. Camada Silver: Conversão para Markdown, processamento espacial/geométrico das páginas (via PyMuPDF) e roteamento semântico (busca híbrida via Regex + Similaridade de Cosseno com TF-IDF) para isolar os parágrafos relevantes.
  3. Camada Gold: Inferência local com este modelo LLM para gerar a estrutura JSON final e consolidar em um Data Warehouse de Saúde Pública usando DuckDB e formato Parquet.

Schema JSON de Saída Esperado

O modelo foi condicionado para retornar rigorosamente o formato abaixo, utilizando null explícito para valores não encontrados na janela de contexto para evitar alucinações cognitivas:

{
  "cnpj": {"raw": "", "normalized": null},
  "laboratorio": {"raw": "", "normalized": null},
  "relatorio_tecnico": {"raw": "", "normalized": null},
  "data_publicacao": {"raw": "", "normalized": null},
  "medicamento": {"raw": "", "normalized": null},
  "apresentacao": {"raw": "", "normalized": null},
  "preco_cmed": {"raw": "", "normalized": null},
  "preco_inicial": {"raw": "", "normalized": null},
  "preco_final": {"raw": "", "normalized": null},
  "populacao_estimada": {"raw": "", "normalized": null}
}

Detalhes de Treinamento e Fine-Tuning

Ambiente e Hardware

  • Hardware: NVIDIA T4 (16GB VRAM) via Google Colab.
  • Frameworks: Unsloth, TRL, Transformers, Datasets.
  • Precisão de Treinamento: 4-bit Quantization (QLoRA) com Otimizador adamw_8bit e FP16/BF16 Misto (conforme suporte de hardware).

Configurações do Adaptador LoRA (PEFT)

  • Rank (r): 16
  • LoRA Alpha: 16
  • Target Modules: q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj
  • Dropout: 0.0
  • Bias: none

Hiperparâmetros do SFTTrainer

  • Max Sequence Length: 2048 tokens
  • Per Device Train Batch Size: 4
  • Gradient Accumulation Steps: 4
  • Learning Rate: 2e-5
  • LR Scheduler: Cosine
  • Num Epochs: 2
  • Warmup Steps: 0.03
  • Weight Decay: 0.01
  • Seed: 3407

Dataset

  • O dataset instrucional foi formatado utilizando o Chat Template nativo do modelo Llama-3 (contendo as roles system, user e assistant).
  • Divisão de Dados: 90% Treino / 10% Avaliação (test_size=0.1).
  • O prompt de sistema força a saída JSON e a simetria perfeita entre as chaves do banco de dados e a inferência final.

Limitações e Uso Indevido

  • Uso Exclusivo para Q&A e Extração: Este modelo sofreu fine-tuning agressivo para gerar JSON e obedecer regras determinísticas de extração de metadados. Ele não deve ser utilizado para geração de texto criativo livre, atuar como chatbot clínico ou prescrever tratamentos. Sua função é leitura e estruturação técnica.
  • Dependência de Contexto Filtrado: O modelo atinge altíssima performance quando alimentado com os chunks textuais já saneados pela arquitetura da camada Silver. O envio de relatórios em PDF inteiros e brutos para a sua janela de contexto resultará em degradação de precisão e provável estouro do limite de tokens (Context Window).