--- 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.0 max_new_tokens: 512 --- # Llama 3 8B - Extrator JSON CONITEC [](https://github.com/unslothai/unsloth) ## 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](https://github.com/unslothai/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: ```json { "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*).