# docker-compose.tuning.yml - Ray Tune with all OCR services (PaddleOCR + DocTR) # Usage: # docker compose -f docker-compose.tuning.yml up -d paddle-ocr-gpu doctr-gpu # docker compose -f docker-compose.tuning.yml run raytune --service paddle --samples 64 # docker compose -f docker-compose.tuning.yml run raytune --service doctr --samples 64 # docker compose -f docker-compose.tuning.yml down # # Note: EasyOCR uses port 8002 (same as PaddleOCR). Use docker-compose.tuning.easyocr.yml separately. services: raytune: image: seryus.ddns.net/unir/raytune:latest network_mode: host shm_size: '5gb' volumes: - ./results:/app/results:rw environment: - PYTHONUNBUFFERED=1 paddle-ocr-gpu: image: seryus.ddns.net/unir/paddle-ocr-gpu:latest container_name: paddle-ocr-gpu-tuning ports: - "8002:8000" volumes: - ./dataset:/app/dataset:ro - ./debugset:/app/debugset:rw - paddlex-cache:/root/.paddlex environment: - PYTHONUNBUFFERED=1 - CUDA_VISIBLE_DEVICES=0 - PADDLE_DET_MODEL=PP-OCRv5_mobile_det - PADDLE_REC_MODEL=PP-OCRv5_mobile_rec deploy: resources: reservations: devices: - driver: nvidia count: 1 capabilities: [gpu] restart: unless-stopped healthcheck: test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8000/health')"] interval: 30s timeout: 10s retries: 3 start_period: 60s doctr-gpu: image: seryus.ddns.net/unir/doctr-gpu:latest container_name: doctr-gpu-tuning ports: - "8003:8000" volumes: - ./dataset:/app/dataset:ro - ./debugset:/app/debugset:rw - doctr-cache:/root/.cache/doctr environment: - PYTHONUNBUFFERED=1 - CUDA_VISIBLE_DEVICES=0 - DOCTR_DET_ARCH=db_resnet50 - DOCTR_RECO_ARCH=crnn_vgg16_bn deploy: resources: reservations: devices: - driver: nvidia count: 1 capabilities: [gpu] restart: unless-stopped healthcheck: test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8000/health')"] interval: 30s timeout: 10s retries: 3 start_period: 180s volumes: paddlex-cache: name: paddlex-model-cache doctr-cache: name: doctr-model-cache