LOT 1 - Optimizare script build -Instalare mono comanda

This commit is contained in:
Dezvoltari Evotech 2026-06-27 06:42:02 -07:00
parent 5380c3fc63
commit 42ff22bf85
127 changed files with 16163 additions and 532 deletions

View file

@ -0,0 +1,310 @@
# Local GPU inference stack — 10.11.10.18 (2x H200 NVL)
# GPU 0: Qwen3.5-35B-A3B (LLM) + Whisper (audio)
# GPU 1: BusterX++ (deepfake video) + bge-m3 (embeddings) + bge-reranker-v2-m3 (rerank)
# All services on the shared `didi-network` so the dashboard can probe them by name.
networks:
didi-network:
external: true
services:
# ===================== vLLM model servers =====================
# BusterX++ — served OFFLINE from the on-disk HF cache (no download)
vllm-buster:
container_name: didiAI-video-vllm-buster
# qwen3_5 image (vLLM 0.16 / transformers 4.57) — BusterX++ config was saved
# with transformers 5.x and the older 0.8.5 image can't parse its nested text_config.
image: vllm/vllm-openai:qwen3_5
networks: [didi-network]
ports: ["54500:54500"]
volumes:
- ${MODELS_DIR}:/root/.cache/huggingface/hub:ro
environment:
- HF_HOME=/root/.cache/huggingface
- HF_HUB_OFFLINE=1
- TRANSFORMERS_OFFLINE=1
command: >
--model l8cv/BusterX_plusplus
--host 0.0.0.0 --port 54500
--served-model-name busterx
--tensor-parallel-size 1
--max-model-len 32768
--gpu-memory-utilization 0.25
--trust-remote-code
--enable-prefix-caching
--disable-log-requests
deploy:
resources:
reservations:
devices:
- driver: nvidia
device_ids: ['1']
capabilities: [gpu]
restart: unless-stopped
# Qwen3.5-35B-A3B — downloads ~72GB on first start
vllm-qwen:
container_name: didiAI-vllm-qwen3.5
image: vllm/vllm-openai:qwen3_5
networks: [didi-network]
ports: ["14001:14001"]
volumes:
- ${MODELS_DIR}:/root/.cache/huggingface/hub:ro
environment:
- HF_HOME=/root/.cache/huggingface
- HF_HUB_OFFLINE=1
- TRANSFORMERS_OFFLINE=1
- VLLM_ALLOW_LONG_MAX_MODEL_LEN=1
command: >
--model Qwen/Qwen3.5-35B-A3B
--host 0.0.0.0 --port 14001
--served-model-name qwen3.5
--tensor-parallel-size 1
--max-model-len 32000
--gpu-memory-utilization 0.65
--trust-remote-code
--disable-log-requests
deploy:
resources:
reservations:
devices:
- driver: nvidia
device_ids: ['0']
capabilities: [gpu]
restart: unless-stopped
# bge-m3 embeddings — downloads ~2GB on first start
vllm-embeddings:
container_name: didiAI-vllm-embeddings
image: vllm/vllm-openai:v0.8.5
networks: [didi-network]
ports: ["14101:14101"]
volumes:
- ${MODELS_DIR}:/root/.cache/huggingface/hub:ro
environment:
- HF_HOME=/root/.cache/huggingface
- HF_HUB_OFFLINE=1
- TRANSFORMERS_OFFLINE=1
command: >
--model BAAI/bge-m3
--host 0.0.0.0 --port 14101
--served-model-name bge-m3
--task embed
--gpu-memory-utilization 0.10
--trust-remote-code
--disable-log-requests
deploy:
resources:
reservations:
devices:
- driver: nvidia
device_ids: ['1']
capabilities: [gpu]
restart: unless-stopped
# bge-reranker-v2-m3 — downloads ~2GB on first start
vllm-rerank:
container_name: didiAI-vllm-rerank
image: vllm/vllm-openai:v0.8.5
networks: [didi-network]
ports: ["14201:14201"]
volumes:
- ${MODELS_DIR}:/root/.cache/huggingface/hub:ro
environment:
- HF_HOME=/root/.cache/huggingface
- HF_HUB_OFFLINE=1
- TRANSFORMERS_OFFLINE=1
command: >
--model BAAI/bge-reranker-v2-m3
--host 0.0.0.0 --port 14201
--served-model-name bge-reranker-v2-m3
--task score
--gpu-memory-utilization 0.10
--trust-remote-code
--disable-log-requests
deploy:
resources:
reservations:
devices:
- driver: nvidia
device_ids: ['1']
capabilities: [gpu]
restart: unless-stopped
# ===================== FastAPI app wrappers =====================
llm-api:
container_name: didiAI-llm-api
image: didiai-llm-inference:audit
networks: [didi-network]
ports: ["14011:14011"]
environment:
- LLM_HOST=0.0.0.0
- LLM_PORT=14011
- LLM_DEFAULT_BACKEND=vllm
- LLM_ENABLE_VLLM=true
- LLM_ENABLE_LLAMACPP=false
- LLM_VLLM_BASE_URL=http://didiAI-vllm-qwen3.5:14001
- LLM_DEFAULT_MODEL=qwen3.5
- LLM_EXTERNAL_URL=http://${HOST_IP}:14011
restart: unless-stopped
embeddings-api:
container_name: didiAI-embeddings-api
image: didiai-embeddings:audit
networks: [didi-network]
ports: ["14100:14100"]
environment:
- EMB_HOST=0.0.0.0
- EMB_PORT=14100
- EMB_DEFAULT_BACKEND=vllm
- EMB_ENABLE_VLLM=true
- EMB_ENABLE_LLAMACPP=false
- EMB_VLLM_BASE_URL=http://didiAI-vllm-embeddings:14101
- EMB_VLLM_MODEL=bge-m3
- EMB_EXTERNAL_URL=http://${HOST_IP}:14100
restart: unless-stopped
rerank-api:
container_name: didiAI-rerank-api
image: didiai-rerank:audit
networks: [didi-network]
ports: ["14200:14200"]
environment:
- RERANK_HOST=0.0.0.0
- RERANK_PORT=14200
- RERANK_DEFAULT_BACKEND=vllm
- RERANK_ENABLE_VLLM=true
- RERANK_ENABLE_LLAMACPP=false
- RERANK_VLLM_BASE_URL=http://didiAI-vllm-rerank:14201
- RERANK_VLLM_MODEL=bge-reranker-v2-m3
- RERANK_EXTERNAL_URL=http://${HOST_IP}:14200
restart: unless-stopped
video-api:
container_name: didiAI-video-api
image: didiai-video-analysis:audit
networks: [didi-network]
ports: ["54600:54600"]
volumes:
- ./runs:/app/runs
environment:
- VIDEO_ANALYSIS_HOST=0.0.0.0
- VIDEO_ANALYSIS_PORT=54600
- VIDEO_ANALYSIS_EXTERNAL_URL=http://${HOST_IP}:54600
- VIDEO_ANALYSIS_VLLM_BASE_URL=http://didiAI-video-vllm-buster:54500
- VIDEO_ANALYSIS_VLLM_MODEL=busterx
- VIDEO_ANALYSIS_RUNS_DIR=/app/runs
- VIDEO_ANALYSIS_SEMANTIC_LLM_BASE_URL=http://didiAI-llm-api:14011
- VIDEO_ANALYSIS_SEMANTIC_AGGREGATION_MODEL=qwen3.5
- VIDEO_ANALYSIS_SEMANTIC_LLM_API_KEY=none
restart: unless-stopped
# ===================== Non-GPU services =====================
catalog-api:
container_name: didiAI-catalog-api
image: didiai-catalog-api:audit
networks: [didi-network]
environment:
- CATALOG_HOST=0.0.0.0
- CATALOG_PORT=11000
- CATALOG_EXTERNAL_URL=http://${HOST_IP}
- CATALOG_LLM_URL=http://didiAI-llm-api:14011
- CATALOG_AUDIO_URL=http://didiAI-audio:54300
- CATALOG_VIDEO_URL=http://didiAI-video-api:54600
- CATALOG_WEB_URL=http://didiAI-web-api:51100
restart: unless-stopped
extractors:
container_name: didiAI-extractors
image: didiai-extractors:audit
networks: [didi-network]
ports: ["54400:54400"]
volumes:
# GLiNER (+ backbone mdeberta) servit offline din zona locala de modele
- ${MODELS_DIR}:/models-hf/hub:ro
environment:
- EXTRACTORS_HOST=0.0.0.0
- EXTRACTORS_PORT=54400
- EXTRACTORS_LLM_GATEWAY_URL=http://didiAI-llm-api:14011
- EXTRACTORS_DETECT_MODEL=/tmp/yolov8n.pt
- YOLO_CONFIG_DIR=/tmp/ultralytics
- HF_HOME=/models-hf
- HF_HUB_OFFLINE=1
- TRANSFORMERS_OFFLINE=1
restart: unless-stopped
forensic:
container_name: didiAI-forensic
image: didiai-forensic:audit
networks: [didi-network]
ports: ["8085:8080"]
environment:
- API_PORT=8080
restart: unless-stopped
# cloak — scraper SERP stealth (tier-3 fallback pentru web)
cloak:
container_name: didiAI-cloak
image: didiai-cloak:audit
networks: [didi-network]
ports: ["8770:8770"]
environment:
- CLOAK_HOST=0.0.0.0
- CLOAK_PORT=8770
restart: unless-stopped
# SearXNG metasearch (motorul de cautare liber folosit de web-api)
searxng:
container_name: didiAI-web-searxng
image: docker.io/searxng/searxng:latest
networks: [didi-network]
volumes:
- ../../modules/web/deploy/metasearch/searxng:/etc/searxng:ro
environment:
- SEARXNG_BASE_URL=http://${HOST_IP}:8080/
restart: unless-stopped
web-api:
container_name: didiAI-web-api
image: didiai-web:audit
networks: [didi-network]
ports: ["51100:51100"]
depends_on: [searxng]
environment:
- WEB_HOST=0.0.0.0
- WEB_PORT=51100
- WEB_EXTERNAL_URL=http://${HOST_IP}:51100
- WEB_SEARXNG_BASE_URL=http://didiAI-web-searxng:8080
- WEB_LLM_BASE_URL=http://didiAI-llm-api:14011
restart: unless-stopped
# Whisper STT — faster-whisper loads in-process on GPU 0
audio-api:
container_name: didiAI-audio
image: didiai-audio:audit
networks: [didi-network]
ports: ["54300:54300"]
volumes:
# faster-whisper foloseste download_root=cache_dir -> models-- direct sub el (nu /hub)
- ${MODELS_DIR}:/root/.cache/huggingface:ro
environment:
- AUDIO_HOST=0.0.0.0
- AUDIO_PORT=54300
- AUDIO_MODEL=large-v3-turbo
- AUDIO_DEVICE=cuda
- AUDIO_COMPUTE_TYPE=float16
- AUDIO_CACHE_DIR=/root/.cache/huggingface
- HF_HUB_OFFLINE=1
- TRANSFORMERS_OFFLINE=1
- AUDIO_EXTERNAL_URL=http://${HOST_IP}:54300
deploy:
resources:
reservations:
devices:
- driver: nvidia
device_ids: ['0']
capabilities: [gpu]
restart: unless-stopped