From 44e541e80393be3a84fca5bb7756a900ed1c4c47 Mon Sep 17 00:00:00 2001 From: Changming Sun Date: Thu, 9 Jan 2025 16:04:42 -0800 Subject: [PATCH] Update docker images (#1172) The new images contain the following updates: 1. Added Git, Ninja and VCPKG to all docker images 2. Updated CPU containers' GCC version from 12 to 14 3. Pinned CUDA 12 images' CUDNN version to 9.5(The latest one is 9.6) 4. Addressed container supply chain warnings by building CUDA 12 images from scratch(avoid using Nvidia's prebuilt images) 5. Updated manylinux commit id to 75aeda9d18eafb323b00620537c8b4097d4bef48 6. python 3.8 and 3.9 were removed. --- .../stages/jobs/nuget-validation-job.yml | 4 +- .pipelines/stages/jobs/py-validation-job.yml | 4 +- .../inference/aarch64/default/cpu/Dockerfile | 2 +- .../default/cpu/scripts/install_centos.sh | 1 - .../manylinux/Dockerfile.manylinux2_28_cpu | 4 +- .../Dockerfile.manylinux2_28_cuda_11.8 | 13 ++-- .../Dockerfile.manylinux2_28_cuda_12.2 | 13 ++-- .../manylinux/Dockerfile.manylinux2_28_rocm | 4 +- .../manylinux/scripts/install_centos_gcc12.sh | 11 --- .../docker/manylinux/scripts/install_deps.sh | 72 +------------------ 10 files changed, 18 insertions(+), 110 deletions(-) delete mode 100755 tools/ci_build/github/linux/docker/manylinux/scripts/install_centos_gcc12.sh diff --git a/.pipelines/stages/jobs/nuget-validation-job.yml b/.pipelines/stages/jobs/nuget-validation-job.yml index 88a1c0c0b..d4e03a3c1 100644 --- a/.pipelines/stages/jobs/nuget-validation-job.yml +++ b/.pipelines/stages/jobs/nuget-validation-job.yml @@ -100,9 +100,9 @@ jobs: - name: cuda_docker_image ${{ if eq(parameters.cuda_version, '11.8') }}: - value: onnxruntimebuildcache.azurecr.io/internal/azureml/onnxruntime/build/cuda11_x64_almalinux8_gcc11:20240531.1 + value: onnxruntimebuildcache.azurecr.io/internal/azureml/onnxruntime/build/cuda11_x64_almalinux8_gcc11:20250109.1 ${{ else }}: - value: onnxruntimebuildcache.azurecr.io/internal/azureml/onnxruntime/build/cuda12_x64_ubi8_gcc12:20240610.1 + value: onnxruntimebuildcache.azurecr.io/internal/azureml/onnxruntime/build/cuda12_x64_ubi8_gcc12:20250109.1 workspace: clean: all diff --git a/.pipelines/stages/jobs/py-validation-job.yml b/.pipelines/stages/jobs/py-validation-job.yml index 2930b8885..522993981 100644 --- a/.pipelines/stages/jobs/py-validation-job.yml +++ b/.pipelines/stages/jobs/py-validation-job.yml @@ -109,9 +109,9 @@ jobs: - name: cuda_docker_image ${{ if eq(parameters.cuda_version, '11.8') }}: - value: onnxruntimebuildcache.azurecr.io/internal/azureml/onnxruntime/build/cuda11_x64_almalinux8_gcc11:20240531.1 + value: onnxruntimebuildcache.azurecr.io/internal/azureml/onnxruntime/build/cuda11_x64_almalinux8_gcc11:20250109.1 ${{ else }}: - value: onnxruntimebuildcache.azurecr.io/internal/azureml/onnxruntime/build/cuda12_x64_ubi8_gcc12:20240610.1 + value: onnxruntimebuildcache.azurecr.io/internal/azureml/onnxruntime/build/cuda12_x64_ubi8_gcc12:20250109.1 steps: - checkout: self diff --git a/tools/ci_build/github/linux/docker/inference/aarch64/default/cpu/Dockerfile b/tools/ci_build/github/linux/docker/inference/aarch64/default/cpu/Dockerfile index efb417e51..c8ae6ff8f 100644 --- a/tools/ci_build/github/linux/docker/inference/aarch64/default/cpu/Dockerfile +++ b/tools/ci_build/github/linux/docker/inference/aarch64/default/cpu/Dockerfile @@ -1,7 +1,7 @@ # Copyright (c) Microsoft Corporation. All rights reserved. # Licensed under the MIT License. -FROM onnxruntimebuildcache.azurecr.io/internal/azureml/onnxruntime/build/cpu_aarch64_ubi8_gcc12:20240531.1 +FROM onnxruntimebuildcache.azurecr.io/internal/azureml/onnxruntime/build/cpu_aarch64_ubi8_gcc14:20250109.1 ADD scripts /tmp/scripts RUN cd /tmp/scripts && /tmp/scripts/install_centos.sh && /tmp/scripts/install_deps.sh && rm -rf /tmp/scripts diff --git a/tools/ci_build/github/linux/docker/inference/aarch64/default/cpu/scripts/install_centos.sh b/tools/ci_build/github/linux/docker/inference/aarch64/default/cpu/scripts/install_centos.sh index 31948a0ea..9d20cb22b 100755 --- a/tools/ci_build/github/linux/docker/inference/aarch64/default/cpu/scripts/install_centos.sh +++ b/tools/ci_build/github/linux/docker/inference/aarch64/default/cpu/scripts/install_centos.sh @@ -9,6 +9,5 @@ dnf install -y \ glibc-langpack-\* glibc-locale-source which redhat-lsb-core \ expat-devel tar unzip zlib-devel make bzip2 bzip2-devel \ java-11-openjdk-devel graphviz \ - gcc-toolset-12-binutils gcc-toolset-12-gcc gcc-toolset-12-gcc-c++ gcc-toolset-12-gcc-gfortran \ git locale diff --git a/tools/ci_build/github/linux/docker/manylinux/Dockerfile.manylinux2_28_cpu b/tools/ci_build/github/linux/docker/manylinux/Dockerfile.manylinux2_28_cpu index 6af5a8a21..fabfcfe8f 100644 --- a/tools/ci_build/github/linux/docker/manylinux/Dockerfile.manylinux2_28_cpu +++ b/tools/ci_build/github/linux/docker/manylinux/Dockerfile.manylinux2_28_cpu @@ -1,7 +1,7 @@ -FROM onnxruntimebuildcache.azurecr.io/internal/azureml/onnxruntime/build/cpu_x64_ubi8_gcc12:20240530.3 +FROM onnxruntimebuildcache.azurecr.io/internal/azureml/onnxruntime/build/cpu_x64_ubi8_gcc14:20250109.1 ADD scripts /tmp/scripts -RUN cd /tmp/scripts && /tmp/scripts/install_centos_gcc12.sh && /tmp/scripts/install_deps.sh && rm -rf /tmp/scripts +RUN cd /tmp/scripts && /tmp/scripts/install_deps.sh && rm -rf /tmp/scripts ARG BUILD_UID=1001 ARG BUILD_USER=onnxruntimedev diff --git a/tools/ci_build/github/linux/docker/manylinux/Dockerfile.manylinux2_28_cuda_11.8 b/tools/ci_build/github/linux/docker/manylinux/Dockerfile.manylinux2_28_cuda_11.8 index 6df955c02..b595823dd 100644 --- a/tools/ci_build/github/linux/docker/manylinux/Dockerfile.manylinux2_28_cuda_11.8 +++ b/tools/ci_build/github/linux/docker/manylinux/Dockerfile.manylinux2_28_cuda_11.8 @@ -1,15 +1,10 @@ -ARG BASEIMAGE=onnxruntimebuildcache.azurecr.io/internal/azureml/onnxruntime/build/cuda11_x64_almalinux8_gcc11:20240530.3 +ARG BASEIMAGE=onnxruntimebuildcache.azurecr.io/internal/azureml/onnxruntime/build/cuda11_x64_almalinux8_gcc11:20250109.1 FROM $BASEIMAGE ADD scripts /tmp/scripts -RUN if [ "$(echo $CUDA_VERSION | cut -d. -f1)" -ge 12 ]; then \ - echo "Using GCC 12 because CUDA version is greater than or equal to 12"; \ - cd /tmp/scripts && /tmp/scripts/install_centos_gcc12.sh && /tmp/scripts/install_deps.sh && rm -rf /tmp/scripts; \ -else \ - echo "Using default gcc because CUDA version is less than 12"; \ - cd /tmp/scripts && /tmp/scripts/install_centos.sh && /tmp/scripts/install_deps.sh && rm -rf /tmp/scripts; \ -fi +RUN cd /tmp/scripts && /tmp/scripts/install_centos.sh && /tmp/scripts/install_deps.sh && rm -rf /tmp/scripts; + ARG BUILD_UID=1001 ARG BUILD_USER=onnxruntimedev @@ -18,4 +13,4 @@ WORKDIR /home/$BUILD_USER USER $BUILD_USER ENV PATH /usr/local/dotnet:$PATH ENV CUDAHOSTCXX /opt/rh/gcc-toolset-11/root/usr/bin/g++ -ENV CUDA_MODULE_LOADING "LAZY" \ No newline at end of file +ENV CUDA_MODULE_LOADING "LAZY" diff --git a/tools/ci_build/github/linux/docker/manylinux/Dockerfile.manylinux2_28_cuda_12.2 b/tools/ci_build/github/linux/docker/manylinux/Dockerfile.manylinux2_28_cuda_12.2 index c865579bd..18e2cd191 100644 --- a/tools/ci_build/github/linux/docker/manylinux/Dockerfile.manylinux2_28_cuda_12.2 +++ b/tools/ci_build/github/linux/docker/manylinux/Dockerfile.manylinux2_28_cuda_12.2 @@ -1,15 +1,10 @@ -ARG BASEIMAGE=onnxruntimebuildcache.azurecr.io/internal/azureml/onnxruntime/build/cuda12_x64_ubi8_gcc12:20240610.1 +ARG BASEIMAGE=onnxruntimebuildcache.azurecr.io/internal/azureml/onnxruntime/build/cuda12_x64_ubi8_gcc12:20250109.1 FROM $BASEIMAGE ADD scripts /tmp/scripts -RUN if [ "$(echo $CUDA_VERSION | cut -d. -f1)" -ge 12 ]; then \ - echo "Using GCC 12 because CUDA version is greater than or equal to 12"; \ - cd /tmp/scripts && /tmp/scripts/install_centos_gcc12.sh && /tmp/scripts/install_deps.sh && rm -rf /tmp/scripts; \ -else \ - echo "Using default gcc because CUDA version is less than 12"; \ - cd /tmp/scripts && /tmp/scripts/install_centos.sh && /tmp/scripts/install_deps.sh && rm -rf /tmp/scripts; \ -fi +RUN cd /tmp/scripts && /tmp/scripts/install_centos.sh && /tmp/scripts/install_deps.sh && rm -rf /tmp/scripts + ARG BUILD_UID=1001 ARG BUILD_USER=onnxruntimedev RUN adduser --uid $BUILD_UID $BUILD_USER @@ -17,4 +12,4 @@ WORKDIR /home/$BUILD_USER USER $BUILD_USER ENV PATH /usr/local/dotnet:$PATH ENV CUDAHOSTCXX /opt/rh/gcc-toolset-12/root/usr/bin/g++ -ENV CUDA_MODULE_LOADING "LAZY" \ No newline at end of file +ENV CUDA_MODULE_LOADING "LAZY" diff --git a/tools/ci_build/github/linux/docker/manylinux/Dockerfile.manylinux2_28_rocm b/tools/ci_build/github/linux/docker/manylinux/Dockerfile.manylinux2_28_rocm index 6af5a8a21..fabfcfe8f 100644 --- a/tools/ci_build/github/linux/docker/manylinux/Dockerfile.manylinux2_28_rocm +++ b/tools/ci_build/github/linux/docker/manylinux/Dockerfile.manylinux2_28_rocm @@ -1,7 +1,7 @@ -FROM onnxruntimebuildcache.azurecr.io/internal/azureml/onnxruntime/build/cpu_x64_ubi8_gcc12:20240530.3 +FROM onnxruntimebuildcache.azurecr.io/internal/azureml/onnxruntime/build/cpu_x64_ubi8_gcc14:20250109.1 ADD scripts /tmp/scripts -RUN cd /tmp/scripts && /tmp/scripts/install_centos_gcc12.sh && /tmp/scripts/install_deps.sh && rm -rf /tmp/scripts +RUN cd /tmp/scripts && /tmp/scripts/install_deps.sh && rm -rf /tmp/scripts ARG BUILD_UID=1001 ARG BUILD_USER=onnxruntimedev diff --git a/tools/ci_build/github/linux/docker/manylinux/scripts/install_centos_gcc12.sh b/tools/ci_build/github/linux/docker/manylinux/scripts/install_centos_gcc12.sh deleted file mode 100755 index 063528d05..000000000 --- a/tools/ci_build/github/linux/docker/manylinux/scripts/install_centos_gcc12.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -set -e -x - -os_major_version=$(tr -dc '0-9.' < /etc/redhat-release |cut -d \. -f1) - -echo "installing for CentOS version : $os_major_version" -dnf install -y \ - glibc-langpack-\* glibc-locale-source which redhat-lsb-core \ - expat-devel tar unzip zlib-devel make bzip2 bzip2-devel \ - gcc-toolset-12-binutils gcc-toolset-12-gcc gcc-toolset-12-gcc-c++ gcc-toolset-12-gcc-gfortran -locale diff --git a/tools/ci_build/github/linux/docker/manylinux/scripts/install_deps.sh b/tools/ci_build/github/linux/docker/manylinux/scripts/install_deps.sh index 2a4fd31f2..462c6094b 100755 --- a/tools/ci_build/github/linux/docker/manylinux/scripts/install_deps.sh +++ b/tools/ci_build/github/linux/docker/manylinux/scripts/install_deps.sh @@ -1,7 +1,7 @@ #!/bin/bash set -e -x pushd . -PYTHON_EXES=("/opt/python/cp38-cp38/bin/python3.8" "/opt/python/cp39-cp39/bin/python3.9" "/opt/python/cp310-cp310/bin/python3.10" "/opt/python/cp311-cp311/bin/python3.11" "/opt/python/cp312-cp312/bin/python3.12") +PYTHON_EXES=("/opt/python/cp310-cp310/bin/python3.10" "/opt/python/cp311-cp311/bin/python3.11" "/opt/python/cp312-cp312/bin/python3.12") popd export ONNX_ML=1 @@ -12,73 +12,3 @@ do ${PYTHON_EXE} -m pip install -r requirements.txt done -# No release binary for ccache aarch64, so we need to build it from source. -if ! [ -x "$(command -v ccache)" ]; then - ccache_url="https://github.com/ccache/ccache/archive/refs/tags/v4.8.tar.gz" - pushd . - curl -sSL --retry 5 --retry-delay 10 --create-dirs --fail -L -o ccache_src.tar.gz $ccache_url - mkdir ccache_main - cd ccache_main - tar -zxf ../ccache_src.tar.gz --strip=1 - - mkdir build - cd build - cmake -DCMAKE_INSTALL_PREFIX=/usr/local _DCMAKE_BUILD_TYPE=Release .. - make - make install - which ccache - popd - rm -f ccache_src.tar.gz - rm -rf ccache_src -fi - -# Download a file from internet -function GetFile { - local uri=$1 - local path=$2 - local force=${3:-false} - local download_retries=${4:-5} - local retry_wait_time_seconds=${5:-30} - - if [[ -f $path ]]; then - if [[ $force = false ]]; then - echo "File '$path' already exists. Skipping download" - return 0 - else - rm -rf "$path" - fi - fi - - if [[ -f $uri ]]; then - echo "'$uri' is a file path, copying file to '$path'" - cp "$uri" "$path" - return $? - fi - - echo "Downloading $uri" - curl "$uri" -sSL --retry $download_retries --retry-delay $retry_wait_time_seconds --create-dirs -o "$path" --fail - return $? -} -mkdir -p /tmp/src - -cd /tmp/src - -CPU_ARCH=$(uname -m) - -# Install CMake -echo "Installing cmake" -GetFile "https://github.com/Kitware/CMake/releases/download/v3.28.1/cmake-3.28.1-linux-$CPU_ARCH.tar.gz" "/tmp/src/cmake.tar.gz" -tar -zxf /tmp/src/cmake.tar.gz --strip=1 -C /usr - -# Install Ninja -echo "Installing Ninja" -GetFile https://github.com/ninja-build/ninja/archive/v1.10.0.tar.gz /tmp/src/ninja-linux.tar.gz -tar -zxf ninja-linux.tar.gz -pushd ninja-1.10.0 -cmake -Bbuild-cmake -H. -cmake --build build-cmake -mv ./build-cmake/ninja /usr/bin -popd - -cd / -rm -rf /tmp/src