Files
AI-Profile-Router/docs/QWEN_IMAGE_21.md
T

11 KiB
Raw Blame History

Qwen-Image-2.1 auf Athena

Stand: 21. September 2026. Qwen-Image-2.1 ist der produktive Bildworker des Routers. FLUX.2 Klein 9B FP8 bleibt als gestoppter Rückfallcontainer erhalten.

Gepinnter Stand

  • ComfyUI: Commit b0f4b7b294ce482a2e071d9d762c133d38c7aa07
  • Modell-Repository: Comfy-Org/Qwen-Image-2.1, Revision ace0edeb3791a594ddfa36ed5f41a178a394e921
  • Transformer: qwen_image_2.1_int8_convrot.safetensors (cb74113cb03faecd79611b01fd7fd642f0aa60d6f0b95086abee214d75eaa57d)
  • Textencoder: qwen3vl_8b_int8_convrot.safetensors (8bfd0f6e12abf2d2d697ecc888e5e90b0d6741d6708f05799f53afa560452e8f)
  • VAE: qwen_image_2.1_vae_bf16.safetensors (bb21f7473051e1ac368515dd3f2e15cd44d7a11748ee8823e1ddca3e4876b7c9)
  • Pipeline: 25 Schritte, CFG 1, Euler/Simple, --lowvram
  • GPU: ausschließlich Athena-GPU 1, die RTX 5080 mit 16 GB

Die Gewichte liegen außerhalb von Git unter /data/models/Qwen-Image-2.1-ComfyUI. Der Adapter platform/docker/qwen-image-worker/qwen_image_worker.py stellt vor ComfyUI die bestehende private Worker-API auf Port 8086 bereit. Der öffentliche Routervertrag bleibt damit /v1/images/generations und /v1/images/edits. Der Container läuft wie der Router mit UID/GID 10002:10002, damit beide das gemeinsame Bild-Volume ohne erweiterte Linux-Capabilities verwenden können.

Lebenszyklus

Ein Bildauftrag läuft transaktional:

  1. Der Router merkt sich das aktive Textprofil.
  2. Der Profile Controller stoppt LLM, TTS und andere GPU-Spezialworker.
  3. Bei einem Textauftrag startet mike-ai-image-prompt-enhancer-t2i, bei Referenzbildern mike-ai-image-prompt-enhancer-i2i auf der RTX 3060.
  4. Der offizielle Qwen-Enhancer schreibt den knappen Benutzertext um und wird anschließend vollständig gestoppt.
  5. mike-ai-image-worker startet Qwen Image auf der RTX 5080 und erzeugt das Bild oder bearbeitet bis zu vier Referenzbilder.
  6. Der Qwen-Worker wird vollständig gestoppt.
  7. Das vorherige Textprofil und Qwen3-TTS werden wiederhergestellt.

Der Container ist außerhalb eines Auftrags gestoppt. Das ist der Sollzustand.

Reproduzierbare Vorbereitung

cd /opt/mike-ai/stack
sudo ./scripts/prepare-qwen-image-21.sh

Das Skript lädt fehlende Dateien mit festen SHA-256-Prüfsummen, baut den produktiven Qwen-Worker und legt Qwen, beide Prompt-Enhancer sowie FLUX gestoppt an. Es lädt dabei kein Modell in den VRAM.

Funktionsprobe über den echten Routerweg

curl -sS http://127.0.0.1:8081/v1/images/generations \
  -H "Authorization: Bearer $ROUTER_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
    "model":"Qwen-Image-2.1-int8",
    "prompt":"Fotorealistisches rotes Haus bei Tageslicht",
    "size":"1024x1024",
    "steps":25,
    "guidance":1.0,
    "response_format":"url"
  }'

Nach dem Lauf müssen mike-ai-image-worker, beide Prompt-Enhancer und mike-ai-flux-image-worker gestoppt sein und das vorherige LLM-Profil wieder gesund laufen.

OpenClaw 2026.9.5

OpenClaws eingebautes Werkzeug image_generate verwendet den separaten Medienmodell-Eintrag. Er muss auf den OpenAI-kompatiblen Athena-Router zeigen:

openclaw config set agents.defaults.mediaModels.image.primary \
  openai/Qwen-Image-2.1-int8
openclaw config set agents.defaults.mediaModels.image.fallbacks '[]' \
  --strict-json

Der Provider models.providers.openai.baseUrl bleibt http://192.168.1.212:8081/v1. openclaw models set-image ist hierfür nicht der richtige Befehl: Er schreibt agents.defaults.imageModel, nicht den von image_generate verwendeten Medienmodell-Eintrag. Ein alter Wert unter agents.defaults.imageModel wird mit folgendem Befehl entfernt:

