次の方法で共有


チュートリアル: GPU のIoT Edge モジュールを構成、接続、検証する

対象:IoT Edge 1.5 チェックマーク IoT Edge 1.5

重要

IoT Edge 1.5 LTS は、サポートされているリリースです。 IoT Edge 1.4 LTS は 2024 年 11 月 12 日に終了しました。 以前のリリースを使用している場合は、「Update IoT Edgeを参照してください。

このチュートリアルでは、GPU 対応の仮想マシン (VM) をビルドする方法を紹介します。 VM から、そのモジュールの 1 つから GPU に作業を割り当てるIoT Edge デバイスを実行します。

Azure ポータル、Azure Cloud Shell、VM のコマンド ラインを使用して、次の手順を実行します。

  • GPU 対応 VM をビルドする
  • VM に NVIDIA ドライバー拡張機能をインストールする
  • GPU に作業を割り当てるために、IoT Edge デバイスでモジュールを構成する

前提条件

GPU 最適化済み仮想マシンを作成する

GPU 最適化仮想マシン (VM) を作成するには、適切なサイズを選択します。 すべての VM サイズが GPU 処理をサポートしているわけではありません。また、異なる VM サイズが異なるワークロードに最適です。 詳細については、「GPU 最適化済み仮想マシンのサイズ」を参照するか、仮想マシン セレクターを試してください。

GitHubで Azure Resource Manager (ARM) テンプレートを使用してIoT Edge VM を作成し、GPU 最適化されるように構成します。

  1. Azure/iotedge-vm-deploy のGitHubのIoT Edge VM デプロイ テンプレートに移動>。

  2. Azure ポータルでカスタム VM の作成を開始するには、 Azure へのデプロイ ボタンを選択します。

  3. Custom deployment フィールドにAzure資格情報とリソース情報を入力します。

    財産 説明またはサンプルの値
    サブスクリプション Azure アカウント サブスクリプションを選択します。
    リソース グループ Azure リソース グループを追加します。
    リージョン East US
    GPU VM は、すべてのリージョンで使用できるわけではありません。
    DNS ラベル プレフィックス VM の名前を作成します。
    管理ユーザー名 adminUser
    または、独自のユーザー名を作成します。
    デバイスの接続文字列 IoT Edge デバイスからconnection stringをコピーし、ここに貼り付けます。
    VM サイズ Standard_NV6
    認証の種類 パスワードまたは SSH 公開キーを選択し、必要に応じてパスワードまたはキー ペア名を作成します。

    ヒント

    各リージョンでサポートされている GPU VM (利用可能な製品 (リージョン別)) を確認します。

    Azure サブスクリプションで許可されているリージョンを確認するには、Azure ポータルでこのAzure コマンドを試してください。 NStandard_N は、GPU 対応 VM を意味します。

    az vm list-skus --location <YOUR-REGION> --size Standard_N --all --output table
    
  4. 下部にある [ 確認と作成 ] ボタンを選択し、[ 作成 ] ボタンを選択します。 デプロイには最大 1 分かかる場合があります。

NVIDIA 拡張機能をインストールする

GPU 最適化 VM を作成したら、Azure ポータルを使用して VM に NVIDIA 拡張機能をインストールします。

  1. Azure ポータルで VM を開き、左側のメニューから Extensions + applications を選択します。

  2. [追加] を選択し、一覧から [NVIDIA GPU ドライバー拡張機能] を選択したら、[次へ] を選択します。

  3. [確認と作成] を選択してから、[作成] を選択します。 このデプロイが完了するまで最大で 30 分ほどかかる場合があります。

  4. Azure ポータルでインストールを確認するには、VM の Extensions + applications メニューに戻ります。 NvidiaGpuDriverLinux という名前の新しい拡張機能が拡張機能の一覧に表示され、[状態] の下には [プロビジョニング成功] と表示されているはずです。

  5. Azure Cloud Shellを使用してインストールを確認するには、次のコマンドを実行して拡張機能を一覧表示します。 次のように、<> プレースホルダーは実際の値に置き換えてください。

    az vm extension list --resource-group <YOUR-RESOURCE-GROUP> --vm-name <YOUR-VM-NAME> -o table
    
  6. NVIDIA モジュールでは、NVIDIA System Management Interface プログラム (別名 nvidia-smi) を使用します。

    デバイスから、お使いの Ubuntu のバージョンに応じた nvidia-smi パッケージをインストールします。 このチュートリアルでは、Ubuntu 20.04 用の nvidia-utils-515 をインストールします。 インストール時にプロンプトが表示されたら、Y を選択します。

    sudo apt install nvidia-utils-515
    

    nvidia-smi のすべてのバージョンの一覧は次のとおりです。 最初にインストールせずに nvidia-smi を実行すると、この一覧がコンソールに出力されます。

  7. インストール後、次のコマンドを実行して、インストールされていることを確認します。

    nvidia-smi
    

    このテーブルと同様に、確認テーブルが表示されます。

    NVIDIA ドライバー テーブルのスクリーンショット。

NVIDIA 拡張機能は、NVIDIA ドライバーをインストールするための簡略化された方法ですが、さらにカスタマイズが必要になる場合があります。 N シリーズ VM へのカスタム インストールについての詳細は、「Linux を実行している N シリーズ VM に NVIDIA GPU ドライバーをインストールする」を参照してください。

モジュールで GPU アクセラレーションを使用する

処理に GPU を使用するように、IoT Edge モジュールを有効にする方法はさまざまです。 1 つの方法は、デバイス上の既存のIoT Edge モジュールを GPU アクセラレータになるように構成することです。 もう 1 つの方法は、あらかじめ用意されているコンテナー モジュール (既に GPU 最適化済みの NVIDIA DIGITS のモジュールなど) を使用する方法です。 両方の方法を見てみましょう。

