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

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

Bode Logo

Visão Geral

DrBode 360k é um modelo de linguagem de grande porte (LLM) ajustado para atuar como um assistente virtual médico em português brasileiro. Este modelo foi criado com o objetivo de fornecer respostas relevantes e confiáveis para perguntas relacionadas à saúde, sendo uma ferramenta útil para profissionais de saúde e pacientes. Ele foi treinado com 360 mil amostras, combinando dados médicos e de instruções gerais, o que melhora sua capacidade de responder a perguntas tanto em contextos médicos quanto em outros cenários de uso.

Descrição do Modelo

O DrBode 360k é uma versão aprimorada do modelo ChatBode, que, por sua vez, é baseado no InternLM2. O DrBode 360 foi ajustado utilizando uma abordagem que combina dados médicos e dados gerais de instruções, permitindo que ele tenha um bom desempenho tanto em perguntas diretamente relacionadas à medicina quanto em questões mais amplas que requerem capacidade de seguir instruções.

Atributos principais:

  • Modelo Base: ChatBode, ajustado para seguir instruções em português brasileiro.
  • Ajuste Fino: Utiliza uma combinação de dados médicos e de instruções, com 360 mil amostras no total.
  • Domínio de Foco: Perguntas sobre saúde, sintomas médicos e recomendações gerais.

O ajuste fino foi feito com 50% de dados médicos e 50% 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 360 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 DrBode 360 utilizou dados adicionais de instruções gerais para melhorar sua capacidade de seguir comandos e responder adequadamente em cenários que vão além do domínio médico.

Desempenho do Modelo

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

  • Precisão: 3.6/5
  • Completude: 3.3/5
  • Adequação: 3.3/5
  • Segurança: 3.3/5
  • Gramaticalidade: 4.2/5
  • Coerência: 4.2/5
  • O DrBode 360 se destacou na capacidade de fornecer respostas gramaticalmente corretas e coerentes, o que é fundamental para garantir a clareza na comunicação. No entanto, a segurança das respostas médicas e a precisão ainda precisam de aprimoramentos, especialmente em contextos críticos onde recomendações médicas inadequadas podem ser feitas.

Avaliação Qualitativa

As respostas geradas pelo DrBode 360 foram avaliadas por profissionais médicos, que julgaram a qualidade das respostas com base nos seguintes critérios:

  • Precisão e segurança das informações fornecidas.
  • Completude, considerando a profundidade das respostas.
  • Adequação em termos de estilo e tom, apropriados para uma resposta médica.

ATENÇÃO

Embora o DrBode 360 tenha mostrado bom desempenho em muitos aspectos, foi identificado que o modelo pode, ocasionalmente, sugerir tratamentos que não são ideais, especialmente para condições regionais específicas, como o uso inadequado de medicamentos para sintomas de dengue. Isso demonstra a necessidade de melhorias nos dados de treinamento para lidar melhor com esses casos.

Riscos e Considerações

O uso do DrBode 360 deve ser feito com cautela, especialmente em contextos onde as respostas fornecidas podem ter implicações diretas na saúde dos usuários. Embora o modelo seja útil como assistente informativo, ele não deve substituir a consulta com profissionais de saúde qualificados.

Além disso, devido ao treinamento com dados traduzidos, algumas nuances regionais e culturais podem ser perdidas, o que pode levar a respostas inadequadas para condições médicas específicas do 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 360:

!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-360k')
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 360 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}, 
}