103 lines
4.1 KiB
Markdown
103 lines
4.1 KiB
Markdown
# 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. `mike-ai-image-worker` startet Qwen Image auf der RTX 5080.
|
||
4. Der Adapter erzeugt das Bild oder bearbeitet bis zu vier Referenzbilder.
|
||
5. Der Qwen-Worker wird vollständig gestoppt.
|
||
6. Das vorherige Textprofil und Qwen3-TTS werden wiederhergestellt.
|
||
|
||
Der Container ist außerhalb eines Auftrags gestoppt. Das ist der Sollzustand.
|
||
|
||
## Reproduzierbare Vorbereitung
|
||
|
||
```bash
|
||
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 sowie FLUX gestoppt an. Es lädt dabei
|
||
kein Modell in den VRAM.
|
||
|
||
## Funktionsprobe über den echten Routerweg
|
||
|
||
```bash
|
||
curl -sS http://127.0.0.1:8081/v1/images/generations \
|
||
-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` und
|
||
`mike-ai-flux-image-worker` gestoppt sein und das vorherige LLM-Profil wieder
|
||
gesund laufen.
|
||
|
||
## 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.
|
||
|
||
## 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](FLUX_9B_BETA.md) und
|
||
[FLUX_RESOLUTION_TEST_20260912.md](FLUX_RESOLUTION_TEST_20260912.md).
|