使用 BLS 和解耦模型的示例#

在本节中,我们将演示一个用于 Python 后端 BLS (业务逻辑脚本) 的端到端示例。 模型仓库 应包含 square 模型。square 模型将发送 ‘n’ 个响应,其中 ‘n’ 是输入 IN 的值。对于每个响应,输出 OUT 将等于 IN 的值。本示例分为两个部分。第一部分演示如何执行同步 BLS 请求,第二部分演示如何执行异步 BLS 请求。

使用解耦模型的同步 BLS 请求#

bls_decoupled_sync 模型的目的是计算从 square 模型返回的响应的总和,并将总和作为最终响应返回。输入 ‘IN’ 的值将作为输入传递给 square 模型,该模型确定 square 模型将生成多少个响应。

  1. 创建模型仓库

mkdir -p models/bls_decoupled_sync/1
mkdir -p models/square_int32/1

# Copy the Python models
cp examples/bls_decoupled/sync_model.py models/bls_decoupled_sync/1/model.py
cp examples/bls_decoupled/sync_config.pbtxt models/bls_decoupled_sync/config.pbtxt
cp examples/decoupled/square_model.py models/square_int32/1/model.py
cp examples/decoupled/square_config.pbtxt models/square_int32/config.pbtxt
  1. 启动 tritonserver

tritonserver --model-repository `pwd`/models
  1. 向服务器发送推理请求

python3 examples/bls_decoupled/sync_client.py

您应该看到类似于以下输出的输出

==========model result==========
The square value of [4] is [16]

==========model result==========
The square value of [2] is [4]

==========model result==========
The square value of [0] is [0]

==========model result==========
The square value of [1] is [1]

PASS: BLS Decoupled Sync

sync_model.py 模型文件包含大量注释,解释了每个函数调用的含义。

客户端输出的解释#

client.pybls_decoupled_sync 模型发送 4 个推理请求,输入分别为:[4]、[2]、[0] 和 [1]。根据同步 BLS 模型的行为,它将期望输出为输入的平方值。

使用解耦模型的异步 BLS 请求#

在本节中,我们将解释如何在不等待响应的情况下发送多个 BLS 请求。异步执行 BLS 请求不会阻塞您的模型执行,并且在某些条件下可以提高速度。

bls_decoupled_async 模型将在 square 模型上执行两个异步 BLS 请求。然后,它将等待直到推理请求完成。它将计算来自 square 模型的两个请求中的输出 OUT 的总和,以使用这些张量构建最终的推理响应对象。

  1. 创建模型仓库

mkdir -p models/bls_decoupled_async/1
mkdir -p models/square_int32/1

# Copy the Python models
cp examples/bls_decoupled/async_model.py models/bls_decoupled_async/1/model.py
cp examples/bls_decoupled/async_config.pbtxt models/bls_decoupled_async/config.pbtxt
cp examples/decoupled/square_model.py models/square_int32/1/model.py
cp examples/decoupled/square_config.pbtxt models/square_int32/config.pbtxt
  1. 启动 tritonserver

tritonserver --model-repository `pwd`/models
  1. 向服务器发送推理请求

python3 examples/bls_decoupled/async_client.py

您应该看到类似于以下输出的输出

==========model result==========
Two times the square value of [4] is [32]

==========model result==========
Two times the square value of [2] is [8]

==========model result==========
Two times the square value of [0] is [0]

==========model result==========
Two times the square value of [1] is [2]

PASS: BLS Decoupled Async

async_model.py 模型文件包含大量注释,解释了每个函数调用的含义。

客户端输出的解释#

client.py 向 ‘bls_decoupled_sync’ 模型发送 4 个推理请求,输入分别为:[4]、[2]、[0] 和 [1]。根据同步 BLS 模型模型的行为,它将期望输出为输入平方值的两倍。