如何在 ONNX Runtime 中实现多线程?

How to multi-thread in ONNX Runtime?

使用 ONNX Runtime 对深度学习模型进行 运行 推理。假设我有 4 个不同的模型,每个模型都有自己的输入图像,我可以 运行 它们在 4 个线程中并行吗?是否会有 1 个 "environment" 然后 4 个会话(使用相同的环境)?

是的 - 一个环境和 4 个单独的会话就是您的方式。

'read only state' 的权重和偏差特定于模型。

一个会话与一个模型有 1:1 关系,这些事情不会跨会话共享,因为每个模型只需要一个会话,因为您可以同时调用 运行输入尺寸(假设模型支持动态 batch/input 尺寸)。

关于线程,默认是每会话线程池,但也可以跨会话共享全局线程池。

使用的 API 不同:

  • 对于 C API 使用 CreateEnvWithGlobalThreadPools.
  • 对于 C++ API 在构造 Ort::Env 时提供 OrtThreadingOptions