Triton 推理服务器可作为可构建的源代码提供,但安装和运行 Triton 的最简单方法是使用 NVIDIA GPU Cloud (NGC) 提供的预构建 Docker 映像。
启动和维护 Triton 推理服务器围绕构建模型存储库的使用展开。 本教程将涵盖:
创建模型存储库
启动 Triton
发送推理请求
模型存储库是放置您希望 Triton 提供的模型的目录。 示例模型存储库包含在 docs/examples/model_repository
中。 在使用存储库之前,您必须通过提供的脚本从他们的公共模型库中获取任何丢失的模型定义文件。
$ cd docs/examples
$ ./fetch_models.sh
Triton 经过优化,可通过使用 GPU 提供最佳推理性能,但它也可以在仅使用 CPU 的系统上运行。 在这两种情况下,您都可以使用相同的 Triton Docker 映像。
使用以下命令通过您刚刚创建的示例模型存储库运行 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
其中
是您要使用的 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 驱动程序的路径。
在没有 GPU 的系统上,Triton 应该在不使用 Docker 的 –gpus 标志的情况下运行,但在其他方面与上面描述的相同。
$ 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 的就绪端点来验证服务器和模型是否已准备好进行推理。 从主机系统使用 curl 访问指示服务器状态的 HTTP 端点。
$ curl -v localhost:8000/v2/health/ready
...
< HTTP/1.1 200 OK
< Content-Length: 0
< Content-Type: text/plain
如果 Triton 准备就绪,HTTP 请求返回状态 200,如果未准备好,则返回non-200。
使用 docker pull 从 NGC 获取客户端库和示例图像。
$ docker pull nvcr.io/nvidia/tritonserver:<xx.yy>-py3-sdk
其中
是您要拉取的版本。 运行客户端映像。
$ docker run -it --rm --net=host nvcr.io/nvidia/tritonserver:<xx.yy>-py3-sdk
在 nvcr.io/nvidia/tritonserver:
镜像中,运行示例图像客户端应用程序以使用示例 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