常见问题
Q&A
Q: 查看模型模型结构时,模型中input shape中有问号 (?),或 batchsize 等字样,怎么填写 input shape
A: 当 input shape 中出现 ?
时,自动填充的 input shape 为0,可能会导致模型转化失败,可以通过用1进行补充,手动填写 input shape 。若还出现报错,则需要对原始模型的 input shape 进行调整。例如:ONNX模型的 input shape 为 [?,3,224,224]
,则需要使用 python 通过 ONNX 包重新导入模型,修改模型 input shape 为 [1,3,224,224]
,重新保存为 ONNX 模型,再使用 AIMO 进行转化。
Q:模型优化中,长时间处于转化中,不知道是卡住还是僵死?
A:在 INT8 量化选项中,不同的量化方法、模型的大小均可能影响转化时长,若选择 ada_aimet
、cle_aimet
、bc_snpe
这三种方法,模型量化优化耗时均较长(可能转化很多天),尤其是选择 ada_aimet
、cle_aimet
方法后,需耐心等待,若想快速得到结果,可选择 cle_snpe
、enable_htp
、enable_hta
等量化方法。
报错日志说明
序号 | 说明 | |
---|---|---|
1 | ERROR : [AIMET] Optimization is failed. Please consider disable ada or cle. | 使用AIMET转化的时候不支持该方法(cle_aimet或ada_aimet),建议尝试更换一种方法 |
2 | ERROR : ValueError: After pruning disconnected nodes, this model is empty. Encountered Error: After pruning disconnected nodes, this model is empty. | 模型问题,模型为空,没有相关节点,可查看一下模型,检查一下是否上传成功 |
3 | ERROR : [DLC-QUAN] [ERROR] Invalid model for HBA quantization algorithm. Ensure there were batchnorms present prior to initial conversion, or reconvert. | 该问题产生原因是HTP量化方法在某些模型的节点中量化时与其他方法不兼容,可以在选择量化方法时,可将HTP与其他方法分开使用,如单独使用HTP,或HTP+CLE,CLE+BC等等 |
4 | ERROR : Node XXXX: 'Graph has no buffer XXX, referred to as input for XXX' | 模型节点找不到 |
5 | ERROR : Model conversion failed due to non-existent or rigid pid | AIMO服务未启动 |
6 | ERROR : ValueError: Unsupported dynamic weights on tensor permute_0_0 | 模型存在动态权重或动态输入,导致转化不支持,需要进行模型截断 |
7 | ERROR : Cutoff model is failed, please check nodes name | 输入输出节点或者inputshape等输入错误,可通过查看模型结构,重新填写对应的内容 |
8 | Conversion FAILED: ERROR_TF_NODE_NOT_FOUND_IN_GRAPH: Node not found in graph. Node name | 输入输出节点或者inputshape等输入错误,可通过查看模型结构,重新填写对应的内容 |
9 | status == QNN_BACKEND_NO_ERROR was not true | 该芯片型号不支持模型中一些算子的转化,建议更换芯片型号或不选择芯片型号,使用通用方案 |
10 | AttributeError: 'UDOFactory' object has no attribute 'xxx' | 出现该问题是由于模型中存在转化或优化中不支持的一些算子,可通过查看模型结构,看不支持的算子所在的位置,若该算子出现在模型开始或者结尾部分,可通过截断的方式(即在转化页面通过修改输入节点和输出节点),从而避开不支持的算子进行转化,对截断处未转化的部分,可手动进行相应的转化调整以适应最终的应用。同时可向后台反馈,及时补充相应的算子。 |
11 | [ERROR] 909 HTP FP16 not supported for this SoC | 量化算法不支持该类数据的格式,可通过取消CLE量化方法来解决 |
12 | 转RKNN模型时,出现报错onnx.onnx_cpp2py_export.checker.ValidationError: Your model ir_version is higher than the checker's** | onnx模型的版本较高,建议转onnx模型时,opset设置为12 |
13 | 转换ONNX至DLC过程中,如果模型输出节点填入正确但是出现 failed, please check nodes name:xxx input_name:xxx output_name:xxx | onnx模型的版本较高,建议转onnx模型时,opset设置为12 |
14 | 模型优化中,出现错误“SNPE HTP Offline Prepare: Could not assign any layer to the HTP”或“HTP FP16 not supported for this SoC” | 该错误可以通过不勾选CLE或CLE+BC的方法,采用SNPE默认的最基本的量化方法与HTP进行优化处理,即只选择HTP。 |