推理排查
推理出问题,先从哪里查?
- 调
Check()(或诊断接口),核对 Supported / Version / 能力位 / SelectedProvider 是否符合预期;不齐就先补齐运行环境。 - 调用失败后立刻取错误详情,读结果里返回的错误码与消息。
能跑通,但没有检出 / 结果是空的?
多半是输入或后处理没对齐,按序核对:
- 阈值与预处理:置信度阈值是否过高;输入宽高、通道数是否与模型要求一致(预处理跑偏,输出自然全是低分)。
- 标签注入:
SetLabels随时可调、open后生效;个数全自动内部处理。 - 容器元信息读不出:确认
.darmodel文件完整未截断;加密包用随包密码打开。
模型一打开就失败?
打开阶段失败一般在环境或载荷,对照这几条:
| 症状 | 原因 | 怎么办 |
|---|---|---|
| 打开说缺 Provider | 运行时 Provider 包没装 | Check() 看 providers 表缺哪个,按 hint 补装后重开 |
| 打开说版本不配套 | 运行时包版本与 SDK 不配套 | 重装与内核匹配的版本,别混两个版本同居 |
| 打开说缺硬件 | 没有所需硬件 | 按错误消息点名补件,或先换 CPU Provider 跑通 |
| 打开说驱动过旧 | 驱动过低 | 到厂商官网升级驱动(SDK 不代装驱动) |
.pt 直开被拒 | .pt 是 pickle 载荷 | SDK 只吃 TorchScript;先把 YOLO 转 .onnx 再给 SDK |
超时、任务积压怎么查?
先分清症状:推理池队列满或任务未完成会如实失败,不是网络断了。
- 原因:提交速率超过消费能力;队列满时默认
Overflow.Fail,会如实失败,不静默丢任务。 - 怎么办:提高
Workers(workers,范围 2..32)或调大QueueCapacity;或降低提交速率,让生产与消费匹配。
为什么推理变慢了?
按这三条查,多半是落点或精度档位不是你以为的那个:
- 回读
SelectedProvider:看是否被降到onnx-cpu。GPU→CPU 降级有声——结果里带FallbackOccurred/FallbackFrom/FallbackTo/FallbackReason。想硬失败就关AllowGpuToCpuFallback,或直接指名 Provider(指名后永不回落)。 - FP16 只有
onnx-trt-ep兑现:指了别的 Provider,FP16 不会生效,自然不快。 - Windows 上 rknn 打不开:rknn 载荷只在 linux-arm64 板端运行,Windows 换包型或换平台。
参数传错会怎样?
归内部错误:空句柄、缓冲没给宽高、长度不够这类调用方参数问题都在这里;错误详情会点名是哪个参数。