ローカル配布ライブラリー

ローカル配布では、各 C または C++ アプリケーション/インストーラーに OpenVINO ランタイムバイナリー固有のコピーがあります。ただし、OpenVINO はスケーラブルなプラグインベースのアーキテクチャーを備えているため、一部のコンポーネントは必要な場合にのみ実行時にロードできます。このガイドは、アプリケーションのデプロイに必要な最小限のライブラリー・セットを理解するのに役立ちます。

ローカル配布は、ビルド手順を使用してソースからビルドされた OpenVINO バイナリーにも適していますが、このガイドでは OpenVINO ランタイムが動的にビルドされることを前提としています。静的 OpenVINO ランタイムの場合、カスタムコンパイル用の CMake オプションを使用して CMake 構成で必要な OpenVINO 機能を選択し、OpenVINO コンポーネントをビルドして最終アプリケーションにリンクします。

以下の手順はオペレーティング・システムに依存せず、プリフィクス (Unix* システムの lib など) やサフィックス (Windows* の .dll など) のないライブラリー・ファイル名を参照します。Windows* 上の .lib ファイルはリンク時にのみ必要となるため、ディストリビューションに配置しないでください。

C++ および C 言語のライブラリー要件

アプリケーションのプログラミング言語に関係なく、openvino ライブラリーは常に最終ディストリビューションに含める必要があります。このコア・ライブラリーは、すべての推論プラグインとフロントエンド・プラグインを管理します。openvino ライブラリーは、デバイスで計算を最適に飽和させるため OpenVINO ランタイムによって使用される TBB ライブラリーに依存しています。

アプリケーションが C 言語で記述されている場合は、openvino_c ライブラリーを追加で含める必要があります。

推論デバイスに関する情報を含む plugins.xml ファイルも、openvino のサポートファイルとして取得する必要があります。

プラグイン可能なコンポーネントのライブラリー

以下の図は、OpenVINO ランタイムコアとプラグイン可能ライブラリー間の依存関係を示しています。

../../_images/deployment_full.svg

計算デバイスのライブラリー

OpenVINO ランタイムには、推論デバイスごとに固有のプラグイン・ライブラリーがあります。

アプリで使用されるデバイスに応じて、対応するライブラリーを配布パッケージに含める必要があります。

上の図に示すように、一部のプラグイン・ライブラリーには、バックエンド・ライブラリーまたはファームウェアなどの追加サポートファイルがあります (OS 固有の依存関係がある場合)。詳細については、以下の表を参照してください。

デバイス

依存関係

場所

CPU

GPU

OpenCL.dll
cache.json

C:\Windows\System32\opencl.dll
.\runtime\bin\intel64\Release\cache.json または
.\runtime\bin\intel64\Debug\cache.json

Arm® CPU

デバイス

依存関係

場所

Arm® CPU

デバイス

依存関係

場所

CPU

GPU

libOpenCL.so
cache.json
/usr/lib/x86_64-linux-gnu/libOpenCL.so.1
./runtime/lib/intel64/cache.json

デバイス

依存関係

場所

Arm® CPU

デバイス

依存関係

場所

CPU

実行モデルのライブラリー

HETEROMULTIBATCH および AUTO 実行モードは、アプリケーションによって明示的または暗黙的に使用することもできます。次の推奨スキームを使用して、適切なライブラリーを配布パッケージに追加するかどうかを決定します。

  • アプリケーションで AUTO が使用されている、またはデバイスを指定せずに ov::Core::compile_model が使用されている場合は、openvino_auto_plugin をディストリビューションに追加します。

    自動デバイス選択は、推論デバイスプラグインに依存します。ターゲットシステムでどの推論デバイスが使用できるか不明である場合、すべての推論プラグイン・ライブラリーをディストリビューションに配置します。AUTO で ov::device::priorities を使用して限定されたデバイスリストを指定する場合は、対応するデバイスプラグインのみを取得します。

  • MULTI を明示的に使用する場合は、ディストリビューションに openvino_auto_plugin を含めます。

  • HETERO が明示的に使用されている、または ov::hint::performance_mode が GPU で使用されている場合は、ディストリビューションに openvino_hetero_plugin を含めます。

  • BATCH が明示的に使用されている、または ov::hint::performance_mode が GPU で使用されている場合は、ディストリビューションに openvino_batch_plugin を含めます。

