ローカル配布ライブラリー¶
ローカル配布では、各 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 ランタイムコアとプラグイン可能ライブラリー間の依存関係を示しています。
計算デバイスのライブラリー¶
OpenVINO ランタイムには、推論デバイスごとに固有のプラグイン・ライブラリーがあります。
openvino_intel_cpu_plugin
インテル® CPU デバイス向けopenvino_intel_gpu_plugin
インテル® GPU デバイス向けopenvino_arm_cpu_plugin
ARM® CPU デバイス向け
アプリで使用されるデバイスに応じて、対応するライブラリーを配布パッケージに含める必要があります。
上の図に示すように、一部のプラグイン・ライブラリーには、バックエンド・ライブラリーまたはファームウェアなどの追加サポートファイルがあります (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 |
— |
— |
実行モデルのライブラリー¶
HETERO
、MULTI
、BATCH
および 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_c
、openvino
、openvino_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_plugin
、openvino_auto_plugin
、openvino_auto_batch_plugin
、および openvino_onnx_frontend
。
openvino
ライブラリーは、アプリケーションの主な依存関係です。アプリはこのライブラリーにリンクします。openvino_intel_gpu_plugin
とopenvino_intel_cpu_plugin
は推論に使用されます。openvino_auto_plugin
はマルチデバイスの実行に使用されます。openvino_auto_batch_plugin
をディストリビューションに含めて、インテル® GPU デバイスの飽和状態を改善することもできます。そのようなプラグインがない場合、自動バッチ処理は無効になります。openvino_onnx_frontend
は、ソースモデルの読み取りに使用されます。
GPU と CPU 間の自動デバイス選択
この例のアプリケーションは C++ で記述され、自動デバイス選択モードで推論を実行し、デバイスリストを GPU と CPU に限定し、C++ コードを使用して作成されたモデルを読み取ります。
次のライブラリーが使用されます: openvino
、openvino_auto_plugin
、openvino_intel_gpu_plugin
、および openvino_intel_cpu_plugin
。
openvino
ライブラリーは、アプリケーションの主な依存関係です。アプリはこのライブラリーにリンクします。openvino_auto_plugin
は、自動デバイス選択を有効にするために使用されます。openvino_intel_gpu_plugin
とopenvino_intel_cpu_plugin
は推論に使用されます。AUTO は、デプロイされたマシン上の物理的な CPU デバイスと GPU デバイスに応じて選択します。ov::Model
はコード内で作成されるため、フロントエンド・ライブラリーは必要ありません。