Downloads · 30 days
0
SanchesPinto/phi3-juridico-lei-rouanet
phi3-juridico-lei-rouanet is a machine learning model from SanchesPinto. Use it for the machine learning task on the model card, and read the license before you ship it in a product.
language: pt license: mit tags: phi-3 lei-rouanet qlora sft peft pt-br finetunedfrom: microsoft/Phi-3-mini-4k-instruct basemodel: microsoft/Phi-3-mini-4k-instruct Fine-Tuning de Especialista Jurídico: Dominand…
Downloads · 30 days
0
Access
Public
Updated Oct 27, 2025
Repo size
38.3 MB
Likes
0
Public
Click a slice to open those files.
.safetensors37.8 MB · 94%
From the Hugging Face model README
language: pt license: mit tags: phi-3 lei-rouanet qlora sft peft pt-br finetuned_from: microsoft/Phi-3-mini-4k-instruct base_model: microsoft/Phi-3-mini-4k-instruct Fine-Tuning de Especialista Jurídico: Dominando a Lei Rouanet Este repositório contém um modelo de linguagem (LLM) especializado, fine-tuned a partir do microsoft/Phi-3-mini-4k-instruct, com o objetivo de atuar como um especialista de nicho na "Lei Rouanet" (Lei Federal de Incentivo à Cultura do Brasil, Lei nº 8.313/91). Este projeto é um estudo de caso sobre a transformação de um modelo generalista em um especialista factual, utilizando um ciclo de engenharia de ML iterativo, curadoria de dados (Data-Centric AI) e mitigação consciente de overfitting. Model Details Model Description Modelos de linguagem generalistas, como o Phi-3, são treinados em um corpus massivo da internet. Embora demonstrem grande fluência, eles frequentemente falham em tópicos de nicho que exigem alta precisão factual, como legislação específica. Ao serem questionados sobre a Lei Rouanet, as respostas do modelo base eram superficiais e, em muitos casos, factualmente incorretas ("alucinações") — respostas que parecem corretas, mas não são. O objetivo deste projeto foi corrigir essa falha, adotando uma abordagem iterativa para melhorar não apenas a fluência no "juridiquês", mas a precisão factual e a flexibilidade das respostas. Developed by: Gabriel Sanches Pinto Model type: Causal Language Model (CLM) fine-tuned Language(s) (NLP): Português (Brasil) License: MIT (mesma licença do modelo base) Finetuned from model: microsoft/Phi-3-mini-4k-instruct Model Sources [optional] Repository: [Link para seu repositório GitHub, se aplicável] Uses Direct Use Este modelo foi projetado para responder perguntas diretas sobre a Lei Rouanet em português. Ele pode ser usado em chatbots, assistentes de pesquisa ou ferramentas de consulta rápida sobre esta legislação específica. Exemplo de prompt:
messages = [ {"role": "system", "content": "Você é um assistente especializado na Lei Rouanet."}, {"role": "user", "content": "Quais são os principais objetivos da Lei Rouanet?"}, ]
Este modelo não deve ser usado para fornecer aconselhamento jurídico profissional. Ele também não possui conhecimento sobre outras legislações ou tópicos gerais. Seu conhecimento é estritamente limitado ao corpus de treinamento sobre a Lei Rouanet. Bias, Risks, and Limitations Risco de Alucinação: Embora o fine-tuning tenha focado em reduzir imprecisões factuais, o modelo ainda pode alucinar ou gerar informações incorretas, especialmente em perguntas muito complexas ou ambíguas não cobertas pelo dataset de treino. Tamanho do Modelo: Sendo um modelo de 3.8B parâmetros, sua capacidade de raciocínio profundo é limitada em comparação com modelos maiores (como GPT-4). Dataset Limitado: O "super-dataset" usado, embora iterativamente melhorado, é pequeno e focado. O modelo não compreende o contexto jurídico mais amplo do Brasil.
Use o código abaixo para começar a usar o modelo com a biblioteca transformers.
from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline import torch
model_id = "seu-username/seu-repo-name"
tokenizer = AutoTokenizer.from_pretrained(model_id) model = AutoModelForCausalLM.from_pretrained( model_id, device_map="auto", torch_dtype=torch.bfloat16, # Use torch.float16 se bfloat16 não for suportado trust_remote_code=True, )
pipe = pipeline( "text-generation", model=model, tokenizer=tokenizer )
messages = [ {"role": "system", "content": "Você é um assistente especializado na Lei Rouanet."}, {"role": "user", "content": "Quem pode propor projetos pela Lei Rouanet?"}, ]
output = pipe( messages, max_new_tokens=256, do_sample=True, temperature=0.7, top_k=50, top_p=0.95 )
print(output[0]["generated_text"][-1]["content"])
Training Details Training Data: Abordagem Técnica e Metodologia Iterativa O núcleo deste projeto não foi apenas o treinamento, mas o ciclo de engenharia adotado. Iteração 1: Prova de Conceito A primeira fase utilizou um dataset inicial de 92 exemplos (Perguntas e Respostas). Resultado: O modelo aprendeu rapidamente o estilo da comunicação jurídica. O training_loss diminuiu, provando que a metodologia (SFT + QLoRA) estava correta. Diagnóstico: As respostas, apesar de coesas, eram "engessadas" — muito rígidas, seguindo o padrão simples do dataset de treino — e ainda continham imprecisões técnicas. Iteração 2: Abordagem Data-Centric e Treinamento Robusto O diagnóstico da Fase 1 foi claro: o dataset era muito homogêneo e simples. Para a Fase 2, a estratégia foi focada nos dados. Curadoria de Dados (Data-Centric): Criei um segundo dataset focado em diversidade e complexidade. Este novo conjunto incluía perguntas mais longas, com mais contexto, formuladas de maneiras diferentes, e exigindo respostas mais elaboradas e complexas. Criação do "Super-Dataset": Em vez de substituir, combinei o dataset original (fatos fundamentais) com o novo dataset (raciocínio complexo). O objetivo era criar um modelo que soubesse tanto as definições básicas quanto aplicar o conhecimento em cenários mais complexos. Treinamento Robusto com Validação: O "super-dataset" foi dividido em Treino (90%) e Validação (10%). A divisão de validação foi crucial para monitorar o desempenho do modelo em dados que ele nunca tinha visto. Configurei o SFTTrainer com load_best_model_at_end=True, instruindo-o a salvar não o modelo final, mas o checkpoint que apresentasse o menor validation_loss. Training Procedure O modelo foi treinado usando o SFTTrainer da biblioteca trl. A técnica de Parameter-Efficient Fine-Tuning (PEFT) utilizada foi QLoRA, com quantização de 4-bit (bitsandbytes) para permitir o treinamento em uma única GPU T4 no Google Colab. Training Hyperparameters Modelo Base: microsoft/Phi-3-mini-4k-instruct Técnica: QLoRA (SFT) Quantização: 4-bit (BitsAndBytesConfig) Config LoRA (r): 16 Config LoRA (lora_alpha): 32 Config LoRA (lora_dropout): 0.05 Otimizador: paged_adamw_8bit Learning Rate: 2e-4 Split (Treino/Validação): 90/10 Estratégia de Checkpoint: load_best_model_at_end=True (baseado no validation_loss) Ambiente: Google Colab (GPU T4) Stack: transformers, peft, trl, bitsandbytes, datasets Evaluation Testing Data, Factors & Metrics Dados de Teste: Foi utilizado um split de validação (10% do "super-dataset") para avaliar o modelo em dados não vistos durante o treinamento. Métrica: O validation_loss foi a métrica principal para monitorar o desempenho e detectar overfitting. Results: A Gestão do Overfitting Os logs de treinamento da Fase 2 demonstraram perfeitamente o valor da estratégia de validação: O Training Loss continuou a cair, indicando que o modelo estava memorizando os dados de treino. O Validation Loss atingiu um "ponto ideal" (em 1.467 no Step 80) e então começou a subir. Este é o momento exato em que o modelo começou a sofrer overfitting. Graças à estratégia load_best_model_at_end=True, o processo automaticamente identificou o início do overfitting e reverteu para o checkpoint do Step 80, que representava o modelo com a maior capacidade de generalização. (Recomendado: Insira aqui a imagem dos seus gráficos de Training/Validation Loss) Summary Embora o resultado final de um modelo de 3.8B parâmetros não se compare a gigantes como o GPT-4, o projeto foi um sucesso completo em demonstrar um ciclo de engenharia de Machine Learning robusto: Identificação de um problema (imprecisão factual). Implementação de uma solu/ção (fine-tuning SFT + QLoRA). Análise de erros (respostas rígidas da Iteração 1). Refinamento da solução (melhoria iterativa e data-centric do dataset). Implementação de práticas robustas (validação e mitigação ativa de overfitting). Este projeto serviu como um ótimo exercício prático e uma oportunidade de aplicar princípios de engenharia de software e IA para criar modelos especializados, confiáveis e focados na precisão.