openclaw config unset agents.defaults.imageModel

Die leere Fallbackliste verhindert, dass OpenClaw bei einem lokalen Fehler unbemerkt auf openai/gpt-image-2 ausweicht.

OpenClaw überträgt Referenzbilder an /v1/images/edits als OpenAI-kompatibles Multipart-Formular mit dem Feld image[]. Der Router akzeptiert dort ein bis vier Referenzbilder und normalisiert numerische Formularwerte wie n und steps. Der ältere JSON-/Base64-Weg bleibt für bestehende Clients erhalten.

Beim ersten Wechsel von FLUX auf Qwen funktionierten Referenzbilder deshalb nicht: Der neue Qwen-Pfad verstand zunächst nur den älteren JSON-/Base64-Weg. Zusätzlich war anfangs agents.defaults.imageModel gesetzt, obwohl OpenClaws image_generate den Eintrag unter agents.defaults.mediaModels.image verwendet. Das waren Lücken der neuen Qwen-Integration. Der zuvor produktive FLUX-Pfad war davon nicht betroffen.

Produktionsvalidierung vom 21. September 2026

Beide öffentlichen Routerpfade wurden auf Athena mit dem produktiven Stack geprüft:

  • Text zu Bild: gültiges PNG mit 1024×1024 Pixeln, 25 Schritte, Qwen-Image-2.1-int8; 48,9 Sekunden reine Bildpipeline und 71,6 Sekunden für den vollständigen transaktionalen Routerlauf.
  • Bildbearbeitung: gültiges PNG mit 1024×1024 Pixeln aus einem Referenzbild, 25 Schritte, Qwen-Image-2.1-int8; 76,3 Sekunden für den vollständigen Routerlauf.

Nach beiden Aufträgen waren Qwen und FLUX gestoppt. mike-ai-llama-medium, Qwen3-TTS, Router und Profile Controller liefen anschließend wieder gesund. Damit sind Erzeugung, Referenzbildübergabe und Wiederherstellung des zuvor aktiven Textprofils über den echten Routerweg bestätigt.

Zusätzlich wurde image_generate am 21. September 2026 über einen isolierten OpenClaw-agent exec-Lauf geprüft. OpenClaw rief openai/Qwen-Image-2.1-int8 einmal auf; Athena erzeugte das PNG und stellte Medium sowie Qwen3-TTS nach 72,5 Sekunden wieder gesund her.

Auch die Referenzbildbearbeitung wurde anschließend über das echte OpenClaw-Werkzeug image_generate geprüft. OpenClaw übergab ein Referenzbild als image[]; der Router erzeugte mit Qwen-Image-2.1-int8 ein gültiges PNG mit 1024×1024 Pixeln und meldete im Sidecar mode: image-edit sowie reference_images: 1. Medium und Qwen3-TTS liefen nach dem Auftrag wieder gesund, der Bildworker wurde erwartungsgemäß gestoppt.

FLUX-Rückfallpfad

FLUX verwendet weiterhin das Image mike-ai/image-worker:local, die bestehenden Modellverzeichnisse und den Container mike-ai-flux-image-worker. Er hat das Controller-Label flux-standby und kann deshalb nicht durch einen normalen Router-Bildauftrag gestartet werden. Eine manuelle Diagnose ist nur über den allowlist-beschränkten Controllerpfad /workers/flux-standby/start möglich. Für eine dauerhafte Rückschaltung müssen Service-DNS, Modellname und Schrittzahl gemeinsam in Compose auf FLUX gesetzt und anschließend Router und Controller neu ausgerollt werden. Keine dieser Änderungen erfolgt automatisch.

Historische FLUX-Messwerte und Grenzen stehen in FLUX_9B_BETA.md und FLUX_RESOLUTION_TEST_20260912.md.

Offizielle Prompt-Enhancer im produktiven Router

