并发与性能
Workers、Weight、Parallel 分别管什么?先设哪个?
| 配置 | 管什么 | 默认 |
|---|---|---|
Workers | 同一模型同卡的多路推理池 | 1(单会话够用) |
Weight | 多模型分卡时的相对份额 | 0 视同 100 |
Parallel | 单个会话内的并发份数 | 1(单路) |
什么时候才要把 Workers 设成大于 1?
同一模型、同一张卡上要多路推理时,在 Open 之前 设成 2..32,外部调用仍是 InferFile / InferImage;单会话串行默认 Workers = 1 就够。
多实例和池,哪个快?
空闲机实测(197,det.onnx,3 轮中位):
- 单任务基线:1×(约 0.2s)
- 池
Workers=2双投:两任务同时完成,各约 1–1.5 倍单任务 - 多实例 2–4 个:总吞吐约等于串行(0.88–0.94×) 并发收益随机器负载变化。
队列满了会怎样?
队列满默认 Fail:返回失败结果,按失败处理即可。
Weight 是什么?0 会不会不给份额?
Weight 是相对份额,不是优先级插队。多模型分卡时按各自 Weight 分并发槽,0 视同 100。
Parallel 和 Workers 有什么区别?
Parallel 是单个会话内的并发份数(默认 1,设 2..32 才在该会话内并发);Workers 是同一模型同卡的推理池路数。
多模型怎么开?一个会话能装几个?
一个 Session 只装一个模型。要跑第二个模型就再开一个 AiClient,各跑各的,用完各自 Close。
级联(上一个出结果再喂下一个)顺序调用即可。
多张卡怎么分?指定 Provider 会怎样?
用 GpuId 点名卡,配合 Weight 在该卡上分并发槽。指名 Provider 时不回落(fail-closed):指定的后端起不来就如实失败。
IntraThreads / InterThreads 是什么?
这两个是推理线程数,要在打开之前配置。与 Workers 的推理池不是一回事:池管几路同时进,这两个管线程内算子并行。