Update docker-compose configuration for Qwen3-TTS services with improved command structure and health check adjustments

This commit is contained in:
Даниил Грабарь
2026-04-20 13:21:15 +10:00
parent f6d5d546d1
commit ce143ff2dd
+40 -36
View File
@@ -5,14 +5,15 @@
# voicedesign → :8092 (создание голоса по текстовому описанию) # voicedesign → :8092 (создание голоса по текстовому описанию)
# base → :8093 (клонирование голоса из ~3 сек. аудио) # base → :8093 (клонирование голоса из ~3 сек. аудио)
# #
# Запуск всех сервисов: docker compose up -d # Запуск всех сервисов: docker compose --profile all up -d
# Только один сервис: docker compose up -d qwen3-tts-customvoice # Только один сервис: docker compose --profile customvoice up -d
# Логи: docker compose logs -f qwen3-tts-customvoice # Логи: docker compose logs -f qwen3-tts-customvoice
# ============================================================================= # =============================================================================
x-tts-common: &tts-common x-tts-common: &tts-common
image: vllm/vllm-omni:v0.18.0 image: vllm/vllm-omni:v0.18.0
ipc: host ipc: host
entrypoint: ["vllm", "serve"]
ulimits: ulimits:
memlock: -1 memlock: -1
stack: 67108864 stack: 67108864
@@ -22,77 +23,80 @@ x-tts-common: &tts-common
reservations: reservations:
devices: devices:
- driver: nvidia - driver: nvidia
count: ${GPU_COUNT:-1} # кол-во GPU на сервис (см. .env) count: ${GPU_COUNT:-1}
capabilities: [gpu] capabilities: [gpu]
volumes: volumes:
- ${HF_CACHE_DIR:-./hf_cache}:/root/.cache/huggingface - ${HF_CACHE_DIR:-./hf_cache}:/root/.cache/huggingface
- ./output_audio:/output_audio # сохранение WAV-файлов - ./output_audio:/output_audio
environment: environment:
HF_TOKEN: ${HF_TOKEN:-} # токен Hugging Face (если нужен) HF_TOKEN: ${HF_TOKEN:-}
VLLM_USE_V1: "0" # офлайн-режим совместимости VLLM_USE_V1: "0"
VLLM_WORKER_MULTIPROC_METHOD: spawn # требуется для TTS-воркеров VLLM_WORKER_MULTIPROC_METHOD: spawn
CUDA_VISIBLE_DEVICES: ${CUDA_VISIBLE_DEVICES:-0} CUDA_VISIBLE_DEVICES: ${CUDA_VISIBLE_DEVICES:-0}
healthcheck: healthcheck:
test: ["CMD", "python3", "-c", test: ["CMD", "python3", "-c",
"import urllib.request; urllib.request.urlopen('http://localhost:${_PORT:-8091}/health')"] "import urllib.request; urllib.request.urlopen('http://localhost:8091/health')"]
interval: 30s interval: 30s
timeout: 10s timeout: 10s
retries: 5 retries: 5
start_period: 120s # модель грузится долго start_period: 120s
# ============================================================================= # =============================================================================
services: services:
# --------------------------------------------------------------------------- # CustomVoice — готовые голоса (Vivian, Ryan и др.)
# 1. CustomVoice — готовые голоса (Vivian, Ryan и др.)
# POST /v1/audio/speech { "input": "...", "voice": "Vivian" }
# ---------------------------------------------------------------------------
qwen3-tts-customvoice: qwen3-tts-customvoice:
<<: *tts-common <<: *tts-common
container_name: qwen3-tts-customvoice container_name: qwen3-tts-customvoice
ports: ports:
- "${CUSTOMVOICE_PORT:-8091}:8091" - "${CUSTOMVOICE_PORT:-8091}:8091"
command: > command:
--model ${MODEL_SIZE:-Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice} - "${MODEL_CUSTOMVOICE:-Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice}"
--port 8091 - "--omni"
--gpu-memory-utilization ${GPU_MEM_UTIL:-0.90} - "--port"
--max-model-len ${MAX_MODEL_LEN:-4096} - "8091"
- "--gpu-memory-utilization"
- "${GPU_MEM_UTIL:-0.90}"
- "--max-model-len"
- "${MAX_MODEL_LEN:-4096}"
profiles: profiles:
- customvoice - customvoice
- all - all
# --------------------------------------------------------------------------- # VoiceDesign — синтез голоса по описанию на естественном языке
# 2. VoiceDesign — синтез голоса по описанию на естественном языке
# POST /v1/audio/speech { "input": "...", "voice": "a calm female voice" }
# ---------------------------------------------------------------------------
qwen3-tts-voicedesign: qwen3-tts-voicedesign:
<<: *tts-common <<: *tts-common
container_name: qwen3-tts-voicedesign container_name: qwen3-tts-voicedesign
ports: ports:
- "${VOICEDESIGN_PORT:-8092}:8091" - "${VOICEDESIGN_PORT:-8092}:8091"
command: > command:
--model ${MODEL_VOICEDESIGN:-Qwen/Qwen3-TTS-12Hz-1.7B-VoiceDesign} - "${MODEL_VOICEDESIGN:-Qwen/Qwen3-TTS-12Hz-1.7B-VoiceDesign}"
--port 8091 - "--omni"
--gpu-memory-utilization ${GPU_MEM_UTIL:-0.90} - "--port"
--max-model-len ${MAX_MODEL_LEN:-4096} - "8091"
- "--gpu-memory-utilization"
- "${GPU_MEM_UTIL:-0.90}"
- "--max-model-len"
- "${MAX_MODEL_LEN:-4096}"
profiles: profiles:
- voicedesign - voicedesign
- all - all
# --------------------------------------------------------------------------- # Base — клонирование голоса из референс-аудио
# 3. Base — клонирование голоса из референс-аудио
# POST /v1/audio/speech { "input": "...", + ref_audio файл }
# ---------------------------------------------------------------------------
qwen3-tts-base: qwen3-tts-base:
<<: *tts-common <<: *tts-common
container_name: qwen3-tts-base container_name: qwen3-tts-base
ports: ports:
- "${BASE_PORT:-8093}:8091" - "${BASE_PORT:-8093}:8091"
command: > command:
--model ${MODEL_BASE:-Qwen/Qwen3-TTS-12Hz-1.7B-Base} - "${MODEL_BASE:-Qwen/Qwen3-TTS-12Hz-1.7B-Base}"
--port 8091 - "--omni"
--gpu-memory-utilization ${GPU_MEM_UTIL:-0.90} - "--port"
--max-model-len ${MAX_MODEL_LEN:-4096} - "8091"
- "--gpu-memory-utilization"
- "${GPU_MEM_UTIL:-0.90}"
- "--max-model-len"
- "${MAX_MODEL_LEN:-4096}"
profiles: profiles:
- base - base
- all - all