Comments, docstrings, logs, CLI help, map UI, legends, PDF sheet, scripts, compose files and AGENTS.md are now English. Data keys stay unchanged (relief_oriente, densite_sol, visualisations/, API JSON keys, link params). Wrong comments and help defaults found along the way are corrected. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
74 lines
2.9 KiB
YAML
74 lines
2.9 KiB
YAML
# Processing machine - tile generator (see docs/DEPLOY_WEBAPP.md).
|
|
#
|
|
# Runs on the powerful machine (GPU + PDAL) and exposes the API that remote
|
|
# maps (Raspberry Pi, docker-compose.maps.yml + LIDAR_GENERATION_URL) call:
|
|
# drawing an area -> IGN download + GPU processing here; source tiles and
|
|
# XYZ tiles served to the lightweight machines (/api/tiles + static files,
|
|
# /tiles/XYZ).
|
|
#
|
|
# docker compose -f docker-compose.worker.yml up -d --build
|
|
# docker compose -f docker-compose.worker.yml logs -f worker
|
|
# docker compose -f docker-compose.worker.yml down
|
|
#
|
|
# One-off batch processing of the tiles present in input/:
|
|
# docker compose -f docker-compose.worker.yml run --rm --build process
|
|
# (any argument replaces the default command: repeat
|
|
# python3 -m lidar_pipeline /data/input -o /data/output -r 0.2 -g all ... in full)
|
|
services:
|
|
# Tile generator: XYZ map + generation API (full image, GPU)
|
|
worker:
|
|
build: .
|
|
image: lidar-lidar
|
|
container_name: lidar-worker
|
|
init: true
|
|
user: "1000:1000"
|
|
gpus: all # remove this line on a machine without a GPU
|
|
ports:
|
|
- "8973:8973" # reachable by the remote maps (LIDAR_GENERATION_URL
|
|
# and LIDAR_SOURCE_URL point here)
|
|
volumes:
|
|
# input/ writable: the API downloads missing IGN tiles into it
|
|
- ./input:/data/input
|
|
- ./output:/data/output
|
|
environment:
|
|
- TZ=Europe/Paris
|
|
- LIDAR_INPUT_DIR=/data/input
|
|
- LIDAR_OUTPUT_DIR=/data/output
|
|
- LIDAR_PORT=8973
|
|
# Generations started from a remote map use the GPU
|
|
- LIDAR_GPU=1
|
|
- LIDAR_WORKERS=auto
|
|
# Workers per GPU capped by the free VRAM when the run starts
|
|
# ((free - reserve) / per-worker peak); the excess runs on the CPU.
|
|
# Peak estimated at 2048 MiB: adjust after measuring (nvidia-smi during a run).
|
|
# - LIDAR_GPU_WORKER_MIB=2048
|
|
# - LIDAR_GPU_RESERVE_MIB=512
|
|
# One thread per worker: single-threaded BLAS/OpenMP, otherwise 12 workers x N
|
|
# threads swamp the 14 cores (load 68+ observed during runs)
|
|
- OMP_NUM_THREADS=1
|
|
- OPENBLAS_NUM_THREADS=1
|
|
- MKL_NUM_THREADS=1
|
|
- NUMEXPR_NUM_THREADS=1
|
|
# Protect the API if the network is not trusted: same value as
|
|
# LIDAR_REMOTE_TOKEN on every remote map (otherwise leave commented out)
|
|
# - LIDAR_API_TOKEN=change-me
|
|
command: python3 -m uvicorn lidar_pipeline.mapserve:app --host 0.0.0.0 --port 8973
|
|
restart: unless-stopped
|
|
|
|
# One-off processing of the input/ tiles (one pass, then exit)
|
|
process:
|
|
build: .
|
|
image: lidar-lidar
|
|
container_name: lidar-process
|
|
init: true
|
|
user: "1000:1000"
|
|
gpus: all # remove this line on a machine without a GPU
|
|
volumes:
|
|
- ./input:/data/input
|
|
- ./output:/data/output
|
|
environment:
|
|
- TZ=Europe/Paris
|
|
command: ["python3", "-m", "lidar_pipeline", "/data/input", "-o", "/data/output", "-r", "0.2", "-g", "all"]
|
|
profiles:
|
|
- process
|