Be Software Architecture Wise
Be Wise Apps

Read in English · Leer en español · Lire en français

Abschnitt 12.1 von 12.8 · Fortgeschritten · 30 Min. Lesezeit

Maschinelles Lernen und große Sprachmodelle für Architekten

Videolektion

5 Min. · auf Englisch gesprochen, mit Untertiteln
Nur anhören (Audio)
Transkript lesen

Sie müssen keine Modelle trainieren, um Systeme zu entwerfen, die sie nutzen. Aber Sie müssen wissen, wie sie sich verhalten, und darum geht es in dieser Lektion.

Stellen Sie sich einen Lehrling vor, der eine ganze Bibliothek gelesen hat. Stellen Sie eine Frage, und er antwortet sofort und flüssig, meist richtig. Aber manchmal erfindet er ein Detail, mit genau derselben Selbstsicherheit. Fragen Sie zweimal, und Sie bekommen vielleicht zwei verschiedene Formulierungen. Und zwischen Gesprächen erinnert er sich an nichts, es sei denn, Sie erinnern ihn daran. Ein großes Sprachmodell, kurz LLM, verhält sich wie dieser Lehrling. Prüfen Sie also seine Arbeit, und lassen Sie es nie allein handeln, wo ein Fehler teuer wäre.

Frühere Komponenten in diesem Kurs waren deterministisch: gleiche Eingabe, gleiche Ausgabe. Ein Modell des maschinellen Lernens wird nicht als Regeln geschrieben; es wird an Beispiele angepasst. Beim überwachten Lernen tragen die Beispiele die richtigen Antworten, etwa Zahlungen, die als betrügerisch oder echt markiert sind. Beim unüberwachten Lernen gibt es keine Labels, und das Modell findet selbst Struktur, etwa Cluster ähnlicher Kunden. Große Sprachmodelle lernen überwiegend, indem sie das nächste Wort eines Satzes verdecken und es vorhersagen. Jeder Text liefert seine eigenen Antworten, daher können die Trainingsdaten riesig sein. Das Training justiert die Gewichte des Modells in einem schweren Batch-Job. Die Inferenz wendet sie auf neue Eingaben an, als Service mit Latenzzielen und Kosten pro Aufruf. Die meisten Teams betreiben nur die Inferenz.

Ein Modell erzeugt Scores, und etwas anderes macht daraus Entscheidungen. Ein Zahlungsteam bewertet hunderttausend Kartenzahlungen pro Tag, von denen zweihundert betrügerisch sind. Markieren Sie nichts, liegt die Accuracy bei neunundneunzig Komma acht Prozent, aber Sie erkennen keinen einzigen Betrug. Messen Sie also die Precision, den Anteil der markierten Zahlungen, die Betrug sind, und den Recall, den Anteil des Betrugs, den Sie erkennen. Halten Sie Zahlungen mit einem Score über null Komma drei an, werden tausend markiert: hundertsechzig Betrugsfälle und achthundertvierzig echte Zahlungen. Die Precision liegt bei sechzehn Prozent, der Recall bei achtzig Prozent. Bei null Komma sieben werden zweihundert markiert, und achtzig Betrugsfälle werden übersehen. Precision und Recall liegen beide bei sechzig Prozent. Der Schwellenwert ist also eine Geschäftsentscheidung. Eine einzige Zahl außerhalb des Modells dimensioniert eine Prüf-Queue, ein Team und ein Kundenerlebnis.

Verfolgen Sie nun eine Anfrage an ein Sprachmodell. Die Anwendung stellt einen Prompt zusammen: Anweisungen, Verlauf, abgerufenen Text und Tool-Definitionen. Ein Tokenizer wandelt ihn in Tokens um. Im Englischen ist ein Token ungefähr drei Viertel eines Wortes, und Preise, Limits und Latenz werden allesamt in Tokens gezählt. Auf dem Modellserver liest der Prefill-Schritt alle Eingabetokens auf einmal. Das bestimmt die Zeit bis zum ersten Token. Dann erzeugt die Decode-Schleife die Antwort, ein gesampeltes Token nach dem anderen. Deshalb ist die Ausgabe langsamer und meist um ein Mehrfaches teurer als die Eingabe. Der Text wird zurückgestreamt, und die Anwendung validiert ihn, bevor irgendetwas angezeigt, gespeichert oder ausgeführt wird. Und das Modell behält zwischen Aufrufen nichts. Ein Chat wirkt nur deshalb zusammenhängend, weil die Anwendung den Verlauf jedes Mal neu sendet.

