Two Docker images are available from NVIDIA GPU Cloud (NGC) that make it possible to easily construct customized versions of Triton. By customizing Triton you can significantly reduce the size of the Triton image by removing functionality that you don't require.
Currently the customization is limited as described below but future releases will increase the amount of customization that is available. It is also possible to build Triton from source to get more exact customization.
The compose.py
script can be found in the server repository. 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 r21.06 should be used to create a image based on the NGC 21.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. The --enable-gpu
flag indicates that you want to create an image that supports NVIDIA GPUs. For example, the following creates a new docker image that contains only the TensorFlow 1 and TensorFlow 2 backends and the checksum repository agent.
Example:
python3 compose.py --backend tensorflow1 --backend tensorflow2 --repoagent checksum --enable-gpu
will provide a container tritonserver
locally. You can access the container with
$ docker run -it tritonserver:latest
Note: If compose.py
is run on release versions r21.07
and older, the resulting container will have DCGM version 2.2.3 installed. This may result in different GPU statistic reporting behavior.
If you would like to do what compose.py
is doing under the hood yourself, you can run compose.py
with the --dry-run
option and then modify the Dockerfile.compose
file to satisfy your needs.
You can create and build your own Triton
backend. The
result of that build should be a directory containing your backend
shared library and any additional files required by the
backend. Assuming your backend is called "mybackend" and that the
directory is "./mkbackend", adding the following to the Dockerfile compose.py
created will create a Triton image that contains all the supported Triton backends plus your
custom backend.
COPY ./mybackend /opt/tritonserver/backends/mybackend
You also need to install any additional dependencies required by your backend as part of the Dockerfile. Then use Docker to create the image.
$ docker build -t tritonserver_custom -f Dockerfile.compose .