From 9c56d4a15a0e2e99729ad50e27c61422ec67f3a3 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 13 Aug 2025 13:33:09 +0200 Subject: [PATCH] FROM pytorch/pytorch:2.8.0-cuda12.8-cudnn9-runtime (#21675) Signed-off-by: Glenn Jocher Co-authored-by: UltralyticsAssistant --- .github/workflows/docker.yml | 10 +++++----- docker/Dockerfile | 12 ++++-------- docker/Dockerfile-export | 15 +++++++++++++++ docker/Dockerfile-runner | 6 +----- 4 files changed, 25 insertions(+), 18 deletions(-) create mode 100644 docker/Dockerfile-export diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 4a2c64493e..afc343ea56 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -17,7 +17,7 @@ on: inputs: Dockerfile: type: boolean - description: Dockerfile (+ runner) + description: Dockerfile (+ runner, export) default: true Dockerfile-python: type: boolean @@ -61,7 +61,7 @@ jobs: tags: "latest" platforms: "linux/amd64" runs_on: "ubuntu-latest" - derivatives: "Dockerfile-runner" + derivatives: "Dockerfile-runner,Dockerfile-export" - dockerfile: "Dockerfile-python" tags: "latest-python" platforms: "linux/amd64" @@ -210,15 +210,15 @@ jobs: - name: Check Environment if: (github.event_name == 'push' || github.event.inputs[matrix.dockerfile] == 'true') && (matrix.platforms == 'linux/amd64' || matrix.platforms == 'linux/arm64') && matrix.dockerfile != 'Dockerfile-conda' - run: docker run ultralytics/ultralytics:${{ matrix.tags == 'latest-python' && 'latest-python-export' || matrix.tags }} /bin/bash -c "yolo checks && uv pip list" + run: docker run ultralytics/ultralytics:${{ (matrix.tags == 'latest-python' && 'latest-python-export') || (matrix.tags == 'latest' && 'latest-export') || matrix.tags }} /bin/bash -c "yolo checks && uv pip list" - name: Run Tests if: (github.event_name == 'push' || github.event.inputs[matrix.dockerfile] == 'true') && (matrix.platforms == 'linux/amd64' || matrix.platforms == 'linux/arm64') && matrix.dockerfile != 'Dockerfile-conda' - run: docker run ultralytics/ultralytics:${{ matrix.tags == 'latest-python' && 'latest-python-export' || matrix.tags }} /bin/bash -c "pip install pytest && pytest tests" + run: docker run ultralytics/ultralytics:${{ (matrix.tags == 'latest-python' && 'latest-python-export') || (matrix.tags == 'latest' && 'latest-export') || matrix.tags }} /bin/bash -c "pip install pytest && pytest tests" - name: Run Benchmarks if: (github.event_name == 'push' || github.event.inputs[matrix.dockerfile] == 'true') && (matrix.platforms == 'linux/amd64' || matrix.dockerfile == 'Dockerfile-arm64') && matrix.dockerfile != 'Dockerfile' && matrix.dockerfile != 'Dockerfile-conda' - run: docker run ultralytics/ultralytics:${{ matrix.tags == 'latest-python' && 'latest-python-export' || matrix.tags }} yolo benchmark model=yolo11n.pt imgsz=160 verbose=0.309 + run: docker run ultralytics/ultralytics:${{ (matrix.tags == 'latest-python' && 'latest-python-export') || (matrix.tags == 'latest' && 'latest-export') || matrix.tags }} yolo benchmark model=yolo11n.pt imgsz=160 verbose=0.309 - name: Push All Images if: github.event_name == 'push' || (github.event.inputs[matrix.dockerfile] == 'true' && github.event.inputs.push == 'true') diff --git a/docker/Dockerfile b/docker/Dockerfile index feb577eb08..b761394f68 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -4,7 +4,7 @@ # Image is CUDA-optimized for YOLO single/multi-GPU training and inference # Start FROM PyTorch image https://hub.docker.com/r/pytorch/pytorch or nvcr.io/nvidia/pytorch:25.02-py3 -FROM pytorch/pytorch:2.7.0-cuda12.6-cudnn9-runtime +FROM pytorch/pytorch:2.8.0-cuda12.8-cudnn9-runtime # Set environment variables # Avoid DDP error "MKL_THREADING_LAYER=INTEL is incompatible with libgomp.so.1 library" @@ -40,14 +40,10 @@ RUN sed -i '/^\[http "https:\/\/github\.com\/"\]/,+1d' .git/config && \ sed -i'' -e 's/"opencv-python/"opencv-python-headless/' pyproject.toml ADD https://github.com/ultralytics/assets/releases/download/v8.3.0/yolo11n.pt . -# Install pip packages and run exports to AutoInstall packages +# Install pip packages RUN pip install uv && \ - uv pip install --system -e ".[export]" albumentations faster-coco-eval "onnxruntime-gpu" tensorrt wandb && \ - # Run exports to AutoInstall packages - yolo export model=tmp/yolo11n.pt format=edgetpu imgsz=32 && \ - yolo export model=tmp/yolo11n.pt format=ncnn imgsz=32 && \ - uv pip install --system paddlepaddle x2paddle && \ - # Remove extra build files + uv pip install --system -e "." albumentations faster-coco-eval wandb && \ + # Remove extra build files \ rm -rf tmp /root/.config/Ultralytics/persistent_cache.json # Usage Examples ------------------------------------------------------------------------------------------------------- diff --git a/docker/Dockerfile-export b/docker/Dockerfile-export new file mode 100644 index 0000000000..d73147c708 --- /dev/null +++ b/docker/Dockerfile-export @@ -0,0 +1,15 @@ +# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license + +# Export-optimized derivative of ultralytics/ultralytics:latest for testing and benchmarks +# Includes all export format dependencies and pre-installed export packages + +FROM ultralytics/ultralytics:latest + +# Install export dependencies and run exports to AutoInstall packages +# Numpy 1.26.4 required due to TF export bug with torch 2.8 +RUN uv pip install --system -e ".[export]" "onnxruntime-gpu" tensorrt paddlepaddle x2paddle numpy==1.26.4 && \ + # Run exports to AutoInstall packages \ + yolo export model=yolo11n.pt format=edgetpu imgsz=32 && \ + yolo export model=yolo11n.pt format=ncnn imgsz=32 && \ + # Remove temporary files \ + rm -rf tmp /root/.config/Ultralytics/persistent_cache.json diff --git a/docker/Dockerfile-runner b/docker/Dockerfile-runner index 3798f39a02..0c087e37ff 100644 --- a/docker/Dockerfile-runner +++ b/docker/Dockerfile-runner @@ -7,11 +7,7 @@ FROM ultralytics/ultralytics:latest # Set additional environment variables for runner -ENV PYTHONUNBUFFERED=1 \ - PYTHONDONTWRITEBYTECODE=1 \ - PIP_NO_CACHE_DIR=1 \ - PIP_BREAK_SYSTEM_PACKAGES=1 \ - RUNNER_ALLOW_RUNASROOT=1 \ +ENV RUNNER_ALLOW_RUNASROOT=1 \ DEBIAN_FRONTEND=noninteractive # Set the working directory