NPU デバイス¶
ニューラル・プロセシング・ユニットは、インテル® Core™ Ultra 世代の CPU (開発コード名 Meteor Lake) で導入された低電力ハードウェア・ソリューションです。これにより、特定のニューラル・ネットワーク計算タスクを他のデバイスからオフロードして、リソース管理をより合理化できます。
現在、NPU プラグインは OpenVINO™ のアーカイブ・ディストリビューションでのみ利用可能であり、これを正常に使用するには適切な NPU ドライバーをインストールする必要があることに注意してください。
モデルのキャッシュ¶
モデルのキャッシュは、コンパイルされたモデルを自動的にエクスポートして再利用することで、アプリケーションの起動遅延を軽減します。この分野では、次の 2 つのコンパイル関連のメトリックが重要です。
UMD 動的モデルのキャッシュ¶
UMD モデルのキャッシュは、現在の NPU ドライバーでデフォルトで有効化されているソリューションです。ハッシュキーに基づいて、コンパイル (FEIL に含まれる) 後にモデルをキャッシュに保存することで、初回推論 (FIL) までの時間を短縮します。このプロセスは次の 3 つのステージに要約できます。
UMD は入力 IR モデルとビルド引数からキーを生成します。
UMD は、計算されたキーを使用してモデルを保存するように DirectX シェーダー・キャッシュ・セッションを要求します。
同じ引数を使用して同じ IR モデルをコンパイルする後続のすべての要求では、コンパイル済みのモデルが使用され、再コンパイルする代わりにキャッシュから読み取られます。
OpenVINO モデルのキャッシュ¶
OpenVINO モデルのキャッシュは、すべての OpenVINO デバイスプラグインに共通のメカニズムであり、ov::cache_dir
プロパティーを設定することで有効にできます。UMD モデルのキャッシュは NPU プラグインによって自動的にバイパスされます。つまり、モデルはコンパイル後にのみ OpenVINO キャッシュに保存されます。後続のコンパイル要求でキャッシュにヒットすると、プラグインはモデルを再コンパイルする代わりにキャッシュからインポートします。
OpenVINO モデルのキャッシュの詳細については、モデルのキャッシュの概要を参照してください。
サポートされる機能とプロパティー¶
NPU デバイスは現在、AUTO および MULTI 推論モードでサポートされています (一部のモデルでは、HETERO 実行が部分的にサポートされています)。
OpenVINO の NPU サポートは現在も積極的に開発中であり、サポートされている OpenVINO 機能のセットが限定される可能性があります。
サポートされるプロパティー:
ov::internal::caching_properties
ov::enable_profiling
ov::hint::performance_mode
ov::hint::num_requests
ov::hint::model_priority
ov::hint::enable_cpu_pinning
ov::log::level
ov::device::id
ov::cache_dir
ov::internal::exclusive_async_requests
ov::supported_properties
ov::streams::num
ov::optimal_number_of_infer_requests
ov::range_for_async_infer_requests
ov::range_for_streams
ov::available_devices
ov::device::uuid
ov::device::architecture
ov::device::full_name
注
パフォーマンス・モードに基づいてプラグインによって返される推論要求の最適数は、THROUGHPUT の場合は 4、LATENCY の場合は 1 です。NPU デバイスのデフォルトモードは LATENCY です。
制限事項¶
現在、NPU では静的形状を持つモデルのみがサポートされています。
モデルファイルへのパスに非 Unicode 記号が含まれている場合、そのモデルは NPU での推論に使用できません。その場合エラーが返されます。
-
NPU を使用して Alexnet モデルを実行すると、精度が低下する可能性があります。現時点では、分類タスクには googlenet-v4 モデルが推奨されています。
インポート/エクスポート
オフラインコンパイルと BLOB インポートはサポートされていますが、開発目的で使用されます。事前コンパイルされたモデル (BLOB) を運用環境で使用することは推奨されません。異なる OpenVINO バージョン/NPU ドライバーバージョン間での BLOB の互換性は保証されません。