算子插件解析属性失败导致模型推理精度不达标
2023/05/06
122
问题信息
问题来源 | 产品大类 | 关键字 |
---|---|---|
官方 | 算子开发 | 自定义算子、模型转换、模型推理、精度不达标 |
问题现象描述
模型里包含用户自定义算子,使用ATC工具进行模型转换时,显示转换成功;但执行模型推理时,精度不达标。
原因分析
执行ATC工具进行模型转换虽然成功,但可能模型里的自定义算子属性并没有解析出来。
比如custom.proto中没有对应算子属性的定义,而开发者实现自定义算子插件解析参数函数时未对属性获取失败进行合适的处理。
解决措施
- 开发者检查自定义算子插件解析函数的实现逻辑,查看GetAttr属性获取失败时的处理逻辑是否符合预期。
若否,请修改算子插件解析函数的处理逻辑。例如,对于必选的算子属性,获取失败时应该返回失败。
- 查看执行ATC工具进行模型转换的日志。
重新执行ATC模型转换,并设置日志级别为WARNING,即在执行atc命令时添加“--log=warning”参数。
模型转换完成后查看运行环境侧日志,日志路径请参见《日志参考》。
查找如下日志信息:
[INFO] GE(15435,atc):2020-08-04-11:35:28.253.770 [framework/domi/parser/caffe/caffe_custom_parser_adapter.cc:58]15435 ParseParams:Caffe custom op begin to params: layer name = leakyrelu, layer type= LeakyReLUDemo [WARNING] GE(15435,atc):2020-08-04-11:35:28.253.785 [common/graph/./operator.cc:970]15435 GetAttr:get attr name negative_slope failed.
若有以上打印信息,则说明算子属性获取失败,请参见《算子开发指南》的“算子开发过程 > 算子适配 > 适配插件开发(Caffe框架)”章节检查插件解析代码。
本页内容