Winzige lokale LLMs als kreative Perturbationsmotoren

2026-10-10

Die Idee klingt zu einfach, um zu funktionieren: Ein winziges Modell mit aggressivem Sampling soll kreative Brüche produzieren, ein stärkeres Modell oder ein Mensch soll den useful Teil auswählen. Ich habe es ausprobiert.

Was ich gefunden habe: Es funktioniert. Aber nicht so, wie ich erwartet habe.

Die Grundidee

Was ein kleines Modell nicht sein sollte, ist ein Zufallsgenerator. LLM-Ausgaben sind stochastisch unter Sampling, aber nicht unbefangen. Studien finden systematische Strukturen und vorhersehbare Präferenzen in scheinbar zufälligen Sequenzen, selbst über verschiedene Temperaturen hinweg.1 Für echte gleichverteilte Auswahl, etwa ein Kartenspiel oder eine Genre-Ziehung, sollte man den PRNG des Betriebssystems nutzen und das Modell nur bitten, die gewählte Bedingung zu realisieren.

Was ein kleines Modell stattdessen sein kann, ist eine semantische Würfeltabelle. Ihre Gesichter sind gelernte Assoziationen, nicht äquiprobable Ganzzahlen. Das ändert die Architektur grundlegend.

Das System hat zwei Phasen:

  1. Divergieren. Das kleine Modell liefert viele kurze Richtungsänderungen unter explorativem Sampling.
  2. Konvergieren. Ein Rules Engine, der Mensch oder ein stärkeres Modell verwerft inkohärente Vorschläge und integriert einen vielversprechenden.

Trennung von Entropie und Autorenschaft. Das ist der Kern.

Die Experimentiermaschine

Ich habe drei Modelle getestet, GGUF-Format, mit llama.cpp über den lokalen Server:

ModellParameterGGUF-QuantGrößeRolle
SmolLM2-135M135MQ4_K_M~100 MBPhrase-Level-Glitch-Orakel
Qwen2.5-0.5B0.5BQ4_K_M~398 MBMutation-Generator
Qwen2.5-1.5B1.5BQ4_K_M~1 GBSzene-Planner

Einige dieser Modelle gibt es auch als Instruct-Varianten. Ich habe base und instruct parallel getestet. Der Befund bestätigt, was andere Studien auch fanden: Base-Modelle sind im Ranking harder zu steuern, aber williger, bekannte narrative Bahnen zu verlassen. Instruct-Modelle produzieren angenehmeren Text, weniger Überraschungen.2

Das ist ein wichtiger Unterschied. Instruction-Tuning und Preference Optimization verengen die Output-Diversität nachweislich. Eine Studie identifizierte DPO als Hauptfaktor, eine andere fand RLHF unter Supervised Fine-Tuning weniger divers.3 Für diesen Zweck lohnt der Vergleich.

Sampling-Presets

Das sind keine Universalempfehlungen. Token-Verteilungen unterscheiden sich je nach Modell, Quantisierung, Prompt und Sampler-Order. Die Presets sind Hypothesen, die man bewerten muss, nicht Canon.

PresetTempTop-kTop-pMin-pXTCVerwendung
Basis0.8400.950.050Normalverhalten etablieren
Breit1.101000.980.030Mehr Optionen ohne gezielte Störung
Kontrolliert wild1.3001.00.040.20Seltsam aber meist verwertbar
Anti-Klischee1.1501.00.030.35Offensichtliche Fortsetzungen unterdrücken
Feral Probe1.6001.00.010.50Sehr kurze Fragmente; hohe Abweisung erwarten

Ein Beispiel-Request für das kontrolliert-wilde Preset:

curl -s http://127.0.0.1:8080/completion \
  -H 'Content-Type: application/json' \
  -d '{
    "prompt": "SCENE: Mara findet das Observatorium leer nach dem Alarm.\nMUTATION: Füge eine konkrete Tatsache hinzu, die die Geschichte umlenkt, ohne sie zu erklären. Nur ein Satz.\n",
    "n_predict": 48,
    "temperature": 1.3,
    "top_k": 0,
    "top_p": 1.0,
    "min_p": 0.04,
    "xtc_probability": 0.20,
    "xtc_threshold": 0.10,
    "repeat_penalty": 1.05,
    "seed": 184467
  }'

Den gleichen Prompt mit 32 bis 64 verschiedenen Seeds laufen lassen und den Seed zu jedem Output loggen. Seeded Generation ist nur reproduzierbar innerhalb der praktischen Grenzen der gleichen Modelldatei, Runtime-Build und Backend-Einstellungen. Man sollte sie als Experiment-Metadata loggen, nicht als portable Identität für ein Ergebnis behandeln.

