From f029f7e6950a8a0af5ae3cabdce24239b1f62703 Mon Sep 17 00:00:00 2001 From: "M. Chornyi" <99709299+mc-nv@users.noreply.github.com> Date: Tue, 4 Aug 2026 10:15:03 -0700 Subject: [PATCH 01/19] build(version): bump versions ONNXRuntime=1.28, DCGM=4.6.1, OpenVINO=2026.2.1 --- Dockerfile.sdk | 2 +- build.py | 8 ++++---- compose.py | 16 ++++++++-------- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/Dockerfile.sdk b/Dockerfile.sdk index 6697aff946..78e40924d3 100644 --- a/Dockerfile.sdk +++ b/Dockerfile.sdk @@ -41,7 +41,7 @@ ARG TRITON_ENABLE_GPU=ON ARG JAVA_BINDINGS_JAVACPP_PRESETS_TAG=1.5.8 ARG JAVA_BINDINGS_MAVEN_URL=https://archive.apache.org/dist/maven/maven-3/3.9.16/binaries/apache-maven-3.9.16-bin.tar.gz # DCGM version to install for Model Analyzer -ARG DCGM_VERSION=4.5.3-1 +ARG DCGM_VERSION=4.6.1-1 ARG NVIDIA_TRITON_SERVER_SDK_VERSION=unknown ARG NVIDIA_BUILD_ID=unknown diff --git a/build.py b/build.py index 6a36dbf05c..5419e1921f 100755 --- a/build.py +++ b/build.py @@ -75,10 +75,10 @@ "release_version": "2.72.0dev", "triton_container_version": "26.08dev", "upstream_container_version": "26.07", - "ort_version": "1.27.0", - "ort_openvino_version": "2026.2.0", - "standalone_openvino_version": "2026.2.0", - "dcgm_version": "4.5.3-1", + "ort_version": "1.28.0", + "ort_openvino_version": "2026.2.1", + "standalone_openvino_version": "2026.2.1", + "dcgm_version": "4.6.1-1", "rhel_py_version": "3.12.3", } diff --git a/compose.py b/compose.py index ef1342c0fe..b5b5e691e8 100755 --- a/compose.py +++ b/compose.py @@ -33,7 +33,7 @@ FLAGS = None -#### helper functions +# helper functions def log(msg, force=False): if force or not FLAGS.quiet: try: @@ -255,12 +255,12 @@ def create_argmap(images, skip_pull): vars = p_path.stdout log_verbose("inspect args: {}".format(vars)) - e0 = re.search("TRITON_SERVER_GPU_ENABLED=([\S]{1,}) ", vars) + e0 = re.search("TRITON_SERVER_GPU_ENABLED=([\\S]{1,}) ", vars) e1 = re.search("CUDA_VERSION", vars) gpu_enabled = False - if e0 != None: + if e0 is not None: gpu_enabled = e0.group(1) == "1" - elif e1 != None: + elif e1 is not None: gpu_enabled = True fail_if( gpu_enabled != enable_gpu, @@ -268,22 +268,22 @@ def create_argmap(images, skip_pull): "'TRITON_SERVER_GPU_ENABLED' as {} and you are composing container" "with 'TRITON_SERVER_GPU_ENABLED' as {}".format(gpu_enabled, enable_gpu), ) - e = re.search("TRITON_SERVER_VERSION=([\S]{6,}) ", vars) + e = re.search("TRITON_SERVER_VERSION=([\\S]{6,}) ", vars) version = "" if e is None else e.group(1) fail_if( len(version) == 0, "docker inspect to find triton server version failed, {}".format(p_path.stderr), ) - e = re.search("NVIDIA_TRITON_SERVER_VERSION=([\S]{5,}) ", vars) + e = re.search("NVIDIA_TRITON_SERVER_VERSION=([\\S]{5,}) ", vars) container_version = "" if e is None else e.group(1) fail_if( len(container_version) == 0, "docker inspect to find triton container version failed, {}".format(vars), ) - dcgm_ver = re.search("DCGM_VERSION=([\S]{4,}) ", vars) + dcgm_ver = re.search("DCGM_VERSION=([\\S]{4,}) ", vars) dcgm_version = "" if dcgm_ver is None: - dcgm_version = "4.5.3-1" + dcgm_version = "4.6.1-1" log( "WARNING: DCGM version not found from image, installing the earlierst version {}".format( dcgm_version From 014a1f65bcce05a99ea197c241aa9b97ef6ed74e Mon Sep 17 00:00:00 2001 From: "M. Chornyi" <99709299+mc-nv@users.noreply.github.com> Date: Tue, 4 Aug 2026 10:19:06 -0700 Subject: [PATCH 02/19] fix(version): Alighn ONNX version with upstream https://github.com/microsoft/onnxruntime/blob/v1.28.0/tools/ci_build/github/linux/python/requirements.txt#L15 --- qa/common/gen_qa_model_repository | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qa/common/gen_qa_model_repository b/qa/common/gen_qa_model_repository index 3dd8847930..6fde16311f 100755 --- a/qa/common/gen_qa_model_repository +++ b/qa/common/gen_qa_model_repository @@ -67,7 +67,7 @@ cd ${TRITON_MDLS_BASE_SCRIPT_DIR} log_message.status "define: default values" TRITON_VERSION=${TRITON_VERSION:=26.07} -ONNX_VERSION=1.20.1 +ONNX_VERSION=1.22.0 ONNX_OPSET=0 OPENVINO_VERSION=2024.5.0 UBUNTU_IMAGE=${UBUNTU_IMAGE:=ubuntu:22.04} From 451868fbabaa298bcc077a33acb4661b3455618b Mon Sep 17 00:00:00 2001 From: "M. Chornyi" <99709299+mc-nv@users.noreply.github.com> Date: Tue, 4 Aug 2026 10:39:06 -0700 Subject: [PATCH 03/19] build(version): bump version OpenVINO=2026.3 --- build.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.py b/build.py index 5419e1921f..f3dfebee76 100755 --- a/build.py +++ b/build.py @@ -76,8 +76,8 @@ "triton_container_version": "26.08dev", "upstream_container_version": "26.07", "ort_version": "1.28.0", - "ort_openvino_version": "2026.2.1", - "standalone_openvino_version": "2026.2.1", + "ort_openvino_version": "2026.3.0", + "standalone_openvino_version": "2026.3.0", "dcgm_version": "4.6.1-1", "rhel_py_version": "3.12.3", } From 3848a0624efb61f84e15b47da7c46fcee5928236 Mon Sep 17 00:00:00 2001 From: "M. Chornyi" <99709299+mc-nv@users.noreply.github.com> Date: Tue, 4 Aug 2026 17:45:58 -0700 Subject: [PATCH 04/19] fix: removing redundant statement --- build.py | 33 +++++++-------------------------- 1 file changed, 7 insertions(+), 26 deletions(-) diff --git a/build.py b/build.py index f3dfebee76..b79cd44cde 100755 --- a/build.py +++ b/build.py @@ -925,9 +925,6 @@ def create_dockerfile_buildbase_rhel(ddir, dockerfile_name, argmap): numactl-devel \\ openssl-devel \\ pkg-config \\ - python3-pip \\ - python3-scons \\ - python3-setuptools \\ rapidjson-devel \\ re2-devel \\ readline-devel \\ @@ -969,12 +966,13 @@ def create_dockerfile_buildbase_rhel(ddir, dockerfile_name, argmap): && pip3 install --upgrade \\ auditwheel \\ build \\ - wheel \\ - setuptools \\ + cmake==4.0.3 \\ docker \\ - virtualenv \\ patchelf==0.17.2 \\ - cmake==4.0.3 + scons \\ + setuptools \\ + virtualenv \\ + wheel """ df += f""" # Install boost version >= 1.78 for boost::span @@ -1555,25 +1553,8 @@ def add_cpu_libs_to_linux_dockerfile(backends, target_machine): def change_default_python_version_rhel(version): - df = f""" -# The python library version available for install via 'yum install python3.X-devel' does not -# match the version of python inside the RHEL base container. This means that python packages -# installed within the container will not be picked up by the python backend stub process pybind -# bindings. It must instead must be installed via pyenv. -ENV PYENV_ROOT=/opt/pyenv_build -RUN curl https://pyenv.run | bash -ENV PATH="${{PYENV_ROOT}}/bin:$PATH" -RUN eval "$(pyenv init -)" -RUN CONFIGURE_OPTS=\"--with-openssl=/usr/lib64\" && pyenv install {version} \\ - && cp ${{PYENV_ROOT}}/versions/{version}/lib/libpython3* /usr/lib64/ - -# RHEL image has several python versions. It's important -# to set the correct version, otherwise, packages that are -# pip installed will not be found during testing. -ENV PYVER={version} PYTHONPATH=/opt/python/v -RUN ln -sf ${{PYENV_ROOT}}/versions/${{PYVER}}* ${{PYTHONPATH}} -ENV PYBIN=${{PYTHONPATH}}/bin -ENV PYTHON_BIN_PATH=${{PYBIN}}/python${{PYVER}} PATH=${{PYBIN}}:${{PATH}} + df = """ +RUN . /opt/_internal/pipx/shared/bin/activate """ return df From ef9c43044efc9cb02c02f4ec4fe9d930d0395016 Mon Sep 17 00:00:00 2001 From: "M. Chornyi" <99709299+mc-nv@users.noreply.github.com> Date: Tue, 4 Aug 2026 18:08:09 -0700 Subject: [PATCH 05/19] fix: Switch to environment variable --- build.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.py b/build.py index b79cd44cde..03ab2166f9 100755 --- a/build.py +++ b/build.py @@ -1554,7 +1554,7 @@ def add_cpu_libs_to_linux_dockerfile(backends, target_machine): def change_default_python_version_rhel(version): df = """ -RUN . /opt/_internal/pipx/shared/bin/activate +ENV PATH="/opt/_internal/pipx/shared/bin:$PATH" """ return df From 1babc31c28f1c649fa53454b6a7d46725152feca Mon Sep 17 00:00:00 2001 From: "M. Chornyi" <99709299+mc-nv@users.noreply.github.com> Date: Tue, 4 Aug 2026 19:22:40 -0700 Subject: [PATCH 06/19] fix: Restore the embeddable CPython archive for the RHEL python backend The manylinux base container configures CPython with --disable-shared and its finalize.sh compresses every libpython*.a into static-libs-for-embedding-only.tar.xz before deleting the originals, so the image carries no linkable libpython at all. Since the pyenv build was dropped from change_default_python_version_rhel, nothing supplies one, and pybind11's FindPythonLibsNew silently falls back to the bare name "python3.12" -- which surfaces much later as "ld: cannot find -lpython3.12" when linking triton_python_backend_stub. Unpack that archive in the buildbase image. It lands in the interpreter's sysconfig LIBDIR, which is exactly where FindPythonLibsNew searches, so no CMake change is needed to find it. Linking libpython statically has two consequences handled here: - The stub now needs -Wl,--export-dynamic so Python C extension modules loaded at runtime resolve Py_* against the executable. pybind11 does not set ENABLE_EXPORTS for pybind11::embed, and a shared libpython did not need it. - Nothing has to ship beside the stub any more, so drop the copy of /usr/lib64/libpython* into the backend directory. That glob was fed by the removed pyenv step and now matches nothing, which would abort the generated build script under "set -e". --- build.py | 40 +++++++++++++++++++++++++++------------- 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/build.py b/build.py index 03ab2166f9..3d4b0bfd05 100755 --- a/build.py +++ b/build.py @@ -622,6 +622,15 @@ def python_cmake_args(): "python", "PYBIND11_PYTHON_VERSION", "STRING", FLAGS.rhel_py_version ) ) + # The stub embeds a statically linked CPython on RHEL (see + # restore_embeddable_python_lib_rhel), so its dynamic symbol table + # must be exported for Python C extension modules loaded at runtime + # to resolve Py_* against it. A shared libpython would not need this. + cargs.append( + cmake_backend_arg( + "python", "CMAKE_EXE_LINKER_FLAGS", "STRING", "-Wl,--export-dynamic" + ) + ) return cargs @@ -958,8 +967,8 @@ def create_dockerfile_buildbase_rhel(ddir, dockerfile_name, argmap): """.format( os.getenv("CCACHE_REMOTE_STORAGE") ) - # Requires openssl-devel to be installed first for pyenv build to be successful df += change_default_python_version_rhel(FLAGS.rhel_py_version) + df += restore_embeddable_python_lib_rhel() df += """ RUN pip3 install --upgrade pip \\ @@ -1410,7 +1419,6 @@ def dockerfile_prepare_container_linux(argmap, backends, enable_gpu, target_mach openssl-devel \\ readline-devel """ - # Requires openssl-devel to be installed first for pyenv build to be successful df += change_default_python_version_rhel(FLAGS.rhel_py_version) df += """ RUN pip3 install --upgrade pip \\ @@ -1559,6 +1567,23 @@ def change_default_python_version_rhel(version): return df +def restore_embeddable_python_lib_rhel(): + # The manylinux base container configures CPython with --disable-shared, + # so no libpython*.so is ever built, and its finalize.sh then compresses + # every libpython*.a into static-libs-for-embedding-only.tar.xz and drops + # the originals. triton_python_backend_stub links pybind11::embed and so + # needs that archive. Restore it in place -- the path it unpacks to is + # exactly the LIBDIR the interpreter's sysconfig reports, which is where + # pybind11's FindPythonLibsNew looks. + # + # This deliberately fails the build if the archive is absent: without it + # the stub link fails much later with an unresolvable -lpython. + return """ +RUN tar -xf /opt/_internal/static-libs-for-embedding-only.tar.xz \\ + -C /opt/_internal +""" + + def create_build_dockerfiles( container_build_dir, images, backends, repoagents, caches, endpoints ): @@ -1968,17 +1993,6 @@ def backend_build( cmake_script.mkdir(os.path.join(install_dir, "backends")) cmake_script.rmdir(os.path.join(install_dir, "backends", be)) - # The python library version available for install via 'yum install python3.X-devel' does not - # match the version of python inside the RHEL base container. This means that python packages - # installed within the container will not be picked up by the python backend stub process pybind - # bindings. It must instead must be installed via pyenv. We package it here for better usability. - if target_platform() == "rhel" and be == "python": - major_minor_version = ".".join((FLAGS.rhel_py_version).split(".")[:2]) - version_matched_files = "/usr/lib64/libpython" + major_minor_version + "*" - cmake_script.cp( - version_matched_files, os.path.join(repo_install_dir, "backends", be) - ) - cmake_script.cpdir( os.path.join(repo_install_dir, "backends", be), os.path.join(install_dir, "backends"), From 2afa6bdac4d9c3ee783c39afa6ed8cb906edf84d Mon Sep 17 00:00:00 2001 From: "M. Chornyi" <99709299+mc-nv@users.noreply.github.com> Date: Tue, 4 Aug 2026 19:33:52 -0700 Subject: [PATCH 07/19] fix: Link the RHEL python backend stub non-PIE on x86-64 The embeddable CPython archive restored from the manylinux base image is built without -fPIC. Its x86-64 objects carry 15737 R_X86_64_32 and 3694 R_X86_64_32S relocations, which cannot appear in a position-independent executable, and gcc-toolset defaults to -pie -- so linking triton_python_backend_stub against it fails with "relocation R_X86_64_32S ... can not be used when making a PIE object". Link the stub with -no-pie there. The aarch64 archive uses PC-relative ADR_PREL_PG_HI21/ADD_ABS_LO12_NC addressing with no GOT indirection, which links into a PIE unchanged, so sbsa keeps the hardening. Relocation counts were read with readelf from the libpython3.12.a shipped in static-libs-for-embedding-only.tar.xz of cuda:13.4-devel-manylinux--26.08, for both architectures. Note this gives up ASLR on the stub executable for x86-64. Restoring a shared libpython instead would avoid both this and -Wl,--export-dynamic. --- build.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/build.py b/build.py index 3d4b0bfd05..ddb8ee4294 100755 --- a/build.py +++ b/build.py @@ -626,9 +626,20 @@ def python_cmake_args(): # restore_embeddable_python_lib_rhel), so its dynamic symbol table # must be exported for Python C extension modules loaded at runtime # to resolve Py_* against it. A shared libpython would not need this. + stub_link_flags = ["-Wl,--export-dynamic"] + # That archive is built without -fPIC. On x86-64 its R_X86_64_32 and + # R_X86_64_32S relocations cannot appear in a position-independent + # executable, and gcc-toolset defaults to -pie, so the stub has to be + # linked non-PIE. aarch64 addressing is PC-relative and links into a + # PIE unchanged, so it keeps the hardening. + if target_machine() == "x86_64": + stub_link_flags.append("-no-pie") cargs.append( cmake_backend_arg( - "python", "CMAKE_EXE_LINKER_FLAGS", "STRING", "-Wl,--export-dynamic" + "python", + "CMAKE_EXE_LINKER_FLAGS", + "STRING", + " ".join(stub_link_flags), ) ) From 17c0c42b50b056569018a816435af7fdc4b638fb Mon Sep 17 00:00:00 2001 From: "M. Chornyi" <99709299+mc-nv@users.noreply.github.com> Date: Tue, 4 Aug 2026 21:37:55 -0700 Subject: [PATCH 08/19] revert: Link the RHEL python backend stub non-PIE on x86-64 This reverts 2afa6bda. The -no-pie was added on the assumption that gcc-toolset-13 defaults to PIE, as RHEL's system gcc does. It does not: an x86-64 stub links successfully against the non-PIC libpython3.12.a with no -no-pie and no PIE-relocation errors, so the flag is a no-op. The relocation analysis behind 2afa6bda still holds -- the archive carries R_X86_64_32/32S and could not go into a PIE -- but the toolchain never asks for one, so there is nothing to opt out of and no ASLR trade-off to accept. -Wl,--export-dynamic is kept. It is confirmed necessary: a stub built without it links libpython3.12.a statically and exports zero PyExc_* symbols, leaving the 77 dlopen'ed lib-dynload modules -- which link no libpython -- with no way to resolve Py_* at import time. --- build.py | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/build.py b/build.py index ddb8ee4294..3d4b0bfd05 100755 --- a/build.py +++ b/build.py @@ -626,20 +626,9 @@ def python_cmake_args(): # restore_embeddable_python_lib_rhel), so its dynamic symbol table # must be exported for Python C extension modules loaded at runtime # to resolve Py_* against it. A shared libpython would not need this. - stub_link_flags = ["-Wl,--export-dynamic"] - # That archive is built without -fPIC. On x86-64 its R_X86_64_32 and - # R_X86_64_32S relocations cannot appear in a position-independent - # executable, and gcc-toolset defaults to -pie, so the stub has to be - # linked non-PIE. aarch64 addressing is PC-relative and links into a - # PIE unchanged, so it keeps the hardening. - if target_machine() == "x86_64": - stub_link_flags.append("-no-pie") cargs.append( cmake_backend_arg( - "python", - "CMAKE_EXE_LINKER_FLAGS", - "STRING", - " ".join(stub_link_flags), + "python", "CMAKE_EXE_LINKER_FLAGS", "STRING", "-Wl,--export-dynamic" ) ) From 48b139f001e41862882365af4cc04040829a0f3f Mon Sep 17 00:00:00 2001 From: "M. Chornyi" <99709299+mc-nv@users.noreply.github.com> Date: Tue, 4 Aug 2026 21:50:31 -0700 Subject: [PATCH 09/19] build: Move the stub's symbol export into python_backend The -Wl,--export-dynamic injected through CMAKE_EXE_LINKER_FLAGS is now set by python_backend itself, as an ENABLE_EXPORTS target property gated on libpython resolving to a static archive. Two things improve. The condition is the actual one -- static linkage -- rather than target_platform() == "rhel" standing in for it, so it stays correct if the RHEL flow returns to a shared libpython. And it is scoped to the stub instead of every executable in the backend build, and no longer overwrites the CMAKE_EXE_LINKER_FLAGS cache variable. --- build.py | 9 --------- 1 file changed, 9 deletions(-) diff --git a/build.py b/build.py index 3d4b0bfd05..29ecdfcdff 100755 --- a/build.py +++ b/build.py @@ -622,15 +622,6 @@ def python_cmake_args(): "python", "PYBIND11_PYTHON_VERSION", "STRING", FLAGS.rhel_py_version ) ) - # The stub embeds a statically linked CPython on RHEL (see - # restore_embeddable_python_lib_rhel), so its dynamic symbol table - # must be exported for Python C extension modules loaded at runtime - # to resolve Py_* against it. A shared libpython would not need this. - cargs.append( - cmake_backend_arg( - "python", "CMAKE_EXE_LINKER_FLAGS", "STRING", "-Wl,--export-dynamic" - ) - ) return cargs From 70200282b16274c715d454c6a9ca3c61a5f1d6c8 Mon Sep 17 00:00:00 2001 From: "M. Chornyi" <99709299+mc-nv@users.noreply.github.com> Date: Tue, 4 Aug 2026 21:56:09 -0700 Subject: [PATCH 10/19] extract single file --- build.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.py b/build.py index 29ecdfcdff..3a4c3fd80d 100755 --- a/build.py +++ b/build.py @@ -1570,7 +1570,7 @@ def restore_embeddable_python_lib_rhel(): # This deliberately fails the build if the archive is absent: without it # the stub link fails much later with an unresolvable -lpython. return """ -RUN tar -xf /opt/_internal/static-libs-for-embedding-only.tar.xz \\ +RUN tar -xvf /opt/_internal/static-libs-for-embedding-only.tar.xz cpython-3.12.13/lib/libpython3.12.a \\ -C /opt/_internal """ From cdf809343fe06c0a1479106aecec87168fddf814 Mon Sep 17 00:00:00 2001 From: "M. Chornyi" <99709299+mc-nv@users.noreply.github.com> Date: Tue, 4 Aug 2026 21:56:38 -0700 Subject: [PATCH 11/19] Revert "extract single file" This reverts commit 70200282b16274c715d454c6a9ca3c61a5f1d6c8. --- build.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.py b/build.py index 3a4c3fd80d..29ecdfcdff 100755 --- a/build.py +++ b/build.py @@ -1570,7 +1570,7 @@ def restore_embeddable_python_lib_rhel(): # This deliberately fails the build if the archive is absent: without it # the stub link fails much later with an unresolvable -lpython. return """ -RUN tar -xvf /opt/_internal/static-libs-for-embedding-only.tar.xz cpython-3.12.13/lib/libpython3.12.a \\ +RUN tar -xf /opt/_internal/static-libs-for-embedding-only.tar.xz \\ -C /opt/_internal """ From 6e7a5323621c09bb97cc98c4dd0671b3753dcdb0 Mon Sep 17 00:00:00 2001 From: "M. Chornyi" <99709299+mc-nv@users.noreply.github.com> Date: Tue, 4 Aug 2026 21:58:42 -0700 Subject: [PATCH 12/19] make extract verbose --- build.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.py b/build.py index 29ecdfcdff..75c6c7afef 100755 --- a/build.py +++ b/build.py @@ -1570,7 +1570,7 @@ def restore_embeddable_python_lib_rhel(): # This deliberately fails the build if the archive is absent: without it # the stub link fails much later with an unresolvable -lpython. return """ -RUN tar -xf /opt/_internal/static-libs-for-embedding-only.tar.xz \\ +RUN tar -xvf /opt/_internal/static-libs-for-embedding-only.tar.xz \\ -C /opt/_internal """ From ce129e0bcc5be763029b7a3d5e281b9cd53b26a7 Mon Sep 17 00:00:00 2001 From: "M. Chornyi" <99709299+mc-nv@users.noreply.github.com> Date: Wed, 5 Aug 2026 08:27:50 -0700 Subject: [PATCH 13/19] build: Drop the RHEL PYBIND11_PYTHON_VERSION pin The hint existed because pybind would otherwise pick up an older interpreter present in the RHEL base container. It is no longer doing any work: - pybind11 sets Python_ADDITIONAL_VERSIONS "3.12;3.11;...;3.6" and prefers the newest entry, so an unconstrained search already lands on 3.12 (pybind11Tools.cmake:45-50). - The manylinux base container puts a single interpreter first on PATH. Every find_package site in the 26.08 RHEL build that carries no version constraint resolves to the same /opt/_internal 3.12.13 interpreter. - The non-RHEL path has never passed it and builds fine, so dropping it removes a platform divergence rather than creating one. - The pinned 3.12.3 had already drifted from the 3.12.13 the container ships. It passed only because find_package version matching means "at least"; a container on 3.12.2 would have failed the build on a number nobody was maintaining. With the argument gone python_cmake_args() returned an empty list, which is what the else branch of backend_cmake_args already produces, so both it and its dispatch entry go too. This removes the last reader of FLAGS.rhel_py_version, whose flag and version-map entry were already deleted -- build.py currently raises AttributeError for --target-platform=rhel --backend=python. qa/L0_backend_python/common.sh still passes PYBIND11_PYTHON_VERSION on purpose: it rebuilds the stub against a specific interpreter. --- build.py | 32 ++++++-------------------------- tools/build/build_presets.py | 1 - 2 files changed, 6 insertions(+), 27 deletions(-) diff --git a/build.py b/build.py index 75c6c7afef..ac1c57f7c3 100755 --- a/build.py +++ b/build.py @@ -79,7 +79,6 @@ "ort_openvino_version": "2026.3.0", "standalone_openvino_version": "2026.3.0", "dcgm_version": "4.6.1-1", - "rhel_py_version": "3.12.3", } CORE_BACKENDS = ["ensemble"] @@ -554,8 +553,6 @@ def backend_cmake_args(images, components, be, install_dir, library_paths): args = onnxruntime_cmake_args(images, library_paths) elif be == "openvino": args = openvino_cmake_args() - elif be == "python": - args = python_cmake_args() elif be == "dali": args = dali_cmake_args() elif be == "pytorch": @@ -614,18 +611,6 @@ def backend_cmake_args(images, components, be, install_dir, library_paths): return cargs -def python_cmake_args(): - cargs = [] - if target_platform() == "rhel": - cargs.append( - cmake_backend_arg( - "python", "PYBIND11_PYTHON_VERSION", "STRING", FLAGS.rhel_py_version - ) - ) - - return cargs - - def pytorch_cmake_args(images): if "pytorch" in images: image = images["pytorch"] @@ -958,7 +943,7 @@ def create_dockerfile_buildbase_rhel(ddir, dockerfile_name, argmap): """.format( os.getenv("CCACHE_REMOTE_STORAGE") ) - df += change_default_python_version_rhel(FLAGS.rhel_py_version) + df += set_python_location_to_manylinux_for_rhel() df += restore_embeddable_python_lib_rhel() df += """ @@ -1333,9 +1318,10 @@ def dockerfile_prepare_container_linux(argmap, backends, enable_gpu, target_mach libb64-devel \\ gperftools-devel \\ wget \\ - python3.12-pip \\ numactl-devel - +""" + df += set_python_location_to_manylinux_for_rhel() + df += """ RUN pip3 install patchelf==0.17.2 """ @@ -1410,7 +1396,7 @@ def dockerfile_prepare_container_linux(argmap, backends, enable_gpu, target_mach openssl-devel \\ readline-devel """ - df += change_default_python_version_rhel(FLAGS.rhel_py_version) + df += set_python_location_to_manylinux_for_rhel() df += """ RUN pip3 install --upgrade pip \\ && pip3 install --upgrade \\ @@ -1551,7 +1537,7 @@ def add_cpu_libs_to_linux_dockerfile(backends, target_machine): return df -def change_default_python_version_rhel(version): +def set_python_location_to_manylinux_for_rhel(): df = """ ENV PATH="/opt/_internal/pipx/shared/bin:$PATH" """ @@ -2602,12 +2588,6 @@ def enable_all(): default=DEFAULT_TRITON_VERSION_MAP["dcgm_version"], help="This flag sets the DCGM version for Triton Inference Server to be built. Default: the latest supported version.", ) - parser.add_argument( - "--rhel-py-version", - required=False, - default=DEFAULT_TRITON_VERSION_MAP["rhel_py_version"], - help="This flag sets the Python version for RHEL platform of Triton Inference Server to be built. Default: the latest supported version.", - ) parser.add_argument( "--build-secret", action="append", diff --git a/tools/build/build_presets.py b/tools/build/build_presets.py index 6177430469..0f0afc5da9 100644 --- a/tools/build/build_presets.py +++ b/tools/build/build_presets.py @@ -117,7 +117,6 @@ "TRITON_ENABLE_AZURE_STORAGE": "filesystem", "TRITON_ENABLE_ENSEMBLE": "backend", "TRITON_ENABLE_TENSORRT": "backend", - "PYBIND11_PYTHON_VERSION": "rhel_py_version", "TRITON_PYTORCH_DOCKER_IMAGE": "image", "TRITON_BUILD_CONTAINER": "image", "TRITON_BUILD_ONNXRUNTIME_VERSION": "ort_version", From b4bf5ea5fb73016e233f25d0af98c9bbe422fdad Mon Sep 17 00:00:00 2001 From: "M. Chornyi" <99709299+mc-nv@users.noreply.github.com> Date: Wed, 5 Aug 2026 08:47:01 -0700 Subject: [PATCH 14/19] fix: Pin the QA ONNX models to an opset ONNX Runtime accepts Every generated ONNX QA model fails to load: onnx runtime error 1: Load model from .../model.onnx failed: ValidateOpsetForDomain ... Opset 27 is under development and support for this is limited ... Current official support for domain ai.onnx is till opset 26. 320 models in a single L0_infer job, and the server then aborts with "failed to load all models", so every ONNX-backed test goes with it. ONNX_OPSET was 0, which does not mean "use what ONNX Runtime supports" as the original comment implied -- it means "omit opset_imports and let the onnx package stamp its newest". Per onnx's own VERSION_TABLE the pinned ONNX_VERSION=1.22.0 defaults to opset 27, while ONNX Runtime 1.28 accepts at most 26. The two pins drifted one release apart and nothing tied them together. Stamp 26 explicitly so the opset is decoupled from whichever onnx release the generator image happens to carry. The models are generated once and shared by every test job, so the value must not exceed what the oldest ONNX Runtime in the pipeline supports; the runtime names its maximum in the load error if this drifts again. --- qa/common/gen_qa_model_repository | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/qa/common/gen_qa_model_repository b/qa/common/gen_qa_model_repository index 6fde16311f..84ab90792c 100755 --- a/qa/common/gen_qa_model_repository +++ b/qa/common/gen_qa_model_repository @@ -68,7 +68,13 @@ cd ${TRITON_MDLS_BASE_SCRIPT_DIR} log_message.status "define: default values" TRITON_VERSION=${TRITON_VERSION:=26.07} ONNX_VERSION=1.22.0 -ONNX_OPSET=0 +# Stamp an opset ONNX Runtime accepts rather than letting the onnx package pick +# its newest. onnx 1.22 defaults to opset 27, ONNX Runtime 1.28 supports up to +# 26, and a model stamped above that fails to load at all. These models are +# generated once and shared by every test job, so this must not exceed what the +# oldest ONNX Runtime in the pipeline supports -- the runtime prints its maximum +# in the load error if this ever drifts again. +ONNX_OPSET=26 OPENVINO_VERSION=2024.5.0 UBUNTU_IMAGE=${UBUNTU_IMAGE:=ubuntu:22.04} PYTORCH_IMAGE=${PYTORCH_IMAGE:=nvcr.io/nvidia/pytorch:$TRITON_VERSION-py3} From e7083f40ea0365177fcd1966b4f09dd78ff197bc Mon Sep 17 00:00:00 2001 From: "M. Chornyi" <99709299+mc-nv@users.noreply.github.com> Date: Wed, 5 Aug 2026 08:58:22 -0700 Subject: [PATCH 15/19] Update Opset version and comments --- qa/common/gen_qa_model_repository | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/qa/common/gen_qa_model_repository b/qa/common/gen_qa_model_repository index 84ab90792c..fd4c67bea4 100755 --- a/qa/common/gen_qa_model_repository +++ b/qa/common/gen_qa_model_repository @@ -67,14 +67,8 @@ cd ${TRITON_MDLS_BASE_SCRIPT_DIR} log_message.status "define: default values" TRITON_VERSION=${TRITON_VERSION:=26.07} -ONNX_VERSION=1.22.0 -# Stamp an opset ONNX Runtime accepts rather than letting the onnx package pick -# its newest. onnx 1.22 defaults to opset 27, ONNX Runtime 1.28 supports up to -# 26, and a model stamped above that fails to load at all. These models are -# generated once and shared by every test job, so this must not exceed what the -# oldest ONNX Runtime in the pipeline supports -- the runtime prints its maximum -# in the load error if this ever drifts again. -ONNX_OPSET=26 +ONNX_VERSION=1.22.0 # https://github.com/microsoft/onnxruntime/blob/v1.28.0/tools/ci_build/github/linux/python/requirements.txt#L15 +ONNX_OPSET=26 # Check corresponded Opset version for ONNX_VERSION via https://github.com/onnx/onnx/blob/v1.22.0/docs/Versioning.md#released-versions OPENVINO_VERSION=2024.5.0 UBUNTU_IMAGE=${UBUNTU_IMAGE:=ubuntu:22.04} PYTORCH_IMAGE=${PYTORCH_IMAGE:=nvcr.io/nvidia/pytorch:$TRITON_VERSION-py3} From 6ea3689fff09ee37244a3e6ee0e4863bcb2ff993 Mon Sep 17 00:00:00 2001 From: "M. Chornyi" <99709299+mc-nv@users.noreply.github.com> Date: Wed, 5 Aug 2026 09:10:48 -0700 Subject: [PATCH 16/19] Update Opset pins and comment --- qa/common/gen_qa_model_repository | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/qa/common/gen_qa_model_repository b/qa/common/gen_qa_model_repository index fd4c67bea4..40d11443de 100755 --- a/qa/common/gen_qa_model_repository +++ b/qa/common/gen_qa_model_repository @@ -68,7 +68,13 @@ cd ${TRITON_MDLS_BASE_SCRIPT_DIR} log_message.status "define: default values" TRITON_VERSION=${TRITON_VERSION:=26.07} ONNX_VERSION=1.22.0 # https://github.com/microsoft/onnxruntime/blob/v1.28.0/tools/ci_build/github/linux/python/requirements.txt#L15 -ONNX_OPSET=26 # Check corresponded Opset version for ONNX_VERSION via https://github.com/onnx/onnx/blob/v1.22.0/docs/Versioning.md#released-versions +# Max opset ONNX Runtime accepts: the last *released* opset of the onnx that ORT +# was built against, i.e. one below that release's current opset. v1.28.0 pins +# onnx 1.22.0, whose opset 27 is still in development, so the ceiling is 26. +# Do NOT derive this from ONNX_VERSION -- 1.22.0 maps to 27, which fails to load. +# ORT's onnx pin: https://github.com/microsoft/onnxruntime/blob/v1.28.0/cmake/deps.txt +# As of 1.22.0 ONNX_OPSET is 26 - https://github.com/onnx/onnx/blob/v1.22.0/docs/Versioning.md#released-versions +ONNX_OPSET=26 OPENVINO_VERSION=2024.5.0 UBUNTU_IMAGE=${UBUNTU_IMAGE:=ubuntu:22.04} PYTORCH_IMAGE=${PYTORCH_IMAGE:=nvcr.io/nvidia/pytorch:$TRITON_VERSION-py3} From a8ce8e46eb63ca853416fd16c2f2204f9274a0d1 Mon Sep 17 00:00:00 2001 From: "M. Chornyi" <99709299+mc-nv@users.noreply.github.com> Date: Wed, 5 Aug 2026 11:33:27 -0700 Subject: [PATCH 17/19] test: Drop the Python 3.11 custom environment from L0_backend_python Nothing below 3.12 is supported any more, so the 3.11 conda environment and everything that existed only to serve it goes: the conda install and update, the env creation, conda-pack, the python_3_11 model, the teardown and the assertion that grepped for its version string. That assertion had to go with it. EXPECTED_VERSION_STRING was set only inside the 3.11 branch, so leaving the grep behind would have run `grep "" $SERVER_LOG`, matching every line and passing unconditionally -- a test that looks green while checking nothing. EXPECTED_VERSION_STRINGS (plural) was already dead and is removed too. The same-version custom environment path is unaffected: env/test.sh still covers it with create_conda_env "3.12". Its comment about Ubuntu 22.04/20.04 shipping 3.10/3.8 is corrected while here, since those mappings no longer describe anything we build. --- qa/L0_backend_python/env/test.sh | 7 ++- .../setup_python_enviroment.sh | 49 ------------------- 2 files changed, 3 insertions(+), 53 deletions(-) diff --git a/qa/L0_backend_python/env/test.sh b/qa/L0_backend_python/env/test.sh index b98ba607d6..ff12afd5bd 100755 --- a/qa/L0_backend_python/env/test.sh +++ b/qa/L0_backend_python/env/test.sh @@ -41,10 +41,9 @@ rm -rf *.tar.gz install_build_deps install_conda -# Test conda env without custom Python backend stub This environment should -# always use the default Python version shipped in the container. For Ubuntu -# 24.04 it is Python 3.12, for Ubuntu 22.04 is Python 3.10 and for Ubuntu 20.04 -# is 3.8. +# Test conda env without custom Python backend stub. This environment should +# always use the default Python version shipped in the container, which is +# 3.12 -- nothing below that is supported. path_to_conda_pack='$$TRITON_MODEL_DIRECTORY/python_3_12_environment.tar.gz' create_conda_env "3.12" "python-3-12" conda install -c conda-forge libstdcxx-ng=14 -y diff --git a/qa/L0_backend_python/setup_python_enviroment.sh b/qa/L0_backend_python/setup_python_enviroment.sh index ce6be322ba..baaabc52f9 100755 --- a/qa/L0_backend_python/setup_python_enviroment.sh +++ b/qa/L0_backend_python/setup_python_enviroment.sh @@ -41,59 +41,10 @@ SERVER_ARGS=$BASE_SERVER_ARGS SERVER_LOG="./inference_server.log" export PYTHON_ENV_VERSION=${PYTHON_ENV_VERSION:="12"} RET=0 -EXPECTED_VERSION_STRINGS="" rm -fr ./models rm -rf *.tar.gz install_build_deps -install_conda - -# Test other python versions -conda update -n base -c defaults conda -y - -# Create a model with python 3.11 version -# Successful execution of the Python model indicates that the environment has -# been setup correctly. -if [ ${PYTHON_ENV_VERSION} = "11" ]; then - create_conda_env "3.11" "python-3-11" - conda install pytorch=2.8.0 -y - conda install -c conda-forge libstdcxx-ng=14 -y - conda install numpy=1.23.5 -y - EXPECTED_VERSION_STRING="Python version is 3.11, NumPy version is 1.23.5, and PyTorch version is 2.8.0" - create_python_backend_stub - conda-pack -o python3.11.tar.gz - path_to_conda_pack="$PWD/python-3-11" - mkdir -p $path_to_conda_pack - tar -xzf python3.11.tar.gz -C $path_to_conda_pack - mkdir -p models/python_3_11/1/ - cp ../python_models/python_version/config.pbtxt ./models/python_3_11 - (cd models/python_3_11 && \ - sed -i "s/^name:.*/name: \"python_3_11\"/" config.pbtxt && \ - echo "parameters: {key: \"EXECUTION_ENV_PATH\", value: {string_value: \"$path_to_conda_pack\"}}">> config.pbtxt) - cp ../python_models/python_version/model.py ./models/python_3_11/1/ - cp python_backend/builddir/triton_python_backend_stub ./models/python_3_11 -fi -conda deactivate -rm -rf ./miniconda - -# test that -set +e -run_server -if [ "$SERVER_PID" == "0" ]; then - echo -e "\n***\n*** Failed to start $SERVER\n***" - cat $SERVER_LOG - exit 1 -fi - -kill_server - -grep "$EXPECTED_VERSION_STRING" $SERVER_LOG -if [ $? -ne 0 ]; then - cat $SERVER_LOG - echo -e "\n***\n*** $EXPECTED_VERSION_STRING was not found in Triton logs. \n***" - RET=1 -fi -set -e echo "python environment 3.${PYTHON_ENV_VERSION}" # copy the stub out to /opt/tritonserver/backends/python/triton_python_backend_stub From cf5915d9aa532b99505f65ba518b5e9828e0e6a7 Mon Sep 17 00:00:00 2001 From: "M. Chornyi" <99709299+mc-nv@users.noreply.github.com> Date: Wed, 5 Aug 2026 11:33:35 -0700 Subject: [PATCH 18/19] test: Drop the Python 3.8 branches from the backend_python examples Nothing below 3.12 is supported, so the PYTHON_ENV_VERSION == "8" arms are unreachable. Keep only the modern path -- numpy>=2 with torch 2.5.0 -- and drop the two `!= "8"` guards that skipped JAX, which dropped 3.8 support upstream. Leaves no PYTHON_ENV_VERSION references in this script. --- qa/L0_backend_python/examples/test.sh | 28 ++++++--------------------- 1 file changed, 6 insertions(+), 22 deletions(-) diff --git a/qa/L0_backend_python/examples/test.sh b/qa/L0_backend_python/examples/test.sh index 7f193a8d49..d17ac76983 100755 --- a/qa/L0_backend_python/examples/test.sh +++ b/qa/L0_backend_python/examples/test.sh @@ -42,33 +42,18 @@ pip3 uninstall -y numpy # NOTE: Using this subtest as a test case that involves using a python model with # numpy 2.X without changing the environments used in all the other test cases. if [ "$TEST_JETSON" == "0" ] && [[ ${TEST_WINDOWS} == 0 ]]; then - if [ ${PYTHON_ENV_VERSION} == "8" ]; then - # Python 3.8 does not support numpy 2.x, so installing numpy1.x - pip3 install "numpy<2" - pip3 install torch==2.0.0+cu117 -f https://download.pytorch.org/whl/torch_stable.html torchvision==0.15.0+cu117 - else - # Python 3.9 >= supports numpy 2.x. - pip3 install "numpy>=2" - pip3 install torch==2.5.0 torchvision==0.20.0 --index-url https://download.pytorch.org/whl/cu124 - fi + pip3 install "numpy>=2" + pip3 install torch==2.5.0 torchvision==0.20.0 --index-url https://download.pytorch.org/whl/cu124 else - if [ ${PYTHON_ENV_VERSION} == "8" ]; then - # Python 3.8 does not support numpy 2.x, so installing numpy1.x - pip3 install "numpy<2" - pip3 install torch==2.0.0 -f https://download.pytorch.org/whl/torch_stable.html torchvision==0.15.0 - else - # Python 3.9 >= supports numpy 2.x. - pip3 install "numpy>=2" - pip3 install torch==2.5.0 -f https://download.pytorch.org/whl/torch_stable.html torchvision==0.20.0 - fi + pip3 install "numpy>=2" + pip3 install torch==2.5.0 -f https://download.pytorch.org/whl/torch_stable.html torchvision==0.20.0 fi # Install `validators` for Model Instance Kind example pip3 install validators # Install JAX -# Jax has dropped the support for Python 3.8. See https://jax.readthedocs.io/en/latest/changelog.html -if [ "$TEST_JETSON" == "0" ] && [ ${PYTHON_ENV_VERSION} != "8" ]; then +if [ "$TEST_JETSON" == "0" ]; then pip install -U "jax[cuda12]" fi @@ -152,8 +137,7 @@ kill_server # JAX AddSub # JAX is not supported on Jetson -# Jax has dropped the support for Python 3.8. See https://jax.readthedocs.io/en/latest/changelog.html -if [ "$TEST_JETSON" == "0" ] && [ ${PYTHON_ENV_VERSION} != "8" ]; then +if [ "$TEST_JETSON" == "0" ]; then CLIENT_LOG="../examples_jax_client.log" mkdir -p models/jax/1/ cp examples/jax/model.py models/jax/1/model.py From 1ecacb60b4203b5948ed8012ede223d74f23cb66 Mon Sep 17 00:00:00 2001 From: "M. Chornyi" <99709299+mc-nv@users.noreply.github.com> Date: Wed, 5 Aug 2026 11:39:30 -0700 Subject: [PATCH 19/19] test: Remove the unreachable Python environment setup script setup_python_enviroment.sh had no reachable path left. It exits at the top when PYTHON_ENV_VERSION is "12", which every config now sets after the 3.11 environment and the blackwell 3.10 job were dropped. Its remaining tail was also broken: it copies python_backend/builddir/triton_python_backend_stub unconditionally, but that directory was only ever produced by create_python_backend_stub() inside the deleted 3.11 branch, so any non-12 value failed there. The version assertion that followed the call goes with it. It grepped python3 --version for 3.${PYTHON_ENV_VERSION}, which existed to confirm the script had swapped the interpreter; with no script and the value fixed at 12 it duplicated the "3.12" check a few lines above. PYTHON_ENV_VERSION itself stays -- it still gates the env subtest. --- .../setup_python_enviroment.sh | 77 ------------------- qa/L0_backend_python/test.sh | 8 -- 2 files changed, 85 deletions(-) delete mode 100755 qa/L0_backend_python/setup_python_enviroment.sh diff --git a/qa/L0_backend_python/setup_python_enviroment.sh b/qa/L0_backend_python/setup_python_enviroment.sh deleted file mode 100755 index baaabc52f9..0000000000 --- a/qa/L0_backend_python/setup_python_enviroment.sh +++ /dev/null @@ -1,77 +0,0 @@ -#!/bin/bash -# Copyright 2023-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# * Neither the name of NVIDIA CORPORATION nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY -# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -RET=0 -set -e -if [ ${PYTHON_ENV_VERSION} = "12" ]; then - echo No need to set up anything for default python3.${PYTHON_ENV_VERSION} - exit $RET -fi - -source common.sh -source ../common/util.sh - -TRITON_REPO_ORGANIZATION=${TRITON_REPO_ORGANIZATION:="http://github.com/triton-inference-server"} -BASE_SERVER_ARGS="--model-repository=${MODELDIR}/models --log-verbose=1 --disable-auto-complete-config" -PYTHON_BACKEND_BRANCH=$PYTHON_BACKEND_REPO_TAG -SERVER_ARGS=$BASE_SERVER_ARGS -SERVER_LOG="./inference_server.log" -export PYTHON_ENV_VERSION=${PYTHON_ENV_VERSION:="12"} -RET=0 - -rm -fr ./models -rm -rf *.tar.gz -install_build_deps - -echo "python environment 3.${PYTHON_ENV_VERSION}" -# copy the stub out to /opt/tritonserver/backends/python/triton_python_backend_stub -cp python_backend/builddir/triton_python_backend_stub /opt/tritonserver/backends/python/triton_python_backend_stub -# Set up environment and stub for each test -apt-get update -qq && apt-get install -y software-properties-common -add-apt-repository ppa:deadsnakes/ppa -y -apt-get update && apt-get -y install \ - "python3.${PYTHON_ENV_VERSION}-dev" \ - "python3.${PYTHON_ENV_VERSION}-distutils" \ - libboost-dev -rm -f /usr/bin/python3 && \ -ln -s "/usr/bin/python3.${PYTHON_ENV_VERSION}" /usr/bin/python3 -pip3 install --upgrade requests numpy virtualenv protobuf -find /opt/tritonserver/qa/pkgs/ -maxdepth 1 -type f -name \ - "tritonclient-*-py3-none-any.whl" | xargs printf -- '%s[all]' | \ - xargs pip3 install --upgrade - -# Build triton-shm-monitor for the test -cd python_backend && rm -rf install build && mkdir build && cd build && \ - export CMAKE_POLICY_VERSION_MINIMUM=3.5 && \ - cmake -DCMAKE_INSTALL_PREFIX:PATH=$PWD/install \ - -DTRITON_REPO_ORGANIZATION:STRING=${TRITON_REPO_ORGANIZATION} \ - -DTRITON_COMMON_REPO_TAG:STRING=${TRITON_COMMON_REPO_TAG} \ - -DTRITON_CORE_REPO_TAG:STRING=${TRITON_CORE_REPO_TAG} \ - -DTRITON_BACKEND_REPO_TAG:STRING=${TRITON_BACKEND_REPO_TAG} .. && \ - make -j16 triton-shm-monitor install -cp $PWD/install/backends/python/triton_shm_monitor.cpython-* /opt/tritonserver/qa/common/. -set +e -exit $RET diff --git a/qa/L0_backend_python/test.sh b/qa/L0_backend_python/test.sh index a225c4504e..1e32fe96c1 100755 --- a/qa/L0_backend_python/test.sh +++ b/qa/L0_backend_python/test.sh @@ -84,14 +84,6 @@ if [ $? -ne 0 ]; then exit 1 fi -(bash -ex setup_python_enviroment.sh) - -python3 --version | grep "3.${PYTHON_ENV_VERSION}" > /dev/null -if [ $? -ne 0 ]; then - echo -e "Expecting Python version to be: Python 3.${PYTHON_ENV_VERSION} but actual version is $(python3 --version)" - exit 1 -fi - mkdir -p models/identity_fp32/1/ cp ../python_models/identity_fp32/model.py ./models/identity_fp32/1/model.py cp ../python_models/identity_fp32/config.pbtxt ./models/identity_fp32/config.pbtxt