GPU 対応 IoT モジュール Azure Stack Edge Pro GPU デバイスにデプロイする

適用対象:Yes for Pro - GPU SKUAzure Stack Edge Pro - GPUYes for Pro 2 SKUAzure Stack Edge Pro 2Yes for Pro R SKUAzure Stack Edge Pro R

Note

Linux VM に最新の IoT Edge バージョンをデプロイすることを強くお勧めします。 Azure Stack Edge 上のマネージド IoT Edge では、最新の機能と修正プログラムがない古いバージョンの IoT Edge ランタイムが使用されます。 手順については、Ubuntu VM のデプロイに関するページを参照してください。 IoT Edge を実行できるその他のサポートされている Linux ディストリビューションの詳細については、「Azure IoT Edge のサポートされるシステム」のコンテナー エンジンに関する部分を参照してください。

この記事では、Azure Stack Edge Pro GPU デバイスに GPU 対応 IoT Edge モジュールをデプロイする方法について説明します。

この記事では、次のことについて説明します。

  • GPU モジュールを実行するために Azure Stack Edge Pro を準備します。
  • Git リポジトリからサンプ ルコードをダウンロードしてインストールします。
  • ソリューションをビルドし、配置マニフェストを生成します。
  • ソリューションを Azure Stack Edge Pro デバイスにデプロイします。
  • モジュールの出力を監視します。

サンプル モジュールについて

この記事の GPU サンプル モジュールには、CPU と GPU を比較する PyTorch および TensorFlow のベンチマーク サンプル コードが含まれています。

前提条件

開始する前に、以下の項目があることを確認します:

サンプル コードの入手

  1. [Azure サンプルの Azure インテリジェント エッジ パターン] に移動します。 コードの ZIP ファイルを複製またはダウンロードします。

    Download zip file

    ZIP ファイルからファイルを解凍します。 サンプルを複製することもできます。

    git clone https://github.com/Azure-Samples/azure-intelligent-edge-patterns.git
    

モジュールをビルドおよびデプロイする

  1. Visual Studio Code で GpuReferenceModules フォルダーを開きます。

    Open GPUReferenceModules in VS Code

  2. deployment.template.json を開き、コンテナー レジストリの参照先パラメーターを特定します。 次のファイルでは、CONTAINER_REGISTRY_USERNAME、CONTAINER_REGISTRY_PASSWORD、CONTAINER_REGISTRY_NAME が使用されています。

        {
      "$schema-template": "2.0.0",
      "modulesContent": {
        "$edgeAgent": {
          "properties.desired": {
            "schemaVersion": "1.0",
            "runtime": {
              "type": "docker",
              "settings": {
                "minDockerVersion": "v1.25",
                "loggingOptions": "",
                "registryCredentials": {
                  "${CONTAINER_REGISTRY_NAME}":{
                  "username": "$CONTAINER_REGISTRY_USERNAME",
                  "password": "$CONTAINER_REGISTRY_PASSWORD",
                  "address": "${CONTAINER_REGISTRY_NAME}.azurecr.io"
                  }
                }
              }
            },
    
  3. 新しいファイルを作成します。 次のように、コンテナー レジストリ パラメーターの値を入力します (前の手順で指定した値を使用してください)。

    CONTAINER_REGISTRY_NAME=<YourContainerRegistryName>
    CONTAINER_REGISTRY_USERNAME=<YourContainerRegistryUserName>
    CONTAINER_REGISTRY_PASSWORD=<YourContainerRegistryPassword>
    

    サンプルの .env ファイルを次に示します。

    Create and save .env file

  4. SampleSolution フォルダーにファイルを .env として保存します。

  5. Docker にサインインするには、Visual Studio Code 統合ターミナルで次のコマンドを入力します。

    docker login -u <CONTAINER_REGISTRY_USERNAME> -p <CONTAINER_REGISTRY_PASSWORD> <CONTAINER_REGISTRY_NAME>
    

    Azure portal でコンテナー レジストリの [アクセス キー] セクションに移動します。 レジストリ名、パスワード、ログイン サーバーをコピーして使用します。

    Access keys in your container registry

    資格情報を指定すると、サインインに成功します。

    Successful sign in

  6. Azure コンテナー レジストリにイメージをプッシュします。 VS Code Explorer で、deployment.template.json ファイルを選択して右クリックし、[IoT Edge ソリューションのビルドとプッシュ] を選択します。

    Build and push IoT Edge solution

    Python と Python の拡張機能がインストールされていない場合は、ソリューションをビルドしてプッシュするとインストールされます。 ただし、ビルド時間は長くなります。

    この手順が完了すると、コンテナー レジストリにモジュールが表示されます。

    Module in container registry

  7. 配置マニフェストを作成するには、deployment.template.json ファイルを右クリックし、[IoT Edge 配置マニフェストの生成] を選択します。

    Generate IoT Edge deployment manifest

    配置マニフェストが生成されたパスが通知されます。 マニフェストは、config フォルダーに生成された deployment.amd64.json ファイルです。

  8. config フォルダーで deployment.amd64.json ファイルを選択し、[単一デバイスのデプロイの作成] をクリックします。 deployment.template.json ファイルは使用しないでください。

    Create deployment for single device

    [出力] ウィンドウに、デプロイに成功したことを示すメッセージが表示されます。

    Deployment succeeded in Output

モジュールを監視する

  1. VS Code コマンド パレットで、[Azure IoT Hub: Select IoT Hub]\(Azure IoT Hub: IoT ハブの選択\) を実行します。

  2. 構成する IoT Edge デバイスが含まれているサブスクリプションと IoT ハブを選択します。 この場合、Azure Stack Edge Pro デバイスのデプロイに使用するサブスクリプションを選択し、Azure Stack Edge Pro デバイス用に作成された IoT Edge デバイスを選択します。 これは、前の手順で Azure portal からコンピューティングを構成した場合に発生します。

  3. VS Code エクスプローラーで、[Azure IoT Hub] セクションを展開します。 [デバイス] に、Azure Stack Edge Pro デバイスに対応する IoT Edge デバイスが表示されます。

    1. そのデバイスを選択して右クリックし、[組み込みイベント エンドポイントの監視を開始する] を選択します。

      Start monitoring

    2. [デバイス] > [モジュール] の順にアクセスして、GPU モジュールが実行中であることを確認します。

      Module in IoT Hub

    3. VS Code ターミナルでも Azure Stack Edge Pro デバイスの監視出力に IoT Hub イベントが含まれていることを確認します。

      Monitoring output

      CPU よりも GPU の方が、同じ操作セット (5000 回の図形変換) の実行にかかった時間がずっと短いことがわかります。

次のステップ