BLS Triton 后端#
BLS 后端演示了如何使用进程内 C-API 在后端内部执行推理。此后端作为后端开发人员在 C++ 中实现他们自己的自定义管道的示例。对于 Python 用例,请参阅 Python 后端中的业务逻辑脚本部分。
bls 后端的源代码包含在 src 中。
backend.cc 包含主要的后端实现。此文件的内容不是 BLS 特定的。它仅包含任何后端实现都需要的标准 Triton 后端函数。BLS 逻辑在
TRITONBACKEND_ModelInstanceExecute
中通过代码行bls_executor.Execute(requests[r], &responses[r]);
启动。bls.h 是此示例的 BLS(类
BLSExecutor
)所在的位置。您可以参考此文件,了解如何与 Triton 进程内 C-API 交互以构建自定义执行管道。bls_utils.h 是所有不依赖于 BLS 的实用程序所在的位置。
源代码包含详细的文档,描述了后端的运行以及 Triton 后端 API 和 Triton 服务器 API 的使用。在阅读源代码之前,请确保您理解与 Triton 后端抽象 TRITONBACKEND_Backend、TRITONBACKEND_Model 和 TRITONBACKEND_ModelInstance 相关的概念。
bls 后端将在 ‘addsub_python’ 和 ‘addsub_tf’ 模型上发送两个请求。在推理请求完成后,此后端将从 ‘addsub_python’ 中提取 OUTPUT0,并从 ‘addsub_tf’ 模型中提取 OUTPUT1,以使用这些张量构建最终的推理响应对象。
为了简化此示例,有一些自我施加的限制
此后端不支持批处理。
此后端不支持解耦模型。
此后端不支持 GPU 张量。
模型配置应严格按照 backend.cc 中注释的描述进行设置。
您可以实现您自己的自定义后端,而不受上述限制的约束。
构建 BLS 后端#
backends/bls/CMakeLists.txt 显示了 Triton 后端的推荐构建和安装脚本。构建和安装与 构建 Minimal 后端 中所述相同。
运行带有 BLS 后端的 Triton#
在将 bls 后端添加到 Triton 服务器后(如 后端共享库中所述),您可以运行 Triton 并使其加载 model_repos/bls_models 中的模型。假设您已通过将 bls 后端添加到 Triton 创建了 tritonserver Docker 镜像,则以下命令将运行 Triton
$ docker run --rm -it --net=host -v/path/to/model_repos/bls_models:/models tritonserver --model-repository=/models
控制台输出将显示类似于以下内容,表明来自 bls_models 仓库的 bls_fp32、addsub_python 和 addsub_tf 模型已正确加载。
I0616 09:34:47.767433 19214 server.cc:629]
+---------------+---------+--------+
| Model | Version | Status |
+---------------+---------+--------+
| addsub_python | 1 | READY |
| addsub_tf | 1 | READY |
| bls_fp32 | 1 | READY |
+---------------+---------+--------+
测试 BLS 后端#
clients 目录包含示例客户端。bls_client Python 脚本演示了向 bls 后端发送推理请求。在 Triton 按照运行带有 BLS 后端的 Triton 中所述运行的情况下,执行客户端
$ clients/bls_client
您应该看到类似于以下输出的输出
INPUT0 ([0.42935285 0.51512766 0.43625894 ... 0.6670954 0.17747518 0.7976901 ]) + INPUT1 ([6.7752063e-01 2.4223252e-01 6.7743927e-01 ... 4.1531715e-01 2.5451833e-01 7.9097062e-01]) = OUTPUT0 ([1.1068735 0.75736016 1.1136982 ... 1.0824126 0.4319935 1.5886607 ])
INPUT0 ([0.42935285 0.51512766 0.43625894 ... 0.6670954 0.17747518 0.7976901 ]) - INPUT1 ([6.7752063e-01 2.4223252e-01 6.7743927e-01 ... 4.1531715e-01 2.5451833e-01 7.9097062e-01]) = OUTPUT1 ([-0.24816778 0.27289516 -0.24118033 ... 0.25177827 -0.07704315 0.00671947])
PASS