Der GenAI-Entwicklungsprozess in 7 Schritten

27.05.2024
Von 
Martin Heller schreibt als freier Autor für die Schwesterpublikation InfoWorld.
Der Entwicklungsprozess von Generative-AI-Apps unterscheidet sich erheblich von dem traditioneller Machine-Learning-Anwendungen.
Machine Learning ist nicht gleich Machine Learning.
Machine Learning ist nicht gleich Machine Learning.
Foto: Sammby | shutterstock.com

Um in der KI-Ära vor den Large Language Models (LLMs) eine Grundlage für feinabgestimmte KI-Modelle zu schaffen, war es im Grunde nötig, jedes mögliche ML-Modell auf sämtliche Daten zu trainieren - um dann das performanteste (oder das mit den geringsten Nachteilen) auszuwählen.

Und selbst nach der Veröffentlichung des wegweisenden Whitepapers "Attention is all you need" 2017 dauerte es noch einige Jahre, bis diese Vorgehensweise von der Bildfläche verschwand. Das lag im Wesentlichen daran, dass zunächst lediglich die Cloud-Hyperscaler und KI-Unternehmen mit jeder Menge Wagniskapital Zugang zu den dafür nötigen GPUs, TPUs, FPGAs und Datenmengen hatten, um große Sprachmodelle zu trainieren. Das hat sich inzwischen bekanntermaßen verändert - inzwischen stehen diverse verschiedene Ausformungen von Large Language Models verschiedener Anbieter zur Verfügung, um die Grundlage für eigene GenAI-Anwendungen zu schaffen.

Im Folgenden dröseln wir den neuen GenAI-Entwicklungsprozess en detail auf und sagen Ihnen, was Sie dabei beachten sollten - übersichtlich gegliedert in sieben Schritten.

1. Modellauswahl

Bei der Modellauswahl sollten Sie unbedingt die Überlegung miteinbeziehen, wie Sie in der Zukunft auf andere Modelle umsteigen können. LLMs werden inzwischen nahezu täglich optimiert. Sie sollten also davon absehen, sich auf ein Modell festzulegen und mindestens zwei KI-Modelle von verschiedenen Herstellern in den Blick nehmen.

Dabei gilt es auch, die laufenden Kosten für das Inferenztraining zu berücksichtigen:

  • Falls Sie sich für eine Model-as-a-Service-Lösung entscheiden, zahlen Sie per Inferenz, was bei niedrigem Traffic günstiger kommt.

  • Im Fall einer Model-as-a-Platform-Lösung kommen feste monatliche Kosten für die virtuelle Maschine (VM) auf Sie zu, die den Traffic händelt. Diese können schnell in die Tausende gehen, weil generative KI-Modelle im Regelfall große VMs mit einem Übermaß an Arbeitsspeicher und entweder Hunderte von CPUs oder etliche GPUs erfordern.

Das Gros der aktuell verfügbaren, großen Sprachmodelle ist proprietär. Falls Sie also Wert auf ein quelloffenes KI-Modell legen, ist Ihre Auswahl auf einige wenige gute Optionen begrenzt - beispielsweise:

2. Prompt Engineering

Prompt Engineering stellt den einfachsten und schnellsten Weg dar, um LLMs anzupassen. Weil über dieses Thema bereits zur Genüge geschrieben wurde (siehe zum Beispiel hier), beschränken wir uns in diesem Artikel darauf, einige der nützlichsten Prompt-Engineering-Techniken vorzustellen.

Prompt Engineering mit Pointers

Wenn Sie mit einem KI-Modell arbeiten, verhält sich das ein bisschen, als würden Sie einen neuen Kollegen einlernen: Sie erklären der KI Schritt für Schritt, was sie tun soll. Dabei können folgende Aspekte eine Rolle spielen:

  • das Output-Format des Modells definieren;

  • Prompts beständig wiederholen, bis die Antworten die gewünschte Länge aufweisen;

  • explizit darauf hinweisen, dass die Ergebnisse nicht interpoliert werden sollen;

  • das Modell anweisen, die Rolle einer Persona einzunehmen.

