模型存储库中的每个模型都必须包含一个模型配置,该配置提供了关于模型的必要和可选信息。这些配置信息一般写在 config.pbtxt 文件中,ModelConfig protobuf格式。
详细的模型通用配置请看官网文档: model_configuration.Triton的最小模型配置必须包括: platform 或 backend 属性、max_batch_size 属性和模型的输入输出.
例如一个Paddle模型,有两个输入input0 和 input1,一个输出output0,输入输出都是float32类型的tensor,最大batch为8.则最小的配置如下:
backend: "fastdeploy"
max_batch_size: 8
input [
{
name: "input0"
data_type: TYPE_FP32
dims: [ 16 ]
},
{
name: "input1"
data_type: TYPE_FP32
dims: [ 16 ]
}
]
output [
{
name: "output0"
data_type: TYPE_FP32
dims: [ 16 ]
}
]
通过instance_group属性可以配置服务使用哪种硬件资源,分别部署多少个模型推理实例。
CPU部署例子:
instance_group [
{
# 创建两个CPU实例
count: 2
# 使用CPU部署
kind: KIND_CPU
}
]
在GPU 0上部署2个实例,在GPU1和GPU上分别部署1个实例
instance_group [
{
# 创建两个GPU实例
count: 2
# 使用GPU推理
kind: KIND_GPU
# 部署在GPU卡0上
gpus: [ 0 ]
},
{
count: 1
kind: KIND_GPU
# 在GPU卡1、2都部署
gpus: [ 1, 2 ]
}
]
模型配置中 name 属性是可选的。如果模型没有在配置中指定,则使用模型的目录名;如果指定了该属性,它必须要跟模型的目录名一致。
使用 fastdeploy backend,没有platform属性可以配置,必须配置backend属性为fastdeploy。
backend: "fastdeploy"
FastDeploy后端目前支持cpu和gpu推理,cpu上支持paddle、onnxruntime和openvino三个推理引擎,gpu上支持paddle、onnxruntime和tensorrt三个引擎。
除去配置 Instance Groups,决定模型运行在CPU还是GPU上。Paddle引擎中,还可以进行如下配置:
optimization {
execution_accelerators {
# CPU推理配置, 配合KIND_CPU使用
cpu_execution_accelerator : [
{
name : "paddle"
# 设置推理并行计算线程数为4
parameters { key: "cpu_threads" value: "4" }
# 开启mkldnn加速,设置为0关闭mkldnn
parameters { key: "use_mkldnn" value: "1" }
}
],
# GPU推理配置, 配合KIND_GPU使用
gpu_execution_accelerator : [
{
name : "paddle"
# 设置推理并行计算线程数为4
parameters { key: "cpu_threads" value: "4" }
# 开启mkldnn加速,设置为0关闭mkldnn
parameters { key: "use_mkldnn" value: "1" }
}
]
}
}
除去配置 Instance Groups,决定模型运行在CPU还是GPU上。ONNXRuntime引擎中,还可以进行如下配置:
optimization {
execution_accelerators {
cpu_execution_accelerator : [
{
name : "onnxruntime"
# 设置推理并行计算线程数为4
parameters { key: "cpu_threads" value: "4" }
}
],
gpu_execution_accelerator : [
{
name : "onnxruntime"
}
]
}
}
OpenVINO引擎只支持CPU推理,配置如下:
optimization {
execution_accelerators {
cpu_execution_accelerator : [
{
name : "openvino"
# 设置推理并行计算线程数为4(所有实例总共线程数)
parameters { key: "cpu_threads" value: "4" }
# 设置OpenVINO的num_streams(一般设置为跟实例数一致)
parameters { key: "num_streams" value: "1" }
}
]
}
}
TensorRT引擎只支持GPU推理,配置如下:
optimization {
execution_accelerators {
gpu_execution_accelerator : [
{
name : "tensorrt"
# 使用TensorRT的FP16推理,其他可选项为: trt_fp32、trt_int8
parameters { key: "precision" value: "trt_fp16" }
}
]
}
}