qwen35-medpt-500 — Modelo Experimental Reduzido (TCC)

Aviso: Este é um modelo de teste experimental, desenvolvido como parte de um Trabalho de Conclusão de Curso (TCC) universitário. Não deve ser utilizado em produção ou em contextos clínicos reais.

Adaptador LoRA (QLoRA) do Qwen/Qwen3.5-0.8B, ajustado em uma versão reduzida do dataset AKCIT/MedPT (500 exemplos por classe), para triagem médica em português brasileiro.

Este modelo é um experimento de linha de base com dados limitados, usado para comparar o impacto do tamanho do dataset em relação ao modelo qwen35-medpt-top10, que foi treinado com o dataset completo (~145k exemplos).

Contexto

Este modelo faz parte do TCC "Fine-tuning de LLMs para triagem médica em português brasileiro", desenvolvido por Matheus Marques Eiras e Ciro, com avaliação inspirada no HealthBench.

Detalhes do Treinamento

Parâmetro Valor
Modelo base Qwen/Qwen3.5-0.8B
Dataset AKCIT/MedPT (top-10 especialidades, 500 exemplos/classe)
Exemplos de treino 4.000 (400/classe)
Exemplos de validação 500 (50/classe)
Exemplos de teste 500 (50/classe)
Método QLoRA (NF4 4-bit)
LoRA r / alpha 16 / 32
Steps totais 375
Framework Unsloth + TRL SFTTrainer

Especialidades (10 classes)

ID Especialidade
0 Dentista
1 Dermatologista
2 Ginecologista
3 Oftalmologista
4 Ortopedista / Traumatologista
5 Otorrino
6 Psicólogo
7 Psicólogo / Psicanalista
8 Psiquiatra
9 Urologista

Uso

Este é um adaptador LoRA — você precisa carregar o modelo base e aplicar o adaptador. Importante: use enable_thinking=False (o Qwen3.5-0.8B entra em loop no thinking mode).

from transformers import AutoTokenizer, AutoModelForCausalLM
from peft import PeftModel

base_model_id = "Qwen/Qwen3.5-0.8B"
adapter_id = "MatheusMarquesEiras/qwen35-medpt-500"

tokenizer = AutoTokenizer.from_pretrained(base_model_id)
model = AutoModelForCausalLM.from_pretrained(base_model_id, device_map="auto")
model = PeftModel.from_pretrained(model, adapter_id)

system_prompt = (
    "Você é um assistente de triagem médica. Dado o relato do paciente, "
    "indique a especialidade médica mais adequada para o atendimento. "
    "Responda apenas com o nome da especialidade."
)

messages = [
    {"role": "system", "content": system_prompt},
    {"role": "user", "content": "Tenho sentido dor nos olhos e visão embaçada há uma semana."}
]

text = tokenizer.apply_chat_template(
    messages,
    tokenize=False,
    add_generation_prompt=True,
    enable_thinking=False  # OBRIGATÓRIO para Qwen3.5-0.8B
)
inputs = tokenizer(text, return_tensors="pt").to(model.device)
output = model.generate(**inputs, max_new_tokens=64)
print(tokenizer.decode(output[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True))

Limitações e Avisos

  • Modelo experimental para fins acadêmicos — não usar em decisões clínicas reais
  • Treinado com apenas 4.000 exemplos (experimento de escala reduzida)
  • Desempenho esperado inferior ao qwen35-medpt-top10 (dataset completo)
  • O modelo base (Qwen3.5-0.8B) requer enable_thinking=False

Versões do Framework

  • PEFT: 0.19.1
  • Unsloth (fine-tuning otimizado)
  • TRL: 1.4.0
  • Transformers: 5.9.0
  • PyTorch: 2.11.0+cu128

Repositório do Projeto

Código-fonte disponível em: MatheusMarquesEiras/TCC-Matheus-e-Ciro

Downloads last month
31
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for MatheusMarquesEiras/qwen35-medpt-500

Adapter
(170)
this model

Dataset used to train MatheusMarquesEiras/qwen35-medpt-500