Das Kontextfenster ist das Maximum, das das Modell in einem Aufruf berücksichtigen kann, einschließlich seiner eigenen Antwort. Größer ist nicht automatisch besser: Jedes zusätzliche Token erhöht Kosten und Latenz. Die Temperature steuert das Sampling. Eine niedrige Temperature eignet sich für Extraktion, Klassifikation und Bewertung. Eine höhere Temperature eignet sich für Brainstorming. Ein Embedding ist eine Liste von Zahlen, die Bedeutung darstellt, sodass Texte mit ähnlicher Bedeutung nahe beieinander landen, auch wenn sie wenige Wörter gemeinsam haben.

Eine Halluzination ist eine flüssige, selbstsichere Ausgabe, die falsch ist, etwa eine Erstattungsrichtlinie, die das Unternehmen nie hatte. Das Training belohnt plausiblen Text, keinen überprüften. Gibt man dem Modell die relevanten Fakten und lässt es Quellen angeben, die Sie prüfen können, sinkt die Halluzination. Ganz beseitigt wird sie nie. Und selbst bei Temperature null wiederholen sich gehostete Modelle nicht garantiert. Ein Test, der eine exakte Ausgabe prüft, beweist also wenig.

Die Kernidee dieses Kapitels ist die Eindämmung. Deterministischer Code um das Modell herum entscheidet, was es sehen darf, was es tun darf und was mit seiner Ausgabe geschieht. Regeln wie Erstattungsgrenzen bleiben in gewöhnlichem, testbarem Code. Fragen Sie also, was passiert, wenn das Modell auf die plausibelste Weise falschliegt. Eine Erstattung auf das falsche Konto muss durch Validierung, Berechtigungen und menschliche Bestätigung unmöglich gemacht werden, wie gut das Modell auch ist.

Der vollständige Abschnitt behandelt außerdem den Transformer, ein Codebeispiel zur Temperature und Reasoning-Modelle. Als Nächstes sehen wir uns in Abschnitt zwölf Punkt zwei an, wo Modelle hingehören. Bis gleich.

Was Sie wissen müssen

Warum Architekten das Modell verstehen müssen

Jede Komponente in den früheren Kapiteln dieses Kurses war deterministisch: Bei gleicher Eingabe und gleichem Zustand lieferte ein Service dieselbe Ausgabe, und ein Test konnte das prüfen. Eine Komponente, die auf maschinellem Lernen beruht, ist grundsätzlich anders. Sie wurde nicht als Regeln geschrieben; sie wurde an Beispiele angepasst, und was sie liefert, ist eine statistisch beste Schätzung. Ein Betrugsmodell liefert einen Score, kein Urteil. Ein großes Sprachmodell (LLM) liefert flüssigen Text, der meist richtig und gelegentlich, mit voller Überzeugung, falsch ist.

Ein Architekt muss keine Modelle trainieren, genauso wenig wie er eine Datenbank-Engine schreiben muss. Er muss die Eigenschaften eines Modells aber gut genug kennen, um darum herum zu entwerfen, so wie Kapitel 7 verlangte zu wissen, was eine Isolationsebene tatsächlich garantiert. Diese Eigenschaften sind: wie Modelle entstehen und was das für ihr Wissen bedeutet; wie sie versagen; wie ihre Kosten und ihre Latenz zustande kommen; und warum man ihrer Ausgabe nie so vertrauen kann wie einer Datenbankzeile. Alles Weitere in diesem Kapitel, vom Retrieval bis zu den Guardrails, folgt daraus.

Maschinelles Lernen auf einer Seite

Maschinelles Lernen baut eine Funktion aus Daten statt aus von Hand geschriebenen Regeln. Es gibt drei klassische Familien. Beim überwachten Lernen enthalten die Trainingsdaten die richtigen Antworten (Labels): frühere Zahlungen, als betrügerisch oder echt markiert, frühere Lieferungen mit ihrer tatsächlichen Dauer. Das Modell lernt, Eingaben auf Labels abzubilden. Eine Kategorie vorherzusagen heißt Klassifikation (Betrug oder nicht); eine Zahl vorherzusagen heißt Regression (Minuten, bis das Essen ankommt). Beim unüberwachten Lernen gibt es keine Labels, und das Modell findet selbst Struktur: Cluster ähnlicher Kunden, ungewöhnliche Transaktionen, die in kein Muster passen, kompakte numerische Darstellungen von Text. Beim bestärkenden Lernen führt ein Agent Aktionen in einer Umgebung aus und lernt aus einem Belohnungssignal statt aus richtigen Antworten, zum Beispiel eine Dispositionsstrategie, die für kurze Lieferzeiten belohnt wird.

