didi-lot1-ai/ai_platform/local_gpu_stack
2026-06-27 06:42:02 -07:00
..
reports LOT 1 - Optimizare script build -Instalare mono comanda 2026-06-27 06:42:02 -07:00
seed LOT 1 - Optimizare script build -Instalare mono comanda 2026-06-27 06:42:02 -07:00
.env.example LOT 1 - Optimizare script build -Instalare mono comanda 2026-06-27 06:42:02 -07:00
deploy.sh LOT 1 - Optimizare script build -Instalare mono comanda 2026-06-27 06:42:02 -07:00
docker-compose.yml LOT 1 - Optimizare script build -Instalare mono comanda 2026-06-27 06:42:02 -07:00
lib.sh LOT 1 - Optimizare script build -Instalare mono comanda 2026-06-27 06:42:02 -07:00
README.md LOT 1 - Optimizare script build -Instalare mono comanda 2026-06-27 06:42:02 -07:00
run_tests.py LOT 1 - Optimizare script build -Instalare mono comanda 2026-06-27 06:42:02 -07:00
TESTING.md LOT 1 - Optimizare script build -Instalare mono comanda 2026-06-27 06:42:02 -07:00

DiDi LOT 1 — Local GPU stack (deploy progresiv)

Deploy „cărămidă cu cărămidă" al întregii platforme pe un host cu GPU. Pentru fiecare componentă: build/pull + download → seed (dacă e cazul) → TEST funcțional → doar dacă testul trece corect → următoarea. Idempotent, se oprește la primul test picat.

Cerințe (verificate de preflight, nu se instalează automat)

  • Docker Engine 24+ cu plugin docker compose v2
  • NVIDIA driver ≥535 + nvidia-container-toolkit (runtime configurat în Docker)
  • ≥1 GPU (proiectat pe 2× H200; GPU 0 = LLM+Whisper, GPU 1 = BusterX+bge×2)
  • ~100 GB liberi pe / (toate modelele ≈ 94 GB)

Modele — o singură zonă locală

Toate modelele stau în ai_platform/models/ (format HF cache, un folder per model), servite offline de acolo (fără rețea la runtime). MODELS_DIR în .env (auto = acest folder). Ce lipsește se descarcă o singură dată în el (deploy.sh pasul DOWNLOAD). NU se comite în git.

Folder Model Folosit de
models--Qwen--Qwen3.5-35B-A3B LLM (67G) llm (vLLM)
models--l8cv--BusterX_plusplus deepfake (16G, Qwen2.5-VL intern) video (vLLM)
models--BAAI--bge-m3 embeddings embeddings (vLLM)
models--BAAI--bge-reranker-v2-m3 reranker rerank (vLLM)
models--mobiuslabsgmbh--faster-whisper-large-v3-turbo STT audio
models--urchade--gliner_multi-v2.1 + models--microsoft--mdeberta-v3-base NER + backbone extractors

Copiezi ai_platform/models/ pe altă mașină → zero download la deploy.

Utilizare

cd ai_platform/local_gpu_stack
./deploy.sh                 # tot, de la preflight la dashboard
./deploy.sh --from web      # reia de la cărămida 'web' (sare peste cele dinainte)
./deploy.sh --only llm      # rulează o singură cărămidă (presupune deps deja up)
./deploy.sh --install-deps  # instalează Docker + nvidia-container-toolkit (sudo), apoi continuă

.env se creează automat din .env.example la prima rulare.

Mașină nouă (VM „chioară" cu GPU)

  1. (o singură dată) driver NVIDIA ≥535 + reboot — sudo ubuntu-drivers install (nu se automatizează, cere reboot).
  2. git clone <repo> && cd .../ai_platform/local_gpu_stack
  3. ./deploy.sh --install-deps → instalează Docker+toolkit, apoi:
    • HOST_IP se auto-detectează și se scrie în .env
    • BusterX se descarcă automat din HF dacă nu e pe disc (BUSTER_HF_CACHE)
    • Qwen/bge se descarcă (cu progres), totul se ridică cărămidă cu cărămidă cu test la fiecare.

Singurul pas care NU e o comandă: driverul NVIDIA (reboot). Restul e ./deploy.sh. Cărămizi, în ordine: embeddings · rerank · llm · extractors · audio · video · forensic · web · catalog · gateway · brain · dashboard.

La final: dashboard pe http://<HOST_IP>:51300/admin-ai/ (staging mode, fără login).

Ce automatizează (fixurile care înainte erau manuale)

  • rețea unică didi-network; plasare GPU 0/1; nume containere didiAI-*
  • base-URL vLLM fără /v1 (codul îl adaugă) pentru llm/embeddings/video
  • YOLO scrie modelul în /tmp (cwd e read-only la non-root)
  • gateway LLM injectează enable_thinking:false → JSON curat din Qwen3.5 (sentiment/OCR/semantic/brain)
  • SearXNG fără proxy outbound, ca serviciu compose
  • brain: aliniere parolă postgres, creare token atomic (auto, salvat în .env), seed taxonomie (79 tag-uri)
  • dashboard: .env cu staging + override-uri health; seed catalog (9 intrări)

Fișiere

Fișier Rol
deploy.sh orchestratorul progresiv gated
lib.sh logging, wait_health, gate, shim docker (merge și prin sg docker)
docker-compose.yml stack-ul GPU + non-GPU + searxng
.env.example configurația (host, porturi, parole, token)
seed/seed_catalog.sh populează catalogul DB al dashboard-ului (idempotent)
seed/seed_brain.sh token atomic + taxonomie + env brain
TESTING.md comenzi de testare per componentă + smoke-test

Brain rulează din modules/didi_brain/infra/docker-compose.yml; dashboard și gateway din modules/*/deploy/deploy.sh le orchestrează pe toate sub proiectul local_gpu_stack.