model_analyzer是triton-inference-server的一个用于自动化评估模型各种性能的CLI小工具。官网地址:https://github.com/triton-inference-server/model_analyzer
采用官网指定的方式构建了镜像,同组小朋友测试性能遇到问题,帮忙解决之后记录:
启动脚本如下:
model-analyzer profile --model-repository ./hjh_pose_fall_detect
--profile-models topdown_pose
--run-config-search-max-concurrency 4
--run-config-search-min-concurrency 2
--run-config-search-max-instance-count 3
--run-config-search-min-instance-count 1
--run-config-search-max-model-batch-size 4
--run-config-search-min-model-batch-size 1
-s ./model_analyzer/topdown_pose
--output-model-repository-path ./model_analyzer/topdown_pose -
-override-output-model-repository
模型是onnx模型
运行CLI过程中报错如下:
[Model Analyzer] Initiliazing GPUDevice handles
[Model Analyzer] Using GPU 0 Tesla T4 with UUID GPU-11b083f9-ae75-2b91-79bb-ae66ce621757
[Model Analyzer] WARNING: Overriding the output model repo path "./model_analyzer/topdown_pose"
[Model Analyzer] Starting a local Triton Server
[Model Analyzer] No checkpoint file found, starting a fresh run.
[Model Analyzer] Profiling server only metrics...
[Model Analyzer]
[Model Analyzer] Creating model config: topdown_pose_config_default
[Model Analyzer]
[Model Analyzer] Profiling topdown_pose_config_default: client batch size=1, concurrency=2
[Model Analyzer] Profiling topdown_pose_config_default: client batch size=1, concurrency=4
[Model Analyzer]
[Model Analyzer] Creating model config: topdown_pose_config_0
[Model Analyzer] Enabling dynamic_batching
[Model Analyzer] Setting instance_group to [{'count': 1, 'kind': 'KIND_GPU'}]
[Model Analyzer] Setting max_batch_size to 1
[Model Analyzer]
[Model Analyzer] Model topdown_pose_config_0 load failed: [StatusCode.INTERNAL] failed to load 'topdown_pose_config_0', no version is available
重点是最后一句话的报错,显示加载模型失败。
排查过程:
参考model_analyzer的issue:https://github.com/triton-inference-server/model_analyzer/issues/209
- 检查该模型位置的权限问题,是否是因为没有权限导致的? 检查发现权限没有问题。
- 是否是因为环境问题,镜像环境和cuda是否匹配等等,检查发现不是环境问题,用其他的onnx模型环境运行没有问题
- 检查是否是模型onnx转换存在问题,检查证明onnx模型没有问题,因为直接采用tritonserver inference engine推理指令 tritonserver --model_repository=XXX 运行没有问题
- 检查配置文件config.pbtxt
name: "topdown_pose"
platform: "onnxruntime_onnx"
max_batch_size:32
input [
{
name: "input.1"
data_type: TYPE_FP32
dims: [3,256, 192]
}
]
output [
{
name: "output"
data_type: TYPE_FP32
dims: [17,64,48]
}
]
instance_group [
{
kind: KIND_GPU,
count: 1
gpus: [0]
}
]
dynamic_batching {
preferred_batch_size: [ 2,4, 6,8 ]
}
发现同时设置了max-batch-num和dynamic_batching,怀疑这里存在问题。删除配置文件最后的dynamic_batching,再次运行指令model-analyzer 指令,没有问题。
需要注意,测试model_analyzer需要保证模型的HWC轴是固定的,不支持动态HWC轴。