Große Sprachmodelle entstehen überwiegend durch eine vierte Variante, das selbstüberwachte Lernen, bei dem die Labels aus den Daten selbst stammen: Man verdeckt das nächste Wort eines Satzes und trainiert das Modell, es vorherzusagen. Weil jeder Text seine eigenen Labels mitbringt, lassen sich Modelle mit weit mehr Daten trainieren, als irgendjemand von Hand labeln könnte.

Architektonisch zählen zwei Phasen. Das Training justiert die internen Zahlen des Modells (seine Parameter oder Gewichte), um den Fehler auf den Trainingsdaten zu verringern. Es ist eine schwere Batch-Last: große Datensätze, viele Beschleuniger (GPUs oder ähnliche Chips), Stunden bis Monate an Rechenzeit und eine Pipeline, die wiederholbar sein muss. Inferenz ist die Nutzung des trainierten Modells, um Ausgaben für neue Eingaben zu erzeugen. Sie ist eine Serving-Last mit Latenzzielen, Anfrageraten und Kosten pro Aufruf, ganz wie jeder andere Service in Kapitel 9. Die meisten Teams, die KI-Funktionen bauen, trainieren nie ein großes Modell; sie beziehen Inferenz von einem Anbieter oder betreiben die trainierten Gewichte anderer.

Das nützlichste Denkmodell ist, dass ein trainiertes Modell eine probabilistische Funktion ist. Für eine Eingabe erzeugt es Scores oder eine Wahrscheinlichkeitsverteilung über mögliche Ausgaben. Jemand, meist die Anwendung, macht aus dieser Verteilung dann eine Entscheidung: die Zahlung sperren, wenn der Betrugsscore 0,8 übersteigt, oder das nächste Wort durch Sampling wählen. Dieser letzte Schritt ist eine Designentscheidung mit geschäftlichen Folgen, und er gehört zur Architektur, nicht zum Modell.

Grundlagen der Evaluierung: Precision, Recall und Overfitting

Weil ein Modell angepasst und nicht spezifiziert wird, lässt sich seine Güte nur feststellen, indem man es an Beispielen misst, die es nicht gesehen hat. Die Daten werden aufgeteilt in einen Trainingsdatensatz (um das Modell anzupassen), einen Validierungsdatensatz (um Entscheidungen wie Schwellenwerte abzustimmen) und einen Testdatensatz, der für die abschließende, ehrliche Messung zurückgehalten wird. Ein Modell, das auf seinen Trainingsdaten gut, auf neuen Daten aber schlecht abschneidet, zeigt Overfitting: Es hat Eigenheiten der Beispiele auswendig gelernt, statt das allgemeine Muster zu lernen. Data Leakage, bei dem Information über die Antwort in die Eingaben durchsickert (etwa ein Erstattungskennzeichen, das erst gesetzt wird, nachdem Betrug bestätigt ist), erzeugt Modelle, die im Test hervorragend aussehen und in der Produktion versagen.

Bei der Klassifikation führt die Accuracy allein in die Irre, sobald eine Klasse selten ist. Zählen Sie vier Ergebnisse: richtig Positive (Betrug markiert), falsch Positive (echte Zahlung markiert), falsch Negative (Betrug übersehen) und richtig Negative. Precision ist der Anteil der markierten Fälle, die wirklich positiv sind, TP / (TP + FP). Recall ist der Anteil der echten Positiven, die erkannt wurden, TP / (TP + FN). Ein höherer Entscheidungsschwellenwert erhöht meist die Precision und senkt den Recall, und das richtige Gleichgewicht hängt davon ab, was jede Art von Fehler kostet. Der F1-Score, das harmonische Mittel der beiden, fasst sie in einer Zahl zusammen, wenn die Kosten ähnlich sind.

Modelle verschlechtern sich auch nach dem Deployment. Wenn die Eingaben, die das Modell sieht, von den Trainingsdaten wegdriften (neue Restaurants, eine neue Zahlungsart, eine Pandemie, die das Bestellverhalten verändert), sinkt seine Genauigkeit unbemerkt. Die Überwachung darauf gehört zum Evaluieren von KI-Systemen, das später in diesem Kapitel behandelt wird.

