Thread 中讨论的其他器件:TDA4VH、 AM69A
工具/软件:
尊敬的 TI 支持:
我正在为部署特征提取器 TDA4VH 消息流 模型 一方 C7x DSP 加速 。 该模型使用以下器件在 CPU 上正常运行:
providers = ["CPUExecutionProvider"]
不过、当切换到:
providers = ["TIDLCompilationProvider", "CPUExecutionProvider"]
I encounter either TIDL compilation errors or the output becomes unusable—either all zeros or NaNs, depending on the setup.
工作配置
-
型号:ONNX (OPset 18)、在 CPU 上运行 FP32
-
输出:精确
失败配置(带 DSP)
我已经使用compile.py
(基于)测试了以下编译和量化设置onnxrt_ep.py
edgeai-tidl-tools
:
-
QDQ 量化模型 (通过来自 ONNX)
quantize_static
-
μ s 在编译时失败
-
TIDL 导入错误 :“缺少输入“,拓扑排序失败(见下文)
-
-
TIDL 编译期间进行量化
-
μ s 在 TIDL 编译时执行 Segfaults (session.run () 与推理模式:0)
-
带有警告:
Conv node failure: Name '/custom_backbone/block1_2/conv1/Conv'
Status Message: Input channels C is not equal to kernel channels * group.
C: 1 kernel channels: 3 group:
在发出此警告后、进程段立即发生故障
-
i 求解 Conv 参数 (kernel_size=11、stribution=4、padding=5)、从而允许编译模型。
但是、输出范围现在很大-3.5e+33 to +2.6e+33
()、这表明存在量化或数值溢出问题。
-
QDQ 导入失败详细信息
在尝试编译 QDQ-format 模型(选项 1)时、我收到以下 TIDL 导入错误:
[TIDL Import] [PARSER] ERROR: Layer 53, custom_backbone.block1_dd.conv_block.conv1.weight_DequantizeLinear_Output/duplicated:custom_backbone.block1_dd.conv_block.conv1.weight_DequantizeLinear_Output/duplicated is missing inputs in the network and cannot be topologically sorted. Missing inputs are:
-- [tidl_import_common.cpp, 4378]
Input 0: custom_backbone.block1_dd.conv_block.conv1.weight_DequantizeLinear_Output/duplicated, dataId=116
[TIDL Import] ERROR: - Failed in function: tidl_optimizeNet -- [tidl_import_core.cpp, 2602]
[TIDL Import] ERROR: Network Optimization failed - Failed in function: TIDL_runtimesOptimizeNet -- [tidl_runtimes_import_common.cpp, 1287]
TIDL 似乎无法解析重复或重复使用的DequantizeLinear
节点、该节点似乎是在 ONNX QDQ 导出期间插入的。
存在许多风险
-
平台:TDA4VH
-
Python: 3.10.12
-
ONNX opset:18
-
量化:
onnxruntime.quantization.quantize_static
-
TIDL 工具承诺:
1b75e86e79cfddb8f6e181014e6343e89765883d
-
汇编:根据
edgeai-tidl-tools/onnxrt_ep.py
- 校准:在两个选项(量化_静态和 TIDL 量化)中使用 100 个测试映像执行
关键问题
-
都是已知的 TIDL 量化或导入问题 使用 QDQ 模型(特别是使用重用权重或共享代数线性节点)?
-
导致上述导入错误的原因、以及如何构建 QDQ 图形来避免这种情况?
-
此内核+跨度组合是否需要在校准中进行特殊处理?
-
量化后如此巨大的输出范围是否有一个已知原因?
可用于调试
如果有用、我可以提供以下工件:
-
ONNX 模型
-
层执行摘要 ()
tempDir
-
校准数据+输出示例
如有任何帮助、将不胜感激。 请告诉我您还想查看哪些其他文件或日志。
提前感谢!
维多利亚