稳定性
长跑时会话和句柄怎么管?
一个 Session 只装一个模型。用完调 Close 释放句柄,不要长期挂着多个未关会话。批量任务按「开 → 推 → 关」整轮走完,用完即关。
推理出错会不会崩进程?
不会。失败读结果里的错误码与消息,不吞错、不崩进程。长跑里最常见的两个:
| 症状 | 典型原因 |
|---|---|
| 内部错误 | 参数传错(空句柄、空出参、缓冲没给宽高、长度不够),或 SDK 缺陷 |
| 队列忙 | 推理池队列满,或任务未完成 |
内部错误先自查入参;队列忙按失败处置或加并发(并发与性能)。
队列满了会不会把失败说成成功?
不会。队列满默认 Overflow.Fail:如实返回失败,不把满队列说成成功。Workers / QueueCapacity:并发与性能。
GPU 降到 CPU 了怎么发现?
降级结果带 FallbackOccurred / FallbackFrom / FallbackTo / FallbackReason;打开成功后回读 SelectedProvider 记实测落点。指名 Provider 则永不回落(fail-closed),失败按失败报。
Supported / Version / State / SelectedProvider 怎么看?
Diagnostics 只读、不联网,只读 C:\DARRA\Runtime。
| 指标 | 来源 | 怎么读 |
|---|---|---|
Supported | Diagnostics | 运行时整体是否可用(bool) |
Version | Diagnostics | 版本串;未装为空串,不编造 |
State | 打开后回读 | 枚举 ModelState:未打开 / 未加密 / 试用 / 绑定 / 已绑定 |
SelectedProvider | 打开后回读 | 实测 Provider 落点 |
能力位什么时候是 true?
Diagnostics 另有十个能力位:OnnxCpu · OnnxCuda · OnnxDirectml · OnnxOpenvino · OnnxTrt · TrtNative · PaddleCpu · PaddleGpu · Torchscript · Rknn。包装好且硬件在才为 true,缺装或缺硬件都是 false,按机器如实报。
没打开模型时回读会抛异常吗?
不会。IsEncrypted / Task / Labels / MetaJson 未打开给空值、不抛;State 为「未打开」。按空值处理即可,不要当错误吞掉或上报。
试用次数怎么扣?
试用模型按成功推理扣次,计次在本机。失败不扣。