Skip to content

Release 2.17.0 corresponding to NGC container 21.12

Compare
Choose a tag to compare
@dzier dzier released this 21 Dec 06:34
· 1 commit to r21.12 since this release

Triton Inference Server

The Triton Inference Server provides a cloud inferencing solution optimized for both CPUs and GPUs. The server provides an inference service via an HTTP or GRPC endpoint, allowing remote clients to request inferencing for any model being managed by the server. For edge deployments, Triton Server is also available as a shared library with an API that allows the full functionality of the server to be included directly in an application.

What's New In 2.17.0

  • Improved Inferentia support to use Neuron Runtime 2.x and multiple instances.

  • Models from MLflow can now be deployed to Triton with the MLflow plugin.

  • The preview release of TorchTRT models is now supported. PyTorch models optimized using TensorRT can now be loaded into Triton in the same way as regular PyTorch (TorchScript) models.

  • At the end of each Model Analyzer phase, an example command line will be
    printed to run the next phase.

  • ONNX Runtime backend updated to ONNX Runtime version 1.10.0 in both Ubuntu and Window versions of Triton.

Known Issues

  • There was a bug in the GRPC protobuf implementation that was resolved by triton-inference-server/common#34. If the client code uses the 'byte_contents' field, the code must be updated to instead use 'bytes_contents'.

  • Triton PIP wheels for ARM SBSA are not available from PyPI and pip will install an incorrect Jetson version of Triton for ARM SBSA. The correct wheel file can be pulled directly from the ARM SBSA SDK image and manually installed.

  • Traced models in PyTorch seem to create overflows when int8 tensor values are transformed to int32 on the GPU. See pytorch/pytorch#66930.

  • Triton’s TensorRT support depends on the input-consumed feature of TensorRT. In some rare cases using TensorRT 8.0 and earlier versions, the input-consumed event fires earlier than expected, causing Triton to overwrite input tensors while they are still in use and leading to corrupt input data being used for inference. This situation occurs when the inputs feed directly into a TensorRT layer that is optimized into a ForeignNode in the builder log. If you encounter accuracy issues with your TensorRT model, you can work-around the issue by enabling the output_copy_stream option in your model’s configuration (https://github.com/triton-inference-server/common/blob/main/protobuf/model_config.proto#L816)

  • Triton cannot retrieve GPU metrics with MIG-enabled GPU devices (A100 and A30)

  • Triton metrics may not work if the host machine is running a separate DCGM agent, either on bare-metal or in a container

  • Running a PyTorch TorchScript model using the PyTorch backend, where multiple instances of a model are configured can lead to a slowdown in model execution due to the following PyTorch issue: pytorch/pytorch#27902

Client Libraries and Examples

Ubuntu 20.04 builds of the client libraries and examples are included in this release in the attached v2.17.0_ubuntu2004.clients.tar.gz file. The SDK is also available for as an Ubuntu 20.04 based NGC Container. The SDK container includes the client libraries and examples, Performance Analyzer and Model Analyzer. Some components are also available in the tritonclient pip package. See Getting the Client Libraries for more information on each of these options.

For windows, the client libraries and some examples are available in the attached tritonserver2.17.0-sdk-win.zip file.

Windows Support

An alpha release of Triton for Windows is provided in the attached file: tritonserver2.17.0-win.zip. This is an alpha release so functionality is limited and performance is not optimized. Additional features and improved performance will be provided in future releases. Specifically in this release:

  • HTTP/REST and GRPC endpoints are now supported.

  • ONNX models are supported by the ONNX Runtime backend. The ONNX Runtime version is 1.10.0. The CPU, CUDA, and TensorRT execution providers are supported. The OpenVINO execution provider is not supported.

  • OpenVINO models are supported. The OpenVINO version is 2021.2.

  • Prometheus metrics endpoint is not supported.

  • System and CUDA shared memory are not supported.

To use the Windows version of Triton, you must install all the necessary dependencies on your Windows system. These dependencies are available in the Dockerfile.win10.min. The Dockerfile includes the following CUDA-related components:

  • NVIDIA Driver release 470 or later.

  • CUDA 11.4.2

  • cuDNN 8.2.4.15

  • TensorRT 8.0.3.4

Jetson Jetpack Support

A release of Triton for JetPack 4.6 (https://developer.nvidia.com/embedded/jetpack) is provided in the attached tar file: tritonserver2.17.0-jetpack4.6.tgz.

  • This release supports TensorFlow 2.6.0, TensorFlow 1.15.5, TensorRT 8.0.1.6, Onnx Runtime 1.10.0 and as well as ensembles.
  • For the Onnx Runtime backend the OpenVino execution provider is not supported but the TensorRT execution provider is supported.
  • System shared memory is supported on Jetson.
  • GPU metrics, GCS storage, S3 storage and Azure storage are not supported.

The tar file contains the Triton server executable and shared libraries and also the C++ and Python client libraries and examples.

Installation and Usage

The following dependencies must be installed before building / running Triton.

apt-get update && \
    apt-get install -y --no-install-recommends \
        software-properties-common \
        autoconf \
        automake \
        build-essential \
        cmake \
        git \
        libb64-dev \
        libre2-dev \
        libssl-dev \
        libtool \
        libboost-dev \
        libcurl4-openssl-dev \
        libopenblas-dev \
        rapidjson-dev \
        patchelf \
        zlib1g-dev

Note: When building Triton on Jetson, you will require a newer version of cmake. We recommend using cmake 3.21.0. Below is a script to upgrade your cmake version to 3.21.0. You can use cmake 3.18.4 if you are not enabling OnnxRuntime support.

apt remove cmake
wget https://cmake.org/files/v3.21/cmake-3.21.0.tar.gz
tar -xf cmake-3.21.0.tar.gz
(cd cmake-3.21.0 && ./configure && make install)

Note: Seeing a core dump when using numpy 1.19.5 on Jetson is a known issue. We recommend using numpy version 1.19.4 or earlier to work around this issue.

To build / run the Triton client libraries and examples on Jetson, the following dependencies must be installed.

apt-get install -y --no-install-recommends \
        curl \
        pkg-config \
        python3 \
        python3-pip \
        python3-dev

pip3 install --upgrade wheel setuptools cython && \
pip3 install --upgrade grpcio-tools numpy==1.19.4 future attrdict

Note: OpenCV 4.1.1 is installed as a part of JetPack 4.6. It is one of the dependencies for the client build.

The Python wheel for the python client library is present in the tar file and can be installed by running the following command:

python3 -m pip install --upgrade clients/python/tritonclient-2.17.0-py3-none-manylinux2014_aarch64.whl[all]

On Jetson, the backend directory needs to be explicitly set with the --backend-directory flag. Triton also defaults to using TensorFlow 1.x and a version string is required to specify TensorFlow 2.x.

  tritonserver --model-repository=/path/to/model_repo --backend-directory=/path/to/tritonserver/backends \
         --backend-config=tensorflow,version=2