GPU 対応 IoT モジュール Azure Stack Edge Pro GPU デバイスにデプロイする
適用対象: Azure Stack Edge Pro - GPUAzure Stack Edge Pro 2Azure Stack Edge Pro R
注意
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 のベンチマーク サンプル コードが含まれています。
前提条件
開始する前に、以下の項目があることを確認します:
- GPU 対応の 1 ノード Azure Stack Edge Pro デバイスにアクセスできること。 このデバイスと Azure のリソースがアクティブになっていること。 デバイスをアクティブにするに関する記事を参照してください。
- このデバイスでコンピューティングを構成済みであること。 「チュートリアル: Azure Stack Edge Pro デバイスでコンピューティングを構成する」の手順に従います。
- Azure Container Registry (ACR)。 [アクセス キー] ブレードに移動し、ACR ログイン サーバー、ユーザー名、パスワードをメモしておきます。 詳細については、「クイックスタート: Azure portal を使用したプライベート コンテナー レジストリの作成」を参照してください。
- Windows クライアント上の次の開発リソース:
- Azure CLI 2.0 以降
- Docker CE。 ソフトウェアをダウンロードしてインストールするには、アカウントの作成が必要になる場合があります。
- Visual Studio Code
- Visual Studio Code 用の Azure IoT Edge 拡張機能
- Visual Studio Code 用の Python 拡張機能
- Python 3
- Python パッケージをインストールするための Pip (通常は、Python のインストールに含まれています)
サンプル コードの入手
[Azure サンプルの Azure インテリジェント エッジ パターン] に移動します。 コードの ZIP ファイルを複製またはダウンロードします。
ZIP ファイルからファイルを解凍します。 サンプルを複製することもできます。
git clone https://github.com/Azure-Samples/azure-intelligent-edge-patterns.git
モジュールをビルドおよびデプロイする
Visual Studio Code で GpuReferenceModules フォルダーを開きます。
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" } } } },
新しいファイルを作成します。 次のように、コンテナー レジストリ パラメーターの値を入力します (前の手順で指定した値を使用してください)。
CONTAINER_REGISTRY_NAME=<YourContainerRegistryName> CONTAINER_REGISTRY_USERNAME=<YourContainerRegistryUserName> CONTAINER_REGISTRY_PASSWORD=<YourContainerRegistryPassword>
サンプルの .env ファイルを次に示します。
SampleSolution フォルダーにファイルを .env として保存します。
Docker にサインインするには、Visual Studio Code 統合ターミナルで次のコマンドを入力します。
docker login -u <CONTAINER_REGISTRY_USERNAME> -p <CONTAINER_REGISTRY_PASSWORD> <CONTAINER_REGISTRY_NAME>
Azure portal でコンテナー レジストリの [アクセス キー] セクションに移動します。 レジストリ名、パスワード、ログイン サーバーをコピーして使用します。
資格情報を指定すると、サインインに成功します。
Azure コンテナー レジストリにイメージをプッシュします。 VS Code Explorer で、deployment.template.json ファイルを選択して右クリックし、[IoT Edge ソリューションのビルドとプッシュ] を選択します。
Python と Python の拡張機能がインストールされていない場合は、ソリューションをビルドしてプッシュするとインストールされます。 ただし、ビルド時間は長くなります。
この手順が完了すると、コンテナー レジストリにモジュールが表示されます。
配置マニフェストを作成するには、deployment.template.json ファイルを右クリックし、[IoT Edge 配置マニフェストの生成] を選択します。
配置マニフェストが生成されたパスが通知されます。 マニフェストは、config フォルダーに生成された
deployment.amd64.json
ファイルです。config フォルダーで deployment.amd64.json ファイルを選択し、[単一デバイスのデプロイの作成] をクリックします。 deployment.template.json ファイルは使用しないでください。
[出力] ウィンドウに、デプロイに成功したことを示すメッセージが表示されます。
モジュールを監視する
VS Code コマンド パレットで、[Azure IoT Hub: Select IoT Hub]\(Azure IoT Hub: IoT ハブの選択\) を実行します。
構成する IoT Edge デバイスが含まれているサブスクリプションと IoT ハブを選択します。 この場合、Azure Stack Edge Pro デバイスのデプロイに使用するサブスクリプションを選択し、Azure Stack Edge Pro デバイス用に作成された IoT Edge デバイスを選択します。 これは、前の手順で Azure portal からコンピューティングを構成した場合に発生します。
VS Code エクスプローラーで、[Azure IoT Hub] セクションを展開します。 [デバイス] に、Azure Stack Edge Pro デバイスに対応する IoT Edge デバイスが表示されます。
そのデバイスを選択して右クリックし、[組み込みイベント エンドポイントの監視を開始する] を選択します。
[デバイス] > [モジュール] の順にアクセスして、GPU モジュールが実行中であることを確認します。
VS Code ターミナルでも Azure Stack Edge Pro デバイスの監視出力に IoT Hub イベントが含まれていることを確認します。
CPU よりも GPU の方が、同じ操作セット (5000 回の図形変換) の実行にかかった時間がずっと短いことがわかります。
次のステップ
- モジュールを使用するために GPU を構成する方法を確認します。