Die Operatorsprache

Ich habe schnell gelernt, dass man das kleine Modell nicht "schreibe kreativ" bitten darf. Es braucht schmale Operatoren mit kleinem Output-Budget. Nützliche Operatoren:

Kurze Output-Grenzen begrenzen semantischen Verfall. Der Generator sollte in der Regel einen Satz, eine Drei-Felder-Karte oder 20 bis 80 Token zurückgeben, nicht eine ganze Szene. Aggressives Token-Sampling kompiliert Fehler autoregressiv, ein seltsamer früher choice kann nützlich sein, während hunderte nachfolgende sampled Tokens nach Nonsense rationalisieren tendieren.

Ein Produktiv-Pipeline sieht so aus:

story state -> lokalen Entscheidungspunkt extrahieren
            -> tiny-model mutations, N=16..64, unabhängige Seeds
            -> malformed/duplicate candidates verwerfen
            -> nach Neuheit, Relevanz und generativem Potenzial ranken
            -> Mensch oder starkes Modell wählt einen aus
            -> starkes Modell schreibt/überarbeitet die Szene

Die Schlüsseleinheit ist nicht "eine zufällige Geschichte". Es ist ein Portfolio billiger Perturbationen um einen Entscheidungspunkt herum.

Ergebnisse

Das interessante Ergebnis kommt am Ende: Der Optimum ist nicht das kleinste Modell bei höchster Temperatur. Es ist eher ein 0.5B bis 1.7B base oder leicht aligniertes Modell, das kurze Kandidaten bei moderat hohem Temperatur-Wert produziert, mit einem Tail-Control-Mechanismus und optionaler XTC.

Die 135M-Klasse bleibt interessant als schnelles Phrase-Level-Glitch-Orakel, besonders wenn der Output auf Nouns, Images, Rules oder One-Sentence-Intrusions beschränkt ist. Das Qwen2.5-0.5B war in meiner Testreihe der produktive Sweet Spot: genug Kohärenz für verwertbare Mutationen, genug Unschärfe für Überraschungen.

Weniger erfolgreich war das "wild everything" Ansatz. Maximale Temperatur plus permissive Top-k/Top-p produzierte malformed names, punctuation drift, language switching und lokal plausible aber unbrauchbare Fortsetzungen. Drei Alternativen waren deutlich besser:

Evaluation

Eine einzelne "Kreativitätszahl" ist wertlos. Was zählt, ist "useful surprises per second" oder "useful surprises per 100 samples", nicht raw Entropy.

Für den praktischen Test habe ich fünf verschiedene kreative Operatoren verwendet und pro Konfiguration mindestens 32 Kandidaten generiert. Scored habe ich auf vier Achsen:

AchseFrageMessung
GültigkeitHat es die angeforderte Form eingehalten?Pass/Fail
KohärenzIst es lokal verständlich?1 bis 5
NeuheitIst die Richtung nicht offensichtlich?Pairwise Human Rating
NutzbarkeitKönnte ein Schriftsteller es entwickeln?1 bis 5

Feral Presets maximieren Oberflächendiversität, produzieren aber fast keine verwertbaren Ideen. Ein Anti-Klischee-Preset mit XTC bei 0.35 produzierte die meisten sprachlich überraschenden Output, von denen 60 Prozent aber grammatikalisch oder semantisch unbrauchbar waren.

Was ich jetzt mache

Ich habe ein System gebaut, das so läuft:

externer PRNG wählt Operator -> tiny model mutation (0.5B base, T=1.1, XTC=0.2) -> 16 Kandidaten -> Mensch wählt 1 -> stärkeres Modell schreibt die Szene

Das 0.5B-Qwen-Modell läuft lokal, braucht rund 1.2 Sekunden pro Kandidat bei 48 Token Output. Für 16 Kandidaten sind das unter 20 Sekunden. Der Mensch braucht länger. Die 135M-Variante ist mit unter einer Sekunde pro Kandidat spürbar schneller, aber ihre Output sind so fragmentarisch, dass sie vor der Auswahl durch einen Parser gefiltert werden müssen.

Die Maschine steht auf meinem Schreibtisch. Sie produziert keine guten Geschichten. Aber sie produziert gute Brüche. Und ein guter Bruch, richtig platziert, kann eine ganze Szene retten.


Anmerkungen

← Zurück zur Übersicht