Speziell mit Blick auf den letztgenannten Punkt ist wichtig: Einem Modell zu "sagen", es sei ein Experte auf einem bestimmten Gebiet, macht es nicht unbedingt zum Experten. In den meisten Fällen ist es deshalb hilfreich, der KI Beispiele an die Hand zu geben - etwa in Form von Frage-Antwort-Paaren.

Prompts mit Dokumenten

Ein andere nützliche Strategie besteht darin, ein Dokument im Rahmen eines Prompts bereitzustellen. Dabei sollten Sie darauf achten, die Modellanweisungen klar vom Inhalt des Dokuments zu trennen. Diese Vorgehensweise funktioniert solange gut, bis der Inhalt des Dokuments das Kontextfenster des Modells übersteigt. Kommt es dazu, fällt weg, was nicht mehr aufgenommen werden kann. Es gibt allerdings die Möglichkeit, diese Limitationen mit Hilfe von Retrieval Augmented Generation (RAG) zu umgehen - dazu später mehr.

Wenn Sie ein Large Language Model darum bitten, ein längeres (aber nicht zu langes) Dokument zusammenzufassen, kann es sein, dass es "Fakten" hinzufügt, die es aus anderen Quellen zu kennen glaubt. Wenn Sie die KI stattdessen darum bitten, das vorliegende Dokument zu komprimieren, ist die Wahrscheinlichkeit höher, dass das ausbleibt.

"Chain of Density"-Prompts

Ein Research-Team hat 2023 speziell für GPT-4 die "Chain of Density"-Prompttechnik (PDF) entwickelt. Ein Chain of Density (CoD)-Prompt weist das Modell an, ein Basisdokument zusammenzufassen - und zwar in Form einer fünffachen Iteration, wobei sich die Informationsdichte mit jedem Durchgang erhöht. Zu beachten ist dabei, dass diese Prompt-Technik abseits von GPT-4 möglicherweise nicht wie vorhergesehen (oder überhaupt nicht) funktioniert.

"Chain of Thought"-Prompts

Ein "Chain of Thought"-Prompt fordert vom LLM, seine Argumentation mit einer Reihe von Zwischenschritten aufzubauen und kann die Fähigkeit großer Sprachmodelle, komplexe Schlussfolgerungen zu ziehen, erheblich optimieren. Besonders gut funktionieren "Chain of Thought"-Prompts bei arithmetischen Wortproblemen, die für KI-Modelle eine Herausforderung darstellen.

In ihrem Research Paper haben die Autoren Beispiele für "Chain of Thought"-Sequenzen in "Few-Shot Prompts" integriert. Ein etwas ausführlicheres Beispiel für Prompts dieser Art finden Sie in unserem Test des GenAI-Baukastens Amazon Bedrock.

"Skeleton of Thought"-Prompts

Die ebenfalls im Jahr 2023 entwickelte Technik des "Skeleton of Thought"-Prompting reduziert die Latenz von Large Language Models, indem sie zunächst angeleitet werden, das Antwortgerüst zu generieren. Über API-Calls oder Batch Decoding werden die einzelne "Gerüste" parallel mit Content befüllt.

Self Prompting

In Zukunft könnte Prompt Engineering vor allem eine Sache für die KI-Modelle selbst sein - falls sich entsprechende Forschungsinitiativen durchsetzen sollten. Der Schlüssel zum Erfolg liegt bei dieser Technik darin, dem LLM eine quantitative Erfolgsmetrik zur Verfügung zu stellen.

3. Hyperparameter

