Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions Dockerfile.sdk
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
#

# Base image on the minimum Triton container
ARG BASE_IMAGE=nvcr.io/nvidia/tritonserver:26.07-py3-min
ARG BASE_IMAGE=nvcr.io/nvidia/tritonserver:26.08-py3-min

ARG TRITON_CLIENT_REPO_SUBDIR=clientrepo
ARG TRITON_REPO_ORGANIZATION=http://github.com/triton-inference-server
Expand All @@ -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
Expand Down
10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@

>[!WARNING]
>You are currently on the `main` branch which tracks under-development progress
>towards the next release. The current release is version [2.71.0](https://github.com/triton-inference-server/server/releases/latest)
>and corresponds to the 26.07 container release on NVIDIA GPU Cloud (NGC).
>towards the next release. The current release is version [2.72.0](https://github.com/triton-inference-server/server/releases/latest)
>and corresponds to the 26.08 container release on NVIDIA GPU Cloud (NGC).

# Triton Inference Server

Expand Down Expand Up @@ -90,16 +90,16 @@ Inference Server with the

```bash
# Step 1: Create the example model repository
git clone -b r26.07 https://github.com/triton-inference-server/server.git
git clone -b r26.08 https://github.com/triton-inference-server/server.git
cd server/docs/examples
./fetch_models.sh

# Step 2: Launch triton from the NGC Triton container
docker run --gpus=1 --rm --net=host -v ${PWD}/model_repository:/models nvcr.io/nvidia/tritonserver:26.07-py3 tritonserver --model-repository=/models --model-control-mode explicit --load-model densenet_onnx
docker run --gpus=1 --rm --net=host -v ${PWD}/model_repository:/models nvcr.io/nvidia/tritonserver:26.08-py3 tritonserver --model-repository=/models --model-control-mode explicit --load-model densenet_onnx

# Step 3: Sending an Inference Request
# In a separate console, launch the image_client example from the NGC Triton SDK container
docker run -it --rm --net=host nvcr.io/nvidia/tritonserver:26.07-py3-sdk /workspace/install/bin/image_client -m densenet_onnx -c 3 -s INCEPTION /workspace/images/mug.jpg
docker run -it --rm --net=host nvcr.io/nvidia/tritonserver:26.08-py3-sdk /workspace/install/bin/image_client -m densenet_onnx -c 3 -s INCEPTION /workspace/images/mug.jpg

# Inference should return the following
Image '/workspace/images/mug.jpg':
Expand Down
106 changes: 36 additions & 70 deletions build.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,12 +74,11 @@
DEFAULT_TRITON_VERSION_MAP = {
"release_version": "2.73.0dev",
"triton_container_version": "26.09dev",
"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",
"rhel_py_version": "3.12.3",
"upstream_container_version": "26.08",
"ort_version": "1.28.0",
"ort_openvino_version": "2026.3.0",
"standalone_openvino_version": "2026.3.0",
"dcgm_version": "4.6.1-1",
}

CORE_BACKENDS = ["ensemble"]
Expand Down Expand Up @@ -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":
Expand Down Expand Up @@ -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"]
Expand Down Expand Up @@ -1041,9 +1026,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 \\
Expand Down Expand Up @@ -1077,20 +1059,21 @@ 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 += set_python_location_to_manylinux_for_rhel()
df += restore_embeddable_python_lib_rhel()
df += """
RUN pip3 install --upgrade pip \\
&& 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
Expand Down Expand Up @@ -1455,9 +1438,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
"""
Expand Down Expand Up @@ -1532,8 +1516,7 @@ 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 += set_python_location_to_manylinux_for_rhel()
df += """
RUN pip3 install --upgrade pip \\
&& pip3 install --upgrade \\
Expand Down Expand Up @@ -1674,30 +1657,30 @@ def add_cpu_libs_to_linux_dockerfile(backends, target_machine):
return df


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}}
def set_python_location_to_manylinux_for_rhel():
df = """
ENV PATH="/opt/_internal/pipx/shared/bin:$PATH"
"""
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<ver>.
return """
RUN tar -xvf /opt/_internal/static-libs-for-embedding-only.tar.xz \\
-C /opt/_internal
"""


def create_build_dockerfiles(
container_build_dir, images, backends, repoagents, caches, endpoints
):
Expand Down Expand Up @@ -2131,17 +2114,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"),
Expand Down Expand Up @@ -2760,12 +2732,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(
"--docker-build-secret",
action="append",
Expand Down
16 changes: 8 additions & 8 deletions compose.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
FLAGS = None


#### helper functions
# helper functions
def log(msg, force=False):
if force or not FLAGS.quiet:
try:
Expand Down Expand Up @@ -255,35 +255,35 @@ 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,
"Error: full container provided was build with "
"'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
Expand Down
2 changes: 1 addition & 1 deletion deploy/aws/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
replicaCount: 1

image:
imageName: nvcr.io/nvidia/tritonserver:26.07-py3
imageName: nvcr.io/nvidia/tritonserver:26.08-py3
pullPolicy: IfNotPresent
modelRepositoryPath: s3://triton-inference-server-repository/model_repository
numGpus: 1
Expand Down
2 changes: 1 addition & 1 deletion deploy/fleetcommand/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@

apiVersion: v1
# appVersion is the Triton version; update when changing release
appVersion: 2.71.0
appVersion: 2.72.0
description: Triton Inference Server (Fleet Command)
name: triton-inference-server
# version is the Chart version; update when changing anything in the chart
Expand Down
6 changes: 3 additions & 3 deletions deploy/fleetcommand/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
replicaCount: 1

image:
imageName: nvcr.io/nvidia/tritonserver:26.07-py3
imageName: nvcr.io/nvidia/tritonserver:26.08-py3
pullPolicy: IfNotPresent
numGpus: 1
serverCommand: tritonserver
Expand All @@ -47,13 +47,13 @@ image:
#
# To set model control mode, uncomment and configure below
# TODO: Fix the following url, it is invalid
# See https://github.com/triton-inference-server/server/blob/r26.07/docs/user_guide/model_management.md
# See https://github.com/triton-inference-server/server/blob/r26.08/docs/user_guide/model_management.md
# for more details
#- --model-control-mode=explicit|poll|none
#
# Additional server args
#
# see https://github.com/triton-inference-server/server/blob/r26.07/README.md
# see https://github.com/triton-inference-server/server/blob/r26.08/README.md
# for more details

service:
Expand Down
2 changes: 1 addition & 1 deletion deploy/gcp/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
replicaCount: 1

image:
imageName: nvcr.io/nvidia/tritonserver:26.07-py3
imageName: nvcr.io/nvidia/tritonserver:26.08-py3
pullPolicy: IfNotPresent
modelRepositoryPath: gs://triton-inference-server-repository/model_repository
numGpus: 1
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ metadata:
namespace: default
spec:
containers:
- image: nvcr.io/nvidia/tritonserver:26.07-py3-sdk
- image: nvcr.io/nvidia/tritonserver:26.08-py3-sdk
imagePullPolicy: Always
name: nv-triton-client
securityContext:
Expand Down
4 changes: 2 additions & 2 deletions deploy/gke-marketplace-app/server-deployer/build_and_push.sh
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@
export REGISTRY=gcr.io/$(gcloud config get-value project | tr ':' '/')
export APP_NAME=tritonserver
export MAJOR_VERSION=2.67
export MINOR_VERSION=2.71.0
export NGC_VERSION=26.07-py3
export MINOR_VERSION=2.72.0
export NGC_VERSION=26.08-py3

docker pull nvcr.io/nvidia/$APP_NAME:$NGC_VERSION

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,4 +28,4 @@ apiVersion: v1
appVersion: "2.68"
description: Triton Inference Server
name: triton-inference-server
version: 2.71.0
version: 2.72.0
Original file line number Diff line number Diff line change
Expand Up @@ -31,14 +31,14 @@ maxReplicaCount: 3
tritonProtocol: HTTP
# HPA GPU utilization autoscaling target
HPATargetAverageValue: 85
modelRepositoryPath: gs://triton_sample_models/26.07
publishedVersion: '2.71.0'
modelRepositoryPath: gs://triton_sample_models/26.08
publishedVersion: '2.72.0'
gcpMarketplace: true

image:
registry: gcr.io
repository: nvidia-ngc-public/tritonserver
tag: 26.07-py3
tag: 26.08-py3
pullPolicy: IfNotPresent
# modify the model repository here to match your GCP storage bucket
numGpus: 1
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
x-google-marketplace:
schemaVersion: v2
applicationApiVersion: v1beta1
publishedVersion: '2.71.0'
publishedVersion: '2.72.0'
publishedVersionMetadata:
releaseNote: >-
Initial release.
Expand Down
Loading
Loading