Einführung in die Anpassung von LLMs
In den letzten Jahren haben rasante Fortschritte in der künstlichen Intelligenz zur Entwicklung großer Sprachmodelle (LLMs) geführt und das Feld der Verarbeitung natürlicher Sprache (NLP) revolutioniert. Diese leistungsstarken Modelle, wie ChatGPT, Llama, Mistral, Zephyr und andere, haben überlegene Fähigkeiten beim Verstehen und Generieren menschenähnlicher Sprache gezeigt.
Diese LLMs haben jedoch Einschränkungen. Sie werden mit einer großen Datenmenge mit einem bestimmten Stichtag trainiert, was bedeutet, dass wir, wenn wir sie zur Generierung von Antworten verwenden, die Wissen erfordern, das neuer ist als ihre Trainingsdaten, das Risiko eingehen, ungenaue Antworten zu erhalten. Daher ist es unerlässlich, diese Modelle auf unsere spezifischen Aufgaben und Domänen zuzuschneiden, um ihr volles Potenzial auszuschöpfen. Hier kommt die Anpassung von LLMs ins Spiel.
Bei einem kürzlich stattgefundenen Zilliz Unstructured Data Meetup in Seattle diskutierte der CEO von OSS4AI und frühere Senior Developer Advocate von Zilliz, Yujian Tang, mehrere Optionen zur Anpassung von LLMs, um ihre Leistung bei bestimmten Aufgaben zu verbessern. Bevor wir die verschiedenen Anpassungsoptionen für ein LLM besprechen, werfen wir einen kurzen Blick auf die Geschichte der LLMs.
Sehen Sie sich die Aufzeichnung von Yujians Vortrag an
Kurze Geschichte der LLMs
Die Forschung, die zur Entstehung von LLMs führte, hat einen langen Weg zurückgelegt, beginnend mit der grundlegenden Architektur neuronaler Netze. Eine grundlegende Schicht eines neuronalen Netzes besteht aus einer Eingabeschicht, einer oder mehreren verborgenen Schichten und einer Ausgabeschicht, wie in der folgenden Grafik dargestellt.
Architektur neuronaler Netze
Die grundlegende Architektur neuronaler Netze erwies sich als sehr leistungsfähig für Klassifizierungsaufgaben und kann unstrukturierte Daten wie Texte und Bilder verarbeiten. Sie ist jedoch ineffektiv für Aufgaben, die langfristige Abhängigkeiten oder sequenzielle Verarbeitung erfordern, was für Aufgaben der natürlichen Sprache wesentlich ist. In grundlegenden neuronalen Netzen wird jede Eingabe unabhängig verarbeitet, und die Ausgabe wird ausschließlich auf Grundlage der aktuellen Eingabe erzeugt. Das bedeutet, dass neuronale Netze die Reihenfolge oder den Kontext der Eingabe in Bezug auf die gesamte Sequenz nicht berücksichtigen.
Ohne die Fähigkeit, langfristige Abhängigkeiten zu verarbeiten, kann ein neuronales Netz die semantische Bedeutung einer gesamten Eingabesequenz oder eines Textes nicht ableiten—die Einführung rekurrenter neuronaler Netze (RNNs) zielte darauf ab, dieses Problem zu lösen.
RNNs lösen das Problem, indem sie einen verborgenen Zustand einführen, der als Gedächtnis fungiert und Informationen aus dem erfasst, was das Netzwerk zuvor gesehen hat. Dieser verborgene Zustand wird von einem Zeitschritt zum nächsten weitergegeben, sodass das Netzwerk eine Repräsentation der Sequenz aufrechterhalten kann. Das Hinzufügen eines verborgenen Zustands ermöglicht es RNNs, Informationen aus der Eingabesequenz selektiv zu behalten oder zu vergessen, wodurch sie für Abhängigkeiten in Eingabesequenzen effektiver sind als grundlegende neuronale Netze.
RNN-Architektur
RNNs bringen jedoch auch mehrere Einschränkungen mit sich, wie zum Beispiel:
Vanishing-Gradient-Problem: RNNs leiden unter dem Vanishing-Gradient-Problem, bei dem die Gradienten, die während des Trainings zur Aktualisierung der Modellparameter verwendet werden, kleiner werden, während sie durch die Zeit zurückpropagiert werden. Dieses Problem erschwert es RNNs, langfristige Abhängigkeiten in Sequenzen zu lernen.
Sequenzielle Verarbeitung: RNNs verarbeiten Sequenzen sequenziell, was ihre Fähigkeit zur Parallelisierung von Berechnungen einschränkt und sie rechnerisch weniger effizient macht.
Diese Einschränkungen von RNNs führten zur Entwicklung des Transformer, der einen Self-Attention-Mechanismus nutzt, um Eingabesequenzen parallel zu verarbeiten und das Vanishing-Gradient-Problem zu vermeiden.
Transformer-Architektur
Die Transformer-Architektur besteht aus mehreren Encoder- und Decoder-Blöcken. Jeder Encoder- und Decoder-Block enthält eine spezielle Schicht, die als Attention-Schicht bezeichnet wird. Diese Schicht spielt eine entscheidende Rolle bei der Bestimmung der semantischen Bedeutung jedes Tokens in Bezug auf die gesamte Eingabesequenz. Betrachten wir zum Beispiel die folgenden drei Sätze:
Apple erzielte 2023 einen Gewinn von 97 Milliarden US-Dollar
Ich esse gerne Apfelkuchen für Gewinn im Jahr 2023
Apples Endergebnis stieg 2023 um Rekordzahlen
Wenn wir nur einen traditionellen Ansatz verwenden, etwa einen keyword-basierten Ansatz, sind die ersten beiden Sätze das ähnlichste Paar. Wir haben in diesen beiden Sätzen drei ähnliche Keywords gefunden: Apple, 2023 und Gewinn.
Wir wissen jedoch, dass der erste und der dritte Satz das semantisch ähnlichste Paar sind. Die Attention-Schicht innerhalb der Transformer-Architektur kann diesen Kontext erfassen und den ersten und dritten Satz als das semantisch ähnlichste Paar zurückgeben.
Die leistungsstarke Performance und Vielseitigkeit von Transformer-Modellen führten zu raschen Fortschritten in der KI in verschiedenen Bereichen, von Computer Vision bis hin zu NLP und multimodalen Aufgaben.
Eines der Modelle, das nach dem großen Erfolg der Transformers eingeführt wurde, ist das Modell Generative Pretrained Transformers (GPT). Dieses Modell verwendet den Decoder-Teil der Transformer-Architektur, um das nächste Token in einer Eingabesequenz vorherzusagen, und dient als Rückgrat vieler LLMs, die wir bisher kennen, wie ChatGPT und Llama.
GPT-Architektur
Diese LLMs sind sehr leistungsfähig darin, menschenähnliche Antworten zu generieren, da sie mit riesigen Datenmengen trainiert wurden. Wie Sie jedoch vielleicht bereits wissen, haben die Trainingsdaten ein Stichtagsdatum, was bedeutet, dass wir von unseren LLMs keine genaue Antwort erhalten, wenn wir nach Informationen fragen, die neuer sind als ihre Trainingsdaten. Hier müssen wir unsere LLMs anpassen.
Retrieval Augmented Generation (RAG)
Die erste Möglichkeit, wie wir unser LLM anpassen können, ist RAG, und das Konzept ist recht einfach. Wir stellen LLMs sowohl die Abfrage als auch relevante Kontexte als Eingaben bereit, sodass sie kontextbezogene und genaue Antworten generieren können, indem sie die bereitgestellten Kontexte nutzen.
RAG-Architektur
Um LLMs für RAG zu nutzen, benötigen wir zwei wesentliche Komponenten:
Vector Embedding Model: Ein Modell, das unsere Abfrage und Kontexte in Vektor-Embeddings umwandelt.
Vector Database: Eine Datenbank, die alle Kontext-Embeddings speichert und eine Vektorsuche durchführt, um unseren LLMs auf Basis der Abfrage die relevantesten und semantisch ähnlichsten Kontexte bereitzustellen.
Mehrere Modelle können verwendet werden, um Vektor-Embeddings zu erzeugen, darunter Deep-Learning-Modelle von OpenAI oder sentence transformers. Alternativ können auch traditionelle bag-of-words-basierte Modelle wie TF-IDF oder BM25 eingesetzt werden.
Milvus ist eine beliebte Open-Source-Vektordatenbank. Sie speichert die erforderlichen Daten, die aus zwei Typen bestehen: vom Modell generierte Vektoreinbettungen und deren Metadaten. Betrachten Sie beispielsweise einen Textabschnitt aus einem Artikel, der am ersten Juni 2023 von Towards Data Science veröffentlicht wurde. Die in der Milvus-Vektordatenbank gespeicherten Daten könnten so aussehen:
Beispiel für Vektoreinbettungsdaten und deren Metadaten
Die Metadaten sind nützlich, um bei Vektorsuchoperationen verschiedene Filter anzuwenden und unseren LLMs präzisere Kontexte bereitzustellen. Beispielsweise möchten Sie möglicherweise Kontexte aus einer bestimmten Publikation oder solche abrufen, die nach einem bestimmten Datum veröffentlicht wurden (z. B. 2020).
Sobald wir die Abfrage haben und wissen, nach welchen spezifischen Metadaten wir filtern möchten, erledigt eine Vektordatenbank wie Milvus ihre Aufgabe. Sie führt eine Vektorsuche durch, um die semantisch ähnlichsten Kontexte zu unserer Abfrage zu finden, die die Filterbedingungen für die Metadaten erfüllen.
Feinabstimmung
Ein weiterer Ansatz zur Anpassung von LLMs ist die Feinabstimmung. Das Konzept ist einfach: Wir trainieren ein vortrainiertes LLM mit unseren eigenen Daten, wodurch Modelle mit neuen Gewichten entstehen, die darauf zugeschnitten sind, Aufgaben auszuführen, die spezifisch für unsere Datendomäne sind.
Es gibt mehrere Möglichkeiten, LLMs feinabzustimmen:
Vollständige Feinabstimmung: Dieser Ansatz verändert die Gewichte aller Parameter innerhalb des ursprünglichen LLM. Er beinhaltet jedoch einen kostenintensiven Berechnungsprozess.
LORA: Dieser Ansatz führt Low-Rank-Adapter innerhalb der LLM-Architektur ein. Die ursprünglichen Gewichte werden während der Feinabstimmung eingefroren, und nur die Gewichte der Adapter werden aktualisiert.
QLORA: Dieser Ansatz führt Quantisierung in die ursprüngliche LORA-Methode ein, wodurch Rechenkosten und Ressourcen reduziert werden, während eine angemessene Leistung erhalten bleibt.
Vollständige Feinabstimmung vs. LORA
Nachdem wir nun die verschiedenen Feinabstimmungsmethoden kennen, lassen Sie uns die verschiedenen Techniken der Feinabstimmung besprechen:
Überwachte Feinabstimmung: Bei dieser Methode stellen wir unseren LLMs unsere eigenen Trainingsdaten und die entsprechenden Labels bereit. Anschließend trainieren wir unsere LLMs wie jedes überwachte Machine-Learning-Modell.
Reinforcement Learning from Human Feedback (RLHF): Diese Methode integriert die Theorie des Reinforcement Learning. Wir sammeln verschiedene Antworten des LLM auf der Grundlage einer Abfrage und bewerten dann die Qualität jeder Antwort. Mit der Zeit erzeugen unsere LLMs Antworten, die unseren Präferenzen entsprechen.
Überwachte Feinabstimmung vs. Reinforcement Learning from Human Feedback
Da überwachte Feinabstimmung unkompliziert ist, lassen Sie uns RLHF genauer besprechen. Ein Nachteil des nativen RLHF ist die Notwendigkeit, dass Menschen die Qualität der von den LLMs generierten Antworten bewerten. Dieser Ansatz ist teuer und zeitaufwendig.
Data Scientists führten Proximal Policy Optimization (PPO) ein, um dieses Problem zu entschärfen.PPO führt ein Belohnungsmodell ein, um die menschliche Bewertung zu ersetzen. Dieses Belohnungsmodell muss jedoch separat trainiert werden, was die Anwendung von PPO umständlich macht. Außerdem muss das Belohnungsmodell jedes Mal neu trainiert werden, wenn neue Daten hinzugefügt werden.
Um diese Probleme anzugehen, wurde Direct Preference Optimization (DPO) eingeführt. DPO optimiert die Policy des LLM mithilfe der negativen Log-Likelihood-Verlustfunktion auf menschlichen Präferenzdaten. Der Datensatz für die Feinabstimmung mit DPO besteht aus Prompts, bevorzugten Antworten und nicht bevorzugten Antworten:
Beispiel für das Datenformat, das zur Feinabstimmung von LLMs mit DPO verwendet wird
DPO neigt jedoch dazu, den Präferenzdatensatz schnell zu überanpassen. Um dieses Problem zu mildern, wurde Identity Preference Optimization (IPO) entwickelt.
IPO führt einen Regularisierungsterm in die DPO-Verlustfunktion ein, um Overfitting zu vermeiden. Außerdem verwendet es einen Log-Odds-Ratio-Term, der an die Negative-Log-Likelihood-(NLL)-Verlustfunktion angehängt wird, sodass das LLM auf den gewünschten Stil feinabgestimmt werden kann, während unerwünschte Antworten bestraft werden.
Fazit
Yujian Tang diskutierte in seinem Vortrag verschiedene Möglichkeiten, LLMs für den optimalen Einsatz in unseren spezifischen Anwendungsfällen anzupassen. Die Präsentation begann mit einem kurzen Überblick über die Geschichte der KI-Fortschritte, die zur Entwicklung von LLMs führten. Darauf folgte eine Erklärung zweier Methoden zur Anpassung von LLMs: RAG und Fine-Tuning.
RAG verbessert die Qualität der von LLMs generierten Antworten, indem relevante Kontexte zusammen mit der Anfrage als Eingaben eingespeist werden. Vektordatenbanken wie Milvus speichern Kontext-Embeddings und führen Vektorsuchen durch, um RAG zu implementieren. LLMs verwenden diese Kontexte dann, um passende Antworten zu generieren.
Der zweite Ansatz ist Fine-Tuning, und es gibt zwei Methoden des Fine-Tunings:
Supervised Fine-Tuning: Bei dieser Methode werden unseren LLMs unsere eigenen Trainingsdaten und die entsprechenden Labels bereitgestellt und sie anschließend wie jedes überwachte Machine-Learning-Modell trainiert.
Reinforcement Learning from Human Feedback (RLHF): Diese Methode integriert die Theorie des Reinforcement Learning, bei der wir verschiedene Antworten des LLM auf Grundlage einer Anfrage sammeln und die Qualität jeder Antwort bewerten. Mit der Zeit erzeugen unsere LLMs Antworten, die unseren Präferenzen entsprechen.
Weitere Details zur Anpassung von LLMs finden Sie hier: Sehen Sie sich die Aufzeichnung von Yujians Vortrag an.
Weiterlesen

Introducing Zilliz CLI and Agent Skills for Zilliz Cloud
Manage your vector database from your terminal or AI coding agent. Zilliz CLI and Agent Skills work with Claude Code, Cursor, Codex, and Copilot.

Zilliz Cloud Delivers Better Performance and Lower Costs with Arm Neoverse-based AWS Graviton
Zilliz Cloud adopts Arm-based AWS Graviton3 CPUs to cut costs, speed up AI vector search, and power billion-scale RAG and semantic search workloads.

Why AI Databases Don't Need SQL
Whether you like it or not, here's the truth: SQL is destined for decline in the era of AI.


