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 中源 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 上受支持,同时在集成 GPU (iGPU)、独立 GPU (dGPU) 上支持内核缓存。
此功能允许用户直接将 blob 文件保存并加载到硬件设备目标上,以提高推理延迟并执行推理。
集成 GPU (iGPU) 和独立 GPU (dGPU) 上的内核缓存
此功能还允许用户将内核缓存保存为具有动态输入形状的模型的 cl_cache 文件。这些 cl_cache 文件可以直接加载到集成 GPU (iGPU)/独立 GPU (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 的模型特别有用。
将 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™。自动设备会根据设备功能和 ONNX 模型的特性(例如精度)从 CPU、集成 GPU、独立 Intel GPU(如果可用)和 NPU(如果可用)中识别并选择设备。然后自动设备将推理请求分配给所选设备。
从应用程序的角度来看,这只是另一个在整个系统中处理所有加速器的设备。
有关 OpenVINO™ 自动设备插件的更多信息,请参阅 Intel OpenVINO™ 自动设备插件。
OpenVINO™ 执行提供程序的异构执行
异构执行允许在一个网络上在多个设备上进行推理计算。以异构模式执行网络的目的是:
- 充分利用加速器的能力,在加速器上计算网络最繁重的部分,并在 CPU 等回退设备上执行不受支持的层,以便在一次推理过程中更有效地利用所有可用硬件。
有关 OpenVINO™ 异构插件的更多信息,请参阅 Intel OpenVINO™ 异构插件。
OpenVINO™ 执行提供程序的多设备执行
多设备插件自动将推理请求分配给可用的计算设备,以并行执行请求。潜在收益如下:
- 多个设备可以提供更高的吞吐量(与单设备执行相比)
- 更一致的性能,因为设备现在可以分担推理负担(因此如果一个设备变得过于繁忙,另一个设备可以承担更多负载)
有关 OpenVINO™ 多设备插件的更多信息,请参阅 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 优化传递
优化 NPU 设备的 ORT 量化模型,仅保留支持的操作的 QDQ,并优化性能和精度。通常,此功能在禁用 ORT 优化时会提供更好的性能/精度。有关使用这些运行时选项的更多信息,请参阅配置选项。
在运行时加载自定义 JSON OpenVINO™ 配置
load_config 功能旨在通过 JSON 输入模式加载 OpenVINO EP 参数,该模式必须遵循以下格式:
{
"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 上下文节点仍能被创建。
这些更改允许使用会话上下文选项: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);
ONNX Runtime 图级别优化
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)、任何有效的异构组合、任何有效的多设备或自动设备组合 | 字符串 | 在运行时使用这些值覆盖加速器硬件类型。如果未明确设置此选项,则使用构建时指定的默认硬件。 |
| 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 上下文 | void* | 此选项仅在 OpenVINO EP 使用 OpenCL 标志构建时可用。它接受远程上下文,即 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 参数。 |
| disable_dynamic_shapes | 字符串 | True/False(真/假) | 布尔值 | 此选项允许在运行时将动态形状模型重写为静态形状并执行。 |
| model_priority | 字符串 | LOW, MEDIUM, HIGH, DEFAULT(低、中、高、默认) | 字符串 | 此选项配置哪些模型应分配给最佳资源。 |
有效的异构、多设备或自动设备组合: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 开放模型库的拓扑在 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 | 是 |
注意:我们已添加对使用神经网络压缩框架 (NNCF) 量化的 INT8 模型的支持。要了解有关 NNCF 的更多信息,请参阅此处。
OpenVINO™ 执行提供程序示例教程
为了展示您可以使用 ONNX Runtime 的 OpenVINO™ 执行提供程序做什么,我们创建了一些示例,展示了您如何只需额外一行代码即可获得所需的性能提升。
Python API
使用 Python 中的 tinyYOLOv2 进行对象检测