diff --git a/agent/Dockerfile b/agent/Dockerfile index 2e3ca9f..f0a1e24 100644 --- a/agent/Dockerfile +++ b/agent/Dockerfile @@ -1,6 +1,8 @@ # FabledCurator GPU agent — runs on the desktop with the GPU. -# CUDA runtime so onnxruntime-gpu can use the card; ffmpeg for video frames. -FROM nvidia/cuda:12.4.1-runtime-ubuntu22.04 +# CUDA + cuDNN runtime so onnxruntime-gpu can use the card (it needs cuDNN 9 — +# the plain -runtime image lacks it: "libcudnn.so.9: cannot open shared object +# file"); ffmpeg for video frames. +FROM nvidia/cuda:12.4.1-cudnn-runtime-ubuntu22.04 ENV DEBIAN_FRONTEND=noninteractive PYTHONUNBUFFERED=1 RUN apt-get update \ diff --git a/agent/docker-compose.yml b/agent/docker-compose.yml new file mode 100644 index 0000000..9b1adb1 --- /dev/null +++ b/agent/docker-compose.yml @@ -0,0 +1,40 @@ +# FabledCurator GPU agent — desktop run via docker compose. +# +# Usage: +# 1. Generate a token: FC → Settings → Tagging → GPU agent → Generate token. +# 2. Create a .env next to this file: +# FC_URL=http://curator.traefik.internal +# FC_TOKEN= +# # optional: CCIP_MODEL=ccip-caformer_b36-24 (the F1-0.94 variant) +# 3. docker compose up -d (pulls the published image) +# 4. Open http://localhost:8770 → Start. Pause/Stop hands the GPU back. +# docker compose down to stop the container entirely. +# +# Needs the NVIDIA Container Toolkit installed on the host for --gpus. + +services: + fc-gpu-agent: + image: git.fabledsword.com/bvandeusen/fabledcurator-agent:latest + pull_policy: always + ports: + - "8770:8770" + environment: + FC_URL: ${FC_URL:-http://curator.traefik.internal} + FC_TOKEN: ${FC_TOKEN:?set FC_TOKEN in .env (FC → GPU agent → Generate token)} + CCIP_MODEL: ${CCIP_MODEL:-} + DETECTOR_LEVEL: ${DETECTOR_LEVEL:-m} + BATCH_SIZE: ${BATCH_SIZE:-4} + volumes: + # Persist the downloaded ONNX models so restarts are fast. + - fc-agent-models:/models + restart: unless-stopped + deploy: + resources: + reservations: + devices: + - driver: nvidia + count: all + capabilities: [gpu] + +volumes: + fc-agent-models: