#!/bin/bash # Container-Entrypoint: startet den vLLM-Omni TTS-Server und feuert nach # Erreichen von /health einmalig einen Warmup-Request ab. Dieser absorbiert # die einmalige torch.compile/CUDA-Graph-Kompilierung (~38 s), damit kein # echter Nutzer-Request sie je trifft. Läuft bei JEDEM Containerstart # (Reboot, Crash-Restart, manuell). set -e MODEL="Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice" PORT=8091 # --- Server im Hintergrund starten --- vllm-omni serve "$MODEL" \ --omni \ --host 0.0.0.0 \ --port "$PORT" \ --deploy-config /deploy/qwen3_tts.yaml \ --gpu-memory-utilization 0.10 \ --trust-remote-code & SERVER_PID=$! # --- Warmup im Hintergrund, sobald der Server gesund ist --- ( for _ in $(seq 1 150); do if curl -sf "http://localhost:${PORT}/health" >/dev/null 2>&1; then echo "[warmup] Server gesund — sende Warmup-Request (kompiliert CUDA-Graphen)..." t0=$SECONDS curl -sf -X POST "http://localhost:${PORT}/v1/audio/speech" \ -H 'Content-Type: application/json' \ -d "{\"model\":\"${MODEL}\",\"input\":\"System wird aufgewärmt.\",\"voice\":\"Ryan\",\"language\":\"German\",\"response_format\":\"wav\"}" \ -o /dev/null \ && echo "[warmup] fertig nach $(( SECONDS - t0 ))s — Server ist jetzt heiß." \ || echo "[warmup] fehlgeschlagen (Server läuft trotzdem)." break fi sleep 2 done ) & # --- Auf den Server-Prozess warten (PID 1 Signalweiterleitung) --- wait "$SERVER_PID"