コンテンツにスキップ

Intel - OpenVINO™

Intel OpenVINO™実行プロバイダーを使用して、Intel CPU、GPU、NPUでONNXモデルを高速化します。サポートされているIntelハードウェアの詳細については、このページを参照してください。

ビルド済みパッケージとDockerイメージは、Intelによって各リリースのONNX Runtime用OpenVINO™実行プロバイダーとして公開されています。

ONNX Runtime OpenVINO™実行プロバイダーは、OpenVINO™の3つの最新リリースと互換性があります。

ONNX RuntimeOpenVINO™注意
1.21.02025.0詳細
1.20.02024.4詳細
1.19.02024.3詳細
1.18.02024.1詳細
1.17.12023.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使用率を削減します。

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モデルは、CPU、GPU、NPUでサポートされています。

外部ファイルに保存された重みのサポート

Section titled “外部ファイルに保存された重みのサポート”

OpenVINO™実行プロバイダーは、外部ファイルに重みを格納するONNXモデルをサポートするようになりました。これは、protobufの制限により2GBを超えるモデルに特に役立ちます。

OpenVINO™ ONNXサポートドキュメントを参照してください。

ONNXモデルを外部データに変換して保存する: ONNX APIを使用します。ドキュメント

例:

import onnx
onnx_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)

注意:

  1. 上記のスクリプトでは、model.onnxがロードされ、「saved_model.onnx」というファイルに保存されます。このファイルには重みは含まれませんが、この新しいonnxモデルには重みファイルの場所への相対パスが含まれます。「weights_data」ファイルにはモデルの重みが含まれ、元のモデルの重みは/data/weights_dataに保存されます。

  2. これで、この「saved_model.onnx」ファイルを使用してサンプルを推論できます。ただし、重みファイルの場所は変更できないことに注意してください。重みは/data/weights_dataに存在する必要があります。

  3. これらのONNX Python APIを正常に実行するには、pipを使用して最新のONNX Pythonパッケージをインストールしてください。

IOバッファ最適化を有効にするには、ビルド前にOPENCL_LIBS、OPENCL_INCS環境変数を設定する必要があります。IOバッファ最適化の場合、モデルはOpenVINO™で完全にサポートされている必要があり、リモートコンテキストcl_context voidポインターをC++設定オプションとして提供する必要があります。入力と出力にGPUメモリアロケータを使用して、入力としてcl::Bufferアドレスを提供できます。

例:

Terminal window
//リモートコンテキストを設定する
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)

セッションオプションの詳細については、セッションオプションを参照してください。

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"を設定するには、CPUGPUNPUAUTOの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-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引数を使用してください。

OpenVINO™実行プロバイダーは、EPの動作を制御する特定のオプションでランタイムに設定できます。これらのオプションは、以下のようにキーと値のペアとして設定できます。

設定オプションのキーと値のペアは、次のようにInferenceSession APIを使用して設定できます。

session = onnxruntime.InferenceSession(<path_to_model_file>, providers=['OpenVINOExecutionProvider'], provider_options=[{Key1 : Value1, Key2 : Value2, ...}])

(ORT 1.10)からのリリースでは、InferenceSessionをインスタンス化する際に、デフォルトのCPUプロバイダー以外の実行プロバイダーを使用したい場合は、providersパラメータを明示的に設定する必要があります(現在の動作とは対照的に、プロバイダーはビルドフラグに基づいてデフォルトで設定/登録されます)。

セッション設定オプションは、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);

注意:この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);

OpenVINO™バックエンドは、ハードウェアに依存する最適化と依存しない最適化の両方をグラフ上で実行し、ターゲットハードウェアで最高のパフォーマンスで推論します。ほとんどの場合、ONNX入力グラフを明示的な最適化なしでそのまま渡すと、OpenVINO™によるカーネルレベルでの最高の最適化につながることが観察されています。このため、OpenVINO™実行プロバイダーについては、ONNX Runtimeによって実行される高レベルの最適化をオフにすることをお勧めします。これは、以下のようにSessionOptions()を使用して行うことができます。

  • options = onnxruntime.SessionOptions()
    options.graph_optimization_level = onnxruntime.GraphOptimizationLevel.ORT_DISABLE_ALL
    sess = onnxruntime.InferenceSession(<path_to_model_file>, options)
  • SessionOptions::SetGraphOptimizationLevel(ORT_DISABLE_ALL);

次の表に、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オプションにアップグレードしてください。

OpenVINOを使用したONNXレイヤーのサポート

以下の表は、OpenVINO™実行プロバイダーを使用してサポートされ、検証されたONNXレイヤーを示しています。以下の表には、各レイヤーのIntelハードウェアサポートも記載されています。CPUはIntel® Atom、Core、Xeonプロセッサーを指します。GPUはIntel統合グラフィックス、Intelディスクリートグラフィックスを指します。NPUの場合、演算子がサポートされていない場合はCPUにフォールバックします。

ONNXレイヤーCPUGPU
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にフォールバックします。

モデル名CPUGPU
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はいはい
モデル名CPUGPU
mnistはいはい
モデル名CPUGPU
tiny_yolov2はいはい
yolov3はいはい
tiny_yolov3はいはい
mask_rcnnはいいいえ
faster_rcnnはいいいえ
yolov4はいはい
yolov5はいはい
yolov7はいはい
tiny_yolov7はいはい
モデル名CPUGPU
mosaicはいはい
candyはいはい
cganはいはい
rain_princessはいはい
pointilismはいはい
udnieはいはい
モデル名CPUGPU
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行でパフォーマンスの向上を得る方法を示すいくつかのサンプルを作成しました。

PythonでのtinyYOLOv2による物体検出

PythonでのYOLOv4による物体検出

CPPでのSqueezenetによる画像分類

C#でのYOLOv3による物体検出

ONNX Runtime用OpenVINO実行プロバイダーの概要

Section titled “ONNX Runtime用OpenVINO実行プロバイダーの概要”

OpenVINO実行プロバイダー

ONNX Runtime Dockerコンテナ用OpenVINO™実行プロバイダーの使用方法に関するチュートリアル

Section titled “ONNX Runtime Dockerコンテナ用OpenVINO™実行プロバイダーの使用方法に関するチュートリアル”

Dockerコンテナ

ONNX Runtime pythonホイールパッケージ用OpenVINO™実行プロバイダーの使用方法に関するチュートリアル

Section titled “ONNX Runtime pythonホイールパッケージ用OpenVINO™実行プロバイダーの使用方法に関するチュートリアル”

Python Pipホイールパッケージ