services: qwen-vlm: image: vllm/vllm-openai:latest command: > --model Qwen/Qwen3-VL-2B-Instruct-FP8 --max-model-len 16384 --max-num-batched-tokens 4096 --gpu-memory-utilization 0.85 --tensor-parallel-size 1 environment: - HF_TOKEN=${HF_TOKEN:-} - NCCL_DEBUG=INFO - NCCL_IB_DISABLE=1 - NCCL_P2P_LEVEL=SYS - NCCL_MIN_NCHANNELS=4 - NCCL_TOPO_FILE=/dev/null - PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True shm_size: '2gb' ports: - "8000:8000" volumes: - ./models:/root/.cache/huggingface healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8000/health"] interval: 10s timeout: 5s retries: 5 start_period: 120s deploy: resources: reservations: devices: - driver: nvidia count: all capabilities: [gpu] networks: - ocr-network streamlit-ui: build: ./streamlit ports: - "8501:8501" volumes: - ./data:/app/data depends_on: qwen-vlm: condition: service_started networks: - ocr-network networks: ocr-network: driver: bridge