推理协议和 API#
客户端可以使用 HTTP/REST 协议、GRPC 协议或进程内 C API 或其 C++ 包装器与 Triton 通信。
HTTP/REST 和 GRPC 协议#
Triton 基于 KServe 项目提出的标准推理协议公开 HTTP/REST 和 GRPC 端点。为了完全启用所有功能,Triton 还实现了 HTTP/REST 和 GRPC 扩展到 KServe 推理协议。GRPC 协议还提供了推理 RPC 的双向流式版本,允许通过 GRPC 流发送一系列推理请求/响应。我们通常建议对推理请求使用单向版本。流式版本仅应在情况需要时使用。一些用例可以是
假设一个系统,其中多个 Triton 服务器实例在负载均衡器后运行。如果需要一系列推理请求来命中同一 Triton 服务器实例,则 GRPC 流将在整个生命周期内保持单个连接,从而确保请求被传递到同一 Triton 实例。
如果需要在网络上保留请求/响应的顺序,则 GRPC 流将确保服务器按照客户端发送的相同顺序接收请求。
HTTP/REST 和 GRPC 协议还提供端点来检查服务器和模型的健康状况、元数据和统计信息。其他端点允许模型加载和卸载以及推理。有关详细信息,请参阅 KServe 和扩展文档。
HTTP 选项#
Triton 为通过 HTTP 协议的服务器-客户端网络事务提供以下配置选项。
压缩#
Triton 允许通过其客户端在 HTTP 上对请求/响应进行在线压缩。有关更多详细信息,请参阅HTTP 压缩。
将 Triton 服务器错误代码映射到 HTTP 状态代码#
下表将各种 Triton 服务器错误代码映射到其对应的 HTTP 状态代码。它可以作为参考指南,用于了解如何在 HTTP 响应中处理 Triton 服务器错误。
Triton 服务器错误代码 |
HTTP 状态代码 |
描述 |
---|---|---|
|
500 |
内部服务器错误 |
|
404 |
未找到 |
|
503 |
服务不可用 |
|
501 |
未实现 |
|
|
错误请求(其他错误的默认值) |
GRPC 选项#
Triton 公开了各种 GRPC 参数,用于配置服务器-客户端网络事务。有关这些选项的用法,请参阅 tritonserver --help
的输出。
SSL/TLS#
这些选项可用于配置安全通信通道。服务器端选项包括
--grpc-use-ssl
--grpc-use-ssl-mutual
--grpc-server-cert
--grpc-server-key
--grpc-root-cert
对于客户端文档,请参阅客户端 GRPC SSL/TLS
有关 gRPC 中身份验证概述的更多详细信息,请参阅此处。
压缩#
Triton 允许通过公开服务器端的以下选项,对请求/响应消息进行在线压缩
--grpc-infer-response-compression-level
对于客户端文档,请参阅客户端 GRPC 压缩
压缩可用于减少服务器-客户端通信中使用的带宽量。有关更多详细信息,请参阅gRPC 压缩。
GRPC KeepAlive#
Triton 公开了 GRPC KeepAlive 参数,客户端和服务器的默认值在此处描述。
这些选项可用于配置 KeepAlive 设置
--grpc-keepalive-time
--grpc-keepalive-timeout
--grpc-keepalive-permit-without-calls
--grpc-http2-max-pings-without-data
--grpc-http2-min-recv-ping-interval-without-data
--grpc-http2-max-ping-strikes
对于客户端文档,请参阅客户端 GRPC KeepAlive。
GRPC 状态代码#
当通过标头启用特定标志时,Triton 为流式请求实现 GRPC 错误处理。遇到错误时,Triton 返回相应的 GRPC 错误代码,然后关闭流。
triton_grpc_error
:启动流时,标头值需要设置为 true。
GRPC 状态代码可用于提高可见性和监控。有关更多详细信息,请参阅gRPC 状态代码
对于客户端文档,请参阅客户端 GRPC 状态代码
限制端点访问 (BETA)#
Triton 用户可能希望限制对服务器的 GRPC 或 HTTP 端点提供的协议或 API 的访问。例如,用户可以为推理 API 提供一组访问凭据,为模型控制 API(例如模型加载和卸载)提供另一组访问凭据。
可以指定以下选项来声明受限协议组 (GRPC) 或受限 API 组 (HTTP)
--grpc-restricted-protocol=<protocol_1>,<protocol_2>,...:<restricted-key>=<restricted-value>
--http-restricted-api=<API_1>,API_2>,...:<restricted-key>=<restricted-value>
可以多次指定该选项,以使用不同的限制设置指定多个协议或 API 组。
protocols / APIs
:要包含在此组中的协议/ API 的逗号分隔列表。请注意,目前不允许将给定的协议/ API 包含在多个组中。以下协议/ API 被识别restricted-key
:接收到请求时要检查的 GRPC / HTTP 请求标头。GRPC 的完整标头格式为triton-grpc-protocol-<restricted-key>
。HTTP 的完整标头格式为<restricted-key>
。restricted-value
:访问指定协议所需的标头值。
示例#
要启动服务器,并设置一组协议和 API 限制为 admin
用途,其余协议和 API 保持不受限制,请使用以下命令行参数
tritonserver --grpc-restricted-protocol=shared-memory,model-config,model-repository,statistics,trace:<admin-key>=<admin-value> \
--http-restricted-api=shared-memory,model-config,model-repository,statistics,trace:<admin-key>=<admin-value> ...
对 admin
协议的 GRPC 请求需要提供额外的标头 triton-grpc-protocol-<admin-key>
,其值为 <admin-value>
。对 admin
API 的 HTTP 请求需要提供额外的标头 <admin-key>
,其值为 <admin-value>
。