feat(voxtral): STT-Satellit (Profil) + 2-Karten-GPU-Pinning

Neuer xtts/voxtral-Container (RVS<->vLLM-Realtime-WS, adaptiver Endpointer), hinter Compose-Profil 'voxtral' (braucht >=16GB VRAM, startet nicht im Default). Bestehende Satelliten auf die zwei 3060 gepinnt: whisper->GPU0, f5tts->GPU1, llama-swap->GPU0.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-08-15 01:21:43 +02:00
co-authored by Claude Opus 4.8
parent fd6ba73f59
commit 174d6d643d
5 changed files with 639 additions and 3 deletions
+56 -3
View File
@@ -30,7 +30,7 @@ services:
reservations:
devices:
- driver: nvidia
count: 1
device_ids: ["1"] # TTS-Rolle → GPU 1 (spaeter: Voxtral-TTS)
capabilities: [gpu]
volumes:
- ./voices:/voices # WAV + TXT Referenz
@@ -68,7 +68,7 @@ services:
reservations:
devices:
- driver: nvidia
count: 1
device_ids: ["0"] # STT-Rolle → GPU 0 (spaeter: Voxtral-STT-3B)
capabilities: [gpu]
environment:
- RVS_HOST=${RVS_HOST}
@@ -108,7 +108,7 @@ services:
reservations:
devices:
- driver: nvidia
count: 1
device_ids: ["0"] # LLM → GPU 0 (teilt sich mit dem kleinen STT)
capabilities: [gpu]
volumes:
- ./models:/models # HF-Download-Cache (persistent)
@@ -137,3 +137,56 @@ services:
# Erster Load eines Modells kann ein GGUF ziehen (mehrere GB) — grosszuegig.
- LLM_TIMEOUT_SEC=${LLM_TIMEOUT_SEC:-600}
restart: unless-stopped
# ─── Voxtral STT (GPU, Realtime) — PROFIL "voxtral" ───────────
# Ersetzt whisper als STT sobald die 24-GB-Karte da ist. Startet NUR mit
# docker compose --profile voxtral up -d
# (sonst kollidiert es mit whisper — beide wuerden stt_* beantworten).
#
# ⚠️ VRAM: Voxtral-Mini-4B-Realtime-2602 braucht >=16 GB (BF16, laut vLLM-
# Rezept keine Quant). Laeuft NICHT auf der 3060 (12 GB) — erst 24-GB-Karte.
# ⚠️ vLLM: Version >=0.20.0 noetig. Entrypoint/Serve-Form beim ersten Lauf
# gegen das offizielle Rezept pruefen (siehe voxtral/README.md).
voxtral-vllm:
image: vllm/vllm-openai:latest
container_name: aria-voxtral-vllm
profiles: ["voxtral"]
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]
volumes:
- ./hf-cache:/root/.cache/huggingface # gleicher Modell-Cache wie whisper/f5
environment:
- VLLM_DISABLE_COMPILE_CACHE=1
- HUGGING_FACE_HUB_TOKEN=${HF_TOKEN:-}
# Serve-Command aus dem vLLM-Rezept (Voxtral-Mini-4B-Realtime-2602).
command:
- --model
- mistralai/Voxtral-Mini-4B-Realtime-2602
- --tokenizer-mode
- mistral
- --compilation_config
- '{"cudagraph_mode":"PIECEWISE"}'
restart: unless-stopped
# ─── Voxtral-Bridge — RVS <-> vLLM-Realtime-WS (CPU-Glue) ─────
voxtral-bridge:
build: ./voxtral
container_name: aria-voxtral-bridge
profiles: ["voxtral"]
depends_on:
- voxtral-vllm
environment:
- RVS_HOST=${RVS_HOST}
- RVS_PORT=${RVS_PORT:-443}
- RVS_TLS=${RVS_TLS:-true}
- RVS_TLS_FALLBACK=${RVS_TLS_FALLBACK:-true}
- RVS_TOKEN=${RVS_TOKEN}
- VOXTRAL_VLLM_URL=ws://voxtral-vllm:8000/v1/realtime
- VOXTRAL_MODEL=mistralai/Voxtral-Mini-4B-Realtime-2602
- VOXTRAL_LANGUAGE=${WHISPER_LANGUAGE:-de}
restart: unless-stopped