如何在 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
。
使用 ONNX Runtime 对深度学习模型进行 运行 推理。假设我有 4 个不同的模型,每个模型都有自己的输入图像,我可以 运行 它们在 4 个线程中并行吗?是否会有 1 个 "environment" 然后 4 个会话(使用相同的环境)?
是的 - 一个环境和 4 个单独的会话就是您的方式。
'read only state' 的权重和偏差特定于模型。
一个会话与一个模型有 1:1 关系,这些事情不会跨会话共享,因为每个模型只需要一个会话,因为您可以同时调用 运行输入尺寸(假设模型支持动态 batch/input 尺寸)。
关于线程,默认是每会话线程池,但也可以跨会话共享全局线程池。
使用的 API 不同:
- 对于 C API 使用
CreateEnvWithGlobalThreadPools
. - 对于 C++ API 在构造
Ort::Env
时提供OrtThreadingOptions
。