Livrare LOT 1 - Didi

This commit is contained in:
Dezvoltari Evotech 2026-06-25 14:13:25 -07:00
commit 5380c3fc63
990 changed files with 133308 additions and 0 deletions

View file

@ -0,0 +1,130 @@
# Video Analysis Module - Docker Compose Configuration
#
# Port Allocation (Dev AI Vision/Video: 54500-54600):
# 54500 - vLLM BusterX (deepfake detection model)
# 54600 - Video Analysis API
#
# Profiles:
# api - API server only (requires external vLLM)
# api-vllm - API + vLLM BusterX (GPU required)
#
# Required environment variables (set in deploy/.env file):
# HF_TOKEN - Hugging Face token for model downloads
# HF_CACHE_DIR - Cache directory for models
# VIDEO_ANALYSIS_RUNS_DIR - Directory for analysis artifacts
#
# Naming Convention: didiAI-{module}-{service}
#
# Network:
# Uses deploy_default network (shared with other modules)
networks:
deploy_default:
external: true
services:
# ==========================================================================
# vLLM Server - BusterX (Deepfake Detection Model)
# ==========================================================================
# Vision-language model for video deepfake detection
# Runs on GPU 1 (Qwen3.5-35B-A3B uses GPU 0 via llm-inference module)
# BusterX is based on Qwen2.5-VL-7B (~17GB VRAM with optimizations)
vllm-buster:
container_name: didiAI-video-vllm-buster
image: vllm/vllm-openai:v0.8.5
ports:
- "54500:54500"
networks:
- deploy_default
volumes:
- ${HF_CACHE_DIR:-/cai2_ds_storage/hf_cache}:/root/.cache/huggingface
environment:
- HF_HOME=/root/.cache/huggingface
- HUGGING_FACE_HUB_TOKEN=${HF_TOKEN}
- CUDA_VISIBLE_DEVICES=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]
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:54500/health"]
interval: 30s
timeout: 10s
retries: 10
start_period: 600s
restart: unless-stopped
profiles:
- api-vllm
# ==========================================================================
# Video Analysis API Server
# ==========================================================================
video-analysis-api:
container_name: didiAI-video-api
image: didiai-video-api
build:
context: ..
dockerfile: deploy/Dockerfile
ports:
- "54600:54600"
networks:
- deploy_default
environment:
# Server settings
- VIDEO_ANALYSIS_HOST=0.0.0.0
- VIDEO_ANALYSIS_PORT=54600
# External URL for OpenAPI spec (REQUIRED)
- VIDEO_ANALYSIS_EXTERNAL_URL=${VIDEO_ANALYSIS_EXTERNAL_URL}
# vLLM connection (points to vllm-buster container)
- VIDEO_ANALYSIS_VLLM_BASE_URL=${VIDEO_ANALYSIS_VLLM_BASE_URL:-http://didiAI-video-vllm-buster:54500}
- VIDEO_ANALYSIS_VLLM_MODEL=${VIDEO_ANALYSIS_VLLM_MODEL:-busterx}
- VIDEO_ANALYSIS_RUNS_DIR=${VIDEO_ANALYSIS_RUNS_DIR:-/app/runs}
# Optional tuning
- VIDEO_ANALYSIS_FRAMES=${VIDEO_ANALYSIS_FRAMES:-16}
- VIDEO_ANALYSIS_MAX_SIDE=${VIDEO_ANALYSIS_MAX_SIDE:-960}
- VIDEO_ANALYSIS_JPEG_QUALITY=${VIDEO_ANALYSIS_JPEG_QUALITY:-85}
- VIDEO_ANALYSIS_MAX_TOKENS=${VIDEO_ANALYSIS_MAX_TOKENS:-750}
- VIDEO_ANALYSIS_TEMPERATURE=${VIDEO_ANALYSIS_TEMPERATURE:-0.000001}
- VIDEO_ANALYSIS_REPETITION_PENALTY=${VIDEO_ANALYSIS_REPETITION_PENALTY:-1.05}
# Runtime config polling
- VIDEO_ANALYSIS_DASHBOARD_URL=${VIDEO_ANALYSIS_DASHBOARD_URL:-http://didiAI-dashboard:51300}
# Semantic analysis settings
- VIDEO_ANALYSIS_SEMANTIC_LLM_BASE_URL=${VIDEO_ANALYSIS_SEMANTIC_LLM_BASE_URL}
- VIDEO_ANALYSIS_SEMANTIC_AGGREGATION_MODEL=${VIDEO_ANALYSIS_SEMANTIC_AGGREGATION_MODEL}
- VIDEO_ANALYSIS_SEMANTIC_LLM_API_KEY=${VIDEO_ANALYSIS_SEMANTIC_LLM_API_KEY}
volumes:
# Persist artifacts on the host (module-root runs/ folder)
- ../runs:/app/runs
healthcheck:
test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:54600/health')"]
interval: 30s
timeout: 10s
retries: 3
start_period: 20s
restart: unless-stopped
profiles:
- api
- api-vllm