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

Tul*_*ead 7 onnxruntime

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

小智 6

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

权重和偏差的“只读状态”特定于模型。

会话与模型具有 1:1 的关系,并且这些事情不会在会话之间共享,因为每个模型只需要一个会话,因为您可以使用不同的输入大小同时调用 Run(假设模型支持动态批处理/输入)尺寸)。

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

根据所使用的 API,执行此操作的方式有所不同:

  • 对于 C API 使用CreateEnvWithGlobalThreadPools。
  • 对于 C++ API,OrtThreadingOptions在构造Ort::Env.