🏥
BioMistral-7B Fine-Tuned
Assistente Médico com IA — Tech Challenge FIAP (Fase 3)
🤖 BioMistral-7B
⚡ QLoRA Fine-Tuned
🇧🇷 PT-BR Ready
📚 RAG Ativo
✅ Apache 2.0
📋 Sobre o Projeto
Modelo de linguagem médica baseado no BioMistral-7B (variante do Mistral-7B
pré-treinada em PubMed), fine-tuned com QLoRA em 16.325 perguntas e respostas
médicas do dataset MedQuAD (NIH, EUA).
Faz parte de um sistema completo que inclui: RAG sobre bulas de medicamentos
brasileiros (10k documentos), camada de tradução PT-BR ↔ EN, pipeline
3-agentes LangGraph (Triagem, Síntese, Validação), validação humana
obrigatória (HITL) e logging de auditoria completo.
👩💻 Desenvolvido por: Michelle Almeida Nogueira Rodrigues
🎓 Contexto: Tech Challenge FIAP — Fase 3 (IA para Devs)
📅 Data: Agosto/Setembro 2026
📊 Métricas do Fine-Tuning
Comparação entre o modelo base e o modelo fine-tuned no conjunto de validação (816 amostras que o modelo nunca viu):
2.18
Perplexidade (Fine-Tuned)
4.31
Perplexidade (Base)
49.4%
Redução de Hesitação
0.586
Validation Loss
Traduzindo o que esses números significam:
- O modelo fine-tuned fica em dúvida entre ~2 palavras ao responder (vs ~4 do base)
- Redução de 49.4% na perplexidade em dados novos = ganho real, não decorou
- Gap pequeno treino ↔ validação (1.47×) = sem overfitting prejudicial
📚 Datasets Utilizados
1. Fine-tuning
- MedQuAD (NIH, EUA) — 16.325 amostras após anonimização
- Treino: 14.692 | Validação: 816 | Teste: 817
- Idioma: Inglês (com camada de tradução PT-BR)
2. RAG (Base de Conhecimento)
- ChatBulário (HuggingFace) — 10.000 pares Q&A de bulas ANVISA em PT-BR
- 9 seções padronizadas (RDC 47/2009)
- Respostas estruturadas em texto natural
- CID-10 (DATASUS) — códigos de doenças PT-BR (disponível, não indexado)
💻 Como Usar o Modelo
Para usar este modelo, você precisa de:
- GPU com pelo menos 6 GB de VRAM (recomendado: A100 40 GB)
- Python 3.10+
- Bibliotecas:
torch, transformers, peft, bitsandbytes
Instalação
pip install torch transformers peft bitsandbytes accelerate
Carregar o modelo
from peft import PeftModel
from transformers import AutoModelForCausalLM, AutoTokenizer
# Carrega base
base = AutoModelForCausalLM.from_pretrained(
"BioMistral/BioMistral-7B",
load_in_4bit=True,
device_map="auto",
)
# Carrega LoRA adapter (este modelo)
model = PeftModel.from_pretrained(
base,
"michelleAnogueira/biomistral-medquad-lora"
)
tokenizer = AutoTokenizer.from_pretrained(
"michelleAnogueira/biomistral-medquad-lora"
)
Fazer uma pergunta
prompt = """Below is an instruction that describes a task.
Write a response that appropriately completes the request.
### Instruction:
What are the symptoms of diabetes?
### Response:
"""
inputs = tokenizer(prompt, return_tensors="pt").to("cuda")
outputs = model.generate(
**inputs,
max_new_tokens=512,
temperature=0.5,
top_p=0.9,
do_sample=True,
repetition_penalty=1.3,
)
resposta = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(resposta.split("### Response:")[-1].strip())
🎯 Casos de Uso
- ✅ Sistemas de Q&A médico (com validação humana)
- ✅ Suporte à decisão clínica (HITL obrigatório)
- ✅ Ferramentas educacionais para estudantes de medicina
- ✅ Pesquisa em fine-tuning de LLMs médicos
- ✅ Protótipos de assistentes médicos em PT-BR
🧪 Testes de Generalização
O modelo foi testado com 15 perguntas que NUNCA viu durante o treino:
- ✅ 5/5 perguntas gerais (câncer de pulmão, MS, doenças cardíacas, etc.)
- ✅ 5/5 doenças modernas (COVID-19, mRNA, dengue, monkeypox, Zika) — modelo respondeu corretamente sobre doenças jAMAIS vistas no treino
- ⚠️ 3/5 edge cases extremos (input vazio, gibberish) — esperado, mitigado por HITL
Conclusão: O modelo generalizou bem. Não houve overfitting prejudicial.
⚠️ Aviso Importante
ATENÇÃO: Este modelo é um protótipo acadêmico desenvolvido como
trabalho de conclusão de curso.
NÃO É um substituto para profissionais
de saúde. Qualquer uso real em ambiente clínico requer:
- Validação humana obrigatória por médico habilitado
- Aprovação regulatória (ANVISA, CRM, etc.)
- Testes clínicos rigorosos
- Monitoramento contínuo de performance e viés