feat: initial commit with vLLM production stack and benchmark tools
This commit is contained in:
@@ -0,0 +1,101 @@
|
||||
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:
|
||||
|
||||
Reference in New Issue
Block a user