Ausgearbeitetes Beispiel

Ausgearbeitetes Beispiel: ein Betrugsmodell, zwei Schwellenwerte

Ein Zahlungsteam bewertet 100.000 Kartenzahlungen pro Tag. 200 davon (0,2 %) sind betrügerisch. Das Modell gibt einen Score von 0 bis 1 aus, und das Team muss den Schwellenwert wählen, oberhalb dessen eine Zahlung zur manuellen Prüfung angehalten wird.

Nichts tun (nichts markieren)Accuracy 99,8 %, Recall 0 %: beeindruckende Accuracy, nutzloses Modell. Accuracy ist das falsche Maß für seltene Ereignisse.
Schwellenwert 0,3: 1000 markiertTP 160, FP 840, FN 40. Precision = 160 / 1000 = 16 %. Recall = 160 / 200 = 80 %. Accuracy = (160 + 98.960) / 100.000 = 99,12 %, also niedriger, als nichts zu tun.
Schwellenwert 0,7: 200 markiertTP 120, FP 80, FN 80. Precision = 120 / 200 = 60 %. Recall = 120 / 200 = 60 %.
Architektonische FolgeSchwellenwert 0,3 braucht ein Prüfteam, das 1000 Fälle pro Tag bewältigt, und verärgert 840 ehrliche Kunden; Schwellenwert 0,7 braucht 200 Prüfungen, lässt aber 80 Betrugsfälle durch. Der Schwellenwert ist eine Geschäftsentscheidung, die eine Queue, ein Team und ein Kundenerlebnis dimensioniert.

Dasselbe Modell trägt sehr unterschiedliche Systeme, je nach einer einzigen Zahl außerhalb des Modells.

Halten Sie den Schwellenwert, seine Begründung und die gemessene Precision und den Recall in einem Entscheidungsdokument fest, und überprüfen Sie ihn, wenn sich die Betrugsrate oder die Prüfkapazität ändert.

Deep Learning und der Transformer

Ein neuronales Netz ist ein Stapel von Schichten, von denen jede gewichtete Summen ihrer Eingaben berechnet, gefolgt von einer einfachen nichtlinearen Funktion. Das Training verschiebt Millionen oder Milliarden von Gewichten mit Gradientenabstieg und Backpropagation, sodass die Ausgaben des Netzes näher an die Zielwerte rücken. Deep Learning bezeichnet Netze mit vielen Schichten, die ihre eigenen internen Darstellungen der Eingabe lernen, statt sich auf von Hand entwickelte Merkmale zu stützen. Es veränderte ab etwa 2012 die Bilderkennung und bald danach Sprach- und Übersetzungssysteme.

Sprache war schwieriger, weil Bedeutung vom Kontext abhängt: In Der Kurier ließ die Tüte liegen, weil sie gerissen war bezieht sich sie auf die Tüte. Frühere rekurrente Netze verarbeiteten Text Wort für Wort, was das Training langsam und weitreichenden Kontext fragil machte. 2017 veröffentlichten Ashish Vaswani und Kollegen bei Google Attention Is All You Need und führten damit den Transformer ein. Sein zentraler Mechanismus, die Self-Attention, lässt jede Position im Text eine gewichtete Mischung von Information aus jeder anderen Position berechnen, sodass sie stark auf Tüte achten kann. Weil im Training alle Positionen parallel verarbeitet werden, nutzen Transformer moderne Beschleuniger effizient, und ihre Qualität stieg immer weiter, je stärker Modelle, Daten und Rechenleistung skaliert wurden.

Zwei Folgen betreffen den Architekten. Erstens wächst die Attention-Berechnung ungefähr mit dem Quadrat der Sequenzlänge, was ein Grund dafür ist, dass die Kontextlänge Grenzen hat und lange Prompts mehr Zeit und Geld kosten (technische Fortschritte haben diese Kosten gemildert, aber nicht beseitigt). Zweitens gibt es verschiedene Transformer-Formen für verschiedene Aufgaben: Decoder-only-Modelle erzeugen Text und liegen den heutigen Chatmodellen zugrunde, während Encoder-Modelle in der Tradition von BERT (2018) Text lesen, um ihn zu klassifizieren oder darzustellen, und viele Embedding- und Re-Ranking-Modelle antreiben, die im Retrieval verwendet werden. Viele große Modelle nutzen zudem ein Mixture-of-Experts-Design, bei dem für jedes Token nur ein Teil des Netzes aktiv ist, was die Inferenzkosten bei gegebener Gesamtgröße senkt.