読み取りモデルのフロントエンド・ライブラリー

OpenVINO ランタイムは、フロントエンド・ライブラリーを動的に使用して、さまざまな形式でモデルを読み取ります。

  • openvino_ir_frontend は、OpenVINO IR を読み取るために使用されます。

  • openvino_tensorflow_frontend は、TensorFlow ファイル形式を読み取るために使用されます。

  • openvino_tensorflow_lite_frontend は、TensorFlow Lite ファイル形式を読み取るために使用されます。

  • openvino_onnx_frontend は、ONNX ファイル形式を読み取るために使用されます。

  • openvino_paddle_frontend は、TensorFlow ファイル形式を読み取るために使用されます。

  • openvino_pytorch_frontend は、openvino.convert_model API 経由で PyTorch モデルを変換するために使用されます。

アプリケーションの ov::Core::read_model で使用されるモデル形式のタイプに応じて、適切なライブラリーを選択します。

最終的な配布パッケージのサイズを最適化するには、モデル変換 API を使用してモデルを OpenVINO IR に変換することを推奨します。この方法では、TensorFlow、TensorFlow Lite、ONNX、PaddlePaddle、および他のフロントエンド・ライブラリーを配布パッケージに含める必要がありません。

C アプリケーションでの CPU + OpenVINO IR

この例では、アプリケーションは C で記述され、CPU で推論を実行し、OpenVINO IR 形式で保存されたモデルを読み取ります。

次のライブラリーが使用されます: openvino_copenvinoopenvino_intel_cpu_plugin、および openvino_ir_frontend

  • openvino_c ライブラリーは、アプリケーションの主な依存関係です。アプリはこのライブラリーにリンクします。

  • openvino ライブラリーは、openvino_c のプライベート依存関係として使用され、デプロイメントでも使用されます。

  • openvino_intel_cpu_plugin は推論に使用されます。

  • openvino_ir_frontend は、ソースモデルの読み取りに使用されます。

`tput` モードでの GPU および CPU での MULTI 実行

この例のアプリケーションは C++ で記述され、ov::hint::PerformanceMode::THROUGHPUT プロパティー・セットを使用して GPU デバイスと CPU デバイスで同時に推論を実行し、ONNX 形式で保存されたモデルを読み取ります。

次のライブラリーが使用されます: openvino_intel_cpu_pluginopenvino_auto_pluginopenvino_auto_batch_plugin、および openvino_onnx_frontend

  • openvino ライブラリーは、アプリケーションの主な依存関係です。アプリはこのライブラリーにリンクします。

  • openvino_intel_gpu_pluginopenvino_intel_cpu_plugin は推論に使用されます。

  • openvino_auto_plugin はマルチデバイスの実行に使用されます。

  • openvino_auto_batch_plugin をディストリビューションに含めて、インテル® GPU デバイスの飽和状態を改善することもできます。そのようなプラグインがない場合、自動バッチ処理は無効になります。

  • openvino_onnx_frontend は、ソースモデルの読み取りに使用されます。

GPU と CPU 間の自動デバイス選択

この例のアプリケーションは C++ で記述され、自動デバイス選択モードで推論を実行し、デバイスリストを GPU と CPU に限定し、C++ コードを使用して作成されたモデルを読み取ります。

次のライブラリーが使用されます: openvinoopenvino_auto_pluginopenvino_intel_gpu_plugin、および openvino_intel_cpu_plugin

  • openvino ライブラリーは、アプリケーションの主な依存関係です。アプリはこのライブラリーにリンクします。

  • openvino_auto_plugin は、自動デバイス選択を有効にするために使用されます。

  • openvino_intel_gpu_pluginopenvino_intel_cpu_plugin は推論に使用されます。AUTO は、デプロイされたマシン上の物理的な CPU デバイスと GPU デバイスに応じて選択します。

  • ov::Model はコード内で作成されるため、フロントエンド・ライブラリーは必要ありません。