快速入门#
刚接触 Triton 推理服务器并希望快速部署模型? 利用这些教程开始您的 Triton 之旅!
Triton 推理服务器可以作为可构建的源代码提供,但安装和运行 Triton 最简单的方法是使用 NVIDIA GPU Cloud (NGC) 提供的预构建 Docker 镜像。
启动和维护 Triton 推理服务器围绕构建模型仓库的使用展开。本教程将涵盖
创建模型仓库
启动 Triton
发送推理请求
创建模型仓库#
模型仓库是您放置希望 Triton 服务的模型的目录。示例模型仓库包含在docs/examples/model_repository中。在使用仓库之前,您必须通过提供的脚本从其公共模型库中获取任何缺失的模型定义文件。
$ cd docs/examples
$ ./fetch_models.sh
启动 Triton#
Triton 经过优化,可通过使用 GPU 提供最佳推理性能,但它也可以在仅 CPU 系统上工作。在这两种情况下,您都可以使用相同的 Triton Docker 镜像。
在带有 GPU 的系统上运行#
使用以下命令运行带有您刚创建的示例模型仓库的 Triton。NVIDIA 容器工具包必须已安装,Docker 才能识别 GPU。–gpus=1 标志指示应向 Triton 提供 1 个系统 GPU 用于推理。
$ docker run --gpus=1 --rm -p8000:8000 -p8001:8001 -p8002:8002 -v/full/path/to/docs/examples/model_repository:/models nvcr.io/nvidia/tritonserver:<xx.yy>-py3 tritonserver --model-repository=/models
其中 <xx.yy> 是您要使用的 Triton 版本(以及上面拉取的版本)。启动 Triton 后,您将在控制台上看到输出,显示服务器正在启动并加载模型。当您看到如下输出时,Triton 已准备好接受推理请求。
+----------------------+---------+--------+
| Model | Version | Status |
+----------------------+---------+--------+
| <model_name> | <v> | READY |
| .. | . | .. |
| .. | . | .. |
+----------------------+---------+--------+
...
...
...
I1002 21:58:57.891440 62 grpc_server.cc:3914] Started GRPCInferenceService at 0.0.0.0:8001
I1002 21:58:57.893177 62 http_server.cc:2717] Started HTTPService at 0.0.0.0:8000
I1002 21:58:57.935518 62 http_server.cc:2736] Started Metrics Service at 0.0.0.0:8002
所有模型都应显示“READY”状态,以指示它们已正确加载。如果模型加载失败,状态将报告失败以及失败原因。如果您的模型未显示在表中,请检查模型仓库的路径和您的 CUDA 驱动程序。
在仅 CPU 系统上运行#
在没有 GPU 的系统上,应在不使用 Docker 的 –gpus 标志的情况下运行 Triton,但其他方面与上述描述相同。
$ docker run --rm -p8000:8000 -p8001:8001 -p8002:8002 -v/full/path/to/docs/examples/model_repository:/models nvcr.io/nvidia/tritonserver:<xx.yy>-py3 tritonserver --model-repository=/models
由于未使用 –gpus 标志,因此 GPU 不可用,因此 Triton 将无法加载任何需要 GPU 的模型配置。
验证 Triton 是否正确运行#
使用 Triton 的ready端点来验证服务器和模型是否已准备好进行推理。从主机系统使用 curl 访问指示服务器状态的 HTTP 端点。
$ curl -v localhost:8000/v2/health/ready
...
< HTTP/1.1 200 OK
< Content-Length: 0
< Content-Type: text/plain
如果 Triton 准备就绪,HTTP 请求将返回状态 200;如果未准备就绪,则返回非 200。
发送推理请求#
使用 docker pull 从 NGC 获取客户端库和示例镜像。
$ docker pull nvcr.io/nvidia/tritonserver:<xx.yy>-py3-sdk
其中 <xx.yy> 是您要拉取的版本。运行客户端镜像。
$ docker run -it --rm --net=host nvcr.io/nvidia/tritonserver:<xx.yy>-py3-sdk
从 nvcr.io/nvidia/tritonserver:<xx.yy>-py3-sdk 镜像内,运行示例 image-client 应用程序,以使用示例 densenet_onnx 模型执行图像分类。
要为 densenet_onnx 模型发送请求,请使用 /workspace/images 目录中的图像。在本例中,我们要求提供前 3 个分类。
$ /workspace/install/bin/image_client -m densenet_onnx -c 3 -s INCEPTION /workspace/images/mug.jpg
Request 0, batch size 1
Image '/workspace/images/mug.jpg':
15.346230 (504) = COFFEE MUG
13.224326 (968) = CUP
10.422965 (505) = COFFEEPOT