Wie ein großes Sprachmodell Text erzeugt

Ein Modell liest keine Zeichen oder Wörter; es liest Tokens, Textstücke aus einem festen Vokabular von Zehn- oder Hunderttausenden von Einträgen, die ein Tokenizer erzeugt. Häufige Wörter sind ein Token; seltene Wörter, Namen und Zahlen werden in mehrere zerlegt. Für englischen Text gilt als gängige Faustregel etwa vier Zeichen oder drei Viertel eines Wortes pro Token. Andere Sprachen und Quellcode brauchen für denselben Inhalt oft mehr Tokens, was wichtig ist, weil Preise, Limits und Latenz allesamt in Tokens gezählt werden.

Das Kontextfenster ist die maximale Anzahl von Tokens, die das Modell in einem Aufruf berücksichtigen kann, gezählt einschließlich der Anweisungen, des bisherigen Gesprächs, aller mitgelieferten Dokumente und der Antwort, die es schreibt. 2026 reichen die Fenster von einigen Tausend Tokens bei kleinen geräteinternen Modellen bis zu rund einer Million oder mehr bei manchen gehosteten Modellen. Ein großes Fenster ist nicht dasselbe wie seine gute Nutzung: Liu und Kollegen (Lost in the Middle, 2023) zeigten, dass Modelle Information am Anfang und am Ende eines langen Kontexts zuverlässiger nutzen als Information, die in der Mitte vergraben ist, und jedes zusätzliche Token erhöht Kosten und Latenz.

Die Generierung ist eine Vorhersage des nächsten Tokens in einer Schleife. Das Modell liest die gesamte Eingabe (die Prefill-Phase) und gibt für jedes Token seines Vokabulars eine Wahrscheinlichkeit aus, das nächste zu sein. Ein Token wird gewählt, an die Eingabe angehängt, und der Vorgang wiederholt sich (die Decode-Phase), bis das Modell eine Endmarkierung ausgibt oder eine maximale Länge erreicht. Das Modell speichert interne Zwischenergebnisse für bereits verarbeitete Tokens zwischen (den KV-Cache), sodass jeder Schritt nur das neue Token berechnet, die Ausgabe aber trotzdem Token für Token entsteht. Deshalb sind Ausgabetokens langsamer und meist um ein Mehrfaches teurer als Eingabetokens, und deshalb werden Antworten an die Nutzer gestreamt, während sie entstehen.

Wie das nächste Token gewählt wird, nennt man Sampling. Greedy Decoding nimmt immer das wahrscheinlichste Token. Temperature skaliert die Wahrscheinlichkeiten zuvor um: Unter 1 schärft sie sie zum Favoriten hin, über 1 flacht sie sie ab, sodass weniger wahrscheinliche Tokens häufiger vorkommen. Top-p-Sampling (Nucleus Sampling) behält nur die wahrscheinlichsten Tokens, deren Wahrscheinlichkeiten sich zu p summieren, und Top-k behält nur die k wahrscheinlichsten. Eine niedrige Temperature eignet sich für Extraktion, Klassifikation und Bewertung; eine höhere für Brainstorming und abwechslungsreiche Formulierungen.

Schließlich ist das Modell zustandslos. Eine Modell-API merkt sich zwischen Aufrufen nichts: Ein Chat wirkt nur deshalb zusammenhängend, weil die Anwendung bei jeder Anfrage den gesamten relevanten Verlauf mitsendet. Der Gesprächszustand liegt daher in Ihrem System, seine Größe treibt bei jedem Gesprächszug die Kosten, und zu entscheiden, was behalten, zusammengefasst oder verworfen wird, ist eine Entwurfsaufgabe (siehe Gedächtnis und Zustand in Abschnitt 12.4).

import math

# raw scores the model gives three candidate next tokens after
# "The capital of Portugal is"
logits = {"Lisbon": 9.0, "Porto": 6.5, "Madrid": 5.0}

def probabilities(logits, temperature):
    scaled = {t: v / temperature for t, v in logits.items()}
    total = sum(math.exp(v) for v in scaled.values())
    return {t: round(math.exp(v) / total, 4) for t, v in scaled.items()}

