102 lines
2.6 KiB
YAML
102 lines
2.6 KiB
YAML
version: '3.8'
|
|
|
|
services:
|
|
# 1. MOTOR DE INFERENCIA DE PRODUCCIÓN (vLLM)
|
|
vllm:
|
|
image: vllm/vllm-openai:latest
|
|
container_name: vllm-engine
|
|
restart: unless-stopped
|
|
environment:
|
|
- HUGGING_FACE_HUB_TOKEN=${HF_TOKEN}
|
|
- VLLM_LOGGING_LEVEL=INFO
|
|
volumes:
|
|
- ./models_cache:/root/.cache/huggingface:Z # :Z para compatibilidad SELinux en RHEL/Fedora
|
|
ports:
|
|
- "8000:8000"
|
|
command: >
|
|
--model ${MODEL_ID}
|
|
--quantization awq
|
|
--dtype half
|
|
--gpu-memory-utilization ${GPU_MEMORY_UTILIZATION}
|
|
--max-model-len ${MAX_MODEL_LEN}
|
|
--max-num-seqs ${MAX_NUM_SEQS}
|
|
--block-size 16
|
|
--port 8000
|
|
deploy:
|
|
resources:
|
|
reservations:
|
|
devices:
|
|
- driver: nvidia
|
|
count: all
|
|
capabilities: [gpu]
|
|
networks:
|
|
- vllm-net
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:8000/health"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 10
|
|
start_period: 60s
|
|
|
|
# 2. PROXY DE RED, RESILIENCIA Y CIRCUIT BREAKER (LiteLLM)
|
|
litellm:
|
|
image: ghcr.io/berriai/litellm:main-latest
|
|
container_name: litellm-gateway
|
|
restart: unless-stopped
|
|
volumes:
|
|
- ./litellm/config.yaml:/app/config.yaml:ro,Z
|
|
ports:
|
|
- "4000:4000"
|
|
command: ["--config", "/app/config.yaml", "--port", "4000"]
|
|
depends_on:
|
|
vllm:
|
|
condition: service_healthy
|
|
networks:
|
|
- vllm-net
|
|
|
|
# 3. OBSERVABILIDAD: RECOLECTOR DE TELEMETRÍA (Prometheus)
|
|
prometheus:
|
|
image: prom/prometheus:latest
|
|
container_name: prometheus-telemetry
|
|
restart: unless-stopped
|
|
volumes:
|
|
- ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml:ro,Z
|
|
- prometheus-data:/prometheus:Z
|
|
ports:
|
|
- "9090:9090"
|
|
command:
|
|
- '--config.file=/etc/prometheus/prometheus.yml'
|
|
- '--storage.tsdb.path=/prometheus'
|
|
- '--web.console.libraries=/usr/share/prometheus/console_libraries'
|
|
- '--web.console.templates=/usr/share/prometheus/consoles'
|
|
networks:
|
|
- vllm-net
|
|
|
|
# 4. OBSERVABILIDAD: VISUALIZACIÓN EN TIEMPO REAL (Grafana)
|
|
grafana:
|
|
image: grafana/grafana:latest
|
|
container_name: grafana-dashboard
|
|
restart: unless-stopped
|
|
environment:
|
|
- GF_SECURITY_ADMIN_USER=admin
|
|
- GF_SECURITY_ADMIN_PASSWORD=admin
|
|
- GF_USERS_ALLOW_SIGN_UP=false
|
|
volumes:
|
|
- ./grafana/provisioning:/etc/grafana/provisioning:ro,Z
|
|
- grafana-data:/var/lib/grafana:Z
|
|
ports:
|
|
- "3000:3000"
|
|
depends_on:
|
|
- prometheus
|
|
networks:
|
|
- vllm-net
|
|
|
|
networks:
|
|
vllm-net:
|
|
driver: bridge
|
|
|
|
volumes:
|
|
prometheus-data:
|
|
grafana-data:
|
|
|