DeviceRequests を使用して既存のモジュールで GPU を有効にする

IoT Edge デバイスに既存のモジュールがある場合は、配置マニフェストの DeviceRequestscreateOptions を使用して構成を追加すると、モジュールの GPU 最適化が行われます。 既存のモジュールを構成するには、次の手順に従います。

  1. Azure ポータルでIoT Hubに移動し、Device management メニューの下にある Devices を選択します。

  2. IoT Edgeデバイスを選択して開きます。

  3. 上部にある [モジュールの設定] タブを選択します。

  4. IoT Edge Modules の一覧で GPU の使用を有効にするモジュールを選択します。

  5. サイド パネルが開いたら、[コンテナーの作成オプション] タブを選択します。

  6. この HostConfig JSON 文字列をコピーし、[作成オプション] ボックスに貼り付けます。

     {
         "HostConfig": {
             "DeviceRequests": 
             [
                 {
                     "Count": -1,
                     "Capabilities": [
                         [
                             "gpu"
                         ]
                     ]
                 }
             ]
         }
     }
    
  7. [更新] を選択します。

  8. [Review + create](レビュー + 作成) を選択します。 新しい HostConfig オブジェクトがモジュールの settings に表示されるようになります。

  9. を選択してを作成します。

  10. 新しい構成が動作することを確認するには、VM で次のコマンドを実行します。

    sudo docker inspect <YOUR-MODULE-NAME>
    

    コンソールの JSON 出力に、DeviceRequests に指定したパラメーターが表示されているはずです。

DeviceRequests パラメーターをより深く理解するには、ソース コード (moby/host_config.go) を参照してください。

あらかじめ用意されている NVIDIA モジュールで GPU を有効にする

NVIDIA DIGITS モジュールをIoT Edge デバイスに追加し、その環境変数を設定してモジュールに GPU を割り当ててみましょう。 この NVIDIA モジュールは既に Docker コンテナーに含まれています。

  1. IoT Hubの Devices メニューから、Azure ポータルでIoT Edge デバイスを選択します。

  2. 上部にある [モジュールの設定] タブを選択します。

  3. IoT Edgeモジュールの見出しの下にある + Add を選択し、 IoT Edge Module を選択します。

  4. IoT Edge モジュール名 フィールドに名前を指定します。

  5. [モジュールの設定] タブの [イメージ URI]nvidia/digits:6.0 フィールドに を追加します。

  6. [環境変数] タブを選択します。

  7. NVIDIA_VISIBLE_DEVICES を使用して、環境変数名 0 を追加します。 この変数は、エッジ デバイスで実行されているコンテナー化されたアプリケーションにどの GPU が表示されるかを制御します。 NVIDIA_VISIBLE_DEVICES 環境変数は、システム内の物理 GPU に対応するデバイス ID のコンマ区切りリストに設定できます。 たとえば、システムにデバイス ID が 0 と 1 の 2 つの GPU がある場合、変数を "NVIDIA_VISIBLE_DEVICES=0,1" に設定して、両方の GPU をコンテナーに表示できます。 この記事では、VM には GPU が 1 つしかないため、最初の GPU のみを使用します。

    名前 タイプ
    NVIDIA_VISIBLE_DEVICES テキスト 0
  8. [] を選択し、[] を追加します。

  9. [Review + create](レビュー + 作成) を選択します。 配置マニフェストのプロパティが表示されます。

  10. [作成] を選択して、モジュールを作成します。

  11. [更新] を選択してモジュールの一覧を更新します。 モジュールがランタイムの状態実行を示すには数分かかるため、デバイスを更新し続けます。

  12. デバイスからこのコマンドを実行して、新しい NVIDIA モジュールが存在し、実行中であることを確認します。

    iotedge list
    

    状態が running のIoT Edge デバイス上のモジュールの一覧に NVIDIA モジュールが表示されます。

    'iotedge list' コマンドの結果を示すスクリーンショット。

NVIDIA DIGITS コンテナー モジュールの詳細については、Deep Learning Digits に関するドキュメントを参照してください。

リソースをクリーンアップする

他のIoT Edgeチュートリアルに進む場合は、このチュートリアル用に作成したデバイスを使用できます。 それ以外の場合は、課金を回避するために作成したAzure リソースを削除できます。

仮想マシンと IoT ハブを新しいリソース グループに作成した場合は、そのグループを削除すると、関連付けられているすべてのリソースが削除されます。 リソース グループの内容を再確認して、残しておくべきものがないことを確認してください。 グループ全体を削除したくない場合は、リソース (仮想マシン、デバイス、GPU モジュール) を個別に削除してもかまいません。

重要

リソース グループを削除すると、元に戻すことができません。

Azure リソース グループを削除するには、次のコマンドを使用します。 リソース グループを削除するのに数分かかる場合があります。

az group delete --name <YOUR-RESOURCE-GROUP> --yes

リソース グループが削除されたことは、リソース グループの一覧を表示することによって確認できます。

az group list

次のステップ

この記事では、仮想マシンとIoT Edgeデバイスを GPU アクセラレータに設定するのに役立ちました。 同様のセットアップでアプリケーションを実行するには、Microsoft Azure を使用した NVIDIA DeepStream 開発のラーニング パスを試してください。 Learn チュートリアルでは、複数のビデオ、画像、およびオーディオ ソースを使用できる最適化されたインテリジェント ビデオ アプリケーションを開発する方法を説明します。