跳到主要内容

推理排查

推理出问题,先从哪里查?​

  1. 调 Check()(或诊断接口),核对 Supported / Version / 能力位 / SelectedProvider 是否符合预期;不齐就先补齐运行环境。
  2. 调用失败后立刻取错误详情,读结果里返回的错误码与消息。

能跑通,但没有检出 / 结果是空的?​

多半是输入或后处理没对齐,按序核对:

  1. 阈值与预处理:置信度阈值是否过高;输入宽高、通道数是否与模型要求一致(预处理跑偏,输出自然全是低分)。
  2. 标签注入:SetLabels 随时可调、open 后生效;个数全自动内部处理。
  3. 容器元信息读不出:确认 .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;或降低提交速率,让生产与消费匹配。

为什么推理变慢了?​

按这三条查,多半是落点或精度档位不是你以为的那个:

  1. 回读 SelectedProvider:看是否被降到 onnx-cpu。GPU→CPU 降级有声——结果里带 FallbackOccurred / FallbackFrom / FallbackTo / FallbackReason。想硬失败就关 AllowGpuToCpuFallback,或直接指名 Provider(指名后永不回落)。
  2. FP16 只有 onnx-trt-ep 兑现:指了别的 Provider,FP16 不会生效,自然不快。
  3. Windows 上 rknn 打不开:rknn 载荷只在 linux-arm64 板端运行,Windows 换包型或换平台。

参数传错会怎样?​

归内部错误:空句柄、缓冲没给宽高、长度不够这类调用方参数问题都在这里;错误详情会点名是哪个参数。