print(probabilities(logits, 1.0))  # Lisbon 0.9088, Porto 0.0746, Madrid 0.0166
print(probabilities(logits, 0.5))  # Lisbon 0.9930, Porto 0.0067, Madrid 0.0003
print(probabilities(logits, 2.0))  # Lisbon 0.7033, Porto 0.2015, Madrid 0.0952
Wie Temperature dieselben Scores für das nächste Token (Logits) in unterschiedliche Wahrscheinlichkeiten umformt

Der Lebenszyklus einer LLM-Anfrage

Der Lebenszyklus einer Anfrage an ein großes Sprachmodell, vom Prompt-Aufbau über Tokenisierung, Prefill, die Decode-Schleife Token für Token, Streaming und ValidierungAnwendungNutzer-Nachr.Prompt-AufbauAnweisungen, Verlauf,abgerufener Text, ToolsTokenizerText zu Token-IDsModellserverPrefillliest alle EingabetokensFolgetoken-VerteilungSamplingTemperature, Top-pDecode-Loop: ein Token pro SchrittWohin Zeit und Geld fließenPrefill verarbeitet alle Eingabetokens parallel:legt die Zeit bis zum ersten Token fest.Decode erzeugt pro Schritt ein Ausgabetoken:bestimmt Ausgabetempo und Großteil der Kosten.Das Modell behält zwischen Aufrufen nichts:die Anwendung sendet den Verlauf jedes Mal neu.DetokenizerText an App streamenAusgabe prüfenSchema, Richtlinie, QuellenAntwort/Aktionanzeigen/speichern/ausführen
Ein Aufruf eines Sprachmodells: Die Anwendung stellt Tokens zusammen und sendet sie, der Server liest sie alle auf einmal und erzeugt dann die Antwort Token für Token per Sampling, und die Anwendung validiert das Ergebnis, bevor sie es verwendet.

Embeddings: Bedeutung als Zahlen

Ein Embedding ist eine Liste von Zahlen (ein Vektor, typischerweise einige Hundert bis einige Tausend Zahlen lang), die die Bedeutung eines Textstücks, eines Bildes oder eines Produkts darstellt und von einem Embedding-Modell erzeugt wird. Das Modell wird so trainiert, dass Elemente mit ähnlicher Bedeutung nahe beieinander landen: Mein Essen kam kalt an und Die Bestellung war bei der Lieferung nicht heiß ergeben benachbarte Vektoren, obwohl sie fast keine Wörter gemeinsam haben. Die Nähe wird meist mit der Kosinus-Ähnlichkeit gemessen, dem Winkel zwischen zwei Vektoren.

Embeddings treiben semantische Suche, Empfehlungen, Deduplizierung, Clustering und Klassifikation an, und sie sind das Herzstück der meisten Systeme mit Retrieval-Augmented Generation. Daraus folgen zwei architektonische Tatsachen. Embedding-Modelle sind eigenständig, kleiner und viel günstiger als Generierungsmodelle und lassen sich leicht auf der eigenen Infrastruktur betreiben. Und Vektoren verschiedener Embedding-Modelle (oder verschiedener Versionen desselben) sind nicht vergleichbar, daher bedeutet ein Wechsel des Embedding-Modells, das gesamte Korpus neu einzubetten: eine Entscheidung, die früh billig zu treffen und später teuer rückgängig zu machen ist.

Vom Pretraining zum hilfreichen Assistenten

Ein modernes Chatmodell entsteht in Stufen. Das Pretraining führt selbstüberwachte Vorhersage des nächsten Tokens über ein riesiges Korpus aus Text und Code aus, oft Billionen von Tokens. Es ist mit Abstand die teuerste Stufe, nur für wenige Organisationen bezahlbar, und es liefert ein Basismodell: einen leistungsfähigen Textfortsetzer, der Grammatik, Fakten, Stile und Denkmuster aufgenommen hat, aber Anweisungen nicht verlässlich befolgt. Alles, was das Modell aus dem Pretraining weiß, ist zu einem Trainingsstichtag eingefroren.

