Me LLaMA presenta un conjunto innovador de modelos de lenguaje grande (LLM) médicos de código abierto, incluidos los modelos básicos Me LLaMA 13B/70B y sus versiones mejoradas con chat, Me LLaMA 13B-chat/70B-chat. Desarrollados a través del innovador preentrenamiento continuo y el ajuste de instrucción de LLaMA2, estos modelos aprovechan un vasto corpus médico. Este corpus abarca artículos y resúmenes seleccionados de PubMed, un nuevo conjunto de datos de directrices médicas reconocidas internacionalmente y un corpus de dominio general, lo que posiciona a Me LLaMA a la vanguardia de la investigación médica en IA.
Con sus avances en dominios específicos, Me LLaMA establece nuevos puntos de referencia en una amplia gama de tareas de razonamiento médico. Esto convierte a Me LLaMA en un activo importante para las aplicaciones e investigaciones médicas de PNL.
El código, los conjuntos de datos y los modelos están disponibles para uso no comercial.
Este software y modelo se proporcionan "tal cual", sin garantía de ningún tipo, expresa o implícita, incluidas, entre otras, las garantías de comerciabilidad, idoneidad para un propósito particular y no infracción. En ningún caso los autores, contribuyentes o titulares de derechos de autor serán responsables de ningún reclamo, daño u otra responsabilidad, ya sea en una acción contractual, agraviada o de otro tipo, que surja de, fuera de o en conexión con el software o el uso u otras transacciones en el software.
Los modelos Me LLaMA son herramientas de investigación destinadas a su uso en el campo de la lingüística y la medicina computacional. No están destinados a ser utilizados como herramientas de diagnóstico ni para la toma de decisiones clínicas sin la validación y aprobación regulatoria adecuadas. Los usuarios de los modelos Me LLaMA deben ser conscientes de sus responsabilidades para garantizar el uso ético y apropiado de esta tecnología, incluido el cumplimiento de los requisitos legales y reglamentarios aplicables.
El contenido y los datos proporcionados con los modelos no reemplazan la experiencia de los profesionales de la salud. Los profesionales de la salud deben utilizar su criterio profesional al evaluar los resultados de los modelos Me LLaMA. Los pacientes no deben utilizar los resultados del modelo para autodiagnóstico o tratamiento sin consultar a un proveedor de atención médica calificado. La información no está destinada a la toma de decisiones clínicas, no está destinada a ser utilizada en el diagnóstico o tratamiento de pacientes y puede no ser útil o apropiada para ningún propósito clínico.
Además, los usuarios tienen expresamente prohibido compartir o redistribuir cualquier resultado generado a partir de los modelos Me LLaMA sin el permiso explícito de los autores. Esto incluye, entre otros, publicar, distribuir o poner los resultados generados a disposición de terceros en cualquier forma, ya sea con fines comerciales o no. Esta restricción se implementa para garantizar el uso responsable de la tecnología y respetar los derechos de propiedad intelectual asociados con los modelos y sus resultados. La violación de estos términos puede resultar en acciones legales y la revocación del acceso a los modelos.
El desarrollo de Me LLaMA implicó un proceso meticuloso de preentrenamiento continuo y ajuste de instrucciones de los modelos LLaMA2, incorporando una extensa cantidad de tokens 129B y muestras de ajuste de instrucciones de 214K de una amplia gama de dominios generales, biomédicos y clínicos. Este enfoque integral tenía como objetivo equilibrar el conocimiento de un dominio específico con una comprensión más amplia del contexto general, mitigando así de manera efectiva los problemas de olvido catastróficos.
El conjunto de datos mixto de preentrenamiento continuo, que comprende 129 mil millones de tokens, incluye una amplia gama de literatura biomédica, notas clínicas y datos de dominio general. Este conjunto de datos está diseñado para garantizar un enfoque profundo en el conocimiento del dominio médico al tiempo que incorpora un amplio espectro de conocimientos generales. La composición del conjunto de datos incluye:
La capacitación previa utilizó una proporción de 15:1:4 para datos biomédicos, clínicos y de dominio general, con el objetivo de mantener un fuerte enfoque médico y al mismo tiempo ampliar la comprensión del modelo.
Los modelos Me LLaMA, 13B y 70B, se desarrollaron mediante capacitación previa continua y ajuste de instrucciones en la supercomputadora HiPerGator de la Universidad de Florida, equipada con 160 GPU A100 de 80 GB. El proceso tuvo como objetivo adaptar los modelos LLaMA2 para mejorar la comprensión y generación de textos médicamente relevantes. El régimen de entrenamiento implicó:
Después de la fase de preentrenamiento, los modelos Me LLaMA se sometieron a un ajuste de instrucciones utilizando 8 GPU H100 durante 3 épocas, empleando una tasa de aprendizaje de 1e-5. Esta fase se centró en refinar la capacidad de los modelos para seguir instrucciones y generalizar en tareas médicas, utilizando un ajuste eficiente de parámetros basado en LoRA para mejorar el rendimiento.
Este procedimiento de capacitación detallado subraya el enfoque integral adoptado en el desarrollo de modelos Me LLaMA, aprovechando metodologías y recursos computacionales avanzados para lograr un rendimiento de vanguardia en el dominio médico.
Para utilizar el modelo Me LLaMA localmente, comience adquiriendo los archivos de modelo necesarios de nuestro proyecto PhysioNet.
Primero, asegúrese de que las bibliotecas torch
y transformers
estén instaladas en su entorno Python. Estas bibliotecas son necesarias para trabajar con el modelo.
Para la generación de texto básico, empleará una canalización de la biblioteca transformers
. Este método simplifica el proceso de generación de texto. Así es como puedes configurarlo:
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 fragmento de código demuestra cómo generar texto basándose en un mensaje. El argumento num_return_sequences=1
especifica que desea generar una secuencia de texto.
Para tareas que requieren más personalización o capacidades de ajuste, es posible que prefiera cargar directamente el tokenizador y el modelo. Este enfoque le brinda más control sobre el proceso de generación de texto, permitiéndole ajustar parámetros como la longitud máxima del texto generado. Aquí hay un ejemplo más detallado:
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 )
Esta configuración permite interacciones más matizadas con el modelo, como ajustes en conjuntos de datos específicos o modificación de los parámetros de generación para diferentes resultados. Recuerde reemplazar "[INGRESAR ORACIÓN]" con la oración o mensaje que desea que el modelo amplíe o 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 de la evaluación, descargue el punto de control de BART en src/metrics/BARTScore/bart_score.pth
.
Para una evaluación automatizada, siga estas instrucciones:
Transformador Huggingface
Para evaluar un modelo alojado en HuggingFace Hub (por ejemplo, llama2-7b-hf), cambie este comando en 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 "
Luego ejecute el comando bash:
bash scripts/run_evaluation.sh
Se pueden encontrar más detalles en la documentación de lm_eval.
Realice los mismos pasos que los modelos de código abierto, primero para cambiar el archivo bash con:
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 "
Tenga en cuenta que, para tareas como NER, la evaluación automatizada se basa en un patrón específico. Es posible que esto no pueda extraer información relevante en configuraciones de disparo cero, lo que resulta en un rendimiento relativamente menor en comparación con resultados anteriores anotados por humanos.
@misc{xie2024llama, title={Me LLaMA: Modelos básicos de lenguaje grande para aplicaciones médicas}, autor = {Qianqian Xie y Qingyu Chen y Aokun Chen y Cheng Peng y Yan Hu y Fongci Lin y Xueqing Peng y Jimin Huang y Jeffrey Zhang y Vipina Keloth y Huan He y Lucila Ohno-Machido y Yonghui Wu y Hua Xu y Jiang Bian} , año={2024}, eprint={2402.12749}, archivePrefix={arXiv}, clase primaria={cs.CL} }