対象:
IoT Edge 1.5
重要
IoT Edge 1.5 LTS は、サポートされているリリースです。 IoT Edge 1.4 LTS は 2024 年 11 月 12 日に終了しました。 以前のリリースを使用している場合は、「Update IoT Edgeを参照してください。
GPU は並列処理機能を提供し、多くの場合、CPU よりもビジョンベースの推論を高速に実行するため、人工知能の計算に一般的な選択肢です。 人工知能と機械学習アプリケーションをサポートするために、Windows (EFLOW) 上の Linux 用のAzure IoT Edgeは、仮想マシンの Linux モジュールに GPU を公開します。
Windows 上の Linux Azure IoT Edgeでは、次のようないくつかの GPU パススルー テクノロジがサポートされています。
デバイスの直接割り当て (DDA) - GPU コアは、Linux 仮想マシンまたはホストのいずれかに割り当てられます。
GPU 準仮想化 (GPU-PV) - GPU は、Linux 仮想マシンとホストの間で共有されます。
デプロイ中に適切なパススルー メソッドを選択して、デバイスの GPU ハードウェアのサポートされている機能に一致させる必要があります。
重要
これらの機能には、NVIDIA Corporation またはそのライセンサーによって開発および所有されているコンポーネントが含まれる場合があります。 コンポーネントの使用は、NVIDIA の Web サイトにある NVIDIA のエンドユーザー使用許諾契約書によって管理されています。
GPU アクセラレーション機能を使用すると、NVIDIA End-User 使用許諾契約書の条項に同意したものと見なされます。
前提条件
現在、Windows 上の linux 用Azure IoT Edgeの 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ユーザーは、November 2021 更新プログラム ビルド 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 ワークフローで使用する NVIDIA CUDA 対応ドライバー for Windows Subsystem for Linux (WSL) をダウンロードしてインストールします。 もともと WSL 用に開発された WSL ドライバー用の CUDA は、Windows上の Linux 用のAzure IoT Edgeでも使用されます。
一部のライブラリは 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インストールする必要があります。
Windows デプロイで Azure IoT Edge Linux で GPU アクセラレーションを有効にする
システムのセットアップが完了したら、Windows上でのLinux用Azure IoT Edgeのデプロイを作成を開始します。 このプロセス中に、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 名を見つけるには、このコマンドを実行するか、Device Managerでディスプレイ アダプターを探します。
(Get-WmiObject win32_VideoController).caption
インストールが完了したら、Windows 上の linux 用の Azure IoT Edge を使用して GPU アクセラレータの Linux モジュールをデプロイして実行します。
Windowsデプロイで既存の Azure IoT Edge Linux で 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, or they're 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, or the GPU is 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 パススルー テクノロジの詳細については、 DDA のドキュメント と ブログ記事GPU-PV 参照してください。
いくつかの GPU ベンダーは、EFLOW を使用してハードウェアとソフトウェアを最大限に活用するためのユーザー ガイドを提供しています。
- Intel のガイド「Azure IoT Edge for Linux on Windows (EFLOW) および OpenVINO™ Toolkit と Intel iGPU を使用する」に従って、EFLOW で Intel OpenVINO™ アプリケーションを実行する方法を学びましょう。
- NVIDIA の GeForce/Quadro/RTX GPU 用 EFLOW ユーザー ガイドに従って、CUDA アクセラレータアプリケーションを EFLOW にデプロイする作業を開始します。 このガイドでは、NVIDIA T4 や A2 などの DDA ベースの GPU については説明しません。