Release & Rollout
Das Image lässt sich zurückrollen, aber Prompt und Modell zeigen weiterhin auf veränderliche Aliasse. Als die Ausgabequalität kippt, existiert deshalb kein früherer Gesamtzustand. Ein LLM-Rollback ist nur so vollständig wie sein Releasevertrag.
Lehrtext · 10 Abschnitte · zuletzt geprüft: 2026-09-04
Warum „grüner Build“ hier nichts beweist
Klassisches CD verlässt sich darauf, dass ein deterministischer Build + Tests grün = sicher deploybar heißt. Bei LLM-Systemen bricht diese Kette: dieselbe Eingabe kann bei gleichem Code eine andere Ausgabe erzeugen, und ein geänderter Prompt oder ein neues Modell besteht jeden Unit-Test — und verschlechtert trotzdem die Antwortqualität. Der Build sagt dir, dass der Dienst läuft, nicht dass er gut antwortet.
Dieses Modul behandelt den Runtime-Rollout: wie du eine geänderte Variante gegen echten Produktions-Traffic absicherst. Das Offline-Eval-Gate in der CI (misst gegen ein festes Testset vor dem Merge) ist ein anderer Hebel — hier geht es um alles nach dem grünen Build.
Das Release-Artefakt: was eigentlich deployt wird
Die Ausgabe eines LLM-Features hängt nicht nur am Code, sondern an einer Kombination: dem Prompt-Text, der Modellversion, den Decoding-Parametern (temperature, top-p, max_tokens) und der Retrieval-Config (top-k, Reranking, Schwellen). Liegen diese Werte als verstreute Konstanten in mehreren Dateien und Services, hast du keine wiederherstellbare „Version“ — und damit keinen sauberen Rollback.
Die Ops-Antwort: behandle diese Faktoren als ein versioniertes, deploybares Artefakt (eine versionierte Config), das als Einheit ausgerollt und zurückgerollt wird — idealerweise unabhängig vom Code-Release-Zyklus, damit ein Prompt-Fix keinen vollen Image-Rebuild braucht.
- Prompt-Text (Version, nicht nur editierbar)
- Modell-Pin (datierte Version/Snapshot)
- Decoding-Parameter (
temperature,top-p,max_tokens) - Retrieval-/Tool-Config (
top-k, Reranking, Schwellen)
Betriebsprobe: RELEASE-ARTIFACT
Szenario
Euer Support-Assistent lief seit Monaten stabil. Letzte Woche hat jemand per Hotfix den System-Prompt geschärft — direkt als String-Konstante im Service. Der Modellname steht als Env-Variable im Deployment, temperature und top-k sind Defaults in zwei verschiedenen Modulen. Jetzt sind die Antworten schlechter, und niemand kann sagen, welche Kombination aus Prompt, Modell und Config vorher lief. Ein sauberer Rollback ist nicht möglich.
Anforderungen
- Wie strukturierst du Releases dieses Features künftig?
- Bewerte Ursache, wirksame Grenze und den Preis der tragfähigen Maßnahme getrennt.
Schritte
- Tragfähiger Ansatz: Prompt-Text, Modell-Pin, Decoding-Parameter und Retrieval-Config als ein versioniertes Artefakt bündeln, das als Einheit deployt und zurückgerollt wird — unabhängig vom Code-Release. Richtig. Die Ausgabe hängt an der Kombination dieser Faktoren. Nur wenn sie gemeinsam eine wiederherstellbare Version haben, ist jede Produktions-Ausgabe reproduzierbar und Rollback = vorherige Artefakt-Version.
- Plausibler Fehlweg: Den Prompt in eine Registry auslagern und dort versionieren; Modell und Config bleiben Code-Konstanten — danach ohne Kontrollgruppe oder Stop-Gate vollständig auf den Produktionsverkehr ausgerollt. Halbe Reproduzierbarkeit. Ein Modellwechsel oder ein geänderter
top-kverschiebt das Verhalten, ohne dass die Prompt-Version sich rührt — die Version beschreibt dann nicht mehr, was tatsächlich lief. - Plausibler Fehlweg: Den Prompt in eine Config-DB legen und zur Laufzeit editierbar machen, damit man schnell nachjustieren kann. Editierbar ist nicht versioniert. Ohne festgehaltene, unveränderliche Versionen weißt du hinterher nicht, welche Fassung welche Ausgabe erzeugte — genau das Problem, das euch gerade den Rollback verbaut.
- Plausibler Fehlweg: Für jede Prompt-Änderung das Service-Image neu bauen und über einen Git-Tag versionieren. Bündelt zwar, koppelt aber jede Inhaltsänderung an den vollen Code-Deploy-Zyklus — langsam für Fixes und schwer für Canary/Rollback. Das Artefakt sollte unabhängig vom Code deploybar sein.
Merksatz: Reproduzierbarkeit und Rollback setzen voraus, dass genau die Faktoren, die die Ausgabe bestimmen, gemeinsam versioniert sind — verstreute Konstanten haben keine wiederherstellbare Version. + Jede Ausgabe ist auf eine Artefakt-Version zurückführbar, Rollback = vorherige Version. − Du musst Artefakt-Versionierung und einen Deploy-Pfad getrennt vom Code bauen und pflegen (zusätzliche Infrastruktur).
Die Rollout-Leiter: schrittweise statt Big-Bang
Weil du der Qualität nicht vorab trauen kannst, exponierst du eine neue Variante schrittweise und misst live mit. Eine typische Leiter — von risikoärmster zu voller Exposition:
Auf jeder Stufe gilt: ein Gate aus Live-Metriken entscheidet, ob du hochdrehst — und ein Rollback-Trigger plus Kill-Switch hängen die ganze Zeit daneben, um bei einer Regression sofort zurückzukönnen.
Betriebsprobe: MODEL-PINNING
Szenario
Euer Dienst ruft die Modell-API über einen floatenden Alias auf (die „latest“-Variante der Modellfamilie). An einem Morgen brechen plötzlich ~8 % der Antworten das erwartete JSON-Format — ohne dass ihr etwas deployt habt. Ursache: Der Anbieter hat das Modell hinter dem Alias still aktualisiert. Euer Canary- und Rollback-Prozess hat nie gegriffen, weil aus eurer Sicht kein Release stattfand.
Anforderungen
- Wie referenzierst du das Modell in Produktion künftig?
- Bewerte Ursache, wirksame Grenze und den Preis der tragfähigen Maßnahme getrennt.
Schritte
- Tragfähiger Ansatz: An eine feste, datierte Modellversion/Snapshot pinnen und Upgrades bewusst als Release durch euren Shadow-/Canary-Prozess ziehen. Richtig. Der Pin gibt dir die Kontrolle über den Zeitpunkt der Verhaltensänderung zurück — jeder Wechsel läuft durch euren Rollout und kann gegatet und zurückgerollt werden.
- Plausibler Fehlweg: Beim floatenden Alias bleiben, um automatisch von Modell-Verbesserungen zu profitieren — danach ohne Kontrollgruppe oder Stop-Gate vollständig auf den Produktionsverkehr ausgerollt. Das delegiert deinen Release-Zeitpunkt an den Anbieter. Stille Änderungen umgehen Canary und Rollback vollständig — genau die Regression, die euch heute Morgen getroffen hat.
- Plausibler Fehlweg: An eine feste Version pinnen und dort dauerhaft bleiben, um Verhaltensänderungen für immer auszuschließen. Pins werden vom Anbieter irgendwann deprecatet und abgekündigt. Ohne aktiven Nachzieh-Prozess erzwingt das später einen Notfall-Wechsel ohne Testfenster — schlimmer als ein geplantes Upgrade.
- Plausibler Fehlweg: Beim floatenden Alias bleiben, aber Alerts auf Output-Drift schalten, um Änderungen zu erkennen. Detection ersetzt keine Kontrolle: Der Alert feuert erst, nachdem die Änderung bereits Nutzer getroffen hat. Du willst den Wechsel vorab gaten, nicht ihn im Nachhinein bemerken.
Merksatz: Wer nicht pinnt, delegiert seinen Release-Zeitpunkt an den Anbieter — Kontrolle über „wann ändert sich das Verhalten“ ist die Voraussetzung dafür, dass Canary, Rollback und Reproduzierbarkeit überhaupt greifen können. + Kein stiller Verhaltenswechsel, jede Änderung läuft durch deinen Rollout-Prozess. − Du trägst die Pflicht, Pins aktiv nachzuziehen, bevor sie deprecatet werden (laufender Wartungsaufwand).
Canary: kleiner Anteil, Gate auf Qualitätssignalen
Beim Canary bekommt ein kleiner Anteil des echten Traffics (z. B. 5 %) die neue Variante, der Rest bleibt auf der alten. Ein Canary ist aber nur so gut wie seine Gate-Metrik: Verfügbarkeitssignale (5xx, Latenz) fangen eine Qualitätsregression nicht — die crasht nicht, sie antwortet nur schlechter.
Gate deshalb auf Proxy-Metriken für Qualität: Refusal-Rate, Format-Valid-%, Retrieval-Leerquote, Antwortlänge, 👍/👎-Rate — plus Latenz und Fehler. Und lass den Canary lange genug laufen: manche Metriken brauchen Zeit oder eine größere Population, um statistisch zu tragen.
Betriebsprobe: CANARY-ROLLOUT
Szenario
Eine neue Prompt- und Retrieval-Konfiguration verbessert das Offline-Eval. In Produktion könnte sie jedoch die Refusal-Rate und Antwortqualität für seltene Anfragen verschlechtern.
Anforderungen
- Ordne den Ablauf vom nachvollziehbaren Release bis zur kontrollierten Ausweitung.
- Bewerte Ursache, wirksame Grenze und den Preis der tragfähigen Maßnahme getrennt.
Schritte
- Tragfähiger Ansatz: 1. Prompt, Modell-Pin, Decoding- und Retrieval-Konfiguration als gemeinsames, versioniertes Release-Artefakt festlegen.. Dieser Schritt besitzt eine fachliche Vorbedingung und einen überprüfbaren Abschluss.
- Tragfähiger Ansatz: 2. Qualitätssignale, Vergleichsbasis, Zeitfenster, Rollback-Trigger und sicheren Fallback vor der Exposition festlegen.. Dieser Schritt besitzt eine fachliche Vorbedingung und einen überprüfbaren Abschluss.
- Tragfähiger Ansatz: 3. Wenn Nutzerkontakt zunächst unvertretbar ist: Requests gespiegelt vergleichen und Seiteneffekte isolieren.. Dieser Schritt besitzt eine fachliche Vorbedingung und einen überprüfbaren Abschluss.
- Tragfähiger Ansatz: 4. Kleinen echten Traffic-Anteil exponieren und nur bei erfüllten Qualitäts- und Betriebs-Gates ausweiten.. Dieser Schritt besitzt eine fachliche Vorbedingung und einen überprüfbaren Abschluss.
- Tragfähiger Ansatz: 5. Bei Trigger auf das bekannte Artefakt oder den getesteten Fallback zurückführen.. Dieser Schritt besitzt eine fachliche Vorbedingung und einen überprüfbaren Abschluss.
Merksatz: Ein kontrollierter Rollout koppelt jede Exposition an ein identifizierbares Artefakt, vorab definierte Signale und einen funktionierenden Rückweg. Shadow ist ein optionales Vor-Gate; der Rückweg bleibt während aller Stufen verfügbar. + Der Blast Radius einer Qualitätsregression bleibt begrenzt und erklärbar. − Vergleich, Telemetrie und Fallback kosten Zeit, Infrastruktur und gegebenenfalls zusätzliche Inferenz.
Shadow-Deploy: echter Traffic, null Nutzerkontakt
Selbst ein 1 %-Canary zeigt echten Nutzern die neue Ausgabe. Wenn das inakzeptabel ist — hohes Risiko, kritisches Feature — nutzt du Shadow-Deploy: Produktions-Requests werden parallel an die neue Variante gespiegelt, ihre Ausgabe wird verworfen und nur mit der alten verglichen. Der Nutzer sieht ausschließlich den stabilen Pfad.
Shadow prüft die Variante an der realen Traffic-Verteilung, die kein Offline-Testset vollständig abbildet — vor dem ersten Nutzerkontakt. Grenzen: Shadow verdoppelt die Inferenz-Kosten, und bei Features mit Nebenwirkungen (Tool-Calls, DB-Writes, E-Mails) darfst du diese im Schatten nicht real auslösen — sonst doppelte Effekte. Solche Seiteneffekte musst du stubben oder isolieren.
- Canary
- Kleiner Anteil echter Nutzer sieht die neue Ausgabe; Gate auf Live-Qualität.
- Shadow
- Null Nutzer sehen sie; Vergleich an realer Verteilung; kostet doppelt, Nebenwirkungen isolieren.
Betriebsprobe: SHADOW-DEPLOY
Szenario
Ihr wollt für einen risikoreichen Anwendungsfall das Modell wechseln: eine LLM-Komponente, die eingehende Support-Tickets nur liest und zusammenfasst — keine Tool-Calls, keine Writes. Das Feature ist stark reguliert; schon eine kleine Rate falscher Zusammenfassungen bei echten Nutzern wäre inakzeptabel. Du willst die neue Variante an der realen Ticket-Verteilung prüfen, bevor irgendein Nutzer ihre Ausgabe sieht.
Anforderungen
- Wie validierst du die neue Variante vor dem ersten Nutzerkontakt?
- Bewerte Ursache, wirksame Grenze und den Preis der tragfähigen Maßnahme getrennt.
Schritte
- Tragfähiger Ansatz: Shadow-Deploy: Produktions-Requests parallel an die neue Variante spiegeln, ihre Ausgabe verwerfen und offline gegen die alte vergleichen — kein Nutzer sieht die neue Ausgabe. Richtig — bei diesem nebenwirkungsfreien Read-only-Feature ist Shadow sauber: du prüfst an der realen Verteilung bei null Nutzerkontakt. (Bei Tool-Calls/Writes müsstest du diese im Schatten stubben, sonst doppelte Effekte.)
- Plausibler Fehlweg: Direkt ein 1 %-Canary fahren und die Live-Qualitätsmetriken beobachten — danach ohne Kontrollgruppe oder Stop-Gate vollständig auf den Produktionsverkehr ausgerollt und nur anhand globaler Fehler- und Latenzwerte als erfolgreich markiert. Ein Canary exponiert echte Nutzer — auch 1 % sehen die eventuell schlechtere Zusammenfassung. Die Anforderung lautet „null Nutzerkontakt vor der Validierung“, und die verletzt der Canary.
- Plausibler Fehlweg: Ein größeres, breiteres Offline-Eval-Set bauen und die Variante dagegen abnehmen. Das ist Offline-Methodik und ein anderer Hebel: es testet nicht die reale Produktions-Verteilung mit ihren Edge-Cases. Die Frage ist Runtime-Validierung an echtem Traffic, nicht Testset-Design.
- Plausibler Fehlweg: Blue-Green: die neue Variante voll bereitstellen und per Umschalter live nehmen, mit sofortigem Rollback bei Problemen. Beim Umschalten sehen 100 % der Nutzer sofort die neue Ausgabe. Der schnelle Rollback macht bereits ausgelieferte schlechte Zusammenfassungen nicht ungeschehen und liefert keinen Vergleich vor der Exposition.
Merksatz: Shadow ist der einzige Rollout-Modus, der eine Variante an echter Produktions-Verteilung prüft, ohne einen einzigen Nutzer zu exponieren — der richtige Hebel, wenn schon eine kleine Fehlerrate inakzeptabel ist. + Reale Verteilung, null Nutzerkontakt. − Du verdoppelst die Inferenz-Kosten für den gespiegelten Traffic, und bei Features mit Nebenwirkungen musst du Tool-Calls/Writes isolieren, damit sie nicht doppelt feuern.
Rollback-Trigger: vordefiniert, nicht im Bauchgefühl
Ein Rollout braucht einen vor dem Ausrollen festgelegten Abbruch: welche Metrik, welche Schwelle, welches Zeitfenster, automatisch oder menschlich — und wer im Grenzfall entscheidet. Im Incident ist es zu spät, „gut genug“ zu verhandeln; ohne definierte Schwelle gewinnt der Lauteste, nicht die Daten.
Der Trigger muss die Qualitätsregression treffen, nicht nur Crashes: eine Refusal-Rate über X %, Format-Valid unter Y %, 👎-Rate über Baseline + Z. Zu empfindlich ist auch falsch — Nicht-Determinismus und normales Rauschen dürfen kein Dauer-Flapping auslösen. Die Schwelle trennt Signal von Rauschen.
Modell-Pinning: wer bestimmt deinen Release-Zeitpunkt
Providers bieten oft floatende Aliasse („latest“ oder eine Major-Alias) und datierte Snapshots an. Rufst du gegen einen floatenden Alias, kann sich das Modell hinter derselben API still ändern — deine Ausgabe verschiebt sich ohne einen Deploy deinerseits, und dein Canary/Rollback greift nie, weil du nichts ausgerollt hast.
Deshalb: an eine feste, datierte Version pinnen und Upgrades bewusst als Release durch deinen Shadow-/Canary-Prozess ziehen. Der Preis: du musst Pins aktiv nachziehen, bevor der Provider sie deprecatet — sonst erzwingt eine Abkündigung irgendwann einen Notfall-Wechsel ohne Testfenster.
Kill-Switch: schneller als dein Deploy
Wenn ein LLM-Feature live entgleist — toxische, falsche oder kaputte Ausgabe — brauchst du einen Abschaltpfad, der schneller ist als ein Rollback über die CI/Deploy-Pipeline (Minuten). Ein Kill-Switch (Feature-Flag) legt das Feature zur Laufzeit sofort auf einen sicheren Fallback um: statische Antwort, Nicht-LLM-Pfad, Cache oder menschlicher Pfad.
Zwei Bedingungen: Der Schalter muss ohne Deploy greifen (ein Compile-Time-Flag ist so langsam wie ein Rollback), und er muss auf einen funktionierenden Fallback zeigen — hartes Aus mit Fehlerseite tauscht nur einen Ausfall gegen einen anderen. Der Fallback-Pfad muss vorab gebaut und gepflegt sein.
Zusammenfassung — gleich im Check
Du kennst jetzt die sechs Achsen des sicheren LLM-Rollouts: das Release-Artefakt, den Canary mit Qualitäts-Gate, den Shadow-Deploy ohne Nutzerkontakt, den vordefinierten Rollback-Trigger, das Modell-Pinning und den Kill-Switch.
Praxisachse: KILL-SWITCH
Betriebsprobe: KILL-SWITCH
Szenario
Um 2 Uhr nachts fängt euer LLM-Feature — automatisch generierte Antwortvorschläge für Support-Agents — an, teils toxische und faktisch falsche Vorschläge zu liefern. Ein Rollback über eure CI/Deploy-Pipeline dauert etwa 20 Minuten. Ihr habt bereits einen einfachen, regelbasierten Nicht-LLM-Pfad, der brauchbare Standard-Antworten liefert.
Anforderungen
- Was brauchst du, um das entgleiste Feature sofort zu entschärfen?
- Bewerte Ursache, wirksame Grenze und den Preis der tragfähigen Maßnahme getrennt.
Schritte
- Tragfähiger Ansatz: Einen Kill-Switch (Feature-Flag), der das Feature zur Laufzeit sofort auf den sicheren Fallback — den regelbasierten Nicht-LLM-Pfad — umlegt, ohne Deploy. Richtig. Der Schalter greift in Sekunden statt Deploy-Minuten und leitet auf einen funktionierenden, degradierten Pfad um — unabhängig davon, ob die Ursache im letzten Deploy, im Modell oder beim Anbieter liegt.
- Plausibler Fehlweg: Über die CI/Deploy-Pipeline auf die letzte Version zurückrollen. Im akuten Incident zu langsam (hier 20 Minuten), in denen die schlechten Vorschläge weiterlaufen. Und wenn die Ursache am Modell/Anbieter liegt, rollt der Rollback auf dasselbe Problem zurück.
- Plausibler Fehlweg: Das Provider-Rate-Limit stark drosseln oder den API-Key rotieren, um das Feature auszuhungern. Das bricht das Feature hart (Fehler statt Fallback), trifft womöglich andere Features am selben Key und liefert keinen sicheren Ersatzpfad — Agents stehen ohne Vorschläge da.
- Plausibler Fehlweg: Einen Kill-Switch, der als Compile-Time-Konstante gesetzt und beim nächsten Deploy scharf geschaltet wird. Dann ist es kein Laufzeit-Schalter, sondern genauso langsam wie ein Rollback. Ein Kill-Switch muss ohne Deploy greifen, um schneller als der Deploy-Zyklus zu sein.
Merksatz: Ein sicherer Abschaltpfad muss schneller sein als dein Deploy-Zyklus und auf einen funktionierenden Fallback zeigen — sonst tauschst du im Incident nur einen Ausfall gegen einen anderen. + Sekunden statt Deploy-Minuten bis zur Entschärfung, unabhängig von der Ursache. − Du musst den Fallback-Pfad vorab bauen und pflegen (er verrottet, wenn er nie genutzt wird) und die Flag-Logik testen.
Jetzt anwenden
Diesen Stoff gibt es als Modul mit bewerteten Entscheidungs-Checks — dieselbe Einführung, danach die Übungen.
Zum Modul →