Fine-Tuning setzt das Training auf einem viel kleineren, gezielten Datensatz fort. Instruction Tuning trainiert mit Beispielen von Anweisungen samt guten Antworten nach und macht so aus dem Basismodell einen Assistenten. Reinforcement Learning from Human Feedback (RLHF) lässt dann Menschen Paare von Antworten vergleichen, trainiert ein Belohnungsmodell (Reward Model), das ihre Präferenzen vorhersagt, und optimiert den Assistenten darauf, bei diesem gut abzuschneiden. Der Ansatz wurde 2017 von Christiano und Kollegen beschrieben und in OpenAIs Arbeit an InstructGPT (Ouyang und Kollegen, 2022) auf das Befolgen von Anweisungen angewandt. Varianten ersetzen Teile der Pipeline: Direct Preference Optimization (2023) lernt aus den Vergleichen ohne separates Belohnungsmodell, und das Feedback kann statt von Menschen von einem anderen Modell kommen, das schriftlich festgelegten Prinzipien folgt.

Auch Organisationen können Fine-Tuning betreiben, oft mit parametereffizienten Methoden wie LoRA (Hu und Kollegen, 2021), die einen kleinen Zusatz trainieren statt aller Gewichte. Fine-Tuning eignet sich gut, um ein Format, einen Tonfall, eine eng umrissene Aufgabe oder ein Fachvokabular zu vermitteln. Es ist ein schlechter Weg, sich ändernde Fakten wie Preise oder Richtlinien zu vermitteln, weil diese Fakten dann in Gewichten stecken, die ihre Quelle nicht angeben können, sich ohne erneutes Training nicht aktualisieren lassen und Zugriffsrechte ignorieren. Für sich änderndes Wissen ist Retrieval meist das bessere Werkzeug; die übliche Reihenfolge der Versuche ist: bessere Prompts, dann Retrieval, dann Fine-Tuning.

Halluzination und Nichtdeterminismus

Eine Halluzination ist eine Ausgabe, die flüssig und selbstsicher, aber falsch oder unbelegt ist: ein erfundenes Zitat, eine Funktion, die es in einer Bibliothek nicht gibt, eine Erstattungsrichtlinie, die das Unternehmen nie hatte. Sie ist eine direkte Folge der Funktionsweise des Modells. Das Training belohnt plausible Fortsetzungen, keine überprüften, und das Modell hat keinen eingebauten Weg, zu unterscheiden, was es weiß und was nur richtig klingt. Halluzinationsraten schwanken stark je nach Modell und Aufgabe und sinken, wenn das Modell die relevanten Fakten erhält (Grounding), sagen darf und dazu ermutigt wird, dass es etwas nicht weiß, oder Quellen angeben muss, die die Anwendung prüfen kann. Auf null sinken sie nicht.

Die Ausgaben sind außerdem nichtdeterministisch. Mit Sampling liefert derselbe Prompt absichtlich unterschiedliche Antworten. Selbst bei Temperature 0 ist bei gehosteten Modellen keine Wiederholbarkeit garantiert: Gleitkommaarithmetik auf Beschleunigern ist nicht vollkommen assoziativ, und die Art, wie ein Server Ihre Anfrage mit anderen bündelt, kann die Reihenfolge der Operationen und damit gelegentlich ein Token verändern. Anbieter aktualisieren Modelle zudem unter unveränderten Namen. Kleine Änderungen am Wortlaut des Prompts, an der Reihenfolge der Beispiele oder am umgebenden Kontext können die Ergebnisse spürbar verändern.

Für einen Architekten bedeuten diese beiden Eigenschaften, dass ein Test, der eine exakte Ausgabe prüft, wenig beweist, dass Modellversion und Prompt bei jedem Ergebnis festgehalten werden müssen und dass jede Ausgabe, auf die es ankommt, von etwas Zuverlässigerem als dem Modell selbst geprüft werden muss.

Eine probabilistische Komponente in einem deterministischen System

