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
2 changes: 1 addition & 1 deletion 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.05-py3-min
ARG BASE_IMAGE=nvcr.io/nvidia/tritonserver:26.06-py3-min

ARG TRITON_CLIENT_REPO_SUBDIR=clientrepo
ARG TRITON_REPO_ORGANIZATION=http://github.com/triton-inference-server
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.69.0](https://github.com/triton-inference-server/server/releases/latest)
>and corresponds to the 26.05 container release on NVIDIA GPU Cloud (NGC).
>towards the next release. The current release is version [2.70.0](https://github.com/triton-inference-server/server/releases/latest)
>and corresponds to the 26.06 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.05 https://github.com/triton-inference-server/server.git
git clone -b r26.06 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.05-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.06-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.05-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.06-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
82 changes: 74 additions & 8 deletions build.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
import os.path
import pathlib
import platform
import re
import stat
import subprocess
import sys
Expand Down Expand Up @@ -75,8 +76,8 @@
"triton_container_version": "26.07dev",
"upstream_container_version": "26.05",
"ort_version": "1.24.4",
"ort_openvino_version": "2026.1.0",
"standalone_openvino_version": "2026.1.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",
}
Expand Down Expand Up @@ -921,6 +922,7 @@ def create_dockerfile_buildbase_rhel(ddir, dockerfile_name, argmap):

RUN pip3 install --upgrade pip \\
&& pip3 install --upgrade \\
auditwheel \\
build \\
wheel \\
setuptools \\
Expand Down Expand Up @@ -1034,6 +1036,7 @@ def create_dockerfile_buildbase(ddir, dockerfile_name, argmap):
&& rm -rf /var/lib/apt/lists/*

RUN pip3 install --upgrade \\
auditwheel \\
build \\
docker \\
virtualenv \\
Expand Down Expand Up @@ -1171,10 +1174,21 @@ def create_dockerfile_linux(

WORKDIR /opt/tritonserver
COPY NVIDIA_Deep_Learning_Container_License.pdf .
RUN find /opt/tritonserver/python -maxdepth 1 -type f -name \\
"tritonserver-*.whl" | xargs -I {{}} pip install --upgrade {{}}[{FLAGS.triton_wheels_dependencies_group}] && \\
find /opt/tritonserver/python -maxdepth 1 -type f -name \\
"tritonfrontend-*.whl" | xargs -I {{}} pip install --upgrade {{}}[{FLAGS.triton_wheels_dependencies_group}]
# TRI-1118 — fail fast if either tritonserver or tritonfrontend wheel is
# missing from /opt/tritonserver/python. The legacy `find | xargs -I` is
# a silent no-op when find returns zero matches: xargs runs the command
# zero times and the layer succeeds, masking the gap until something
# downstream (a wheel publish job, or pip install tritonfrontend)
# discovers nothing was actually installed. Check existence first.
RUN set -e; \\
for pkg in tritonserver tritonfrontend; do \\
wheels=$(find /opt/tritonserver/python -maxdepth 1 -type f -name "${{pkg}}-*.whl"); \\
if [ -z "$wheels" ]; then \\
echo "ERROR: ${{pkg}}-*.whl missing from /opt/tritonserver/python -- build did not stage the wheel into the image" >&2; \\
exit 1; \\
fi; \\
printf '%s\\n' "$wheels" | xargs -I {{}} pip install --upgrade "{{}}[{FLAGS.triton_wheels_dependencies_group}]"; \\
done

RUN pip3 install -r python/openai/requirements.txt

Expand Down Expand Up @@ -1301,6 +1315,7 @@ def dockerfile_prepare_container_linux(argmap, backends, enable_gpu, target_mach
libgoogle-perftools-dev \\
libjemalloc-dev \\
libnuma-dev \\
libssl-dev \\
wget \\
{backend_dependencies} \\
python3-pip \\
Expand Down Expand Up @@ -1664,6 +1679,25 @@ def create_docker_build_script(script_name, container_install_dir, container_ci_
),
]

# TRI-1118 — propagate TRITON_RELEASE_VERSION into the wheel build
# only when it was actually set in main() (release-semantic version
# or explicit --release-version). Dev / pre-release builds leave it
# unset so build_wheel.py reads the in-tree TRITON_VERSION file and
# takes the PEP 817 variant path.
if "TRITON_RELEASE_VERSION" in os.environ:
runargs += [
"-e",
f"TRITON_RELEASE_VERSION={os.environ['TRITON_RELEASE_VERSION']}",
]
# TRI-1118 — forward PEP 427 build-tag and PEP 817 nv-part inputs so
# build_wheel.py inside the buildbase container can emit pipeline-correct
# wheel filenames. CUDA_VERSION is deliberately NOT forwarded -- the
# container's own CUDA base image defines it; host CUDA may differ
# (see core/python/build_wheel.py:_detect_cuda_version).
for var in ("CI_PIPELINE_ID", "NVIDIA_UPSTREAM_VERSION", "NVIDIA_BUILD_ID"):
if os.environ.get(var):
runargs += ["-e", f"{var}={os.environ[var]}"]

runargs += ["tritonserver_buildbase"]

runargs += ["./cmake_build"]
Expand Down Expand Up @@ -1787,6 +1821,18 @@ def core_build(
# [FIXME] Placing the tritonserver and tritonfrontend wheel files in 'python' for now,
# should be uploaded to pip registry to be able to install directly
cmake_script.mkdir(os.path.join(install_dir, "python"))
# TRI-1118 — tritonfrontend wheel is built by the triton-server
# sub-build's `frontend-server-wheel` target, but its CMake
# `install(DIRECTORY ${WHEEL_OUT_DIR})` rule doesn't traverse the
# outer install pass, so the wheel never lands in
# repo_install_dir/python/ alongside the core's tritonserver wheel.
# Pull it in from the build tree directly so the subsequent
# `triton*.whl` glob picks it up. Safe no-op when the wheel is
# absent (e.g. downstream builds that disable the frontend).
cmake_script.cmd(
f"find {repo_build_dir} -path '*/wheel/dist/tritonfrontend-*.whl' "
f"-exec cp {{}} {os.path.join(repo_install_dir, 'python')}/ \\;"
)
cmake_script.cp(
os.path.join(repo_install_dir, "python", "triton*.whl"),
os.path.join(install_dir, "python"),
Expand Down Expand Up @@ -2466,8 +2512,12 @@ def enable_all():
parser.add_argument(
"--release-version",
required=False,
default=DEFAULT_TRITON_VERSION_MAP["release_version"],
help="This flag sets the release version for Triton Inference Server to be built. Default: the latest released version.",
default=None,
help="Override the wheel base version (TRI-1118). When set, exported "
"as TRITON_RELEASE_VERSION so build_wheel.py uses it as the bare "
"PEP 440 version. When unset, build.py falls back to --version when "
"it matches X.Y.Z release-semantic, otherwise leaves the env var "
"unset and lets the in-tree TRITON_VERSION file rule (PEP 817 path).",
)
parser.add_argument(
"--triton-container-version",
Expand Down Expand Up @@ -2596,6 +2646,22 @@ def enable_all():
if FLAGS.version is None:
FLAGS.version = DEFAULT_TRITON_VERSION_MAP["release_version"]

# TRI-1118 — choose whether to export TRITON_RELEASE_VERSION based on
# the resolved Triton version:
# - --release-version explicitly passed -> use it (override)
# - FLAGS.version matches X.Y.Z -> propagate FLAGS.version
# - anything else (dev / pre-release / etc) -> leave unset so the
# wheel build reads the
# in-tree TRITON_VERSION
# file (PEP 817 variant).
# The container build forwards this env var via `docker run -e`
# (create_docker_build_script). For --no-container-build, the
# cmake_build subprocess inherits the host env directly.
if FLAGS.release_version is not None:
os.environ.setdefault("TRITON_RELEASE_VERSION", FLAGS.release_version)
elif re.match(r"^\d+\.\d+\.\d+$", FLAGS.version):
os.environ.setdefault("TRITON_RELEASE_VERSION", FLAGS.version)

if FLAGS.build_parallel is None:
FLAGS.build_parallel = multiprocessing.cpu_count() * 2

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.05-py3
imageName: nvcr.io/nvidia/tritonserver:26.06-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.69.0
appVersion: 2.70.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.05-py3
imageName: nvcr.io/nvidia/tritonserver:26.06-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.05/docs/user_guide/model_management.md
# See https://github.com/triton-inference-server/server/blob/r26.06/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.05/README.md
# see https://github.com/triton-inference-server/server/blob/r26.06/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.05-py3
imageName: nvcr.io/nvidia/tritonserver:26.06-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.05-py3-sdk
- image: nvcr.io/nvidia/tritonserver:26.06-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.69.0
export NGC_VERSION=26.05-py3
export MINOR_VERSION=2.70.0
export NGC_VERSION=26.06-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.69.0
version: 2.70.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.05
publishedVersion: '2.69.0'
modelRepositoryPath: gs://triton_sample_models/26.06
publishedVersion: '2.70.0'
gcpMarketplace: true

image:
registry: gcr.io
repository: nvidia-ngc-public/tritonserver
tag: 26.05-py3
tag: 26.06-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.69.0'
publishedVersion: '2.70.0'
publishedVersionMetadata:
releaseNote: >-
Initial release.
Expand Down
4 changes: 2 additions & 2 deletions deploy/gke-marketplace-app/server-deployer/schema.yaml
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.69.0'
publishedVersion: '2.70.0'
publishedVersionMetadata:
releaseNote: >-
Initial release.
Expand Down Expand Up @@ -89,7 +89,7 @@ properties:
modelRepositoryPath:
type: string
title: Bucket where models are stored. Please make sure the user/service account to create the GKE app has permission to this GCS bucket. Read Triton documentation on configs and formatting details, supporting TensorRT, TensorFlow, Pytorch, Onnx ... etc.
default: gs://triton_sample_models/26.05
default: gs://triton_sample_models/26.06
image.ldPreloadPath:
type: string
title: Leave this empty by default. Triton allows users to create custom layers for backend such as TensorRT plugin, the compiled shared library must be provided via LD_PRELOAD environment variable.
Expand Down
6 changes: 3 additions & 3 deletions deploy/gke-marketplace-app/trt-engine/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
```
docker run --gpus all -it --network host \
--shm-size=1g --ulimit memlock=-1 --ulimit stack=67108864 \
-v ~:/scripts nvcr.io/nvidia/tensorrt:26.05-py3
-v ~:/scripts nvcr.io/nvidia/tensorrt:26.06-py3

pip install onnx six torch tf2onnx tensorflow

Expand All @@ -57,7 +57,7 @@ mkdir -p engines

python3 builder.py -m models/fine-tuned/bert_tf_ckpt_large_qa_squad2_amp_128_v19.03.1/model.ckpt -o engines/bert_large_int8_bs1_s128.engine -b 1 -s 128 -c models/fine-tuned/bert_tf_ckpt_large_qa_squad2_amp_128_v19.03.1/ -v models/fine-tuned/bert_tf_ckpt_large_qa_squad2_amp_128_v19.03.1/vocab.txt --int8 --fp16 --strict --calib-num 1 -iln -imh

gsutil cp bert_large_int8_bs1_s128.engine gs://triton_sample_models/26.05/bert/1/model.plan
gsutil cp bert_large_int8_bs1_s128.engine gs://triton_sample_models/26.06/bert/1/model.plan
```

For each Triton upgrade, container version used to generate the model, and the model path in GCS `gs://triton_sample_models/26.05/` should be updated accordingly with the correct version.
For each Triton upgrade, container version used to generate the model, and the model path in GCS `gs://triton_sample_models/26.06/` should be updated accordingly with the correct version.
2 changes: 1 addition & 1 deletion deploy/k8s-onprem/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ tags:
openshift: false

image:
imageName: nvcr.io/nvidia/tritonserver:26.05-py3
imageName: nvcr.io/nvidia/tritonserver:26.06-py3
pullPolicy: IfNotPresent
modelRepositoryServer: < Replace with the IP Address of your file server >
modelRepositoryPath: /srv/models
Expand Down
2 changes: 1 addition & 1 deletion deploy/oci/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.05-py3
imageName: nvcr.io/nvidia/tritonserver:26.06-py3
pullPolicy: IfNotPresent
modelRepositoryPath: s3://https://<OCI_NAMESPACE>.compat.objectstorage.<OCI_REGION>.oraclecloud.com:443/triton-inference-server-repository
numGpus: 1
Expand Down
18 changes: 9 additions & 9 deletions docs/customization_guide/compose.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,8 @@ The `compose.py` script can be found in the
Simply clone the repository and run `compose.py` to create a custom container.
Note: Created container version will depend on the branch that was cloned.
For example branch
[r26.05](https://github.com/triton-inference-server/server/tree/r26.05)
should be used to create a image based on the NGC 26.05 Triton release.
[r26.06](https://github.com/triton-inference-server/server/tree/r26.06)
should be used to create a image based on the NGC 26.06 Triton release.

`compose.py` provides `--backend`, `--repoagent` options that allow you to
specify which backends and repository agents to include in the custom image.
Expand Down Expand Up @@ -78,20 +78,20 @@ For example, running
```
python3 compose.py --backend pytorch --repoagent checksum
```
on branch [r26.05](https://github.com/triton-inference-server/server/tree/r26.05) pulls:
- `min` container `nvcr.io/nvidia/tritonserver:26.05-py3-min`
- `full` container `nvcr.io/nvidia/tritonserver:26.05-py3`
on branch [r26.06](https://github.com/triton-inference-server/server/tree/r26.06) pulls:
- `min` container `nvcr.io/nvidia/tritonserver:26.06-py3-min`
- `full` container `nvcr.io/nvidia/tritonserver:26.06-py3`

Alternatively, users can specify the version of Triton container to pull from
any branch by either:
1. Adding flag `--container-version <container version>` to branch
```
python3 compose.py --backend pytorch --repoagent checksum --container-version 26.05
python3 compose.py --backend pytorch --repoagent checksum --container-version 26.06
```
2. Specifying `--image min,<min container image name> --image full,<full container image name>`.
The user is responsible for specifying compatible `min` and `full` containers.
```
python3 compose.py --backend pytorch --repoagent checksum --image min,nvcr.io/nvidia/tritonserver:26.05-py3-min --image full,nvcr.io/nvidia/tritonserver:26.05-py3
python3 compose.py --backend pytorch --repoagent checksum --image min,nvcr.io/nvidia/tritonserver:26.06-py3-min --image full,nvcr.io/nvidia/tritonserver:26.06-py3
```
Method 1 and 2 will result in the same composed container. Furthermore,
`--image` flag overrides the `--container-version` flag when both are specified.
Expand All @@ -102,8 +102,8 @@ Note:
2. vLLM and TensorRT-LLM backends are currently not supported backends for
`compose.py`. If you want to build additional backends on top of these backends,
it would be better to [build it yourself](#build-it-yourself) by using
`nvcr.io/nvidia/tritonserver:26.05-vllm-python-py3` or
`nvcr.io/nvidia/tritonserver:26.05-trtllm-python-py3` as a `min` container.
`nvcr.io/nvidia/tritonserver:26.06-vllm-python-py3` or
`nvcr.io/nvidia/tritonserver:26.06-trtllm-python-py3` as a `min` container.


### CPU-only container composition
Expand Down
Loading
Loading