自定义 Triton 容器#

NVIDIA GPU Cloud (NGC) 提供了两个 Docker 镜像,可以轻松构建 Triton 的自定义版本。通过自定义 Triton,您可以通过删除不需要的功能来显着减小 Triton 镜像的大小。

目前,自定义功能受到如下所述的限制,但未来的版本将增加可用的自定义量。也可以从源代码构建 Triton,以获得更精确的自定义。

使用 compose.py 脚本#

compose.py 脚本可以在服务器仓库中找到。只需克隆仓库并运行 compose.py 即可创建自定义容器。注意:创建的容器版本将取决于克隆的分支。例如,应使用分支 r24.12 来创建基于 NGC 24.12 Triton 版本的镜像。

compose.py 提供了 --backend--repoagent 选项,允许您指定要包含在自定义镜像中的后端和仓库代理。例如,以下命令创建一个新的 Docker 镜像,其中仅包含 PyTorch 和 TensorFlow 后端以及 checksum 仓库代理。

示例

python3 compose.py --backend pytorch --backend tensorflow --repoagent checksum

将在本地提供一个容器 tritonserver。您可以使用以下命令访问该容器

$ docker run -it tritonserver:latest

注意:如果 compose.py 在发行版本 r21.08 及更早版本上运行,则生成的容器将安装 DCGM 版本 2.2.3。这可能会导致不同的 GPU 统计信息报告行为。

组合特定版本的 Triton#

compose.py 需要两个容器:min 容器(作为构建组合容器的基础)和 full 容器(脚本将从中提取组件)。minfull 容器的版本由 compose.py 所在 Triton 的分支决定。例如,在

python3 compose.py --backend pytorch --repoagent checksum

分支 r24.12 上运行会拉取

  • min 容器 nvcr.io/nvidia/tritonserver:24.12-py3-min

  • full 容器 nvcr.io/nvidia/tritonserver:24.12-py3

或者,用户可以通过以下任一方式指定要从任何分支拉取的 Triton 容器版本

  1. 向分支添加标志 --container-version <容器版本>

python3 compose.py --backend pytorch --repoagent checksum --container-version 24.12
  1. 指定 --image min,<min 容器镜像名称> --image full,<full 容器镜像名称>。用户负责指定兼容的 minfull 容器。

python3 compose.py --backend pytorch --repoagent checksum --image min,nvcr.io/nvidia/tritonserver:24.12-py3-min --image full,nvcr.io/nvidia/tritonserver:24.12-py3

方法 1 和 2 将产生相同的组合容器。此外,当同时指定 --image 标志和 --container-version 标志时,--image 标志将覆盖 --container-version 标志。

注意

  1. 将删除 min 镜像的 /opt/tritonserver 仓库中的所有内容,以确保正确添加组合镜像的依赖项。

  2. vLLM 和 TensorRT-LLM 后端目前不支持用于 compose.py 的后端。如果您想在这些后端之上构建其他后端,最好自行构建,方法是使用 nvcr.io/nvidia/tritonserver:24.12-vllm-python-py3nvcr.io/nvidia/tritonserver:24.12-trtllm-python-py3 作为 min 容器。

仅 CPU 容器组合#

仅 CPU 容器尚不可用于自定义。请参阅构建文档以获取构建完整仅 CPU 容器的说明。在组合容器中包含 TensorFlow 或 PyTorch 后端时,还需要额外的 gpu-min 容器,因为此容器提供了 CUDA stubs 和运行时依赖项,而这些依赖项在仅 CPU 的 min 容器中未提供。

自行构建#

如果您想自行完成 compose.py 在幕后执行的操作,您可以运行带有 --dry-run 选项的 compose.py,然后修改 Dockerfile.compose 文件以满足您的需求。

带有不受支持和自定义后端的 Triton#

您可以创建并构建您自己的 Triton 后端。该构建的结果应该是一个目录,其中包含您的后端共享库以及后端所需的任何其他文件。假设您的后端名为 “mybackend”,目录为 “./mybackend”,则将以下内容添加到 compose.py 创建的 Dockerfile 中将创建一个 Triton 镜像,其中包含所有受支持的 Triton 后端以及您的自定义后端。

COPY ./mybackend /opt/tritonserver/backends/mybackend

您还需要安装 Dockerfile 中后端所需的任何其他依赖项。然后使用 Docker 创建镜像。

$ docker build -t tritonserver_custom -f Dockerfile.compose .