Make Qwen Image 2.1 the production image worker
This commit is contained in:
@@ -12,7 +12,7 @@ flowchart LR
|
||||
H -->|OpenAI API| R[Profile Router<br/>Athena :8081]
|
||||
R --> P[Profile Controller]
|
||||
P --> Q[genau ein llama.cpp-Profil<br/>Qwen Fast / Medium / Large / Ultra / Uncensored]
|
||||
R --> I[FLUX.2 Klein 9B FP8 Beta<br/>RTX 5080, Text + Editing]
|
||||
R --> I[Qwen-Image-2.1 INT8<br/>RTX 5080, Text + Editing]
|
||||
R --> T[Qwen3-TTS 1.7B RTX 3060<br/>TTS-Gateway]
|
||||
R --> STT[Whisper.cpp small<br/>CPU, lokale Spracherkennung]
|
||||
|
||||
@@ -32,8 +32,9 @@ flowchart LR
|
||||
K[Backup alle 5 Stunden] --> DATA[/data und /etc/mike-ai]
|
||||
```
|
||||
|
||||
Stand: 20. September 2026. Versionen und Abweichungen: [Live-Stand](LIVE_STATE.md).
|
||||
FLUX nutzt beide GPUs und pausiert dafür LLM und Qwen3-TTS. Dashboard und
|
||||
Stand: 21. September 2026. Versionen und Abweichungen: [Live-Stand](LIVE_STATE.md).
|
||||
Qwen Image nutzt die RTX 5080 und pausiert dafür LLM und Qwen3-TTS. FLUX
|
||||
bleibt als gestoppter Rückfallworker vorhanden. Dashboard und
|
||||
Portainer besitzen eigene Netzwerk-Namespaces in `mike-ai_frontend`; der Router
|
||||
läuft in `mike-ai_control`. Der Gateway vermittelt den privaten Zugriff.
|
||||
Zusätzliche Musik-, Audio-, Voice- und 3D-Container stehen im
|
||||
|
||||
@@ -14,7 +14,8 @@ nicht automatisch ein ungenutzter Rest.
|
||||
| `mike-ai-embedding` | EmbeddingGemma 300M QAT Q8 | Dauerhafter CPU-only-Endpunkt für OpenClaws semantische und hybride Memory-Suche; teilt ausschließlich den privaten Netzwerk-Namespace des WireGuard-Gateways. |
|
||||
| `mike-ai-bonsai2-ab` | Bonsai-2-Vergleichsmodell | Gestoppter, reproduzierbar dokumentierter A/B-Testcontainer; kein Produktivprofil. |
|
||||
| `mike-ai-applio-studio` | Applio/RVC; Stimmenmodelle werden nutzerseitig ergänzt | Vollständige RVC-Oberfläche für Inferenz, Modellverwaltung und Training auf der RTX 5080. Für eine Konvertierung ist ein importiertes oder trainiertes `.pth`-Modell nötig; eine Referenzaufnahme allein reicht nicht. |
|
||||
| `mike-ai-image-worker` | FLUX.2 Klein 9B FP8, Qwen3-8B NF4 Textencoder und VAE | Erzeugt und bearbeitet Bilder transaktional; nutzt während eines Auftrags RTX 5080 und RTX 3060. |
|
||||
| `mike-ai-image-worker` | Qwen-Image-2.1 INT8, Qwen3-VL-8B INT8 und VAE | Produktiver Bildworker; erzeugt und bearbeitet Bilder transaktional auf der RTX 5080. |
|
||||
| `mike-ai-flux-image-worker` | FLUX.2 Klein 9B FP8, Qwen3-8B NF4 Textencoder und VAE | Gestoppter Rückfallworker; wird vom normalen Router-Bildpfad nicht gestartet. |
|
||||
| `mike-ai-llama-dashboard` | kein Modell | Zeigt Telemetrie, Profile, GPU-Nutzung, Slot-Kontextbelegung mit Verlauf und Betriebsarten an und bietet die Modusumschaltung. |
|
||||
| `mike-ai-llama-fast` | Qwen3.8-27B `IQ4-MIX`, Qwen-MMProj BF16 | Schnelles Q4-Text-/Vision-Profil mit 76.800 Token Kontext. |
|
||||
| `mike-ai-llama-large` | Qwen3.8-27B `IQ4_XS-pure`, Qwen-MMProj BF16 | Q4-Text-/Vision-Profil mit 192.000 Token Kontext und Verteilung auf beide GPUs. |
|
||||
@@ -55,4 +56,4 @@ sämtliche Modellgewichte oder Funktionen neu.
|
||||
|
||||
Gestoppte Container sind nicht automatisch Testreste. Vor einer Entfernung
|
||||
Compose-Zuordnung, Mounts und Controller-Verweise prüfen. Die vorhandenen
|
||||
Spezialcontainer wurden durch den FLUX-Auflösungstest weder angelegt noch entfernt.
|
||||
Die historischen FLUX-Tests sind keine Aussage über den produktiven Qwen-Pfad.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Aktuelle Laufzeitnotizen
|
||||
|
||||
Stand: 20. September 2026.
|
||||
Stand: 21. September 2026.
|
||||
|
||||
Der verbindliche Abgleich steht im [geprüften Live-Stand](LIVE_STATE.md).
|
||||
Produktiv läuft **llama.cpp 0.4.1** auf Commit `b29c606`, zuvor b10930.
|
||||
@@ -18,9 +18,10 @@ Funktionsproben, Vergleichsmessungen und gesicherter Rückfallstand.
|
||||
[Update-Audit vom 15. September](UPDATE_AUDIT_20260915.md): aktualisierte
|
||||
Komponenten, unveränderte aktuelle Komponenten, Aufräumarbeiten und Rollback.
|
||||
|
||||
FLUX verwendet **9B FP8 Beta** mit Textencoder auf der RTX 3060.
|
||||
[Auflösungstest](FLUX_RESOLUTION_TEST_20260912.md): 1024 erfolgreich,
|
||||
1280 CUDA-OOM; produktive Begrenzung weiterhin 1024.
|
||||
Der produktive Bildpfad verwendet **Qwen-Image-2.1 INT8** mit ComfyUI auf der
|
||||
RTX 5080. FLUX 9B FP8 und seine Gewichte bleiben als gestoppter Rückfallpfad.
|
||||
[Qwen-Betriebsdoku](QWEN_IMAGE_21.md); der historische
|
||||
[FLUX-Auflösungstest](FLUX_RESOLUTION_TEST_20260912.md) gilt nur für FLUX.
|
||||
Sprachausgabe: Qwen3-TTS 1.7B ohne Piper. Spracherkennung: Whisper.cpp 1.9.4
|
||||
mit dem Modell `small` auf der CPU. Applio basiert auf dem stabilen Release 3.6.4.
|
||||
|
||||
|
||||
+4
-4
@@ -39,10 +39,10 @@ nicht mehr den aktuellen Containerzustand.
|
||||
|
||||
## Weitere Dienste
|
||||
|
||||
- FLUX.2 Klein 9B FP8 Beta: Transformer/VAE auf 5080, Qwen3-8B-NF4-
|
||||
Textencoder auf 3060. Produktiv freigegeben sind höchstens 1024 × 1024,
|
||||
vier Schritte, Guidance 1, vier Referenzbilder und 128 Encoder-Tokens.
|
||||
1280 × 1280 lief im Test in CUDA-OOM.
|
||||
- Qwen-Image-2.1 INT8 läuft produktiv über gepinntes ComfyUI mit Low-VRAM auf
|
||||
der RTX 5080. Der Router verwendet 25 Schritte, Guidance 1 und bis zu vier
|
||||
Referenzbilder. FLUX.2 Klein 9B FP8 bleibt mit seinen Gewichten als
|
||||
gestoppter, explizit allowlist-beschränkter Rückfallcontainer erhalten.
|
||||
- Qwen3-TTS 1.7B auf 3060 hinter dem TTS-Gateway; kein Piper-Fallback.
|
||||
- Whisper.cpp `ggml-small` auf CPU über `/v1/audio/transcriptions`.
|
||||
- `mike-ai-embedding` stellt EmbeddingGemma 300M Q8 CPU-only über den privaten
|
||||
|
||||
@@ -0,0 +1,83 @@
|
||||
# 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`.
|
||||
|
||||
## 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.
|
||||
|
||||
## 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).
|
||||
@@ -1,60 +0,0 @@
|
||||
# Qwen-Image-2.1 – isolierter Test
|
||||
|
||||
Stand: 21. September 2026. Dieser Pfad dient nur dem Vergleich mit dem
|
||||
produktiven FLUX.2-Worker. Er ersetzt FLUX nicht und ist nicht an den Router
|
||||
angebunden.
|
||||
|
||||
## Reproduzierbarer Stand
|
||||
|
||||
- ComfyUI: Commit `b0f4b7b294ce482a2e071d9d762c133d38c7aa07`
|
||||
- Modell-Repository: `Comfy-Org/Qwen-Image-2.1`, Revision
|
||||
`ace0edeb3791a594ddfa36ed5f41a178a394e921`
|
||||
- Transformer: `qwen_image_2.1_int8_convrot.safetensors` (7.256.783.064 Byte)
|
||||
- Textencoder: `qwen3vl_8b_int8_convrot.safetensors` (9.350.798.360 Byte)
|
||||
- VAE: `qwen_image_2.1_vae_bf16.safetensors` (675.509.688 Byte)
|
||||
- erster Vergleich: 1024 × 1024, 25 Schritte, CFG 1, Euler/Simple
|
||||
|
||||
Die Gewichte sind die von Qwen verlinkte offizielle ComfyUI-Aufbereitung. Der
|
||||
Worker verwendet `--lowvram` auf der RTX 5080. So bleibt der Test mit 16 GB
|
||||
VRAM möglich; der Preis ist CPU-Offload und damit eine längere Laufzeit.
|
||||
|
||||
## Vorbereitung ohne GPU-Last
|
||||
|
||||
```bash
|
||||
cd /opt/mike-ai/stack
|
||||
sudo ./scripts/prepare-qwen-image-21-test.sh
|
||||
```
|
||||
|
||||
Das Skript prüft feste SHA-256-Summen, baut das Image, aktualisiert den
|
||||
Profile Controller und erstellt den Testcontainer **gestoppt**. Es lädt kein
|
||||
Modell in die GPU.
|
||||
|
||||
## Einmaliger Test nach ausdrücklichem „Go“
|
||||
|
||||
```bash
|
||||
cd /opt/mike-ai/stack
|
||||
docker compose --env-file /etc/mike-ai/stack.env \
|
||||
--profile qwen-image-test run --rm qwen-image-21-test-runner \
|
||||
python /opt/test/run.py 'HIER DEN VEREINBARTEN PROMPT EINSETZEN'
|
||||
```
|
||||
|
||||
Der Runner merkt sich das aktive LLM-Profil, startet den Qwen-Worker über den
|
||||
allowlist-beschränkten Controller, erzeugt genau ein Bild und stellt danach
|
||||
auch bei einem Fehler das vorherige Profil wieder her. Das Ergebnis liegt in
|
||||
`/data/qwen-image-2.1-test-output/`. FLUX-Konfiguration und FLUX-Gewichte
|
||||
werden nicht verändert.
|
||||
|
||||
## Vollständig entfernen
|
||||
|
||||
```bash
|
||||
cd /opt/mike-ai/stack
|
||||
docker compose --env-file /etc/mike-ai/stack.env \
|
||||
--profile qwen-image-test rm -sf qwen-image-21-test
|
||||
docker image rm mike-ai/qwen-image-2.1-test:local
|
||||
rm -rf /data/models/Qwen-Image-2.1-ComfyUI \
|
||||
/data/qwen-image-2.1-test-output
|
||||
```
|
||||
|
||||
Anschließend kann die Controller-Erweiterung bei Bedarf aus Git zurückgenommen
|
||||
und nur `profile-controller` neu gebaut werden. Die Entfernung ist nicht Teil
|
||||
der Vorbereitung und wird niemals automatisch ausgeführt.
|
||||
@@ -53,7 +53,8 @@ Titelgenerierung und Kontextkompression in Hermes.
|
||||
| Datum | Modell | Ergebnis | Status / Entscheidung | Beleg |
|
||||
|---|---|---|---|---|
|
||||
| bis 07.09.2026 | FLUX.2 Klein 4B | funktional, aber schwächere räumliche und motivische Konsistenz | **ersetzt** durch 9B FP8 | [FLUX_9B_BETA.md](FLUX_9B_BETA.md) |
|
||||
| 07.09.2026 | FLUX.2 Klein 9B FP8 | bessere Prompttreue; produktiver Zwei-GPU-Pfad, derzeit auf 1024 × 1024 begrenzt | **produktiv als Beta** | [FLUX_9B_BETA.md](FLUX_9B_BETA.md) |
|
||||
| 07.09.2026 | FLUX.2 Klein 9B FP8 | bessere Prompttreue als 4B; produktiver Zwei-GPU-Pfad, auf 1024 × 1024 begrenzt | **Standby seit 21.09.2026** | [FLUX_9B_BETA.md](FLUX_9B_BETA.md) |
|
||||
| 21.09.2026 | Qwen-Image-2.1 INT8 | im direkten Vergleich fotorealistischer, bessere Textdarstellung und Prompttreue; 1024 × 1024 bei 25 Schritten in rund 49 s Pipeline-Lauf | **produktiv** | [QWEN_IMAGE_21.md](QWEN_IMAGE_21.md) |
|
||||
| 08.09.2026 | HYPIR-SD2 | glättete oder erfand Details und veränderte kleine Strukturen | **verworfen** | [IMAGE_RESTORATION.md](IMAGE_RESTORATION.md) |
|
||||
| 08.09.2026 | SeedVR2 7B FP8 | bewahrte Identität besser als HYPIR, brachte beim realen unscharfen Foto aber kaum nutzbare Details zurück | **verworfen** | [IMAGE_RESTORATION.md](IMAGE_RESTORATION.md) |
|
||||
|
||||
|
||||
Reference in New Issue
Block a user