PEFT
doutor-bode-7b-240k / README.md
Gabriel-Lino-Garcia's picture
Update README.md
ca00085 verified
metadata
library_name: peft
base_model: recogna-nlp/internlm-chatbode-7b

DrBode 240: Assistente Virtual Médico em Português Brasileiro

Bode Logo

Visão Geral

DrBode 240 é um modelo de linguagem de grande porte (LLM) ajustado para responder a perguntas médicas em português brasileiro. Este modelo foi treinado com 240 mil amostras, sendo parte delas dados médicos e outra parte composta por dados de instruções gerais. O objetivo do DrBode 240 é oferecer respostas confiáveis e relevantes para questões médicas, auxiliando tanto profissionais de saúde quanto usuários finais em suas dúvidas sobre saúde.

Descrição do Modelo

O DrBode 240 foi desenvolvido a partir do modelo ChatBode, uma versão ajustada do InternLM2 adaptada para seguir instruções em português. O DrBode 240 foi ajustado com 33% de dados médicos e 67% de dados de instruções gerais, buscando encontrar um equilíbrio entre a especialização médica e a capacidade de lidar com diferentes tipos de perguntas.

Atributos principais:

  • Modelo Base: ChatBode, especializado em seguir instruções em português brasileiro.
  • Ajuste Fino: Usou 240 mil amostras, com uma combinação de dados médicos e de instruções gerais.
  • Domínio de Foco: Respostas a perguntas relacionadas à saúde, sintomas médicos e orientações gerais.

Este modelo foi ajustado para ser mais versátil em cenários não médicos, ao mesmo tempo em que manteve uma capacidade razoável de responder a perguntas do domínio médico.

O ajuste fino foi feito com 33% de dados médicos e 67% de dados de instruções gerais, permitindo que o modelo mantenha um equilíbrio entre especialização médica e versatilidade em outros domínios.

Dados de Treinamento

O DrBode 240 foi treinado com uma combinação de dois principais conjuntos de dados traduzidos para o português:

  • HealthCareMagic-100k-en: Um conjunto de 100.000 amostras de interações médico-paciente, traduzidas do inglês para o português utilizando o modelo GPT-3.5.
  • MedQuAD: Contém aproximadamente 9.500 pares de perguntas e respostas relacionados à área médica, também traduzidos.

Esses conjuntos de dados fornecem uma base sólida para o modelo responder a perguntas clínicas comuns, mas ainda há a necessidade de dados nativos que abordem condições e nuances culturais específicas do Brasil, como doenças endêmicas.

Além disso, o modelo foi treinado com uma grande quantidade de dados de instruções gerais (67%), retirados de outros domínios, para melhorar sua capacidade de seguir comandos em contextos mais amplos e diversos.

Desempenho do Modelo

O desempenho do DrBode 240 foi avaliado com base em seis critérios principais:

  • Precisão: 3.4/5
  • Completude: 3.4/5
  • Adequação: 3.5/5
  • Segurança: 3.2/5
  • Gramaticalidade: 3.8/5
  • Coerência: 4.2/5
  • O modelo DrBode 240 mostrou-se eficaz em fornecer respostas bem estruturadas e coerentes, com um desempenho confiável em termos de clareza e gramática. No entanto, a precisão médica e a segurança das respostas precisam de mais atenção, já que o modelo é menos especializado em dados médicos do que o DrBode 360.

Avaliação Qualitativa

As respostas geradas pelo DrBode 240 foram avaliadas por profissionais médicos, que analisaram sua capacidade de fornecer informações corretas e seguras. Durante a avaliação, foi observado que o modelo, embora bastante eficaz na construção de respostas coerentes, apresentou algumas limitações em termos de precisão médica, o que reflete o fato de que a maior parte de seu ajuste fino envolveu dados de instruções gerais.

A utilização de mais dados de instruções gerais (67%) fez com que o modelo se saísse melhor em contextos não médicos, mas limitou sua especialização na área da saúde. Isso fez com que o DrBode 240 fosse uma boa escolha para perguntas mais gerais, mas com algumas restrições em contextos clínicos mais críticos.

Riscos e Considerações

Embora o DrBode 240 seja uma ferramenta útil para fornecer orientações gerais sobre saúde, ele deve ser usado com cautela, especialmente em situações médicas delicadas. O modelo não substitui o aconselhamento médico profissional, e erros podem ocorrer ao sugerir tratamentos, especialmente para condições específicas de regiões, como o Brasil.

Além disso, o uso de dados traduzidos pode fazer com que o modelo perca algumas nuances culturais e regionais importantes para a prática médica no Brasil.

Direções futuras

  • Conjuntos de dados nativos: há uma necessidade urgente de desenvolver conjuntos de dados nativos em português brasileiro para refletir melhor os desafios regionais de saúde.
  • Ajuste fino aprimorado: o trabalho futuro envolverá o ajuste fino diretamente no InternLM2 com conjuntos de dados otimizados para mitigar os efeitos do esquecimento catastrófico.
  • Avaliação robusta: estruturas de avaliação mais estruturadas e consistentes são necessárias para avaliar melhor a qualidade e a segurança das respostas do modelo em cenários do mundo real.

Como Usar

Aqui está um exemplo de como usar o modelo DrBode 240:

!pip install -q einops accelerate bitsandbytes

import torch
from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig

# Nosso modelo base
model_name = "recogna-nlp/internlm-chatbode-7b" 

# Configuração para quantização do nosso modelo
compute_dtype = getattr(torch, "float16")
bnb_config = BitsAndBytesConfig(
    load_in_4bit = True,
    bnb_4bit_quant_type = 'nf4',
    bnb_4bit_compute_dtype = compute_dtype,
    bnb_4bit_use_double_quant = False,
)


# Carregando modelo e tokenizer
tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
original_model = AutoModelForCausalLM.from_pretrained(
    model_name,
    quantization_config = bnb_config,
    trust_remote_code = True,
    device_map = 'auto'     
)

original_model = original_model.eval()


# Perguntas mandadas para o Dr Bode
evaluation_inputs = [
    'Apareceram aftas na minha boca e uma amiga disse que posso usar nistatina oral para tratar. Para que serve e como usar nistatina oral? É indicado para tratar aftas?',
    'Estou com dor no corpo, dor de cabeça, febre alta e um forte cansaço. O que pode ser? Devo tomar algum remédio?',
    'Me explique, detalhadamente, qual a diferença entre uma gripe e um resfriado.'
]

## Carregando o Dr Bode
from peft import PeftModel, PeftConfig
model = PeftModel.from_pretrained(original_model, 'recogna-nlp/doutor-bode-7b-240k')
model = model.eval()

## Realizando a inferência e verificando as respostas
for q in evaluation_inputs:
    print(q)
    response, _ = model.chat(tokenizer, q, do_sample=False, history=[])
    print(response)
    print()

Referência

Se você utilizar o DrBode 240 em sua pesquisa ou aplicativo, por favor, cite o seguinte trabalho:

@misc{paiola2024adaptingllmsmedicaldomain,
      title={Adapting LLMs for the Medical Domain in Portuguese: A Study on Fine-Tuning and Model Evaluation}, 
      author={Pedro Henrique Paiola and Gabriel Lino Garcia and João Renato Ribeiro Manesco and Mateus Roder and Douglas Rodrigues and João Paulo Papa},
      year={2024},
      eprint={2410.00163},
      archivePrefix={arXiv},
      primaryClass={cs.CL},
      url={https://arxiv.org/abs/2410.00163}, 
}