Intel - OpenVINO™
OpenVINO™ 実行プロバイダー
Section titled “OpenVINO™ 実行プロバイダー”Intel OpenVINO™実行プロバイダーを使用して、Intel CPU、GPU、NPUでONNXモデルを高速化します。サポートされているIntelハードウェアの詳細については、このページを参照してください。
インストール
Section titled “インストール”ビルド済みパッケージとDockerイメージは、Intelによって各リリースのONNX Runtime用OpenVINO™実行プロバイダーとして公開されています。
- ONNX Runtime用OpenVINO™実行プロバイダーのリリースページ:最新v5.6リリース
- Pythonホイール Ubuntu/Windows:onnxruntime-openvino
- Dockerイメージ:openvino/onnxruntime_ep_ubuntu20
ONNX Runtime OpenVINO™実行プロバイダーは、OpenVINO™の3つの最新リリースと互換性があります。
| 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 | 詳細 |
ビルド手順については、BUILDページを参照してください。
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
PyPi.orgからインストールされたLinux上のOnnx Runtimeを使用したOpenVINO™実行プロバイダーには、ビルド済みのOpenVINO™ライブラリが付属しており、フラグCXX11_ABI=0をサポートしています。そのため、OpenVINO™を別途インストールする必要はありません。
ただし、OpenVINOのCX11_ABI=1フラグを有効にする必要がある場合は、ソースからOnnx Runtime pythonホイールパッケージをビルドします。ビルド手順については、BUILDページを参照してください。 ソースからビルドされたLinux上のOpenVINO™実行プロバイダーホイールには、ビルド済みの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注意: OpenVINO™実行プロバイダーを使用するためにdockerfileを使用している場合、dockerfile内でOpenVINO™をソーシングすることはできません。LD_LIBRARY_PATHをOpenVINO™ライブラリの場所を指すように明示的に設定する必要があります。当社のdockerfileを参照してください。
C#用のOpenVINO™環境を設定する
openvino実行プロバイダー用のcsharp apiを使用するには、カスタムnugetパッケージを作成します。nuget作成の前提条件をインストールするには、こちらの手順に従ってください。前提条件がインストールされたら、openvino実行プロバイダーのビルドの手順に従い、追加のフラグ--build_nugetを追加してnugetパッケージを作成します。Microsoft.ML.OnnxRuntime.ManagedとMicrosoft.ML.OnnxRuntime.Openvinoの2つのnugetパッケージが作成されます。
GPUデバイス用のOpenCLキュースロットリング
Section titled “GPUデバイス用のOpenCLキュースロットリング”GPUデバイス用のOpenCLキュースロットリングを有効にします。OpenVINO EPでGPUを使用する場合のCPU使用率を削減します。
モデルキャッシング
Section titled “モデルキャッシング”OpenVINO™はモデルキャッシングをサポートしています。
モデルキャッシング機能は、CPU、NPU、GPUでサポートされており、iGPU、dGPUでのカーネルキャッシングもサポートされています。
この機能により、ユーザーはブロブファイルをハードウェアデバイスターゲットに直接保存およびロードし、推論レイテンシを向上させて推論を実行できます。
iGPUおよびdGPUでのカーネルキャッシング:
この機能により、ユーザーは動的入力形状を持つモデルのカーネルキャッシングをcl_cacheファイルとして保存することもできます。これらのcl_cacheファイルは、iGPU/dGPUハードウェアデバイスターゲットに直接ロードして推論を実行できます。
C++/python APIを使用してランタイムオプション経由でモデルキャッシングを有効にする
Section titled “C++/python APIを使用してランタイムオプション経由でモデルキャッシングを有効にする”このフローは、C++/python APIを使用しながら、ブロブ(CPU、NPU、iGPU、dGPU)またはcl_cache(iGPU、dGPU)をダンプおよびロードするパスを指定するランタイム設定オプション「cache_dir」を設定することで有効にできます。
これらのランタイムオプションの使用に関する詳細については、設定オプションを参照してください。
INT8量子化モデルのサポート
Section titled “INT8量子化モデルのサポート”Int8モデルは、CPU、GPU、NPUでサポートされています。
外部ファイルに保存された重みのサポート
Section titled “外部ファイルに保存された重みのサポート”OpenVINO™実行プロバイダーは、外部ファイルに重みを格納するONNXモデルをサポートするようになりました。これは、protobufの制限により2GBを超えるモデルに特に役立ちます。
OpenVINO™ ONNXサポートドキュメントを参照してください。
ONNXモデルを外部データに変換して保存する: ONNX APIを使用します。ドキュメント。
例:
import onnxonnx_model = onnx.load("model.onnx") # メモリ内のモデルを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に存在する必要があります。
-
これらのONNX Python APIを正常に実行するには、pipを使用して最新のONNX Pythonパッケージをインストールしてください。
IOバッファ最適化のサポート
Section titled “IOバッファ最適化のサポート”IOバッファ最適化を有効にするには、ビルド前にOPENCL_LIBS、OPENCL_INCS環境変数を設定する必要があります。IOバッファ最適化の場合、モデルはOpenVINO™で完全にサポートされている必要があり、リモートコンテキストcl_context voidポインターをC++設定オプションとして提供する必要があります。入力と出力にGPUメモリアロケータを使用して、入力としてcl::Bufferアドレスを提供できます。
例:
//リモートコンテキストを設定するcl::Context _context;.....//openvinoオプションを介してコンテキストを設定するstd::unordered_map<std::string, std::string> ov_options;ov_options[context] = std::to_string((unsigned long long)(void *) _context.get());.....//メモリ領域を定義するOrt::MemoryInfo info_gpu("OpenVINO_GPU", OrtAllocatorType::OrtDeviceAllocator, 0, OrtMemTypeDefault);//共有バッファを作成し、データで埋めるcl::Buffer shared_buffer(_context, CL_MEM_READ_WRITE, imgSize, NULL, &err);....//void*にキャストし、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™実行プロバイダーのマルチスレッド
Section titled “OpenVINO™実行プロバイダーのマルチスレッド”ONNX Runtime用のOpenVINO™実行プロバイダーは、スレッドセーフな深層学習推論を可能にします。
OpenVINO™実行プロバイダーのマルチストリーム
Section titled “OpenVINO™実行プロバイダーのマルチストリーム”ONNX Runtime用のOpenVINO™実行プロバイダーは、API 2.0の一部として、さまざまなパフォーマンス要件に対応する複数のストリーム実行を可能にします。
OpenVINO™実行プロバイダーの自動デバイス実行
Section titled “OpenVINO™実行プロバイダーの自動デバイス実行”デバイス名としてAUTO:<device 1>,<device 2>..を使用して、実際のアクセラレータの選択をOpenVINO™に委任します。自動デバイスは、CPU、統合GPU、ディスクリートIntel GPU(利用可能な場合)、NPU(利用可能な場合)から、デバイスの機能とONNXモデルの特性(精度など)に応じてデバイスを内部的に認識して選択します。次に、自動デバイスは推論要求を選択したデバイスに割り当てます。
アプリケーションの観点からは、これはシステム全体のすべてのアクセラレータを処理する別のデバイスにすぎません。
OpenVINO™の自動デバイスプラグインの詳細については、 Intel OpenVINO™自動デバイスプラグインを参照してください。
OpenVINO™実行プロバイダーの異種実行
Section titled “OpenVINO™実行プロバイダーの異種実行”異種実行により、1つのネットワークで複数のデバイスで推論を計算できます。異種モードでネットワークを実行する目的:
- アクセラレータの能力を活用し、ネットワークの最も重い部分をアクセラレータで計算し、CPUなどのフォールバックデバイスでサポートされていないレイヤーを実行して、1回の推論中に利用可能なすべてのハードウェアをより効率的に活用します。
OpenVINO™の異種プラグインの詳細については、 Intel OpenVINO™異種プラグインを参照してください。
OpenVINO™実行プロバイダーのマルチデバイス実行
Section titled “OpenVINO™実行プロバイダーのマルチデバイス実行”マルチデバイスプラグインは、推論要求を利用可能な計算デバイスに自動的に割り当て、要求を並行して実行します。潜在的な利点は次のとおりです。
- 複数のデバイスが提供できるスループットの向上(単一デバイス実行と比較して)
- デバイスが推論の負担を共有できるため、より一貫したパフォーマンス(したがって、1つのデバイスがビジー状態になりすぎた場合、別のデバイスがより多くの負荷を引き受けることができます)
OpenVINO™のマルチデバイスプラグインの詳細については、 Intel OpenVINO™マルチデバイスプラグインを参照してください。
OpenVINOコンパイル済みブロブのエクスポート
Section titled “OpenVINOコンパイル済みブロブのエクスポート”OpenVINOコンパイル済みブロブをONNXモデルとしてエクスポートします。後続の推論にこのONNXモデルを使用すると、モデルの再コンパイルが回避され、セッション作成時間にプラスの影響を与える可能性があります。この機能は現在、完全にサポートされているモデルでのみ有効です。ORTセッション設定キーに準拠しています。
Ort::SessionOptions session_options;
// EPコンテキスト機能を有効にして、EPコンテキストを含むパーティション分割されたグラフをOnnxファイルにダンプします。 // "0": 無効。(デフォルト) // "1": 有効。
session_options.AddConfigEntry(kOrtSessionOptionEpContextEnable, "1");
// EPコンテキストを単一のOnnxモデルにダンプするか、binパスを渡すかを指定するフラグ。 // "0": EPコンテキストを別のファイルにダンプし、ファイル名をOnnxモデルに保持します。 // "1": EPコンテキストをOnnxモデルにダンプします。(デフォルト)。
session_options.AddConfigEntry(kOrtSessionOptionEpContextEmbedMode, "1");
// EPコンテキストを持つOnnxモデルのファイルパスを指定します。 // 指定しない場合は、<actual_model_path>/original_file_name_ctx.onnxにデフォルト設定されます。
session_options.AddConfigEntry(kOrtSessionOptionEpContextFilePath, ".\ov_compiled_epctx.onnx");
sess = onnxruntime.InferenceSession(<path_to_model_file>, session_options)セッションオプションの詳細については、セッションオプションを参照してください。
QDQ最適化パスを有効にする
Section titled “QDQ最適化パスを有効にする”NPUデバイス用にORT量子化モデルを最適化して、サポートされている演算子に対してのみQDQを保持し、パフォーマンスと精度を最適化します。通常、この機能はORT最適化を無効にすると、より良いパフォーマンス/精度が得られます。 これらのランタイムオプションの使用に関する詳細については、設定オプションを参照してください。
ランタイム中にカスタムJSON OpenVINO™設定をロードする
Section titled “ランタイム中にカスタムJSON OpenVINO™設定をロードする”load_config機能は、JSON入力スキーマを使用してOpenVINO EPパラメータのロードを容易にするために開発されました。これは、以下の形式に準拠する必要があります。
{ "DEVICE_KEY": {"PROPERTY": "PROPERTY_VALUE"}}ここで、「DEVICE_KEY」はCPU、NPU、またはGPU、「PROPERTY」はOpenVINO™サポートされているプロパティで定義された有効なエンティティである必要があり、「PROPERTY_VALUE」は文字列として渡される有効な対応するサポートされているプロパティ値である必要があります。
無効なキー(つまり、OpenVINO™サポートされているプロパティの一部として認識されないキー)を使用してプロパティが設定された場合、それは無視され、それに対して警告がログに記録されます。ただし、有効なプロパティキーが使用されているが、無効な値が割り当てられている場合(たとえば、整数が期待される場所に非整数)、OpenVINO™フレームワークは実行中に例外を発生させます。
有効なプロパティには、変更可能(読み書き可能)と不変(読み取り専用)の2種類があり、これらも設定時に管理されます。不変プロパティが設定されている場合、同様の警告で設定をスキップします。
適切な"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.onnxOpenVINO実行プロバイダーはセッション間でEP-Weight共有をサポート
Section titled “OpenVINO実行プロバイダーはセッション間でEP-Weight共有をサポート”ONNX RuntimeのOpenVINO実行プロバイダー(OVEP)はEP-Weight共有をサポートしており、モデルが複数の推論セッション間で重みを効率的に共有できるようにします。この機能は、プリフィルとKVキャッシュを使用した大規模言語モデル(LLM)の実行を強化し、複数の推論を実行する際のメモリ消費量を削減し、パフォーマンスを向上させます。
EP-Weight共有により、プリフィルとKVキャッシュモデルは同じ重みセットを再利用できるようになり、冗長性を最小限に抑え、推論を最適化します。さらに、これにより、モデルがサブグラフパーティショニングを受けた場合でもEPコンテキストノードが作成されることが保証されます。
これらの変更により、セッションコンテキストオプションep.share_ep_contextsを使用して2つのモデル間で重みを共有できます。 このランタイムオプションの設定の詳細については、セッションオプションを参照してください。
OVEPはCreateSessionFromArray APIをサポート
Section titled “OVEPはCreateSessionFromArray APIをサポート”ONNX RuntimeのOpenVINO実行プロバイダー(OVEP)は、CreateSessionFromArray APIを使用してメモリからセッションを作成することをサポートしています。これにより、ファイルパスではなくメモリバッファから直接モデルをロードできます。CreateSessionFromArrayは、モデルをメモリにロードし、インメモリバイト配列からセッションを作成します。
注意: CreateSessionFromArray APIを使用してperf_testで推論を実行する場合は、-l引数を使用してください。
設定オプション
Section titled “設定オプション”OpenVINO™実行プロバイダーは、EPの動作を制御する特定のオプションでランタイムに設定できます。これらのオプションは、以下のようにキーと値のペアとして設定できます。
Python API
Section titled “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
Section titled “C/C++ API 2.0”セッション設定オプションは、GPUデバイスタイプの例を以下に示すように、SessionOptionsAppendExecutionProvider APIに渡されます。
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
Section titled “C/C++ レガシー API”注意:このAPIは公式にはサポートされなくなりました。ユーザーはV2 APIに移行することをお勧めします。
セッション設定オプションは、GPUデバイスタイプの例を以下に示すように、SessionOptionsAppendExecutionProvider_OpenVINO() APIに渡されます。
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グラフレベルの最適化
Section titled “Onnxruntimeグラフレベルの最適化”OpenVINO™バックエンドは、ハードウェアに依存する最適化と依存しない最適化の両方をグラフ上で実行し、ターゲットハードウェアで最高のパフォーマンスで推論します。ほとんどの場合、ONNX入力グラフを明示的な最適化なしでそのまま渡すと、OpenVINO™によるカーネルレベルでの最高の最適化につながることが観察されています。このため、OpenVINO™実行プロバイダーについては、ONNX Runtimeによって実行される高レベルの最適化をオフにすることをお勧めします。これは、以下のようにSessionOptions()を使用して行うことができます。
-
Python API
Section titled “Python API”options = onnxruntime.SessionOptions()options.graph_optimization_level = onnxruntime.GraphOptimizationLevel.ORT_DISABLE_ALLsess = onnxruntime.InferenceSession(<path_to_model_file>, options) -
C/C++ API
Section titled “C/C++ API”SessionOptions::SetGraphOptimizationLevel(ORT_DISABLE_ALL);
オプションの概要
Section titled “オプションの概要”次の表に、API 2.0で利用可能なすべての設定オプションと、それらを設定するためのキーと値のペアを示します。
| キー | キーの型 | 許容値 | 値の型 | 説明 |
|---|---|---|---|---|
| device_type | 文字列 | CPU、NPU、GPU、利用可能なGPUに基づくGPU.0、GPU.1、NPU、有効な異種組み合わせ、有効なマルチまたは自動デバイス組み合わせ | 文字列 | ランタイムにこれらの値でアクセラレータハードウェアタイプを上書きします。このオプションが明示的に設定されていない場合、ビルド時に指定されたデフォルトのハードウェアが使用されます。 |
| precision | 文字列 | 選択したdevice_typeに基づくFP32、FP16、ACCURACY | 文字列 | HWのサポートされている精度{CPU:FP32, GPU:[FP32, FP16, ACCURACY], NPU:FP16}。最適化されたパフォーマンスのためのHWのデフォルト精度{CPU:FP32, GPU:FP16, NPU:FP16}。デフォルトの入力精度でモデルを実行するには、ACCURACY精度タイプを選択します。 |
| num_of_threads | 文字列 | 0以外の任意の符号なし正の数 | size_t | ランタイムにこの値でアクセラレータのデフォルトのスレッド数を上書きします。このオプションが明示的に設定されていない場合、推論にはビルド時にデフォルト値の8が使用されます。 |
| num_streams | 文字列 | 0以外の任意の符号なし正の数 | size_t | ランタイムにこの値でアクセラレータのデフォルトのストリームを上書きします。このオプションが明示的に設定されていない場合、推論にはビルド時にデフォルト値の1、レイテンシのパフォーマンスが使用されます。 |
| cache_dir | 文字列 | ハードウェアターゲット上の任意の有効な文字列パス | 文字列 | モデルキャッシング機能を有効にするために、ブロブを保存およびロードするパスを明示的に指定します。 |
| context | 文字列 | OpenCLコンテキスト | void* | このオプションは、OpenVINO EPがOpenCLフラグを有効にしてビルドされている場合にのみ使用できます。リモートコンテキスト、つまりcl_contextアドレスをvoidポインターとして受け取ります。 |
| enable_opencl_throttling | 文字列 | True/False | ブール値 | このオプションは、GPUデバイスのOpenCLキュースロットリングを有効にします(GPU使用時のCPU使用率を削減します)。 |
| enable_qdq_optimizer | 文字列 | True/False | ブール値 | このオプションは、NPUでのモデルのパフォーマンスと精度を向上させるためにQDQ最適化を有効にします。 |
| load_config | 文字列 | 任意のカスタムJSONパス | 文字列 | このオプションは、OVパラメータを設定するランタイム中にカスタムJSON OV設定をロードする機能を有効にします。 |
| disable_dynamic_shapes | 文字列 | True/False | ブール値 | このオプションは、ランタイムに動的形状モデルを静的形状に書き換えて実行することを可能にします。 |
| model_priority | 文字列 | LOW, MEDIUM, HIGH, DEFAULT | 文字列 | このオプションは、どのモデルを最高のリソースに割り当てるかを設定します。 |
有効な異種、マルチ、または自動デバイスの組み合わせ:
HETERO:<device 1>,<device 2>...
deviceは、[‘CPU’,‘GPU’, ‘NPU’]のリストから任意のデバイスにすることができます。
有効なHETERO、MULTI、またはAUTOデバイスビルドには、最低2つのDEVICE_TYPEを指定する必要があります。
例: HETERO:GPU,CPU AUTO:GPU,CPU MULTI:GPU,CPU
非推奨のdevice_typeオプション: CPU_FP32、GPU_FP32、GPU_FP16、NPU_FP16はサポートされなくなりました。将来のリリースで廃止される予定です。最新のdevice_typeおよびprecisionオプションにアップグレードしてください。
サポート範囲
Section titled “サポート範囲”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 | はい | はい |
トポロジーサポート
Section titled “トポロジーサポート”ONNXオープンモデルズーの以下のトポロジーは、OpenVINO™実行プロバイダーで完全にサポートされており、さらに多くがサブグラフパーティショニングを介してサポートされています。 NPUの場合、モデルがサポートされていない場合はCPUにフォールバックします。
画像分類ネットワーク
Section titled “画像分類ネットワーク”| モデル名 | 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 | はい | はい |
画像認識ネットワーク
Section titled “画像認識ネットワーク”| モデル名 | CPU | GPU |
|---|---|---|
| mnist | はい | はい |
物体検出ネットワーク
Section titled “物体検出ネットワーク”| モデル名 | CPU | GPU |
|---|---|---|
| tiny_yolov2 | はい | はい |
| yolov3 | はい | はい |
| tiny_yolov3 | はい | はい |
| mask_rcnn | はい | いいえ |
| faster_rcnn | はい | いいえ |
| yolov4 | はい | はい |
| yolov5 | はい | はい |
| yolov7 | はい | はい |
| tiny_yolov7 | はい | はい |
画像操作ネットワーク
Section titled “画像操作ネットワーク”| モデル名 | CPU | GPU |
|---|---|---|
| mosaic | はい | はい |
| candy | はい | はい |
| cgan | はい | はい |
| rain_princess | はい | はい |
| pointilism | はい | はい |
| udnie | はい | はい |
自然言語処理ネットワーク
Section titled “自然言語処理ネットワーク”| モデル名 | 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でサポートされているモデル
Section titled “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 | はい |
注意: Neural Network Compression Framework(NNCF)で量子化されたINT8モデルのサポートを追加しました。NNCFの詳細については、こちらを参照してください。
OpenVINO™実行プロバイダーサンプルチュートリアル
Section titled “OpenVINO™実行プロバイダーサンプルチュートリアル”ONNX Runtime用のOpenVINO™実行プロバイダーで何ができるかを示すために、追加のコード1行でパフォーマンスの向上を得る方法を示すいくつかのサンプルを作成しました。