Pin Tower-compatible CUDA runtime
GeoIntel release gates / Compile, test, contracts and builds (push) Canceled after 0s
GeoIntel release gates / Python and npm vulnerability policy (push) Canceled after 0s
GeoIntel release gates / GIS image, SBOM and container scan (push) Canceled after 0s

This commit is contained in:
Jens
2026-08-01 16:06:15 +02:00
parent dfcc11b0d5
commit 24dec16744
5 changed files with 15 additions and 12 deletions
+5 -5
View File
@@ -388,7 +388,7 @@ def test_backend_docker_context_contains_gis_import_smoke_script() -> None:
assert (ROOT / "backend" / "scripts" / "gis_import_smoke.py").exists() assert (ROOT / "backend" / "scripts" / "gis_import_smoke.py").exists()
def test_all_in_one_dockerfile_caches_dependencies_and_uses_cpu_torch_for_ai_runtime() -> None: def test_all_in_one_dockerfile_caches_dependencies_and_pins_driver_compatible_cuda_torch() -> None:
dockerfile = (ROOT / "deploy" / "unraid" / "Dockerfile.all-in-one").read_text(encoding="utf-8") dockerfile = (ROOT / "deploy" / "unraid" / "Dockerfile.all-in-one").read_text(encoding="utf-8")
metadata_copy_index = dockerfile.index("COPY backend/pyproject.toml /app/") metadata_copy_index = dockerfile.index("COPY backend/pyproject.toml /app/")
@@ -398,9 +398,9 @@ def test_all_in_one_dockerfile_caches_dependencies_and_uses_cpu_torch_for_ai_run
smoke_index = dockerfile.index("RUN python scripts/gis_import_smoke.py") smoke_index = dockerfile.index("RUN python scripts/gis_import_smoke.py")
assert metadata_copy_index < placeholder_readme_index < dependency_install_index < backend_copy_index < smoke_index assert metadata_copy_index < placeholder_readme_index < dependency_install_index < backend_copy_index < smoke_index
assert "GEOINTEL_TORCH_INDEX_URL=https://download.pytorch.org/whl/cu130" in dockerfile assert "GEOINTEL_TORCH_INDEX_URL=https://download.pytorch.org/whl/cu128" in dockerfile
assert "GEOINTEL_TORCH_VERSION=2.13.0" in dockerfile assert "GEOINTEL_TORCH_VERSION=2.11.0" in dockerfile
assert "GEOINTEL_TORCHVISION_VERSION=0.28.0" in dockerfile assert "GEOINTEL_TORCHVISION_VERSION=0.26.0" in dockerfile
assert '--index-url "$GEOINTEL_TORCH_INDEX_URL"' in dockerfile assert '--index-url "$GEOINTEL_TORCH_INDEX_URL"' in dockerfile
@@ -432,4 +432,4 @@ def test_unraid_ai_runtime_requests_nvidia_and_fails_closed() -> None:
assert 'YOLO_DEVICE="${YOLO_DEVICE:-cuda:0}"' in run_script assert 'YOLO_DEVICE="${YOLO_DEVICE:-cuda:0}"' in run_script
assert 'YOLO_REQUIRE_CUDA="${YOLO_REQUIRE_CUDA:-true}"' in run_script assert 'YOLO_REQUIRE_CUDA="${YOLO_REQUIRE_CUDA:-true}"' in run_script
assert '-e YOLO_REQUIRE_CUDA="$YOLO_REQUIRE_CUDA"' in run_script assert '-e YOLO_REQUIRE_CUDA="$YOLO_REQUIRE_CUDA"' in run_script
assert "https://download.pytorch.org/whl/cu130" in dockerfile assert "https://download.pytorch.org/whl/cu128" in dockerfile
+3 -3
View File
@@ -9,9 +9,9 @@ RUN npm run build
FROM postgres:16-bookworm AS runtime FROM postgres:16-bookworm AS runtime
ARG GEOINTEL_INSTALL_AI=false ARG GEOINTEL_INSTALL_AI=false
ARG GEOINTEL_TORCH_INDEX_URL=https://download.pytorch.org/whl/cu130 ARG GEOINTEL_TORCH_INDEX_URL=https://download.pytorch.org/whl/cu128
ARG GEOINTEL_TORCH_VERSION=2.13.0 ARG GEOINTEL_TORCH_VERSION=2.11.0
ARG GEOINTEL_TORCHVISION_VERSION=0.28.0 ARG GEOINTEL_TORCHVISION_VERSION=0.26.0
ARG GEOINTEL_ULTRALYTICS_VERSION=8.4.99 ARG GEOINTEL_ULTRALYTICS_VERSION=8.4.99
ARG GEOINTEL_SETUPTOOLS_VERSION=83.0.0 ARG GEOINTEL_SETUPTOOLS_VERSION=83.0.0
ARG GEOINTEL_WHEEL_VERSION=0.47.0 ARG GEOINTEL_WHEEL_VERSION=0.47.0
+1
View File
@@ -12230,3 +12230,4 @@ Open:
### Verificatie ### Verificatie
- TypeScript- en Vite-productiebuild geslaagd. - TypeScript- en Vite-productiebuild geslaagd.
- Gerichte frontend-, backend-, browser- en productieverificatie volgen hieronder na de releasegate. - Gerichte frontend-, backend-, browser- en productieverificatie volgen hieronder na de releasegate.
- De eerste productieacceptatie vond een echte CUDA-compatibiliteitsregressie: `torch 2.13.0+cu130` zag de RTX 4080 SUPER maar weigerde initialisatie op de Tower-driver met CUDA 12.9-capaciteit. De AI-image is daarom teruggebracht naar de expliciet gepinde, drivercompatibele combinatie `torch 2.11.0` / `torchvision 0.26.0` via de officiële CUDA 12.8-index; promotie vereist opnieuw live `torch.cuda.is_available()` en modelpreflight.
+4 -2
View File
@@ -46,12 +46,14 @@ not be installed by the default Docker backend image unless an explicit AI image
or profile is introduced later. or profile is introduced later.
The opt-in Unraid all-in-one AI build is NVIDIA-GPU-oriented. It installs the The opt-in Unraid all-in-one AI build is NVIDIA-GPU-oriented. It installs the
pinned PyTorch/torchvision pair from the CUDA 13.0 wheel index before installing pinned PyTorch/torchvision pair from the CUDA 12.8 wheel index before installing
the `ai` extra. The production runtime exposes the NVIDIA device, selects the `ai` extra. The production runtime exposes the NVIDIA device, selects
`YOLO_DEVICE=cuda:0` and sets `YOLO_REQUIRE_CUDA=true`, so missing CUDA fails `YOLO_DEVICE=cuda:0` and sets `YOLO_REQUIRE_CUDA=true`, so missing CUDA fails
closed instead of silently falling back to CPU. The index and versions remain closed instead of silently falling back to CPU. The index and versions remain
explicit Docker build arguments and require live driver/runtime validation on explicit Docker build arguments and require live driver/runtime validation on
Tower before release promotion. Tower before release promotion. CUDA 12.8 is deliberately below the Tower
driver's reported CUDA 12.9 capability; a newer wheel index may not be promoted
merely because it exists when `torch.cuda.is_available()` fails on that driver.
Docker dependency metadata is copied before application source. Backend source Docker dependency metadata is copied before application source. Backend source
changes therefore reuse the dependency layer while changes to `pyproject.toml` changes therefore reuse the dependency layer while changes to `pyproject.toml`
+2 -2
View File
@@ -237,7 +237,7 @@ export function LandingPage({
<div> <div>
<p>Veilige toegang</p> <p>Veilige toegang</p>
<h2 id="access-title">Open de GeoIntel-workbench</h2> <h2 id="access-title">Open de GeoIntel-workbench</h2>
<span>Meld u aan als operator of start een beperkte demosessie.</span> <span>Meld u aan als operator of start een projectgebonden demosessie met volledige analysetoegang.</span>
</div> </div>
</div> </div>
@@ -301,7 +301,7 @@ export function LandingPage({
<span className="landing-guest-icon" aria-hidden="true"><UserRound /></span> <span className="landing-guest-icon" aria-hidden="true"><UserRound /></span>
<div> <div>
<strong>Gastmodus</strong> <strong>Gastmodus</strong>
<p>Open een tijdelijke, alleen-lezen demowerkruimte met voorbeelddata en een vooraf uitgevoerde kwaliteitscontrole.</p> <p>Gebruik dezelfde modellen, analyses en downloads als een gebruiker. Alleen beheer, instellingen en uploads blijven afgeschermd.</p>
</div> </div>
<button type="button" onClick={submitGuestLogin} disabled={busy}> <button type="button" onClick={submitGuestLogin} disabled={busy}>
{pendingAction === 'guest' ? 'Demo voorbereiden…' : 'Als gast verkennen'} {pendingAction === 'guest' ? 'Demo voorbereiden…' : 'Als gast verkennen'}