Eigenschaft des ModellsArchitektonische FolgeBehandelt in
Ausgaben sind plausibel, nicht überprüftModellausgaben als nicht vertrauenswürdige Eingabe behandeln: gegen Schemas und Geschäftsregeln validieren, in abgerufenen Fakten verankern und bei folgenreichen Aktionen einen Menschen oder eine Regel im Ablauf halten12.3 RAG, 12.6 Guardrails
Das Verhalten ist statistischTests auf exakte Übereinstimmung durch Evaluierungssets, Schwellenwerte und Monitoring ersetzen; Evaluierungen als Fitness Functions in der Pipeline behandeln12.5 KI evaluieren
Kosten und Latenz skalieren mit den TokensTokens pro Anfrage budgetieren, Ausgaben streamen, cachen und einfache Anfragen an günstigere Modelle routen12.2 Wo Modelle hingehören, 12.7 Kosten und LLMOps
Modelle sind extern, mit Rate Limits versehen und ändern sichEin Gateway vorschalten, Versionen festlegen, Fallbacks planen und kontrolliert degradieren12.2 Wo Modelle hingehören, Kapitel 9
Das Wissen ist eingefroren, private Daten fehlenAktuelle, zulässige Fakten zur Abfragezeit abrufen, statt neu zu trainieren12.3 RAG
Prompts und Logs enthalten NutzerdatenRegeln zu Datenminimierung, Aufbewahrung und Datenstandort auf Prompts, Traces und Caches anwenden12.8 Verantwortungsvolle KI, Kapitel 8

Um eine probabilistische Komponente herum entwerfen

Die wichtigste Architekturidee dieses Kapitels ist die Eindämmung. Ein Modell ist eine leistungsfähige, aber unzuverlässige Komponente, daher entscheidet der deterministische Code um es herum, was das Modell sehen darf, was es tun darf und was mit seiner Ausgabe geschieht. In der Sprache der hexagonalen Architektur sitzt das Modell hinter einem Port: Die Domäne fordert einen Antwortentwurf, eine Klassifikation oder eine Extraktion an, und der Adapter, der das Modell aufruft, setzt auch den Ausgabevertrag durch. Die Domänenregeln (Erstattungsgrenzen, Öffnungszeiten, wer welche Bestellung sehen darf) bleiben in gewöhnlichem, testbarem Code.

Ein nützlicher Test für jede vorgeschlagene KI-Funktion ist die Frage, was passiert, wenn das Modell auf die plausibelste Weise falschliegt. Lautet die Antwort ein Kunde sieht einen etwas holprigen Satz, ist wenig Kontrolle nötig. Lautet sie eine Erstattung wird auf das falsche Konto gezahlt oder einem Patienten wird die falsche Dosis genannt, muss der Entwurf dieses Ergebnis durch Validierung, Berechtigungen und menschliche Bestätigung unmöglich machen, unabhängig davon, wie gut das Modell ist. Modelle werden sich weiter verbessern; dieses Entwurfsprinzip wird sich nicht ändern.

Prüfen Sie Ihr Verständnis

Was ist der Unterschied zwischen Training und Inferenz, und was davon betreiben die meisten Teams, die KI-Funktionen bauen, tatsächlich?

Training passt die Gewichte des Modells in einem schweren Batch-Job an Daten an; Inferenz wendet das trainierte Modell als latenz- und kostensensiblen Service auf neue Eingaben an. Die meisten Teams betreiben nur Inferenz, oft über einen Anbieter.

Warum sind Ausgabetokens langsamer und teurer als Eingabetokens?

Eingabetokens werden gemeinsam in einem parallelen Prefill-Schritt verarbeitet, während Ausgabetokens einzeln erzeugt werden und jedes einen eigenen Durchlauf durch das Modell braucht.

Was zählt außer der letzten Nachricht des Nutzers noch zum Kontextfenster eines Modells?

Die Systemanweisungen, der Gesprächsverlauf, alle abgerufenen Dokumente und Tool-Definitionen sowie die Antwort, die das Modell schreibt.

Die Liefergebühren Ihres Unternehmens ändern sich monatlich. Sollten Sie ein Modell per Fine-Tuning darauf trainieren?

Meist nicht. Per Fine-Tuning gelernte Fakten veralten, lassen sich nicht zitieren und brauchen für jede Änderung ein neues Training; die aktuelle Gebührentabelle zur Abfragezeit abzurufen ist zuverlässiger.

Weiter · 12.2Wo Modelle hingehörenGehostete, selbst gehostete oder geräteinterne Modelle; Online- und Batch-Inferenz; AI-Gateways, Routing, Kaskaden und Fallback-Kaskaden; Human in the Loop; die Wahl eines Modells; und eine Referenzarchitektur für einen Support-Assistenten.Weiter →

Quellen und weiterführende Literatur

Haben Sie eine Frage zu diesem Abschnitt? ArchitectBot, der KI-Lernassistent des Kurses, antwortet zuerst aus dem Kurs.

Fragen: „Wenn derselbe Prompt unterschiedliche Antworten liefern kann, wie sollte ich eine Funktion testen, die ein großes Sprachmodell nutzt?“