6.14. PopRT Frontend

PopRT Frontend 用于支持加载不同框架生成的模型文件. 目前支持 ONNX 和 TensorFlow 模型的载入. 用户可以通过 CLI 和 Python API 的方式指定前端用于加载模型.

6.14.1. ONNX Frontend

ONNX Frontend 是默认的前端, 用户使用 onnx 作为前端时不需要指定额外参数.

6.14.2. TensorFlow Frontend

TensorFlow Frontend 使用 tf2onnx 提供的 API 扩展 PopRT 对 TensorFlow 模型的支持. 目前支持 TensorFLow SavedModel 以及如下参数, 详细说明参考 使用 PopRT.

Note

saved_model 参数以外, 其余参数均与 tf2onnx 提供的参数含义一致. saved_model 用于使能载入模型是否为 TensorFlow SavedModel, 而模型路径通过 input_model 指定.

  • saved_model

  • signature_def

  • tag

  • outputs

  • opset

  • inputs_as_nchw

  • outputs_as_nchw

通过 PopRT CLI 加载 TensorFlow 模型

CLI 使用 tf2onnx 子命令处理 TensorFlow 转换 ONNX 相关的参数, 用户需要在 tf2onnx 之后紧接需要传入的命令行参数.

poprt \
    --input_model resnet_v2_50 \
    --framework tensorflow \
    --input_shape inputs=1,224,224,3 \
    tf2onnx \
    --saved_model \
    --outputs Identity:0 \
    --tag serve \
    --signature_def serving_default \
    --inputs_as_nchw inputs:0 \
    --outputs_as_nchw Identity:0

通过 poprt.frontend API 加载 TensorFlow 模型

frontend = poprt.frontend.get_frontend(
    saved_model_path,
    framework='tensorflow',
    saved_model=True,
    signature_def=signature,
    tag=tag,
    opset=opset,
    inputs_as_nchw = inputs_as_nchw,
    outputs_as_nchw = outputs_as_nchw,
    input_shape=input_shape,
)
model = frontend.load_model()