mirror of
https://github.com/saymrwulf/onnxruntime.git
synced 2026-05-14 20:48:00 +00:00
### Description
1. Remove 'dnf update' from docker build scripts, because it upgrades TRT
packages from CUDA 11.x to CUDA 12.x.
To reproduce it, you can run the following commands in a CentOS CUDA
11.x docker image such as nvidia/cuda:11.8.0-cudnn8-devel-ubi8.
```
export v=8.6.1.6-1.cuda11.8
dnf install -y libnvinfer8-${v} libnvparsers8-${v} libnvonnxparsers8-${v} libnvinfer-plugin8-${v} libnvinfer-vc-plugin8-${v} libnvinfer-devel-${v} libnvparsers-devel-${v} libnvonnxparsers-devel-${v} libnvinfer-plugin-devel-${v} libnvinfer-vc-plugin-devel-${v} libnvinfer-headers-devel-${v} libnvinfer-headers-plugin-devel-${v}
dnf update -y
```
The last command will generate the following outputs:
```
========================================================================================================================
Package Architecture Version Repository Size
========================================================================================================================
Upgrading:
libnvinfer-devel x86_64 8.6.1.6-1.cuda12.0 cuda 542 M
libnvinfer-headers-devel x86_64 8.6.1.6-1.cuda12.0 cuda 118 k
libnvinfer-headers-plugin-devel x86_64 8.6.1.6-1.cuda12.0 cuda 14 k
libnvinfer-plugin-devel x86_64 8.6.1.6-1.cuda12.0 cuda 13 M
libnvinfer-plugin8 x86_64 8.6.1.6-1.cuda12.0 cuda 13 M
libnvinfer-vc-plugin-devel x86_64 8.6.1.6-1.cuda12.0 cuda 107 k
libnvinfer-vc-plugin8 x86_64 8.6.1.6-1.cuda12.0 cuda 251 k
libnvinfer8 x86_64 8.6.1.6-1.cuda12.0 cuda 543 M
libnvonnxparsers-devel x86_64 8.6.1.6-1.cuda12.0 cuda 467 k
libnvonnxparsers8 x86_64 8.6.1.6-1.cuda12.0 cuda 757 k
libnvparsers-devel x86_64 8.6.1.6-1.cuda12.0 cuda 2.0 M
libnvparsers8 x86_64 8.6.1.6-1.cuda12.0 cuda 854 k
Installing dependencies:
cuda-toolkit-12-0-config-common noarch 12.0.146-1 cuda 7.7 k
cuda-toolkit-12-config-common noarch 12.2.140-1 cuda 7.9 k
libcublas-12-0 x86_64 12.0.2.224-1 cuda 361 M
libcublas-devel-12-0 x86_64 12.0.2.224-1 cuda 397 M
Transaction Summary
========================================================================================================================
```
As you can see from the output, they are CUDA 12 packages.
The problem can also be solved by lock the packages' versions by using
"dnf versionlock" command right after installing the CUDA/TRT packages.
However, going forward, to get the better reproducibility, I suggest
manually fix dnf package versions in the installation scripts like we do
for TRT now.
```bash
v="8.6.1.6-1.cuda11.8" &&\
yum-config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/rhel8/x86_64/cuda-rhel8.repo &&\
yum -y install libnvinfer8-${v} libnvparsers8-${v} libnvonnxparsers8-${v} libnvinfer-plugin8-${v} libnvinfer-vc-plugin8-${v}\
libnvinfer-devel-${v} libnvparsers-devel-${v} libnvonnxparsers-devel-${v} libnvinfer-plugin-devel-${v} libnvinfer-vc-plugin-devel-${v} libnvinfer-headers-devel-${v} libnvinfer-headers-plugin-devel-${v}
```
When we have a need to upgrade a package due to security alert or some
other reasons, we manually change the version string instead of relying
on "dnf update". Though this approach increases efforts, it can make our
pipeines more stable.
2. Move python test to docker
### Motivation and Context
Right now the nightly gpu package mixes using CUDA 11.x and CUDA 12.x
and the result package is totally not usable(crashes every time)
165 lines
6.7 KiB
Text
165 lines
6.7 KiB
Text
ARG BASEIMAGE=registry.access.redhat.com/ubi8/ubi
|
|
ARG POLICY=manylinux_2_28
|
|
ARG PLATFORM=x86_64
|
|
ARG DEVTOOLSET_ROOTPATH=/opt/rh/gcc-toolset-12/root
|
|
ARG LD_LIBRARY_PATH_ARG=${DEVTOOLSET_ROOTPATH}/usr/lib64:${DEVTOOLSET_ROOTPATH}/usr/lib:${DEVTOOLSET_ROOTPATH}/usr/lib64/dyninst:${DEVTOOLSET_ROOTPATH}/usr/lib/dyninst:/usr/local/lib64
|
|
ARG PREPEND_PATH=/usr/lib/jvm/msopenjdk-11/bin:${DEVTOOLSET_ROOTPATH}/usr/bin:
|
|
|
|
#Build manylinux2014 docker image begin
|
|
FROM $BASEIMAGE AS runtime_base
|
|
ARG POLICY
|
|
ARG PLATFORM
|
|
ARG DEVTOOLSET_ROOTPATH
|
|
ARG LD_LIBRARY_PATH_ARG
|
|
ARG PREPEND_PATH
|
|
LABEL maintainer="The ManyLinux project"
|
|
|
|
ENV AUDITWHEEL_POLICY=${POLICY} AUDITWHEEL_ARCH=${PLATFORM} AUDITWHEEL_PLAT=${POLICY}_${PLATFORM}
|
|
ENV LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 LANGUAGE=en_US.UTF-8
|
|
ENV DEVTOOLSET_ROOTPATH=${DEVTOOLSET_ROOTPATH}
|
|
ENV LD_LIBRARY_PATH=${LD_LIBRARY_PATH_ARG}
|
|
ENV PATH=${PREPEND_PATH}${PATH}
|
|
ENV PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
|
|
|
|
# first copy the fixup mirrors script, keep the script around
|
|
COPY build_scripts/fixup-mirrors.sh /usr/local/sbin/fixup-mirrors
|
|
|
|
# setup entrypoint, this will wrap commands with `linux32` with i686 images
|
|
COPY build_scripts/install-entrypoint.sh \
|
|
build_scripts/build_utils.sh \
|
|
/build_scripts/
|
|
|
|
RUN /build_scripts/install-entrypoint.sh && rm -rf /build_scripts
|
|
COPY manylinux-entrypoint /usr/local/bin/manylinux-entrypoint
|
|
ENTRYPOINT ["manylinux-entrypoint"]
|
|
|
|
COPY build_scripts/install-runtime-packages.sh \
|
|
build_scripts/build_utils.sh \
|
|
/build_scripts/
|
|
RUN manylinux-entrypoint /build_scripts/install-runtime-packages.sh && rm -rf /build_scripts/
|
|
|
|
COPY build_scripts/build_utils.sh /build_scripts/
|
|
|
|
COPY build_scripts/install-autoconf.sh /build_scripts/
|
|
RUN export AUTOCONF_ROOT=autoconf-2.71 && \
|
|
export AUTOCONF_HASH=431075ad0bf529ef13cb41e9042c542381103e80015686222b8a9d4abef42a1c && \
|
|
export AUTOCONF_DOWNLOAD_URL=http://ftp.gnu.org/gnu/autoconf && \
|
|
manylinux-entrypoint /build_scripts/install-autoconf.sh
|
|
|
|
COPY build_scripts/install-automake.sh /build_scripts/
|
|
RUN export AUTOMAKE_ROOT=automake-1.16.5 && \
|
|
export AUTOMAKE_HASH=07bd24ad08a64bc17250ce09ec56e921d6343903943e99ccf63bbf0705e34605 && \
|
|
export AUTOMAKE_DOWNLOAD_URL=http://ftp.gnu.org/gnu/automake && \
|
|
manylinux-entrypoint /build_scripts/install-automake.sh
|
|
|
|
COPY build_scripts/install-libtool.sh /build_scripts/
|
|
RUN export LIBTOOL_ROOT=libtool-2.4.7 && \
|
|
export LIBTOOL_HASH=04e96c2404ea70c590c546eba4202a4e12722c640016c12b9b2f1ce3d481e9a8 && \
|
|
export LIBTOOL_DOWNLOAD_URL=http://ftp.gnu.org/gnu/libtool && \
|
|
manylinux-entrypoint /build_scripts/install-libtool.sh
|
|
|
|
COPY build_scripts/install-libxcrypt.sh /build_scripts/
|
|
RUN export LIBXCRYPT_VERSION=4.4.28 && \
|
|
export LIBXCRYPT_HASH=db7e37901969cb1d1e8020cb73a991ef81e48e31ea5b76a101862c806426b457 && \
|
|
export LIBXCRYPT_DOWNLOAD_URL=https://github.com/besser82/libxcrypt/archive && \
|
|
export PERL_ROOT=perl-5.34.0 && \
|
|
export PERL_HASH=551efc818b968b05216024fb0b727ef2ad4c100f8cb6b43fab615fa78ae5be9a && \
|
|
export PERL_DOWNLOAD_URL=https://www.cpan.org/src/5.0 && \
|
|
manylinux-entrypoint /build_scripts/install-libxcrypt.sh
|
|
|
|
FROM runtime_base AS build_base
|
|
COPY build_scripts/install-build-packages.sh /build_scripts/
|
|
RUN manylinux-entrypoint /build_scripts/install-build-packages.sh
|
|
|
|
|
|
FROM build_base AS build_git
|
|
COPY build_scripts/build-git.sh /build_scripts/
|
|
RUN export GIT_ROOT=git-2.36.2 && \
|
|
export GIT_HASH=6dc2cdea5fb23d823ba4871cc23222c1db31dfbb6d6c6ff74c4128700df57c68 && \
|
|
export GIT_DOWNLOAD_URL=https://www.kernel.org/pub/software/scm/git && \
|
|
manylinux-entrypoint /build_scripts/build-git.sh
|
|
|
|
|
|
FROM build_base AS build_cpython
|
|
COPY build_scripts/build-sqlite3.sh /build_scripts/
|
|
RUN export SQLITE_AUTOCONF_ROOT=sqlite-autoconf-3390200 && \
|
|
export SQLITE_AUTOCONF_HASH=852be8a6183a17ba47cee0bbff7400b7aa5affd283bf3beefc34fcd088a239de && \
|
|
export SQLITE_AUTOCONF_DOWNLOAD_URL=https://www.sqlite.org/2022 && \
|
|
manylinux-entrypoint /build_scripts/build-sqlite3.sh
|
|
|
|
COPY build_scripts/build-openssl.sh /build_scripts/
|
|
RUN export OPENSSL_ROOT=openssl-1.1.1q && \
|
|
export OPENSSL_HASH=d7939ce614029cdff0b6c20f0e2e5703158a489a72b2507b8bd51bf8c8fd10ca && \
|
|
export OPENSSL_DOWNLOAD_URL=https://www.openssl.org/source && \
|
|
manylinux-entrypoint /build_scripts/build-openssl.sh
|
|
|
|
COPY build_scripts/build-cpython.sh /build_scripts/
|
|
|
|
|
|
|
|
|
|
FROM build_cpython AS build_cpython38
|
|
COPY build_scripts/ambv-pubkey.txt /build_scripts/cpython-pubkeys.txt
|
|
RUN manylinux-entrypoint /build_scripts/build-cpython.sh 3.8.13
|
|
|
|
|
|
FROM build_cpython AS build_cpython39
|
|
COPY build_scripts/ambv-pubkey.txt /build_scripts/cpython-pubkeys.txt
|
|
RUN manylinux-entrypoint /build_scripts/build-cpython.sh 3.9.13
|
|
|
|
|
|
FROM build_cpython AS build_cpython310
|
|
COPY build_scripts/cpython-pubkey-310-311.txt /build_scripts/cpython-pubkeys.txt
|
|
RUN manylinux-entrypoint /build_scripts/build-cpython.sh 3.10.5
|
|
|
|
FROM build_cpython AS build_cpython311
|
|
COPY build_scripts/cpython-pubkey-310-311.txt /build_scripts/cpython-pubkeys.txt
|
|
RUN manylinux-entrypoint /build_scripts/build-cpython.sh 3.11.2
|
|
|
|
FROM build_cpython AS all_python
|
|
COPY build_scripts/install-pypy.sh \
|
|
build_scripts/pypy.sha256 \
|
|
build_scripts/finalize-python.sh \
|
|
/build_scripts/
|
|
RUN manylinux-entrypoint /build_scripts/install-pypy.sh 3.8 7.3.9
|
|
RUN manylinux-entrypoint /build_scripts/install-pypy.sh 3.9 7.3.9
|
|
COPY --from=build_cpython38 /opt/_internal /opt/_internal/
|
|
COPY --from=build_cpython39 /opt/_internal /opt/_internal/
|
|
COPY --from=build_cpython310 /opt/_internal /opt/_internal/
|
|
COPY --from=build_cpython311 /opt/_internal /opt/_internal/
|
|
RUN manylinux-entrypoint /build_scripts/finalize-python.sh
|
|
|
|
|
|
FROM runtime_base
|
|
COPY --from=build_git /manylinux-rootfs /
|
|
COPY --from=build_cpython /manylinux-rootfs /
|
|
COPY --from=all_python /opt/_internal /opt/_internal/
|
|
COPY build_scripts/finalize.sh \
|
|
build_scripts/python-tag-abi-tag.py \
|
|
build_scripts/requirements3.8.txt \
|
|
build_scripts/requirements3.9.txt \
|
|
build_scripts/requirements3.10.txt \
|
|
build_scripts/requirements3.11.txt \
|
|
build_scripts/requirements-base-tools.txt \
|
|
/build_scripts/
|
|
COPY build_scripts/requirements-tools/* /build_scripts/requirements-tools/
|
|
RUN manylinux-entrypoint /build_scripts/finalize.sh && rm -rf /build_scripts
|
|
|
|
ENV SSL_CERT_FILE=/opt/_internal/certs.pem
|
|
|
|
CMD ["/bin/bash"]
|
|
|
|
#Build manylinux2014 docker image end
|
|
|
|
ENV PATH ${DEVTOOLSET_ROOTPATH}/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
|
|
ENV JAVA_HOME=/usr/lib/jvm/msopenjdk-11
|
|
|
|
ADD scripts /tmp/scripts
|
|
RUN cd /tmp/scripts && /tmp/scripts/manylinux/install_centos.sh
|
|
RUN cd /tmp/scripts && /tmp/scripts/manylinux/install_deps.sh && rm -rf /tmp/scripts
|
|
|
|
ARG BUILD_UID=1001
|
|
ARG BUILD_USER=onnxruntimedev
|
|
RUN adduser --uid $BUILD_UID $BUILD_USER
|
|
WORKDIR /home/$BUILD_USER
|
|
USER $BUILD_USER
|