Harden CPU AI image builds
GeoIntel CI / docs-smoke (push) Has been cancelled
GeoIntel CI / contract-smoke (push) Has been cancelled

This commit is contained in:
Codex
2026-07-12 23:58:26 +02:00
parent 3266c6578d
commit 5b008668d7
6 changed files with 73 additions and 4 deletions
+18
View File
@@ -7015,3 +7015,21 @@ Open:
## Next recommended pass
- Finish the inactive candidate, run fixed-threshold positive evidence and split pure-empty/sparse-context background matrices, and preserve the current production default unless the promotion report passes every gate.
# Sprint 172 - CPU AI image build hardening
## What changed
- Reordered `deploy/unraid/Dockerfile.all-in-one` so `pyproject.toml` and minimal package metadata are installed before the complete backend source is copied.
- Code-only backend changes can now reuse the expensive GIS/AI dependency layer; dependency metadata changes still invalidate it.
- The opt-in CPU AI build now installs the same validated PyTorch `2.13.0` / torchvision `0.28.0` versions from the official CPU wheel index before installing the `ai` extra.
- Kept the full GIS and YOLO import/preflight smoke after the complete backend source copy.
## Validation so far
- RED: the new Docker ordering/CPU-wheel regression test failed against the old Dockerfile.
- GREEN: `python -m pytest backend/tests/test_docker_runtime_config.py -q`: 26 passed.
- `python -m pip index versions` confirmed `torch 2.13.0+cpu` and `torchvision 0.28.0+cpu` are available from the configured CPU index for the workstation platform.
## Remaining validation
- Build the AI-enabled all-in-one image on Tower after the current inactive model training run finishes, verify Torch reports a CPU build and rerun live migration/browser smokes before replacing the runtime.
+12
View File
@@ -43,6 +43,18 @@ AI dependencies remain separate in the `ai` optional dependency group and must
not be installed by the default Docker backend image unless an explicit AI image
or profile is introduced later.
The opt-in Unraid all-in-one AI build is CPU-oriented because its documented
runtime sets `YOLO_DEVICE=cpu`. It installs the pinned PyTorch/torchvision pair
from PyTorch's CPU wheel index before installing the `ai` extra. This avoids
shipping unused CUDA runtime libraries. The index and versions remain explicit
Docker build arguments so a future, separately validated GPU image can override
them without changing the base dependency group.
Docker dependency metadata is copied before application source. Backend source
changes therefore reuse the dependency layer while changes to `pyproject.toml`
still invalidate it correctly. Runtime GIS and YOLO import/preflight smokes run
after the complete backend source is copied.
## Approved AI
- PyTorch