NPU デバイス

ニューラル・プロセシング・ユニットは、インテル® Core™ Ultra 世代の CPU (開発コード名 Meteor Lake) で導入された低電力ハードウェア・ソリューションです。これにより、特定のニューラル・ネットワーク計算タスクを他のデバイスからオフロードして、リソース管理をより合理化できます。

現在、NPU プラグインは OpenVINO™ のアーカイブ・ディストリビューションでのみ利用可能であり、これを正常に使用するには適切な NPU ドライバーをインストールする必要があることに注意してください。

サポートされるプラットフォーム:
ホスト: インテル® Core™ Ultra プロセッサー (開発コード名 Meteor Lake)
NPU デバイス: NPU 3720
OS: Ubuntu* 22.04 (Linux* kernel 6.6+)、Microsoft Windows* 11 (両社とも 64 ビット)
サポートされる推論データタイプ
NPU プラグインは、内部プリミティブの推論精度として次のデータタイプをサポートします。
浮動小数点データタイプ: F32、F16
量子化データタイプ: U8 (量子化モデルは int8 または FP16-INT8 混合の場合があります)
ハードウェアの演算精度は FP16 です。

量子化されたモデルを取得する方法の詳細については、モデル最適化ガイドおよび NNCF ツール量子化ガイドを参照してください。

モデルのキャッシュ

モデルのキャッシュは、コンパイルされたモデルを自動的にエクスポートして再利用することで、アプリケーションの起動遅延を軽減します。この分野では、次の 2 つのコンパイル関連のメトリックが重要です。

初めての推論レイテンシー (FEIL)
デバイス上でモデルを初めてコンパイルして実行するのに必要なすべてのステップを測定します。これには、モデルのコンパイル時間、デバイス上でモデルをロードして初期化するのに必要な時間、および最初の推論の実行が含まれます。
初回推論レイテンシー (FIL)
事前コンパイルされたモデルをデバイスにロードして初期化し、最初の推論を実行するのに必要な時間を測定します。

UMD 動的モデルのキャッシュ

UMD モデルのキャッシュは、現在の NPU ドライバーでデフォルトで有効化されているソリューションです。ハッシュキーに基づいて、コンパイル (FEIL に含まれる) 後にモデルをキャッシュに保存することで、初回推論 (FIL) までの時間を短縮します。このプロセスは次の 3 つのステージに要約できます。

  1. UMD は入力 IR モデルとビルド引数からキーを生成します。

  2. UMD は、計算されたキーを使用してモデルを保存するように DirectX シェーダー・キャッシュ・セッションを要求します。

  3. 同じ引数を使用して同じ 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 の場合は 4LATENCY の場合は 1 です。NPU デバイスのデフォルトモードは LATENCY です。

制限事項

  • 現在、NPU では静的形状を持つモデルのみがサポートされています。

  • モデルファイルへのパスに非 Unicode 記号が含まれている場合、そのモデルは NPU での推論に使用できません。その場合エラーが返されます。

  • NPU を使用して Alexnet モデルを実行すると、精度が低下する可能性があります。現時点では、分類タスクには googlenet-v4 モデルが推奨されています。

インポート/エクスポート

オフラインコンパイルと BLOB インポートはサポートされていますが、開発目的で使用されます。事前コンパイルされたモデル (BLOB) を運用環境で使用することは推奨されません。異なる OpenVINO バージョン/NPU ドライバーバージョン間での BLOB の互換性は保証されません。