自定义 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
容器(脚本将从中提取组件)。min
和 full
容器的版本由 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 容器版本
向分支添加标志
--container-version <容器版本>
python3 compose.py --backend pytorch --repoagent checksum --container-version 24.12
指定
--image min,<min 容器镜像名称> --image full,<full 容器镜像名称>
。用户负责指定兼容的min
和full
容器。
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
标志。
注意
将删除
min
镜像的/opt/tritonserver
仓库中的所有内容,以确保正确添加组合镜像的依赖项。vLLM 和 TensorRT-LLM 后端目前不支持用于
compose.py
的后端。如果您想在这些后端之上构建其他后端,最好自行构建,方法是使用nvcr.io/nvidia/tritonserver:24.12-vllm-python-py3
或nvcr.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 .