Triton教程 — 解耦后端和模型
Triton系列教程:
- 快速开始
- 利用Triton部署你自己的模型
- Triton架构
- 模型仓库
- 存储代理
- 模型设置
- 优化
- 动态批处理
- 速率限制器
- 模型管理
- 自定义算子
解耦后端和模型
Triton 可以支持为一个请求发送多个响应或为一个请求发送零个响应的后端和模型。 解耦的模型/后端还可能相对于请求批次的执行顺序无序地发送响应。 这允许后端在认为合适的时候提供响应。 这在自动语音识别 (ASR) 中特别有用。 具有大量响应的请求,不会阻止其他请求的响应的传递。
开发解耦后端/模型
C++ 后端
仔细阅读 Triton 后端 API、推理请求和响应以及解耦响应。 重复后端和方形后端演示了如何使用 Triton 后端 API 来实现解耦后端。 该示例旨在展示 Triton API 的灵活性,绝不应在生产中使用。 此示例可以同时处理多批请求,而无需增加实例数。 在实际部署中,后端不应允许调用者线程从 TRITONBACKEND_ModelInstanceExecute
返回,直到该实例准备好处理另一组请求。 如果设计不当,后端很容易被超额认购。 这也可能导致动态批处理等功能的利用不足,因为它会导致急切的批处理。
使用Python后端的Python模型
仔细阅读Python Backend,并具体执行。
解耦示例演示了如何使用解耦 API 来实现解耦 Python 模型。 如示例中所述,这些旨在展示解耦 API 的灵活性,绝不应在生产中使用。
部署解耦模型
必须在为模型提供的模型配置文件中设置解耦模型事务策略。 Triton 需要此信息来启用解耦模型所需的特殊处理。 在没有此配置设置的情况下部署解耦模型将在运行时引发错误。
在解耦模型上运行推理
推理协议和 API 描述了客户端在服务器上进行通信和运行推理的各种方式。 对于解耦模型,Triton 的 HTTP 端点不能用于运行推理,因为它只支持每个请求一个响应。 即使 GRPC 端点中的标准 ModelInfer RPC 也不支持解耦响应。 为了在解耦模型上运行推理,客户端必须使用双向流 RPC。 请参阅此处了解更多详细信息。 decoupled_test.py 演示了如何使用 gRPC 流来推断解耦模型。
如果使用 Triton 的进程内 C API,您的应用程序应该认识到您使用 TRITONSERVER_InferenceRequestSetResponseCallback
注册的回调函数可以被调用任意多次,每次都有一个新的响应。 你可以看一下grpc_server.cc