|
--- |
|
library_name: peft |
|
base_model: recogna-nlp/internlm-chatbode-7b |
|
--- |
|
|
|
# DrBode 240: Assistente Virtual Médico em Português Brasileiro |
|
|
|
<p align="center"> |
|
<img src="https://huggingface.co/recogna-nlp/doutor-bode-7b-360k/resolve/main/Logo_DrBode.jpg" alt="Bode Logo" width="400" style="margin-left:'auto' margin-right:'auto' display:'block'"/> |
|
</p> |
|
|
|
|
|
## 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. |
|
|
|
|
|
<!-- Provide a quick summary of what the model is/does. --> |
|
|
|
|
|
|
|
## Descrição do Modelo |
|
|
|
O **DrBode 240** foi desenvolvido a partir do modelo [ChatBode](https://huggingface.co/recogna-nlp/internlm-chatbode-7b), uma versão ajustada do [InternLM2](https://huggingface.co/internlm/internlm2-chat-7b) 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. |
|
|
|
|
|
<!-- Provide a longer summary of what this model is. --> |
|
|
|
## 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:** |
|
|
|
```python |
|
!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}, |
|
} |
|
``` |
|
|
|
|