Me LLaMA apresenta um conjunto inovador de Large Language Models (LLMs) médicos de código aberto, incluindo os modelos básicos Me LLaMA 13B/70B e suas versões aprimoradas de chat, Me LLaMA 13B-chat/70B-chat. Desenvolvidos através do inovador pré-treinamento contínuo e ajuste de instrução do LLaMA2, esses modelos alavancam um vasto corpus médico. Este corpus abrange artigos e resumos selecionados do PubMed, um novo conjunto de dados de diretrizes médicas reconhecidas internacionalmente e um corpus de domínio geral, posicionando o Me LLaMA na vanguarda da pesquisa médica em IA.
Com seus avanços específicos de domínio, o Me LLaMA estabelece novos padrões em uma ampla gama de tarefas de raciocínio médico. Isso torna o Me LLaMA um ativo significativo para aplicações e pesquisas médicas de PNL.
O código, conjuntos de dados e modelos estão disponíveis para uso não comercial.
Este software e modelo são fornecidos "no estado em que se encontram", sem garantia de qualquer tipo, expressa ou implícita, incluindo, entre outras, garantias de comercialização, adequação a uma finalidade específica e não violação. Em nenhum caso os autores, contribuidores ou detentores de direitos autorais serão responsáveis por qualquer reclamação, dano ou outra responsabilidade, seja em uma ação contratual, ilícita ou de outra forma, decorrente de, de ou em conexão com o software ou o uso ou outras transações no software.
Os modelos Me LLaMA são ferramentas de pesquisa destinadas ao uso na área de linguística computacional e medicina. Não se destinam a ser utilizados como ferramentas de diagnóstico ou para tomada de decisões clínicas sem validação adequada e aprovação regulamentar. Os usuários dos modelos Me LLaMA devem estar cientes de suas responsabilidades para garantir o uso ético e apropriado desta tecnologia, incluindo a adesão a quaisquer requisitos legais e regulamentares aplicáveis.
O conteúdo e os dados fornecidos com os modelos não substituem a experiência dos profissionais de saúde. Os profissionais de saúde devem utilizar o seu julgamento profissional na avaliação dos resultados dos modelos Me LLaMA. Os pacientes não devem usar os resultados do modelo para autodiagnóstico ou tratamento sem consultar um profissional de saúde qualificado. A informação não se destina à tomada de decisão clínica, não se destina a ser utilizada no diagnóstico ou tratamento de pacientes e pode não ser útil ou apropriada para qualquer finalidade clínica.
Além disso, os usuários estão expressamente proibidos de compartilhar ou redistribuir quaisquer resultados gerados a partir dos modelos Me LLaMA sem permissão explícita dos autores. Isto inclui, mas não está limitado a, publicar, distribuir ou disponibilizar os resultados gerados a terceiros sob qualquer forma, seja para fins comerciais ou não. Esta restrição é implementada para garantir o uso responsável da tecnologia e para respeitar os direitos de propriedade intelectual associados aos modelos e aos seus resultados. A violação destes termos pode resultar em ação legal e revogação do acesso aos modelos.
O desenvolvimento do Me LLaMA envolveu um processo meticuloso de pré-treinamento contínuo e ajuste de instruções dos modelos LLaMA2, incorporando extensos tokens de 129B e amostras de ajuste de instruções de 214K de uma ampla gama de domínios gerais, biomédicos e clínicos. Esta abordagem abrangente teve como objectivo equilibrar o conhecimento específico do domínio com uma compreensão mais ampla do contexto geral, mitigando assim eficazmente problemas de esquecimento catastróficos.
O conjunto misto de dados de pré-treinamento contínuo, composto por tokens 129B, inclui uma ampla gama de literatura biomédica, notas clínicas e dados de domínio geral. Este conjunto de dados foi projetado para garantir um foco profundo no conhecimento do domínio médico, ao mesmo tempo que incorpora um amplo espectro de conhecimento geral. A composição do conjunto de dados inclui:
O pré-treinamento utilizou uma proporção de 15:1:4 para dados biomédicos, clínicos e de domínio geral, com o objetivo de manter um forte foco médico e, ao mesmo tempo, ampliar a compreensão do modelo.
Os modelos Me LLaMA, 13B e 70B, foram desenvolvidos através de pré-treinamento contínuo e ajuste de instrução no supercomputador HiPerGator da Universidade da Flórida, equipado com 160 GPUs A100 de 80 GB. O processo teve como objetivo adaptar os modelos LLaMA2 para melhorar a compreensão e geração de textos clinicamente relevantes. O regime de treinamento envolveu:
Após a fase de pré-treinamento, os modelos Me LLaMA passaram por ajuste de instrução usando 8 GPUs H100 por 3 épocas, empregando uma taxa de aprendizado de 1e-5. Esta fase se concentrou em refinar a capacidade dos modelos de seguir instruções e generalizar entre tarefas médicas, utilizando ajuste fino com eficiência de parâmetros baseado em LoRA para melhorar o desempenho.
Este procedimento de treinamento detalhado ressalta a abordagem abrangente adotada no desenvolvimento de modelos Me LLaMA, aproveitando recursos e metodologias computacionais avançadas para alcançar desempenho de última geração no domínio médico.
Para utilizar o modelo Me LLaMA localmente, comece adquirindo os arquivos de modelo necessários do nosso projeto PhysioNet.
Primeiro, certifique-se de que as bibliotecas torch
e transformers
estejam instaladas em seu ambiente Python. Essas bibliotecas são necessárias para trabalhar com o modelo.
Para geração de texto básico, você utilizará um pipeline da biblioteca transformers
. Este método simplifica o processo de geração de texto. Veja como você pode configurá-lo:
from transformers import pipeline
# Ensure you replace "FOLDER_PATH_TO_MODEL" with the actual path to your model files.
pipe = pipeline ( "text-generation" , model = "FOLDER_PATH_TO_MODEL" )
# Example usage for generating text.
generated_text = pipe ( "The medical condition is characterized by" , num_return_sequences = 1 )
print ( generated_text )
Este trecho de código demonstra como gerar texto com base em um prompt. O argumento num_return_sequences=1
especifica que você deseja gerar uma sequência de texto.
Para tarefas que exigem mais recursos de personalização ou ajuste fino, talvez você prefira carregar diretamente o tokenizer e o modelo. Essa abordagem oferece mais controle sobre o processo de geração de texto, permitindo ajustar parâmetros como o comprimento máximo do texto gerado. Aqui está um exemplo mais detalhado:
from transformers import AutoTokenizer , AutoModelForCausalLM
# Load the tokenizer and model from your local model directory.
# Don't forget to replace "FOLDER_PATH_TO_MODEL" with the actual path to your model files.
tokenizer = AutoTokenizer . from_pretrained ( "FOLDER_PATH_TO_MODEL" )
model = AutoModelForCausalLM . from_pretrained ( "FOLDER_PATH_TO_MODEL" )
# Tokenizing input text for the model.
input_ids = tokenizer ( "[INPUT SENTENCE]" , return_tensors = "pt" ). input_ids
# Generating output based on the input_ids.
# You can adjust the max_length parameter as necessary for your use case.
generated_tokens = model . generate ( input_ids , max_length = 50 )
# Decoding the generated tokens to produce readable text.
generated_text = tokenizer . decode ( generated_tokens [ 0 ], skip_special_tokens = True )
print ( generated_text )
Essa configuração permite interações mais diferenciadas com o modelo, como ajuste fino em conjuntos de dados específicos ou modificação dos parâmetros de geração para diferentes resultados. Lembre-se de substituir "[INPUT SENTENCE]" pela frase ou prompt que você deseja que o modelo expanda ou responda.
git clone [email protected]:BIDS-Xu-Lab/Me-LLaMA.git --recursive
cd Me-LLaMA
pip install poetry
poetry install
cd src/medical-evaluation
poetry run pip install -e .[multilingual]
poetry run python -m spacy download en_core_web_lg
Antes da avaliação, baixe o ponto de verificação BART para src/metrics/BARTScore/bart_score.pth
.
Para avaliação automatizada, siga estas instruções:
Abraçando o Transformador
Para avaliar um modelo hospedado no HuggingFace Hub (por exemplo, llama2-7b-hf), altere este comando em scripts/run_evaluation.sh
:
poetry run python src/eval.py
--model " hf-causal-vllm "
--model_args " use_accelerate=True,pretrained=meta-llama/Llama-2-7b-chat-hf,use_fast=False "
--tasks " PUBMEDQA,MedQA,MedMCQA,EmrQA,i2b2,DDI2013,hoc,MTSample,PUBMEDSUM,MimicSum,BioNLI,MedNLI "
Em seguida, execute o comando bash:
bash scripts/run_evaluation.sh
Mais detalhes podem ser encontrados na documentação do lm_eval.
Execute as mesmas etapas dos modelos de código aberto, primeiro para alterar o arquivo bash com:
export OPENAI_API_SECRET_KEY=YOUR_KEY_HERE
poetry run python src/eval.py
--model gpt-4
--tasks " PUBMEDQA,MedQA,MedMCQA,EmrQA,i2b2,DDI2013,hoc,MTSample,PUBMEDSUM,MimicSum,BioNLI,MedNLI "
Observe que para tarefas como o NER, a avaliação automatizada é baseada em um padrão específico. Isso pode falhar na extração de informações relevantes em configurações de disparo zero, resultando em um desempenho relativamente inferior em comparação com resultados anteriores anotados por humanos.
@misc{xie2024llama, title={Me LLaMA: Fundamentos de grandes modelos de linguagem para aplicações médicas}, autor = {Qianqian Xie e Qingyu Chen e Aokun Chen e Cheng Peng e Yan Hu e Fongci Lin e Xueqing Peng e Jimin Huang e Jeffrey Zhang e Vipina Keloth e Huan He e Lucila Ohno-Machido e Yonghui Wu e Hua Xu e Jiang Bian} , ano={2024}, eprint={2402.12749}, archivePrefix={arXiv}, classeprimária={cs.CL} }