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 進行物件檢測