9f1148b110
Bump the GPU-agent base image from 12.4.1-cudnn-runtime-ubuntu22.04 (Python 3.10, CUDA 12.4, early-2024) to 12.9.2-cudnn-runtime-ubuntu24.04: - Ubuntu 24.04 LTS → Python 3.12 — one modern runtime, no more 3.10. - CUDA 12.9 + cuDNN 9 — current within the CUDA-12 / cuDNN-9 line that the default onnxruntime-gpu wheel AND torch cu124 are built against. NOT CUDA 13: ONNX Runtime's CUDA-13 support is still nascent (separate wheels + open "Unsupported CUDA version: 13" reports), and torch bundles cu124 anyway. The GPU (Ampere/Ada, 12 GB) is fine on either — this is a library-alignment call, not a hardware limit. - PIP_BREAK_SYSTEM_PACKAGES=1: 24.04 marks system Python externally-managed (PEP 668); a single-purpose container owns its environment, so global installs are fine and simplest. - agent/ruff.toml pinned to py312 (was py310) so CI lints against the real runtime; from __future__ import annotations stays (PEP 649 lazy annotations are 3.14, so self-refs still evaluate on 3.12). CI builds the image but has no GPU — validate on the desktop after pull that it starts and loads CUDAExecutionProvider (not CPU fallback). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ttrj5P7upUTueSfoJcxEqa
34 lines
1.8 KiB
Docker
34 lines
1.8 KiB
Docker
# FabledCurator GPU agent — runs on the desktop with the GPU.
|
|
# CUDA 12.9 + cuDNN 9 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. Ubuntu 24.04 → Python 3.12.
|
|
# Stays on the CUDA-12 / cuDNN-9 line the default onnxruntime-gpu + torch are
|
|
# built against (CUDA 13 has only nascent ONNX Runtime support).
|
|
FROM nvidia/cuda:12.9.2-cudnn-runtime-ubuntu24.04
|
|
|
|
# PIP_BREAK_SYSTEM_PACKAGES: Ubuntu 24.04 marks its system Python as externally
|
|
# managed (PEP 668), so a global `pip install` errors without this. It's a
|
|
# single-purpose container — we own the whole environment, so installing into
|
|
# the system site-packages is fine (and simplest — no venv on PATH to manage).
|
|
ENV DEBIAN_FRONTEND=noninteractive PYTHONUNBUFFERED=1 PIP_BREAK_SYSTEM_PACKAGES=1
|
|
RUN apt-get update \
|
|
&& apt-get install -y --no-install-recommends python3 python3-pip ffmpeg \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
WORKDIR /app
|
|
# torch from the CUDA-12.4 wheel index; its wheels bundle their own CUDA + cuDNN
|
|
# so they run on the 12.9 base and coexist with onnxruntime-gpu. Installed first
|
|
# + separately so the GPU build of torch is deterministic and layer-cached.
|
|
RUN pip3 install --no-cache-dir torch==2.6.0 --index-url https://download.pytorch.org/whl/cu124
|
|
COPY requirements.txt .
|
|
RUN pip3 install --no-cache-dir -r requirements.txt
|
|
COPY fc_agent ./fc_agent
|
|
|
|
# imgutils ONNX models + the transformers SigLIP weights both cache here; mount
|
|
# a volume to persist them across restarts (the SigLIP download is ~3.5 GB once).
|
|
ENV HF_HOME=/models
|
|
EXPOSE 8770
|
|
|
|
# The control UI; the worker is started from it (or POST /start).
|
|
CMD ["uvicorn", "fc_agent.app:app", "--host", "0.0.0.0", "--port", "8770"]
|