Me LLaMA 推出了一套突破性的开源医学大语言模型 (LLM),包括基础模型 Me LLaMA 13B/70B 及其聊天增强版本 Me LLaMA 13B-chat/70B-chat。这些模型通过 LLaMA2 创新的持续预训练和指令调整而开发,利用了庞大的医学语料库。该语料库包含精选的 PubMed 论文和摘要、国际公认的医学指南的新颖数据集以及通用领域语料库,使 Me LLaMA 处于医学人工智能研究的前沿。
凭借其特定领域的进步,Me LLaMA 为广泛的医学推理任务树立了新的基准。这使得 Me LLaMA 成为医学 NLP 应用和研究的重要资产。
代码、数据集和模型可用于非商业用途。
本软件和模型按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、特定用途的适用性和不侵权的保证。在任何情况下,作者、贡献者或版权持有者均不对因本软件或本软件或本软件或本软件或本软件而引起、或与之相关的任何索赔、损害或其他责任负责,无论是合同诉讼、侵权诉讼还是其他诉讼。使用软件或进行其他交易。
Me LLaMA 模型是用于计算语言学和医学领域的研究工具。未经适当的验证和监管批准,它们不得用作诊断工具或用于临床决策。 Me LLaMA 模型的用户应了解自己的责任,以确保以合乎道德且适当的方式使用该技术,包括遵守任何适用的法律和监管要求。
模型提供的内容和数据不能取代医疗保健专业人员的专业知识。医疗保健专业人员应运用他们的专业判断来评估 Me LLaMA 模型的输出。在未咨询合格的医疗保健提供者的情况下,患者不应使用模型输出进行自我诊断或治疗。该信息不用于临床决策,不用于患者的诊断或治疗,并且可能对任何临床目的没有用处或不合适。
此外,未经作者明确许可,明确禁止用户共享或重新分发 Me LLaMA 模型生成的任何输出。这包括但不限于以任何形式发布、分发或将生成的输出提供给第三方,无论是否用于商业目的。制定此限制是为了确保负责任地使用该技术并尊重与模型及其输出相关的知识产权。违反这些条款可能会导致法律诉讼并撤销对模型的访问权限。
Me LLaMA 的开发涉及 LLaMA2 模型的持续预训练和指令调整的细致过程,包含来自各种普通、生物医学和临床领域的广泛 129B 令牌和 214K 指令调整样本。这种综合方法旨在平衡特定领域的知识与对一般背景的更广泛的理解,从而有效地减轻灾难性遗忘问题。
混合连续预训练数据集包含 129B 个标记,包括广泛的生物医学文献、临床记录和一般领域数据。该数据集旨在确保深度关注医学领域知识,同时融入广泛的常识。该数据集的组成包括:
预训练对生物医学、临床和一般领域数据采用了 15:1:4 的比例,旨在保持对医学的强烈关注,同时拓宽模型的理解。
Me LLaMA 模型 13B 和 70B 是在配备 160 个 A100 80GB GPU 的佛罗里达大学 HiPerGator 超级计算机上通过持续预训练和指令调整而开发的。该过程旨在调整 LLaMA2 模型,以增强对医学相关文本的理解和生成。训练方案涉及:
在预训练阶段之后,Me LLaMA 模型使用 8 个 H100 GPU 进行了 3 个周期的指令调整,学习率为 1e-5。此阶段的重点是完善模型遵循指令和泛化医疗任务的能力,利用基于 LoRA 的参数高效微调来增强性能。
这一详细的训练程序强调了开发 Me LLaMA 模型时所采用的综合方法,利用先进的计算资源和方法来实现医疗领域最先进的性能。
要在本地使用 Me LLaMA 模型,首先从我们的 PhysioNet 项目获取必要的模型文件。
首先,确保您的 Python 环境中安装了torch
和transformers
库。使用模型需要这些库。
对于基本文本生成,您将使用transformers
库中的管道。该方法简化了生成文本的过程。设置方法如下:
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 )
此代码片段演示了如何根据提示生成文本。 num_return_sequences=1
参数指定您要生成一个文本序列。
对于需要更多自定义或微调功能的任务,您可能更喜欢直接加载分词器和模型。这种方法使您可以更好地控制文本生成过程,允许您调整生成文本的最大长度等参数。这是一个更详细的示例:
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 )
此设置允许与模型进行更细致的交互,例如对特定数据集进行微调或修改不同输出的生成参数。请记住将“[INPUT SENTENCE]”替换为您希望模型扩展或响应的句子或提示。
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
在评估之前,请将 BART 检查点下载到src/metrics/BARTScore/bart_score.pth
。
对于自动评估,请遵循以下说明:
抱脸变压器
要评估 HuggingFace Hub 上托管的模型(例如 llama2-7b-hf),请在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 "
然后运行bash命令:
bash scripts/run_evaluation.sh
更多详细信息可以在 lm_eval 文档中找到。
执行与开源模型相同的步骤,首先使用以下命令更改 bash 文件:
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 "
请注意,对于 NER 等任务,自动评估是基于特定模式的。这可能无法在零样本设置中提取相关信息,从而导致与之前的人工注释结果相比性能相对较低。
@misc{xie2024llama, title={Me LLaMA:医疗应用的基础大型语言模型}, 作者={谢倩倩、陈庆宇、陈奥坤、彭程、胡彦、林凤慈、彭学清、黄济民、张杰弗里、Vipina Keloth、何欢、Lucila Ohno-Machido、吴永辉、徐华、边江} , 年={2024}, eprint={2402.12749}, archivePrefix={arXiv}, PrimaryClass={cs.CL} }