Me LLaMA stellt eine bahnbrechende Suite medizinischer Large Language Models (LLMs) auf Open-Source-Basis vor, darunter die Basismodelle Me LLaMA 13B/70B und ihre Chat-erweiterten Versionen Me LLaMA 13B-chat/70B-chat. Diese Modelle wurden durch die innovative kontinuierliche Vorschulung und Schulungsoptimierung von LLaMA2 entwickelt und nutzen einen umfangreichen medizinischen Korpus. Dieses Korpus umfasst ausgewählte PubMed-Artikel und Abstracts, einen neuartigen Datensatz international anerkannter medizinischer Leitlinien und ein allgemeines Domänenkorpus und positioniert Me LLaMA an der Spitze der medizinischen KI-Forschung.
Mit seinen domänenspezifischen Weiterentwicklungen setzt Me LLaMA neue Maßstäbe für ein breites Spektrum medizinischer Argumentationsaufgaben. Dies macht Me LLaMA zu einem bedeutenden Vorteil für medizinische NLP-Anwendungen und -Forschung.
Der Code, die Datensätze und die Modelle stehen für die nichtkommerzielle Nutzung zur Verfügung.
Diese Software und dieses Modell werden „wie besehen“ bereitgestellt, ohne ausdrückliche oder stillschweigende Garantien jeglicher Art, einschließlich, aber nicht beschränkt auf die Garantien der Marktgängigkeit, der Eignung für einen bestimmten Zweck und der Nichtverletzung von Rechten Dritter. In keinem Fall haften die Autoren, Mitwirkenden oder Urheberrechtsinhaber für Ansprüche, Schäden oder sonstige Haftung, sei es im Rahmen einer vertraglichen, unerlaubten Handlung oder auf andere Weise, die sich aus, aus oder im Zusammenhang mit der Software oder der Software ergeben Nutzung oder sonstiger Umgang mit der Software.
Die Me LLaMA-Modelle sind Forschungswerkzeuge für den Einsatz im Bereich der Computerlinguistik und Medizin. Ohne entsprechende Validierung und behördliche Genehmigung sind sie nicht dazu gedacht, als Diagnoseinstrumente oder für die klinische Entscheidungsfindung verwendet zu werden. Benutzer der Me LLaMA-Modelle sollten sich ihrer Verantwortung bewusst sein, die ethische und angemessene Nutzung dieser Technologie sicherzustellen, einschließlich der Einhaltung aller geltenden gesetzlichen und behördlichen Anforderungen.
Die mit den Modellen bereitgestellten Inhalte und Daten ersetzen nicht das Fachwissen von medizinischem Fachpersonal. Angehörige der Gesundheitsberufe sollten bei der Bewertung der Ergebnisse der Me LLaMA-Modelle ihr professionelles Urteilsvermögen nutzen. Patienten sollten die Modellergebnisse nicht zur Selbstdiagnose oder Behandlung verwenden, ohne einen qualifizierten Gesundheitsdienstleister zu konsultieren. Die Informationen sind nicht für die klinische Entscheidungsfindung bestimmt, nicht für die Diagnose oder Behandlung von Patienten bestimmt und möglicherweise für keinen klinischen Zweck nützlich oder geeignet.
Darüber hinaus ist es Benutzern ausdrücklich untersagt, Ergebnisse der Me LLaMA-Modelle ohne ausdrückliche Genehmigung der Autoren zu teilen oder weiterzuverbreiten. Dies umfasst unter anderem die Veröffentlichung, Verbreitung oder Zugänglichmachung der generierten Ergebnisse an Dritte in jeglicher Form, sei es für kommerzielle Zwecke oder nicht. Diese Einschränkung wurde eingeführt, um einen verantwortungsvollen Umgang mit der Technologie zu gewährleisten und die mit den Modellen und ihren Ergebnissen verbundenen geistigen Eigentumsrechte zu respektieren. Ein Verstoß gegen diese Bedingungen kann zu rechtlichen Schritten und zum Entzug des Zugangs zu den Modellen führen.
Die Entwicklung von Me LLaMA umfasste einen sorgfältigen Prozess der kontinuierlichen Vorschulung und Instruktionsoptimierung der LLaMA2-Modelle, wobei umfangreiche 129B-Tokens und 214.000 Instruktionsoptimierungsbeispiele aus einer Vielzahl allgemeiner, biomedizinischer und klinischer Bereiche einbezogen wurden. Dieser umfassende Ansatz zielte darauf ab, domänenspezifisches Wissen mit einem breiteren Verständnis des allgemeinen Kontexts in Einklang zu bringen und so katastrophale Probleme des Vergessens wirksam zu mildern.
Der gemischte kontinuierliche Pre-Training-Datensatz, bestehend aus 129B-Tokens, umfasst eine breite Palette biomedizinischer Literatur, klinischer Notizen und allgemeiner Domänendaten. Dieser Datensatz soll einen tiefen Fokus auf medizinisches Fachwissen gewährleisten und gleichzeitig ein breites Spektrum an Allgemeinwissen einbeziehen. Die Zusammensetzung des Datensatzes umfasst:
Bei der Vorschulung wurde ein Verhältnis von 15:1:4 für biomedizinische, klinische und allgemeine Domänendaten verwendet, um einen starken medizinischen Fokus beizubehalten und gleichzeitig das Verständnis des Modells zu erweitern.
Die Me LLaMA-Modelle 13B und 70B wurden durch kontinuierliche Vorschulung und Schulungsoptimierung auf dem HiPerGator-Supercomputer der University of Florida entwickelt, der mit 160 A100 80-GB-GPUs ausgestattet ist. Ziel des Prozesses war es, die LLaMA2-Modelle für ein besseres Verständnis und die Generierung medizinisch relevanter Texte anzupassen. Das Trainingsprogramm umfasste:
Nach der Vortrainingsphase wurden die Me LLaMA-Modelle einer Anweisungsoptimierung mit 8 H100-GPUs für 3 Epochen unterzogen, wobei eine Lernrate von 1e-5 zum Einsatz kam. Diese Phase konzentrierte sich auf die Verfeinerung der Fähigkeit der Modelle, Anweisungen zu befolgen und über medizinische Aufgaben hinweg zu verallgemeinern, wobei LoRA-basierte Parameter-effiziente Feinabstimmung für eine verbesserte Leistung genutzt wurde.
Dieses detaillierte Schulungsverfahren unterstreicht den umfassenden Ansatz bei der Entwicklung von Me LLaMA-Modellen, bei dem fortschrittliche Rechenressourcen und Methoden genutzt werden, um modernste Leistung im medizinischen Bereich zu erzielen.
Um das Me LLaMA-Modell lokal zu nutzen, erwerben Sie zunächst die erforderlichen Modelldateien aus unserem PhysioNet-Projekt.
Stellen Sie zunächst sicher, dass sowohl die torch
als auch die transformers
-Bibliothek in Ihrer Python-Umgebung installiert sind. Diese Bibliotheken werden für die Arbeit mit dem Modell benötigt.
Für die einfache Textgenerierung verwenden Sie eine Pipeline aus der transformers
-Bibliothek. Diese Methode vereinfacht den Prozess der Textgenerierung. So können Sie es einrichten:
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 )
Dieser Codeausschnitt zeigt, wie Text basierend auf einer Eingabeaufforderung generiert wird. Das Argument num_return_sequences=1
gibt an, dass Sie eine Textsequenz generieren möchten.
Für Aufgaben, die mehr Anpassungs- oder Feinabstimmungsfunktionen erfordern, bevorzugen Sie möglicherweise das direkte Laden des Tokenizers und des Modells. Dieser Ansatz gibt Ihnen mehr Kontrolle über den Textgenerierungsprozess und ermöglicht Ihnen die Anpassung von Parametern wie der maximalen Länge des generierten Texts. Hier ist ein detaillierteres Beispiel:
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 )
Dieses Setup ermöglicht differenziertere Interaktionen mit dem Modell, z. B. die Feinabstimmung bestimmter Datensätze oder die Änderung der Generierungsparameter für verschiedene Ausgaben. Denken Sie daran, „[INPUT SENTENCE]“ durch den Satz oder die Eingabeaufforderung zu ersetzen, die das Modell erweitern oder auf die es antworten soll.
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
Bitte laden Sie vor der Auswertung den BART-Checkpoint auf src/metrics/BARTScore/bart_score.pth
herunter.
Für eine automatisierte Auswertung folgen Sie bitte dieser Anleitung:
Huggingface-Transformator
Um ein auf dem HuggingFace Hub gehostetes Modell zu bewerten (z. B. llama2-7b-hf), ändern Sie diesen Befehl in 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 "
Führen Sie dann den Bash-Befehl aus:
bash scripts/run_evaluation.sh
Weitere Details finden Sie in der lm_eval-Dokumentation.
Führen Sie die gleichen Schritte wie bei den Open-Source-Modellen aus, ändern Sie zunächst die Bash-Datei mit:
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 "
Bitte beachten Sie, dass bei Aufgaben wie NER die automatisierte Auswertung auf einem bestimmten Muster basiert. Dadurch gelingt es möglicherweise nicht, relevante Informationen in Zero-Shot-Einstellungen zu extrahieren, was zu einer relativ geringeren Leistung im Vergleich zu früheren, von Menschen kommentierten Ergebnissen führt.
@misc{xie2024llama, title={Me LLaMA: Foundation Large Language Models for Medical Applications}, Autor={Qianqian Xie und Qingyu Chen und Aokun Chen und Cheng Peng und Yan Hu und Fongci Lin und Xueqing Peng und Jimin Huang und Jeffrey Zhang und Vipina Keloth und Huan He und Lucila Ohno-Machido und Yonghui Wu und Hua Xu und Jiang Bian} , Jahr={2024}, eprint={2402.12749}, archivePrefix={arXiv}, PrimaryClass={cs.CL} }