Azure IoT Edge for Linux on Windows 用の GPU アクセラレーション
適用対象: IoT Edge 1.5 IoT Edge 1.4
重要
サポートされているリリースは、IoT Edge 1.5 LTS と IoT Edge 1.4 LTS です。 IoT Edge 1.4 LTS は、2024 年 11 月 12 日にサポートが終了します。 以前のリリースの場合は、「IoT Edge を更新する」を参照してください。
GPU では並列処理機能が提供され、多くの場合、CPU よりも高速なビジョンベースの推論を実行できるため、人工知能の計算によく使用されます。 人工知能と機械学習アプリケーションのサポートを強化するために、Azure IoT Edge for Linux on Windows (EFLOW) では、仮想マシンの Linux モジュールに GPU を公開できます。
Azure IoT Edge for Linux on Windows では、次のようないくつかの GPU パススルー テクノロジがサポートされています。
デバイスの直接割り当て (DDA) - GPU コアは、Linux 仮想マシンまたはホストのいずれかに割り当てられます。
GPU 準仮想化 (GPU-PV) - GPU は、Linux 仮想マシンとホストの間で共有されます。
デプロイ中に適切なパススルー メソッドを選択して、デバイスの GPU ハードウェアのサポートされている機能に一致させる必要があります。
重要
これらの機能には、NVIDIA Corporation またはそのライセンサーによって開発および所有されているコンポーネントが含まれる場合があります。 コンポーネントの使用は、NVIDIA の Web サイトにある NVIDIA のエンドユーザー使用許諾契約書によって管理されています。
GPU アクセラレーションの機能を使用することにより、NVIDIA のエンドユーザー使用許諾契約書の条件を受け入れて同意したものとなります。
前提条件
Azure IoT Edge for Linux on Windows の GPU アクセラレーション機能では、現在、GPU ハードウェアの厳選されたセットがサポートされています。 また、この機能の使用には特定のバージョンの Windows が必要である場合があります。
サポートされている GPU と必要な Windows のバージョンを次に示します。
サポートされている GPU | GPU パススルーの種類 | サポートされている Windows のバージョン |
---|---|---|
NVIDIA T4、A2 | DDA | Windows Server 2019 Windows Server 2022 Windows 10/11 (Pro、Enterprise、IoT Enterprise) |
NVIDIA GeForce、Quadro、RTX | GPU-PV | Windows 10/11 (Pro、Enterprise、IoT Enterprise) |
Intel iGPU | GPU-PV | Windows 10/11 (Pro、Enterprise、IoT Enterprise) |
重要
GPU-PV のサポートは、GPU ベンダーによって決定される特定の世代のプロセッサまたは GPU アーキテクチャに制限される場合があります。 詳細については、Intel の iGPU ドライバーのドキュメントまたは WSL ドキュメント用の NVIDIA の CUDA を参照してください。
Windows Server 2019 ユーザーは、現在のすべての累積更新プログラムがインストールされた最小ビルド 17763 を使用する必要があります。
Windows 10 ユーザーは 2021 年 11 月の更新プログラム ビルド 19044.1620 以降を使用する必要があります。 インストール後、コマンド プロンプトで winver
を実行してビルドのバージョンを確認できます。
Windows 仮想マシンで EFLOW を実行するなど、入れ子になった仮想化では GPU パススルーはサポートされていません。
システムのセットアップとインストール
次のセクションには、GPU に応じたセットアップとインストールに関する情報が含まれています。
NVIDIA T4/A2 GPU
T4/A2 GPU の場合、Microsoft では、GPU のベンダーから入手したデバイスのリスク軽減ドライバーをインストールすることをお勧めします。 省略可能ですが、リスク軽減ドライバーをインストールすると、デプロイのセキュリティが向上する場合があります。 詳細については、デバイスの直接割り当てを使用したグラフィックス デバイスのデプロイに関する記事を参照してください。
警告
ハードウェア デバイスのパススルーを有効にすると、セキュリティ リスクが高まる可能性があります。 該当する場合は、GPU ベンダーが提供する、デバイスのリスク軽減ドライバーをお勧めします。 詳細については、「Discrete Device Assignment を使用したグラフィックス デバイスのデプロイ」を参照してください。
NVIDIA GeForce/Quadro/RTX GPU
NVIDIA GeForce/Quadro/RTX GPU の場合は、既存の CUDA ML ワークフローで使用するために、Linux 用 Windows サブシステム (WSL) 用の NVIDIA CUDA 対応ドライバーをダウンロードしてインストールします。 WSL 用の CUDA ドライバーは、もともと WSL 用に開発されたものですが、Azure IoT Edge for Linux on Windows にも使用されます。
WSL と Azure IoT Edge for Linux on Windows の間で一部のライブラリが共有されるため、Windows 10 ユーザーは WSL をインストールする必要もあります。
Intel iGPU
Intel iGPU の場合、WSL GPU をサポートする Intel グラフィックス ドライバーをダウンロードしてインストールします。
WSL と Azure IoT Edge for Linux on Windows の間で一部のライブラリが共有されるため、Windows 10 ユーザーは WSL をインストールする必要もあります。
Azure IoT Edge Linux on Windows デプロイで GPU アクセラレーションを有効にする
システムのセットアップが完了すると、Azure IoT Edge for Linux on Windows のデプロイを作成する準備が整います。 このプロセスでは、EFLOW デプロイの一部として GPU を有効にする必要があります。
たとえば、次のコマンドでは、NVIDIA A2 GPU または Intel Iris Xe のグラフィックス カードを使用して GPU 対応の仮想マシンを作成します。
#Deploys EFLOW with NVIDIA A2 assigned to the EFLOW VM
Deploy-Eflow -gpuPassthroughType DirectDeviceAssignment -gpuCount 1 -gpuName "NVIDIA A2"
#Deploys EFLOW with Intel(R) Iris(R) Xe Graphics assigned to the EFLOW VM
Deploy-Eflow -gpuPassthroughType ParaVirtualization -gpuCount 1 -gpuName "Intel(R) Iris(R) Xe Graphics"
GPU の名前を見つけるには、次のコマンドを実行するか、デバイス マネージャーでディスプレイ アダプターを探します。
(Get-WmiObject win32_VideoController).caption
インストールが完了すると、Azure IoT Edge for Linux on Windows を使用して、GPU アクセラレーションを使用する Linux モジュールをデプロイして実行する準備が整います。
既存の Azure IoT Edge Linux on Windows デプロイで GPU アクセラレーションを構成する
デプロイ時に GPU を割り当てるのが、操作としては最も簡単です。 ただし、デプロイ後に GPU を有効または無効にするには、'set-eflowvm' コマンドを使用します。 'set-eflowvm' を使用する場合、指定されていない引数には既定のパラメータが使用されます。 たとえば、 にします。
#Deploys EFLOW without a GPU assigned to the EFLOW VM
Deploy-Eflow -cpuCount 4 -memoryInMB 16384
#Assigns NVIDIA A2 GPU to the existing deployment (cpu and memory must still be specified, otherwise they will be set to the default values)
Set-EflowVM -cpuCount 4 -memoryInMB 16384 -gpuName "NVIDIA A2" -gpuPassthroughType DirectDeviceAssignment -gpuCount 1
#Reduces the cpuCount and memory (GPU must still be specified, otherwise the GPU will be removed)
Set-EflowVM -cpuCount 2 -memoryInMB 4096 -gpuName "NVIDIA A2" -gpuPassthroughType DirectDeviceAssignment -gpuCount 1
#Removes NVIDIA A2 GPU from the existing deployment
Set-EflowVM -cpuCount 2 -memoryInMB 4096
次のステップ
サンプルの使用を開始する
EFLOW サンプル ページ にアクセスして、試しに使ってみることができる いくつかの GPU サンプルを確認してください。 これらのサンプルは、欠陥検出、作業者の安全性、在庫管理などの一般的な製造および小売シナリオを示しています。 これらのオープンソースのサンプルは、独自のビジョンベースの機械学習アプリケーションを構築するためのソリューション テンプレートとして使用できます。
パートナーから詳細を学ぶ
一部の GPU ベンダーは、EFLOW を使用してハードウェアとソフトウェアを最大限に活用するためのユーザー ガイドを提供しています。
- Azure IoT Edge for Linux on Windows (EFLOW) を使用した iGPU に関する Intel のガイド OpenVINO™ Toolkit とリファレンス実装に従って、EFLOW で Intel OpenVINO™ アプリケーションを実行する方法を確認してください。
- NVIDIA の GeForce/Quadro/RTX GPU 用 EFLOW ユーザー ガイドに従って、CUDA アクセラレータアプリケーションを EFLOW にデプロイする作業を開始します。
Note
このガイドでは、NVIDIA T4 や A2 などの DDA ベースの GPU については説明しません。
テクノロジの詳細を学ぶ
GPU パススルー テクノロジの詳細については、DDA のドキュメントと GPU-PV のブログ記事をご覧ください。