Im Regelfall können Sie bei LLMs im Rahmen des Prompting-Prozesses auch Hyperparameter definieren. Das ist auch wichtig, wenn es darum geht, Machine-Learning-Modelle zu trainieren. Üblicherweise sind die wichtigsten Hyperparameter für KI-Prompts (können je nach Modell variieren):

  • die Temperatur (steuert die Output-Randomness),

  • das Kontextfenster (steuert die Anzahl der vorangehenden Token, die für die Antwort berücksichtigt werden),

  • die maximale Anzahl von Token (begrenzt die Länge des Outputs) sowie

  • die Stoppsequenz (wird verwendet, um anstößige oder unangemessene Outputs zu verhindern).

4. Retrieval Augmented Generation

Retrieval Augmented Generation (RAG) kann dabei unterstützen, Large Language Models mit spezifischen Informationen zu "erden", die im Regelfall nicht im Trainingsdatenset enthalten waren. Der RAG-Prozess läuft dabei in drei Schritten ab:

  1. Die Informationen werden aus einer spezifischen Quelle gewonnen ("Retrieval");

  2. Anschließend der Prompt mit dem Kontext der Quelle angereichert ("Augmentation");

  3. Bevor dann mit Hilfe des Modells und dem augmentierten Prompt der Output generiert wird ("Generation").

RAG-Prozesse beinhalten oft Embedding, um die Länge des abgerufenen Kontexts zu begrenzen und seine Relevanz zu optimieren. Dabei nimmt eine Einbettungsfunktion ein Wort oder eine Phrase und ordnet sie einem Vektor von Fließkommazahlen zu. Diese werden normalerweise in einer Datenbank gespeichert, die einen Vector Search Index unterstützt. Die Funktionsweise ähnelt dabei der von Suchmaschinen, die ihre Antworten auf ganz ähnliche Art ermitteln.

5. Agenten

Agenten, auch bekannt als "Conversational Retrieval Agents", erweitern die Idee der Conversational LLMs mit einer Kombination aus:

  • Tools,

  • Code,

  • Embeddings und

  • Vector Stores.

Agenten sind hilfreich, um große Sprachmodelle auf bestimmte Domänen zu spezialisieren und ihre Outputs zu optimieren. Geht es darum, Agenten aufzusetzen, können LangChain und LangSmith dazu beitragen, die Komplexität dieses Unterfangens zu reduzieren.

6. Modell-Feinabstimmung

Große Sprachmodelle werden im Rahmen eines Supervised-Learning-Prozesses feinabgestimmt. Hierbei werden die Modellparameter auf einen bestimmten Task ausgerichtet. Dazu wird das LLM auf einem kleineren, aufgabenspezifischen Datensatz trainiert, der mit relevanten Beispielen gelabelt ist. Dieser Prozess kann oft Stunden oder Tage in Anspruch nehmen - läuft aber dennoch wesentlich schneller ab als fortgesetztes Pretraining.

Bei der Modell-Feinabstimmung kommen in der Regel zwei Methoden zum Einsatz, um den Zeitaufwand (im Vergleich zum Standardverfahren) zu minimieren:

  • LoRA (Low-Rank-Adaptation) ist eine Methode, bei der eine Gewichtsmatrix in zwei kleinere zerlegt wird. Dadurch wird eine Annäherung an eine vollständig überwachte Feinabstimmung auf eine parametereffizientere Weise erreicht.

  • QLoRA, eine quantisierte Variante von LoRA, reduziert zusätzlich den für den Abstimmungsprozess erforderlichen GPU-Speicher.

7. Fortgesetztes Pretraining

Als Pretraining wird der unüberwachte Lernprozess bezeichnet, bei dem LLMs auf Grundlage großer, textbasierter Datensätze Sprachgrundlagen vermittelt werden, um generische Basismodelle zu erzeugen. Ein erweitertes (oder fortgesetztes) Pretraining fügt diesem Basismodell unmarkierte domänen- oder aufgabenspezifische Datensätze hinzu, um es zu spezialisieren. Auf ein fortgesetztes Pretraining (mit Unsupervised Learning) folgt häufig eine Feinabstimmung (mit Supervised Learning). (fm)

Dieser Beitrag basiert auf einem Artikel unserer US-Schwesterpublikation Infoworld.