CoolFace
Modelpublic

MatheusMarquesEiras/qwen35-medpt-500

sourceHugging Faceapache-2.0updated 3mo agoView on Hugging Face
0likes6downloads
Model Card

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âmetroValor
Modelo baseQwen/Qwen3.5-0.8B
DatasetAKCIT/MedPT (top-10 especialidades, 500 exemplos/classe)
Exemplos de treino4.000 (400/classe)
Exemplos de validação500 (50/classe)
Exemplos de teste500 (50/classe)
MétodoQLoRA (NF4 4-bit)
LoRA r / alpha16 / 32
Steps totais375
FrameworkUnsloth + TRL SFTTrainer

Especialidades (10 classes)

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

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).

python
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