Files
cluster-knaster/deploy/compose/gpu-vllm/docker-compose.yml
T
2026-10-12 02:12:30 +02:00

81 lines
2.8 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Rolle "gpu-main" / "gpu-flex" (VM mit durchgereichter RTX 4000 Ada): vLLM mit Multi-LoRA.
name: knaster-gpu-vllm
services:
vllm:
image: vllm/vllm-openai:${VLLM_TAG:-v0.10.0} # Engine-Updates laufen als Lifecycle-Kandidat
container_name: vllm
restart: unless-stopped
labels: {autoheal: "true"}
ipc: host
env_file: [{path: .env, required: false}]
environment:
VLLM_ALLOW_RUNTIME_LORA_UPDATING: "True" # Adapter per /v1/load_lora_adapter nachladen
command:
- --model=${VLLM_MODEL:?VLLM_MODEL fehlt}
- --served-model-name=${SLOT_ALIAS:?SLOT_ALIAS fehlt}
- --max-model-len=${MAX_MODEL_LEN:-32768}
- --gpu-memory-utilization=${GPU_MEM_UTIL:-0.90}
- --enable-lora
- --max-loras=${MAX_LORAS:-4}
- --max-lora-rank=${MAX_LORA_RANK:-64}
- --host=0.0.0.0
- --port=8000
volumes:
- ${MODELS_DIR:-/srv/models}:/root/.cache/huggingface
- ${ADAPTERS_DIR:-/srv/adapters}:/adapters:ro
ports: ["8000:8000"]
deploy:
resources:
reservations:
devices: [{driver: nvidia, count: 1, capabilities: [gpu]}]
healthcheck:
test: ["CMD", "python3", "-c", "import urllib.request; urllib.request.urlopen('http://127.0.0.1:8000/health', timeout=4)"]
interval: 30s
timeout: 5s
retries: 3
start_period: 300s # Laden großer Modelle
# Qwen3-TTS (ADR-0006) – nur auf gpu-flex, Profil "tts". Server muss OpenAI-kompatibles
# /v1/audio/speech anbieten (z. B. ein Wrapper um faster-qwen3-tts); Image-Wahl beim Deployment.
qwen-tts:
image: ${QWEN_TTS_IMAGE:-knaster/qwen-tts:unset}
container_name: qwen-tts
profiles: ["tts"]
restart: unless-stopped
labels: {autoheal: "true"}
environment:
TTS_MODEL: ${QWEN_TTS_MODEL:-Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice}
volumes:
- ${MODELS_DIR:-/srv/models}:/root/.cache/huggingface
ports: ["8091:8091"]
deploy:
resources:
reservations:
devices: [{driver: nvidia, count: 1, capabilities: [gpu]}]
gpu-exporter:
image: utkuozdemir/nvidia_gpu_exporter:1.2.1
restart: unless-stopped
ports: ["9835:9835"]
deploy:
resources:
reservations:
devices: [{driver: nvidia, count: all, capabilities: [gpu, utility]}]
node-exporter:
image: prom/node-exporter:v1.8.1
restart: unless-stopped
command: ["--path.rootfs=/host", "--collector.textfile.directory=/textfile"]
pid: host
volumes:
- /:/host:ro,rslave
- /var/lib/node_exporter/textfile:/textfile:ro
ports: ["9100:9100"]
autoheal:
image: willfarrell/autoheal:1.2.0
restart: unless-stopped
environment: {AUTOHEAL_CONTAINER_LABEL: autoheal, AUTOHEAL_START_PERIOD: "300"}
volumes: ["/var/run/docker.sock:/var/run/docker.sock"]