在onnxruntime中设置SessionOptions()的推理模式有哪些选项
在onnxruntime中,可以使用SessionOptions()来设置推理模式,主要有以下几个选项:
1. 设置推理类型
可以使用SessionOptions().set_execution_mode()来设置推理类型。有三种可选的推理类型:
- ORT_SEQUENTIAL:默认类型,表示在主线程中按顺序执行每个操作。
- ORT_PARALLEL:表示在多个线程中同时执行操作。这可以通过设置环境变量OMP_NUM_THREADS来指定并行线程数。
- ORT_PARALLEL_LOOP:表示在多个线程中同时执行操作,并使用循环自动分配工作负载。
以下是设置为ORT_PARALLEL类型的示例:
#include <onnxruntime/core/providers/cpu/cpu_execution_provider.h> ort::SessionOptions session_options; session_options.SetExecutionMode(ort::ExecutionMode::ORT_PARALLEL);
2. 设置优化级别
可以使用SessionOptions().set_optimization_level()来设置模型优化级别。有三种可选的优化级别:
- ORT_DISABLE_ALL:禁用所有优化。
- ORT_ENABLE_BASIC:启用基本优化,如常数折叠和不需要运行时支持的基本优化。
- ORT_ENABLE_EXTENDED:启用扩展优化,如图剪枝、乘法融合以及内存优化等。
以下是设置为ORT_ENABLE_EXTENDED级别的示例:
ort::SessionOptions session_options; session_options.SetOptimizationLevel(ort::TransformerLevel::ORT_ENABLE_EXTENDED);
3. 设置代理提供者
可以使用SessionOptions().add_delegate_provider()来添加代理提供者。代理提供者是扩展onnxruntime功能的一种方式,可以通过添加第三方库来提供新的算子和优化。常见的代理提供者有OpenVINO、TensorRT等。
以下是添加OpenVINO代理提供者的示例:
#include <onnxruntime/core/providers/openvino/openvino_provider_factory.h> ort::SessionOptions session_options; session_options.AddDelegateProvider(onnxruntime::GetOpenVINOExecutionProviderFactory().CreateProvider());
4. 设置日志输出级别
可以使用SessionOptions().set_log_verbosity_level()来设置日志输出级别。有五种可选的输出级别,从0到4依次增加详细程度。
以下是设置为最低级别(0)的示例:
ort::SessionOptions session_options; session_options.SetLogVerbosityLevel(0);
5. 设置自定义的执行提供者
还可以使用SessionOptions().add_execution_provider()来添加自定义的执行提供者。执行提供者可以是一个属于onnxruntime的内置算子集,也可以是自定义的前端工具。
以下是添加CPU执行提供者的示例:
#include <onnxruntime/core/providers/cpu/cpu_execution_provider.h> ort::SessionOptions session_options; session_options.AddExecutionProvider(std::make_unique<onnxruntime::CPUExecutionProvider>(onnxruntime::CPUExecutionProviderInfo()));
上述是onnxruntime中设置SessionOptions()的推理模式的一些选项和使用示例,根据需要选择相应的设置,以满足性能要求和定制需求。