Qwen veröffentlicht zwei getrennte, auf Qwen3.5-VL 9B nachtrainierte Prompt-Enhancer. Sie sind kein Bestandteil der Qwen-Image-Gewichte. Athena startet automatisch die zum Auftrag passende Variante; OpenClaw ruft weiterhin nur sein normales Werkzeug image_generate mit dem unveränderten Modellnamen openai/Qwen-Image-2.1-int8 auf.

  • mike-ai-image-prompt-enhancer-t2i bereitet reine Textaufträge auf.
  • mike-ai-image-prompt-enhancer-i2i wertet ein bis vier Referenzbilder gemeinsam aus und trennt Identität, gewünschte Änderungen und neue Szene.
  • Beide verwenden getrennte offizielle Systemprompts, Q5_K_M, llama.cpp Build 10930, 16.384 Token Kontext und höchstens 2.048 Denktokens.
  • Sie laufen ausschließlich und nacheinander auf der RTX 3060. Nach dem Rewrite werden sie gestoppt; Qwen-Image rendert anschließend auf der RTX 5080.
  • Falls der Client keine Größe vorgibt, übernimmt der Router das vom Enhancer vorgeschlagene Seitenverhältnis und bildet es auf eine erlaubte Auflösung ab. Eine ausdrücklich angegebene gültige Größe bleibt unverändert.
  • Das Sidecar jedes PNG enthält original_prompt, den tatsächlich verwendeten prompt und Modell, Quantisierung, Laufzeit und Verhältnis unter prompt_enhancer. Verdeckte Denktokens werden nicht gespeichert.
  • Ein fehlgeschlagener Rewrite bricht den Bildauftrag sichtbar ab. Der Router sendet in diesem Fall keinen unaufbereiteten Ersatzprompt an Qwen-Image.

Gepinnte Dateien

PE-I2I stammt aus Qwen/Qwen-Image-2.1-PE-I2I, Revision 72927bc08afc99b7888ceb7d7d51a12db3700bbd, und dem GGUF-Repository prithivMLmods/Qwen-Image-2.1-PE-I2I-GGUF, Revision 55b9c1a326599e142d59bcad8715d5601ccf8daa. Die Dateien liegen unter /data/models/qwen-image-2.1-pe-i2i-q5:

Datei SHA-256
Qwen-Image-2.1-PE-I2I.Q5_K_M.gguf cb71f71fe5fe5938570d65a7c403fbcb1a9065dff9dd9a021f58aec42785b84e
Qwen-Image-2.1-PE-I2I.mmproj-bf16.gguf 8dedb71dbc3092dc47de9108ad373d68a12854e2527d59bd9399601738f3bce1
system_prompt.txt e378fea686a1431581ba4c654d332ae96adad633f144ae738ec8ce9c4fd66439

PE-T2I stammt aus Qwen/Qwen-Image-2.1-PE-T2I, Revision f3ed7985c788ad75b3ab7223e0c4c51e2a43545b, und dem GGUF-Repository prithivMLmods/Qwen-Image-2.1-PE-T2I-GGUF, Revision e18d4a3e0830ab157770738b16830e6fcf5f57d4. Die Dateien liegen unter /data/models/qwen-image-2.1-pe-t2i-q5:

Datei SHA-256
Qwen-Image-2.1-PE-T2I.Q5_K_M.gguf 749f5652fd6e8b760ca860091f7a5bffa254a7954203ae5c9bcdf5f93197702f
system_prompt.txt a77c9a06c59b120741141d9514b95682bb8761d02bec49ca61def7b2b3d9fb99

Der zuvor geprüfte PE-I2I-FP8-Checkpoint ist 13,54 GB groß und passt mit Aktivierungs- und Laufzeitspeicher nicht in die 12-GB-RTX-3060. CPU-Offload war unpraktisch langsam. Er wurde verworfen und entfernt. Der Q5-I2I-Worker belegt etwa 7.167 MiB VRAM und ist deshalb der produktive Stand.

Abnahme vom 21. September 2026

Der vollständige öffentliche Routerweg wurde nach der Integration zweimal geprüft:

  • Ein kurzer deutscher Textprompt wurde von PE-T2I in 36,6 Sekunden in einen strukturierten englischen Produktionsprompt umgeschrieben. Qwen-Image erzeugte das 1024×1024-PNG anschließend in 49,0 Sekunden.
  • Ein hochgeladenes Referenzbild wurde von PE-I2I in 65,9 Sekunden aufbereitet. Der Rewrite verlangte ausdrücklich eine neue Szene, neue Pose und Kleidung sowie das Entfernen der alten Gegenstände. Qwen-Image erzeugte in 111,3 Sekunden ein neues 1024×1536-PNG: genau eine Person in einer Blumenwiese an einer Autobahn, ohne Badewanne, Gitarre oder Gummiente.

Nach beiden Aufträgen waren der Bildworker und beide Enhancer gestoppt. Medium und Qwen3-TTS liefen wieder gesund. Der erste I2I-Versuch deckte eine relative Pfadauflösung bei temporären Multipart-Uploads auf; der korrigierte Pfad ist mit einem eigenen Regressionstest abgedeckt. Insgesamt laufen 96 schnelle GPU-freie Release-Tests.