OpenVINO™ 执行提供程序
使用 Intel OpenVINO™ 执行提供程序在 Intel CPU、GPU、NPU 上加速 ONNX 模型。请参阅 此页面 了解支持的 Intel 硬件详情。
目录
安装
对于每个版本发布,Intel 会发布 ONNX Runtime OpenVINO™ 执行提供程序的预构建包和 Docker 镜像。
- ONNX Runtime OpenVINO™ 执行提供程序发布页面: 最新 v5.6 版本
- Python wheel 包 (Ubuntu/Windows): onnxruntime-openvino
- Docker 镜像: openvino/onnxruntime_ep_ubuntu20
要求
ONNX Runtime OpenVINO™ 执行提供程序兼容 OpenVINO™ 的最近三个版本。
ONNX Runtime | OpenVINO™ | 注意 |
---|---|---|
1.21.0 | 2025.0 | 详情 |
1.20.0 | 2024.4 | 详情 |
1.19.0 | 2024.3 | 详情 |
1.18.0 | 2024.1 | 详情 |
1.17.1 | 2023.3 | 详情 |
构建
有关构建说明,请参阅 构建页面。
用法
为 Python 设置 OpenVINO™ 环境
请从 PyPi.org 下载 onnxruntime-openvino python 包。
pip install onnxruntime-openvino
-
Windows
要在 Windows 上通过 ONNX Runtime 启用 OpenVINO™ 执行提供程序,必须使用 OpenVINO™ 完整安装包设置 OpenVINO™ 环境变量。如下所示,通过运行 setupvars 脚本初始化 OpenVINO™ 环境。这是必需的步骤。
C:\ <openvino_install_directory>\setupvars.bat
-
Linux
在 Linux 上通过 PyPi.org 安装的 ONNX Runtime OpenVINO™ 执行提供程序附带预构建的 OpenVINO™ 库并支持标志 CXX11_ABI=0。因此无需单独安装 OpenVINO™。
但如果需要启用 OpenVINO 的 CX11_ABI=1 标志,请从源代码构建 Onnx Runtime Python wheel 包。有关构建说明,请参阅 构建页面。从源代码构建的 Linux 版 OpenVINO™ 执行提供程序 wheel 包不包含预构建的 OpenVINO™ 库,因此我们必须使用 OpenVINO™ 完整安装包设置 OpenVINO™ 环境变量。
``` $ source <openvino_install_directory>/setupvars.sh ```
为 C++ 设置 OpenVINO™ 环境
要运行使用 OpenVINO™ 执行提供程序的 C++/C# ORT 示例,必须使用 OpenVINO™ 完整安装包设置 OpenVINO™ 环境变量。如下所示,通过运行 setupvars 脚本初始化 OpenVINO™ 环境。这是必需的步骤。
- 对于 Windows,运行
C:\ <openvino_install_directory>\setupvars.bat
- 对于 Linux,运行
$ source <openvino_install_directory>/setupvars.sh
注意: 如果你使用 Dockerfile 来使用 OpenVINO™ 执行提供程序,在 Dockerfile 中无法 source OpenVINO™。你必须显式设置 LD_LIBRARY_PATH 指向 OpenVINO™ 库的位置。请参阅我们的 Dockerfile。
为 C# 设置 OpenVINO™ 环境
要将 OpenVINO 执行提供程序用于 C# API,请创建自定义 Nuget 包。按照 此处的说明 安装 Nuget 创建的先决条件。安装先决条件后,按照说明 构建 OpenVINO 执行提供程序 并添加额外的标志 --build_nuget
以创建 Nuget 包。将创建两个 Nuget 包:Microsoft.ML.OnnxRuntime.Managed 和 Microsoft.ML.OnnxRuntime.Openvino。
功能
GPU 设备的 OpenCL 队列节流
为 GPU 设备启用 OpenCL 队列节流。在将 OpenVINO EP 用于 GPU 时降低 CPU 利用率。
模型缓存
OpenVINO™ 支持 模型缓存。
模型缓存功能在 CPU、NPU、GPU 以及 iGPU、dGPU 上的内核缓存均受支持。
此功能使用户能够直接将 blob 文件保存并加载到目标硬件设备上,从而以改进的推理延迟执行推理。
iGPU 和 dGPU 上的内核缓存
此功能还允许用户将具有动态输入形状的模型的内核缓存保存为 cl_cache 文件。这些 cl_cache 文件可以直接加载到 iGPU/dGPU 硬件设备目标上并执行推理。
通过使用 C++/Python API 的运行时选项启用模型缓存。
通过设置运行时配置选项 'cache_dir' 并指定转储和加载 blob (CPU, NPU, iGPU, dGPU) 或 cl_cache (iGPU, dGPU) 的路径,可以使用 C++/Python API 启用此流程。
有关使用这些运行时选项的更多信息,请参阅 配置选项。
支持 INT8 量化模型
INT8 模型在 CPU、GPU 和 NPU 上受支持。
支持保存在外部文件中的权重
OpenVINO™ 执行提供程序现在支持将权重存储在外部文件中的 ONNX 模型。由于 protobuf 的限制,这对于大于 2GB 的模型尤其有用。
请参阅 OpenVINO™ ONNX 支持文档。
将 ONNX 模型转换为外部数据并保存:使用 ONNX API。文档。
示例
import onnx
onnx_model = onnx.load("model.onnx") # Your model in memory as ModelProto
onnx.save_model(onnx_model, 'saved_model.onnx', save_as_external_data=True, all_tensors_to_one_file=True, location='data/weights_data', size_threshold=1024, convert_attribute=False)
注意
-
在上述脚本中,model.onnx 被加载,然后保存到名为 ‘saved_model.onnx’ 的文件中,该文件不包含权重,但这个新的 onnx 模型现在将包含权重文件所在的相对路径。权重文件 ‘weights_data’ 现在将包含模型的权重,原始模型中的权重保存在 /data/weights_data 中。
-
现在,您可以使用此 ‘saved_model.onnx’ 文件通过您的示例进行推理。但请记住,权重文件的位置不能更改。权重必须存在于 /data/weights_data。
-
使用 pip 安装最新的 ONNX Python 包,以成功运行这些 ONNX Python API。
支持 IO 缓冲区优化
要启用 IO 缓冲区优化,我们必须在构建前设置 OPENCL_LIBS, OPENCL_INCS 环境变量。对于 IO 缓冲区优化,模型必须在 OpenVINO™ 上完全受支持,并且我们必须在远程上下文中提供 cl_context void 指针作为 C++ 配置选项。我们可以使用 GPU 内存分配器提供 cl::Buffer 地址作为输入和输出。
示例
//Set up a remote context
cl::Context _context;
.....
// Set the context through openvino options
std::unordered_map<std::string, std::string> ov_options;
ov_options[context] = std::to_string((unsigned long long)(void *) _context.get());
.....
//Define the Memory area
Ort::MemoryInfo info_gpu("OpenVINO_GPU", OrtAllocatorType::OrtDeviceAllocator, 0, OrtMemTypeDefault);
//Create a shared buffer , fill in with data
cl::Buffer shared_buffer(_context, CL_MEM_READ_WRITE, imgSize, NULL, &err);
....
//Cast it to void*, and wrap it as device pointer for Ort::Value
void *shared_buffer_void = static_cast<void *>(&shared_buffer);
Ort::Value inputTensors = Ort::Value::CreateTensor(
info_gpu, shared_buffer_void, imgSize, inputDims.data(),
inputDims.size(), ONNX_TENSOR_ELEMENT_DATA_TYPE_FLOAT);
OpenVINO™ 执行提供程序的多线程
ONNX Runtime 的 OpenVINO™ 执行提供程序实现了线程安全的深度学习推理
OpenVINO™ 执行提供程序的多流
ONNX Runtime 的 OpenVINO™ 执行提供程序允许执行多个流以满足 API 2.0 的不同性能要求
OpenVINO™ 执行提供程序的自动设备执行
使用 AUTO:<设备 1>,<设备 2>..
作为设备名称,将实际加速器的选择委托给 OpenVINO™。Auto-device 根据设备能力和 ONNX 模型的特性(例如精度),在内部识别并选择 CPU、集成 GPU、独立 Intel GPU(可用时)和 NPU(可用时)等设备。然后 Auto-device 将推理请求分配给选定的设备。
从应用程序的角度来看,这只是另一个处理整个系统中所有加速器的设备。
有关 OpenVINO™ Auto-Device 插件的更多信息,请参阅 Intel OpenVINO™ 自动设备插件。
OpenVINO™ 执行提供程序的异构执行
异构执行使得在多个设备上对单个网络进行推理计算成为可能。在异构模式下执行网络的目的是
- 利用加速器的能力,在加速器上计算网络中最重的部分,并在 CPU 等回退设备上执行不受支持的层,以便在一次推理过程中更有效地利用所有可用硬件。
有关 OpenVINO™ Heterogeneous 插件的更多信息,请参阅 Intel OpenVINO™ 异构插件。
OpenVINO™ 执行提供程序的多设备执行
Multi-Device 插件自动将推理请求分配给可用的计算设备以并行执行请求。潜在的收益如下:
- 提高多个设备可以提供的吞吐量(与单设备执行相比)
- 更一致的性能,因为设备现在可以分担推理负担(以便一个设备变得过于繁忙时,另一个设备可以承担更多负载)
有关 OpenVINO™ Multi-Device 插件的更多信息,请参阅 Intel OpenVINO™ 多设备插件。
导出 OpenVINO 编译的 Blob
将 OpenVINO 编译的 blob 导出为 ONNX 模型。将此 ONNX 模型用于后续推理可避免模型重新编译,并可能对会话创建时间产生积极影响。此功能目前仅对完全受支持的模型启用。它符合 ORT 会话配置键。
Ort::SessionOptions session_options;
// Enable EP context feature to dump the partitioned graph which includes the EP context into Onnx file.
// "0": disable. (default)
// "1": enable.
session_options.AddConfigEntry(kOrtSessionOptionEpContextEnable, "1");
// Flag to specify whether to dump the EP context into single Onnx model or pass bin path.
// "0": dump the EP context into separate file, keep the file name in the Onnx model.
// "1": dump the EP context into the Onnx model. (default).
session_options.AddConfigEntry(kOrtSessionOptionEpContextEmbedMode, "1");
// Specify the file path for the Onnx model which has EP context.
// Defaults to <actual_model_path>/original_file_name_ctx.onnx if not specified
session_options.AddConfigEntry(kOrtSessionOptionEpContextFilePath, ".\ov_compiled_epctx.onnx");
sess = onnxruntime.InferenceSession(<path_to_model_file>, session_options)
有关会话选项的更多信息,请参阅 会话选项。
启用 QDQ 优化 Passes
优化用于 NPU 设备的 ORT 量化模型,仅保留受支持算子的 QDQ,并优化性能和准确性。通常,禁用 ORT 优化后,此功能将提供更好的性能/准确性。有关使用这些运行时选项的更多信息,请参阅 配置选项。
运行时加载自定义 JSON OpenVINO™ 配置
开发 load_config
功能是为了方便使用 JSON 输入 schema 加载 OpenVINO EP 参数,该 schema 必须遵循以下格式 -
{
"DEVICE_KEY": {"PROPERTY": "PROPERTY_VALUE"}
}
其中 “DEVICE_KEY” 可以是 CPU、NPU 或 GPU,“PROPERTY” 必须是 OpenVINO™ 支持属性 中定义的有效实体,“PROPERTY_VALUE” 必须是作为字符串传入的有效对应支持属性值。
如果使用无效键设置属性(即,不是 OpenVINO™ 支持属性
一部分且无法识别的键),它将被忽略,并记录一条警告。然而,如果使用有效属性键但分配了无效值(例如,期望整数但提供了非整数),则 OpenVINO™ 框架将在执行期间导致异常。
有效属性有两种类型:可变 (读/写) 和不可变 (只读),这些在设置时也受此约束。如果正在设置不可变属性,我们将跳过设置并发出类似警告。
有关设置适当的 "PROPERTY"
,请参阅针对 CPU、GPU、NPU 和 AUTO 的 OpenVINO 配置选项。
示例
使用 onnxruntime_perf_test 应用程序使用此功能的用法如下 –
onnxruntime_perf_test.exe -e openvino -m times -r 1 -i "device_type|NPU load_config|test_config.json" model.onnx
OpenVINO 执行提供程序支持跨会话的 EP 权重共享
ONNX Runtime 中的 OpenVINO 执行提供程序 (OVEP) 支持 EP 权重共享,使得模型能够有效地在多个推理会话之间共享权重。此功能通过预填充和 KV 缓存增强大型语言模型 (LLM) 的执行,在运行多个推理时减少内存消耗并提高性能。
通过 EP 权重共享,预填充和 KV 缓存模型现在可以重用同一组权重,最大程度地减少冗余并优化推理。此外,这确保即使模型进行子图分区,仍会创建 EP Context 节点。
这些更改通过会话上下文选项 ep.share_ep_contexts 启用两个模型之间的权重共享。有关配置此运行时选项的更多详情,请参阅 会话选项。
OVEP 支持 CreateSessionFromArray API
ONNX Runtime 中的 OpenVINO 执行提供程序 (OVEP) 支持使用 CreateSessionFromArray API 从内存创建会话。这允许直接从内存缓冲区加载模型,而不是文件路径。CreateSessionFromArray 将模型加载到内存中,然后从内存中的字节数组创建会话。
注意:使用 CreateSessionFromArray API 通过 perf_test 运行推理时,请使用 -l 参数。
配置选项
OpenVINO™ 执行提供程序可以在运行时通过某些选项进行配置,这些选项控制 EP 的行为。这些选项可以设置为键值对,如下所示:-
Python API
配置选项的键值对可以使用 InferenceSession API 进行设置,如下所示:-
session = onnxruntime.InferenceSession(<path_to_model_file>, providers=['OpenVINOExecutionProvider'], provider_options=[{Key1 : Value1, Key2 : Value2, ...}])
请注意,从 (ORT 1.10) 开始的版本将要求在实例化 InferenceSession 时,如果你想使用除默认 CPU 提供程序以外的执行提供程序,则需要显式设置 providers 参数(这与提供程序根据构建标志默认设置/注册的当前行为不同)。
C/C++ API 2.0
会话配置选项传递给 SessionOptionsAppendExecutionProvider API,如下面 GPU 设备类型的示例所示
std::unordered_map<std::string, std::string> options;
options[device_type] = "GPU";
options[precision] = "FP32";
options[num_of_threads] = "8";
options[num_streams] = "8";
options[cache_dir] = "";
options[context] = "0x123456ff";
options[enable_qdq_optimizer] = "True";
options[load_config] = "config_path.json";
session_options.AppendExecutionProvider_OpenVINO_V2(options);
C/C++ 旧版 API
注意:此 API 不再正式支持。建议用户迁移到 V2 API。
会话配置选项传递给 SessionOptionsAppendExecutionProvider_OpenVINO() API,如下面 GPU 设备类型的示例所示
OrtOpenVINOProviderOptions options;
options.device_type = "GPU_FP32";
options.num_of_threads = 8;
options.cache_dir = "";
options.context = 0x123456ff;
options.enable_opencl_throttling = false;
SessionOptions.AppendExecutionProvider_OpenVINO(session_options, &options);
Onnxruntime 图级别优化
OpenVINO™ 后端对图执行依赖于硬件和独立于硬件的优化,以便在目标硬件上以最佳性能进行推理。在大多数情况下,已观察到直接传递 ONNX 输入图而不进行显式优化,将由 OpenVINO™ 在内核级别进行最佳优化。因此,建议关闭 ONNX Runtime 为 OpenVINO™ 执行提供程序执行的高级优化。这可以使用 SessionOptions() 完成,如下所示:-
-
Python API
options = onnxruntime.SessionOptions() options.graph_optimization_level = onnxruntime.GraphOptimizationLevel.ORT_DISABLE_ALL sess = onnxruntime.InferenceSession(<path_to_model_file>, options)
-
C/C++ API
SessionOptions::SetGraphOptimizationLevel(ORT_DISABLE_ALL);
选项摘要
下表列出了 API 2.0 的所有可用配置选项以及用于设置它们的键值对
键 | 键类型 | 允许的值 | 值类型 | 描述 |
---|---|---|---|---|
device_type | 字符串 | CPU, NPU, GPU, GPU.0, GPU.1 (取决于可用的 GPU), NPU, 任何有效的 Hetero 组合, 任何有效的 Multi 或 Auto 设备组合 | 字符串 | 在运行时用这些值覆盖加速器硬件类型。如果未显式设置此选项,则使用构建时指定的默认硬件。 |
precision | 字符串 | FP32, FP16, ACCURACY (取决于选择的 device_type) | 字符串 | 硬件支持的精度 {CPU:FP32, GPU:[FP32, FP16, ACCURACY], NPU:FP16}。为优化性能而设置的硬件默认精度 {CPU:FP32, GPU:FP16, NPU:FP16}。要以默认输入精度执行模型,请选择 ACCURACY 精度类型。 |
num_of_threads | 字符串 | 任意非零无符号正数 | size_t | 在运行时用此值覆盖加速器默认的线程数值。如果未显式设置此选项,推理将使用构建时默认值 8。 |
num_streams | 字符串 | 任意非零无符号正数 | size_t | 在运行时用此值覆盖加速器默认流。如果未显式设置此选项,推理将使用构建时默认值 1,用于延迟性能。 |
cache_dir | 字符串 | 目标硬件上的任意有效字符串路径 | 字符串 | 显式指定用于保存和加载 blob 的路径,启用模型缓存功能。 |
context | 字符串 | OpenCL Context | void* | 仅当使用启用 OpenCL 标志构建 OpenVINO EP 时,此选项才可用。它接受远程上下文,即 cl_context 地址作为 void 指针。 |
enable_opencl_throttling | 字符串 | True/False | 布尔型 | 此选项为 GPU 设备启用 OpenCL 队列节流(在使用 GPU 时降低 CPU 利用率)。 |
enable_qdq_optimizer | 字符串 | True/False | 布尔型 | 此选项启用 QDQ 优化以提高 NPU 上的模型性能和准确性。 |
load_config | 字符串 | 任意自定义 JSON 路径 | 字符串 | 此选项启用在运行时加载自定义 JSON OV 配置的功能,该功能设置 OV 参数。 |
有效的 Hetero 或 Multi 或 Auto 设备组合: HETERO:<设备 1>,<设备 2>...
device
可以是此列表中的任意设备 ['CPU','GPU', 'NPU']
对于有效的 HETERO、MULTI 或 AUTO 设备构建,应至少指定两个 DEVICE_TYPE。
示例: HETERO:GPU,CPU AUTO:GPU,CPU MULTI:GPU,CPU
已弃用的 device_type 选项: CPU_FP32, GPU_FP32, GPU_FP16, NPU_FP16 不再受支持。它们将在未来的版本中被弃用。请升级到最新的 device_type 和 precision 选项。
支持覆盖范围
使用 OpenVINO 支持的 ONNX 层
下表显示了使用 OpenVINO™ 执行提供程序支持和验证的 ONNX 层。下表还列出了每个层支持的 Intel 硬件。CPU 指的是 Intel® Atom, Core, 和 Xeon 处理器。GPU 指的是 Intel 集成显卡和 Intel 独立显卡。对于 NPU,如果某个算子不受支持,我们将回退到 CPU。
ONNX 层 | CPU | GPU |
---|---|---|
Abs | 是 | 是 |
Acos | 是 | 是 |
Acosh | 是 | 是 |
Add | 是 | 是 |
And | 是 | 是 |
ArgMax | 是 | 是 |
ArgMin | 是 | 是 |
Asin | 是 | 是 |
Asinh | 是 | 是 |
Atan | 是 | 是 |
Atanh | 是 | 是 |
AveragePool | 是 | 是 |
BatchNormalization | 是 | 是 |
BitShift | 是 | 否 |
Ceil | 是 | 是 |
Celu | 是 | 是 |
Cast | 是 | 是 |
Clip | 是 | 是 |
Concat | 是 | 是 |
Constant | 是 | 是 |
ConstantOfShape | 是 | 是 |
Conv | 是 | 是 |
ConvInteger | 是 | 是 |
ConvTranspose | 是 | 是 |
Cos | 是 | 是 |
Cosh | 是 | 是 |
CumSum | 是 | 是 |
DepthToSpace | 是 | 是 |
DequantizeLinear | 是 | 是 |
Div | 是 | 是 |
Dropout | 是 | 是 |
Einsum | 是 | 是 |
Elu | 是 | 是 |
Equal | 是 | 是 |
Erf | 是 | 是 |
Exp | 是 | 是 |
Expand | 是 | 是 |
EyeLike | 是 | 否 |
Flatten | 是 | 是 |
Floor | 是 | 是 |
Gather | 是 | 是 |
GatherElements | 否 | 否 |
GatherND | 是 | 是 |
Gemm | 是 | 是 |
GlobalAveragePool | 是 | 是 |
GlobalLpPool | 是 | 是 |
GlobalMaxPool | 是 | 是 |
Greater | 是 | 是 |
GreaterOrEqual | 是 | 是 |
GridSample | 是 | 否 |
HardMax | 是 | 是 |
HardSigmoid | 是 | 是 |
Identity | 是 | 是 |
If | 是 | 是 |
ImageScaler | 是 | 是 |
InstanceNormalization | 是 | 是 |
LeakyRelu | 是 | 是 |
Less | 是 | 是 |
LessOrEqual | 是 | 是 |
Log | 是 | 是 |
LogSoftMax | 是 | 是 |
Loop | 是 | 是 |
LRN | 是 | 是 |
LSTM | 是 | 是 |
MatMul | 是 | 是 |
MatMulInteger | 是 | 否 |
Max | 是 | 是 |
MaxPool | 是 | 是 |
Mean | 是 | 是 |
MeanVarianceNormalization | 是 | 是 |
Min | 是 | 是 |
Mod | 是 | 是 |
Mul | 是 | 是 |
Neg | 是 | 是 |
NonMaxSuppression | 是 | 是 |
NonZero | 是 | 否 |
Not | 是 | 是 |
OneHot | 是 | 是 |
Or | 是 | 是 |
Pad | 是 | 是 |
Pow | 是 | 是 |
PRelu | 是 | 是 |
QuantizeLinear | 是 | 是 |
QLinearMatMul | 是 | 否 |
Range | 是 | 是 |
Reciprocal | 是 | 是 |
ReduceL1 | 是 | 是 |
ReduceL2 | 是 | 是 |
ReduceLogSum | 是 | 是 |
ReduceLogSumExp | 是 | 是 |
ReduceMax | 是 | 是 |
ReduceMean | 是 | 是 |
ReduceMin | 是 | 是 |
ReduceProd | 是 | 是 |
ReduceSum | 是 | 是 |
ReduceSumSquare | 是 | 是 |
Relu | 是 | 是 |
Reshape | 是 | 是 |
Resize | 是 | 是 |
ReverseSequence | 是 | 是 |
RoiAlign | 是 | 是 |
Round | 是 | 是 |
Scatter | 是 | 是 |
ScatterElements | 是 | 是 |
ScatterND | 是 | 是 |
Selu | 是 | 是 |
Shape | 是 | 是 |
Shrink | 是 | 是 |
Sigmoid | 是 | 是 |
Sign | 是 | 是 |
Sin | 是 | 是 |
Sinh | 是 | 否 |
SinFloat | 否 | 否 |
Size | 是 | 是 |
Slice | 是 | 是 |
Softmax | 是 | 是 |
Softplus | 是 | 是 |
Softsign | 是 | 是 |
SpaceToDepth | 是 | 是 |
Split | 是 | 是 |
Sqrt | 是 | 是 |
Squeeze | 是 | 是 |
Sub | 是 | 是 |
Sum | 是 | 是 |
Softsign | 是 | 否 |
Tan | 是 | 是 |
Tanh | 是 | 是 |
ThresholdedRelu | 是 | 是 |
Tile | 是 | 是 |
TopK | 是 | 是 |
Transpose | 是 | 是 |
Unsqueeze | 是 | 是 |
Upsample | 是 | 是 |
Where | 是 | 是 |
Xor | 是 | 是 |
拓扑支持
ONNX open model zoo 中的以下拓扑结构已在 OpenVINO™ 执行提供程序上完全受支持,更多拓扑结构通过子图分区得到支持。对于 NPU,如果模型不受支持,我们将回退到 CPU。
图像分类网络
模型名称 | CPU | GPU |
---|---|---|
bvlc_alexnet | 是 | 是 |
bvlc_googlenet | 是 | 是 |
bvlc_reference_caffenet | 是 | 是 |
bvlc_reference_rcnn_ilsvrc13 | 是 | 是 |
emotion ferplus | 是 | 是 |
densenet121 | 是 | 是 |
inception_v1 | 是 | 是 |
inception_v2 | 是 | 是 |
mobilenetv2 | 是 | 是 |
resnet18v2 | 是 | 是 |
resnet34v2 | 是 | 是 |
resnet101v2 | 是 | 是 |
resnet152v2 | 是 | 是 |
resnet50 | 是 | 是 |
resnet50v2 | 是 | 是 |
shufflenet | 是 | 是 |
squeezenet1.1 | 是 | 是 |
vgg19 | 是 | 是 |
zfnet512 | 是 | 是 |
mxnet_arcface | 是 | 是 |
图像识别网络
模型名称 | CPU | GPU |
---|---|---|
mnist | 是 | 是 |
对象检测网络
模型名称 | CPU | GPU |
---|---|---|
tiny_yolov2 | 是 | 是 |
yolov3 | 是 | 是 |
tiny_yolov3 | 是 | 是 |
mask_rcnn | 是 | 否 |
faster_rcnn | 是 | 否 |
yolov4 | 是 | 是 |
yolov5 | 是 | 是 |
yolov7 | 是 | 是 |
tiny_yolov7 | 是 | 是 |
图像处理网络
模型名称 | CPU | GPU |
---|---|---|
mosaic | 是 | 是 |
candy | 是 | 是 |
cgan | 是 | 是 |
rain_princess | 是 | 是 |
pointilism | 是 | 是 |
udnie | 是 | 是 |
自然语言处理网络
模型名称 | CPU | GPU |
---|---|---|
bert-squad | 是 | 是 |
bert-base-cased | 是 | 是 |
bert-base-chinese | 是 | 是 |
bert-base-japanese-char | 是 | 是 |
bert-base-multilingual-cased | 是 | 是 |
bert-base-uncased | 是 | 是 |
distilbert-base-cased | 是 | 是 |
distilbert-base-multilingual-cased | 是 | 是 |
distilbert-base-uncased | 是 | 是 |
distilbert-base-uncased-finetuned-sst-2-english | 是 | 是 |
gpt2 | 是 | 是 |
roberta-base | 是 | 是 |
roberta-base-squad2 | 是 | 是 |
t5-base | 是 | 是 |
twitter-roberta-base-sentiment | 是 | 是 |
xlm-roberta-base | 是 | 是 |
NPU 支持的模型
模型名称 | NPU |
---|---|
yolov3 | 是 |
microsoft_resnet-50 | 是 |
realesrgan-x4 | 是 |
timm_inception_v4.tf_in1k | 是 |
squeezenet1.0-qdq | 是 |
vgg16 | 是 |
caffenet-qdq | 是 |
zfnet512 | 是 |
shufflenet-v2 | 是 |
zfnet512-qdq | 是 |
googlenet | 是 |
googlenet-qdq | 是 |
caffenet | 是 |
bvlcalexnet-qdq | 是 |
vgg16-qdq | 是 |
mnist | 是 |
ResNet101-DUC | 是 |
shufflenet-v2-qdq | 是 |
bvlcalexnet | 是 |
squeezenet1.0 | 是 |
注意:我们已添加对 INT8 模型的支持,这些模型是使用神经网络压缩框架 (NNCF) 量化的。要了解更多关于 NNCF 的信息,请参考此处。
OpenVINO™ 执行提供程序示例教程
为了展示如何使用 ONNX Runtime 的 OpenVINO™ 执行提供程序,我们创建了一些示例,展示了如何仅用一行额外的代码即可获得您所需的性能提升。
Python API
使用 tinyYOLOv2 在 Python 中进行对象检测