Skip to content

Commit 52ed55a

Browse files
author
Your Name
committed
broke dgx to own compose
1 parent 958f2fb commit 52ed55a

2 files changed

Lines changed: 217 additions & 1 deletion

File tree

docker-compose.dgx.yml

Lines changed: 216 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,216 @@
1+
# Docker Compose for SIP AI Assistant with Speaches (STT + TTS) + vLLM
2+
# =====================================================================
3+
# Optimized for GB10/Grace Blackwell with 100GB+ VRAM
4+
#
5+
# Services:
6+
# - vllm: LLM server (Llama 3.1 70B)
7+
# - speaches: Unified STT (Whisper) + TTS (Piper/Kokoro) server
8+
# - redis: Queue for outbound calls
9+
# - sip-agent: Main SIP application
10+
11+
services:
12+
# ============================================================================
13+
# Redis - Queue for outbound calls
14+
# ============================================================================
15+
redis:
16+
image: redis:7-alpine
17+
container_name: sip-ai-redis
18+
command: redis-server --appendonly yes
19+
volumes:
20+
- ./data/redis:/data
21+
healthcheck:
22+
test: ["CMD", "redis-cli", "ping"]
23+
interval: 10s
24+
timeout: 5s
25+
retries: 5
26+
restart: unless-stopped
27+
28+
# ============================================================================
29+
# vLLM Server - Serves the LLM
30+
# ============================================================================
31+
vllm:
32+
image: nvcr.io/nvidia/vllm:25.11-py3
33+
container_name: sip-ai-vllm
34+
runtime: nvidia
35+
environment:
36+
- NVIDIA_VISIBLE_DEVICES=all
37+
- HUGGING_FACE_HUB_TOKEN=${HF_TOKEN:-}
38+
ipc: host
39+
ulimits:
40+
memlock: -1
41+
stack: 67108864
42+
command: >
43+
vllm serve
44+
${LLM_MODEL:-meta-llama/Llama-3.1-70B-Instruct}
45+
--port 8000
46+
--gpu-memory-utilization 0.50
47+
--max-model-len 8192
48+
--trust-remote-code
49+
--enforce-eager
50+
--enable-prefix-caching
51+
--enable-chunked-prefill
52+
--max-num-batched-tokens 2048
53+
--max-num-seqs 4
54+
ports:
55+
- "8000:8000"
56+
volumes:
57+
- ~/.cache/huggingface:/root/.cache/huggingface
58+
healthcheck:
59+
test: ["CMD", "curl", "-f", "http://localhost:8000/health"]
60+
interval: 30s
61+
timeout: 10s
62+
retries: 5
63+
start_period: 300s
64+
deploy:
65+
resources:
66+
reservations:
67+
devices:
68+
- driver: nvidia
69+
count: all
70+
capabilities: [gpu]
71+
restart: unless-stopped
72+
73+
# ============================================================================
74+
# Speaches Server - Unified STT (Whisper) + TTS (Piper/Kokoro)
75+
# OpenAI-compatible API for both transcription and speech synthesis
76+
# ============================================================================
77+
speaches:
78+
image: ghcr.io/speaches-ai/speaches:0.9.0-rc.2-cuda-12.6.3
79+
build:
80+
context: ./speaches/
81+
dockerfile: Dockerfile
82+
args:
83+
BASE_IMAGE: nvcr.io/nvidia/pytorch:25.11-py3-igpu
84+
container_name: sip-ai-speaches
85+
runtime: nvidia
86+
ipc: host
87+
environment:
88+
- NVIDIA_VISIBLE_DEVICES=all
89+
# STT Settings (Whisper)
90+
- WHISPER__MODEL=${WHISPER_MODEL:-Systran/faster-distil-whisper-small.en}
91+
# Options: default, int8, int8_float16, int8_float32, int8_bfloat16,
92+
# int16, float16, bfloat16, float32
93+
- WHISPER__COMPUTE_TYPE=${WHISPER_COMPUTE_TYPE:-default}
94+
- WHISPER__DEVICE=${WHISPER_DEVICE:-cuda}
95+
- WHISPER__INFERENCE_CONFIG__BEAM_SIZE=${WHISPER_BEAM_SIZE:-1}
96+
- WHISPER__INFERENCE_CONFIG__LANGUAGE=${WHISPER_LANGUAGE:-en}
97+
- WHISPER__INFERENCE_CONFIG__VAD_FILTER=true
98+
- WHISPER__INFERENCE_CONFIG__BEST_OF=1
99+
# Model TTL settings - prevent unloading (-1 = never unload)
100+
- STT_MODEL_TTL=${STT_MODEL_TTL:--1}
101+
- TTS_MODEL_TTL=${TTS_MODEL_TTL:--1}
102+
- VAD_MODEL_TTL=${VAD_MODEL_TTL:--1}
103+
- UVICORN_PORT=8001
104+
# TTS is configured via API request parameters (model/voice)
105+
ports:
106+
- "8001:8001"
107+
volumes:
108+
- ./cache/speaches-cache:/home/ubuntu/.cache/huggingface/hub
109+
- ./cache/piper-voices:/home/ubuntu/.local/share/piper_voices
110+
healthcheck:
111+
test: ["CMD", "curl", "-f", "http://localhost:8001/health"]
112+
interval: 30s
113+
timeout: 10s
114+
retries: 5
115+
start_period: 120s
116+
deploy:
117+
resources:
118+
reservations:
119+
devices:
120+
- driver: nvidia
121+
count: all
122+
capabilities: [gpu]
123+
restart: unless-stopped
124+
125+
# ============================================================================
126+
# SIP AI Assistant - Main application (lightweight, no local models)
127+
# ============================================================================
128+
sip-agent:
129+
# build:
130+
# context: sip-agent/
131+
# dockerfile: Dockerfile
132+
container_name: sip-agent
133+
image: ghcr.io/cha0s-corp/sip-agent:latest
134+
depends_on:
135+
redis:
136+
condition: service_healthy
137+
vllm:
138+
condition: service_healthy
139+
speaches:
140+
condition: service_healthy
141+
environment:
142+
# Redis settings
143+
- REDIS_URL=redis://redis:6379/0
144+
# Call queue settings
145+
- CALL_QUEUE_MAX_CONCURRENT=${CALL_QUEUE_MAX_CONCURRENT:-1}
146+
# LLM settings
147+
- LLM_BACKEND=vllm
148+
- LLM_BASE_URL=http://vllm:8000/v1
149+
- LLM_MODEL=${LLM_MODEL:-meta-llama/Llama-3.1-70B-Instruct}
150+
- LLM_MAX_TOKENS=${LLM_MAX_TOKENS:-512}
151+
- LLM_TEMPERATURE=${LLM_TEMPERATURE:-0.6}
152+
- LLM_TOP_P=${LLM_TOP_P:-0.85}
153+
- LLM_API_KEY=${LLM_API_KEY:-}
154+
- MAX_CONVERSATION_TURNS=${MAX_CONVERSATION_TURNS:-10}
155+
# Speaches API settings (unified STT + TTS)
156+
- SPEACHES_API_URL=http://speaches:8001
157+
# STT settings
158+
- WHISPER_MODEL=${WHISPER_MODEL:-Systran/faster-distil-whisper-small.en}
159+
- WHISPER_LANGUAGE=${WHISPER_LANGUAGE:-en}
160+
- MIN_SPEECH_DURATION_MS=${MIN_SPEECH_DURATION_MS:-200}
161+
- MAX_SPEECH_DURATION_S=${MAX_SPEECH_DURATION_S:-8.0}
162+
- SILENCE_TIMEOUT_MS=${SILENCE_TIMEOUT_MS:-750}
163+
# TTS settings (Kokoro via Speaches - auto-downloaded on first use)
164+
- TTS_MODEL=${TTS_MODEL:-speaches-ai/Kokoro-82M-v1.0-ONNX}
165+
- TTS_VOICE=${TTS_VOICE:-af_heart}
166+
- TTS_RESPONSE_FORMAT=${TTS_RESPONSE_FORMAT:-wav}
167+
- TTS_SPEED=${TTS_SPEED:-1.0}
168+
# SIP settings
169+
- SIP_USER=${SIP_USER:-ai-assistant}
170+
- SIP_PASSWORD=${SIP_PASSWORD:-}
171+
- SIP_DOMAIN=${SIP_DOMAIN:-localhost}
172+
- SIP_PORT=${SIP_PORT:-5060}
173+
- SIP_REGISTRAR=${SIP_REGISTRAR:-}
174+
# General
175+
- LOG_LEVEL=${LOG_LEVEL:-INFO}
176+
# Tools
177+
- CALLBACK_RING_TIMEOUT=${CALLBACK_RING_TIMEOUT:-30}
178+
# Tempest Weather API (optional)
179+
- TEMPEST_STATION_ID=${TEMPEST_STATION_ID:-}
180+
- TEMPEST_API_TOKEN=${TEMPEST_API_TOKEN:-}
181+
# API settings
182+
- API_PORT=${API_PORT:-8080}
183+
ports:
184+
- "5060:5060/udp"
185+
- "5060:5060/tcp"
186+
- "10000-10100:10000-10100/udp" # RTP ports
187+
- ${API_PORT:-8080}:8080 # API server port
188+
volumes:
189+
- ./data:/app/data
190+
restart: unless-stopped
191+
192+
n8n:
193+
image: n8nio/n8n:latest
194+
container_name: n8n
195+
restart: unless-stopped
196+
ports:
197+
- "5678:5678"
198+
environment:
199+
- N8N_HOST=0.0.0.0
200+
- N8N_PORT=5678
201+
- N8N_PROTOCOL=http
202+
- WEBHOOK_URL=http://n8n:5678/
203+
- GENERIC_TIMEZONE=America/Los_Angeles
204+
volumes:
205+
- n8n_data:/home/node/.n8n
206+
207+
volumes:
208+
n8n_data:
209+
210+
211+
# ============================================================================
212+
# Networks
213+
# ============================================================================
214+
networks:
215+
default:
216+
driver: bridge

docker-compose.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ services:
2929
# vLLM Server - Serves the LLM
3030
# ============================================================================
3131
vllm:
32-
image: nvcr.io/nvidia/vllm:25.11-py3
32+
image: vllm/vllm-openai:latest
3333
container_name: sip-ai-vllm
3434
runtime: nvidia
3535
environment:

0 commit comments

Comments
 (0)