次の方法で共有


チュートリアル:IoT Edge 上に機械学習用の環境を設定する

適用対象: [はい] アイコン IoT Edge 1.1

重要

IoT Edge 1.1 のサポート終了日は、2022 年 12 月 13 日でした。 本製品、サービス、テクノロジ、または API のサポート内容については、Microsoft 製品のライフサイクルに関するページをご確認ください。 最新バージョンの IoT Edge への更新の詳細については、「 Update IoT Edge」を参照してください。

この記事は、開発およびデプロイ用の環境の準備に役立ちます。 最初に、必要なすべてのツールがインストールされた開発用マシンを設定します。 次に、必要なクラウド リソースを Azure に作成します。

チュートリアルのこのセクションで学習する内容は次のとおりです。

  • 開発用の仮想マシンを設定する。
  • 開発環境で使用する IoT Hub とクラウド ストレージを設定する。

前提条件

この記事は、IoT Edge 上で Azure Machine Learning を使用するためのチュートリアルのシリーズの一部です。 シリーズの各記事は、前の記事の作業に基づいています。 この記事に直接アクセスしている場合は、シリーズの最初の記事を参照してください。

開発用 VM を設定する

この手順は、通常はクラウド開発者によって実行されます。 一部のソフトウェアはデータ サイエンティストの役にも立ちます。

前提条件の多くが既に構成済みになっている Azure 仮想マシンを作成するための PowerShell スクリプトを作成しました。 作成する VM では、入れ子になった仮想化を処理できる必要があります。このため、マシン サイズとして Standard_D8s_v3 が選択されています。

開発用 VM の設定には次のものが必要です。

開発者 VM は厳密には必要ありません。すべての開発ツールをローカル コンピューターで実行できます。 ただし、作業環境を一様にするために、VM を使用することを強くお勧めします。

仮想マシンの作成と構成には約 30 分かかります。

  1. Machine Learning と IoT Edge のサンプル リポジトリを自分のローカル コンピューターにクローンまたはダウンロードします。

  2. 管理者として PowerShell を開き、コードのダウンロード先のルート ディレクトリにある \IoTEdgeAndMlSample\DevVM ディレクトリに移動します。 ソースのルート ディレクトリは、srcdir と呼びます。

    cd c:\srcdir\IoTEdgeAndMlSample\DevVM
    

    DevVM ディレクトリには、このチュートリアルを完了するための適切な Azure 仮想マシンの作成に必要なファイルが含まれています。

  3. 次のコマンドを実行してスクリプトの実行を許可します。 確認を求められたら、[すべてはい] を選択します。

    Set-ExecutionPolicy Bypass -Scope Process
    
  4. Create-AzureDevVM.ps1 を実行します。

    .\Create-AzureDevVm.ps1
    

    入力を求められたら、次の情報を指定します。

    • Azure サブスクリプション ID:ご利用のサブスクリプション ID です。ポータルの [Azure サブスクリプション] で確認できます。
    • リソース グループ名: Azure 内にある新規または既存のリソース グループの名前。
    • [場所] :仮想マシンの作成先となる Azure の場所を選択します。 たとえば、"米国西部 2" や "北ヨーロッパ" があります。 詳しくは、「Azure の場所」を参照してください。
    • [ユーザー名] : VM の管理者アカウントに覚えやすい名前を付けます。
    • パスワード:VM の管理者アカウントのパスワードを設定します。

    スクリプトが数分間実行され、その間に次のステップが実行されます。

    1. Azure PowerShell Az モジュールをインストールします。
    2. Azure にサインインするよう求められます。
    3. VM を作成するための情報を確認します。 y キーまたは Enter キーを押して続行します。
    4. リソース グループがまだ作成されていない場合は、作成します。
    5. 仮想マシンをデプロイします。
    6. VM 上で Hyper-V を有効にします。
    7. 開発に必要なソフトウェアをインストールし、サンプル リポジトリをクローンします。
    8. VM を再起動します。
    9. VM に接続するための RDP ファイルをデスクトップ上に作成します。

    VM を再起動する際にその名前を入力するよう求められた場合は、スクリプトの出力から名前をコピーできます。 VM 接続用の RDP ファイルのパスも出力で確認できます。

自動シャットダウンのスケジュールを設定する

コスト削減に役立つように、開発用 VM は自動シャットダウンのスケジュールが 1900 PST に設定された状態で作成されています。 この設定は、ご自分の場所とスケジュールに応じて更新が必要な場合があります。 シャットダウンのスケジュールを更新するには、次の手順を実施します。

  1. Azure portal で、スクリプトによって作成された VM に移動します。

  2. 左ペインのメニューの [操作][自動シャットダウン] を選択します。

  3. 必要に応じて [スケジュールされたシャットダウン][タイム ゾーン] を調整し、[保存] を選択します。

開発用 VM に接続する

これで VM を作成できたので、次はチュートリアルを完了するうえで必要なソフトウェアをインストールし終える必要があります。

  1. スクリプトによってデスクトップ上に作成された RDP ファイルをダブルクリックします。

  2. リモート接続の発行元が不明であることを知らせるダイアログが表示されます。 これは問題ないので、[接続] を選択します。

  3. VM の作成時に指定した管理者のパスワードを入力し、[OK] をクリックします。

  4. VM の証明書を受け入れるように求められます。 [はい] を選択します。

Visual Studio Code 拡張機能をインストールする

これで開発用マシンへの接続が完了したので、Visual Studio Code にいくつかの便利な拡張機能を追加して、よりスムーズな開発エクスペリエンスを実現しましょう。

  1. 開発用 VM に接続して PowerShell ウィンドウを開き、C:\source\IoTEdgeAndMlSample\DevVM ディレクトリに移動します。 このディレクトリは、VM を作成したスクリプトによって作成されたものです。

    cd C:\source\IoTEdgeAndMlSample\DevVM
    
  2. 次のコマンドを実行してスクリプトの実行を許可します。 確認を求められたら、[すべてはい] を選択します。

    Set-ExecutionPolicy Bypass -Scope Process
    
  3. Visual Studio Code 拡張機能スクリプトを実行します。

    .\Enable-CodeExtensions.ps1
    
  4. スクリプトが数分間実行され、VS code 拡張機能がインストールされます。

    • Azure IoT Edge
    • Azure IoT Hub
    • Python
    • C#
    • Docker
    • PowerShell

IoT Hub と Storage を設定する

これらの手順は、通常はクラウド開発者によって実行されます。

Azure IoT Hub は、IoT デバイスとクラウドとの間の安全な通信を処理する、あらゆる IoT アプリケーションの核です。 これは、IoT Edge の機械学習ソリューションを運用する際の主要な調整ポイントです。

  • IoT Hub は、ルートを使用して、IoT デバイスからの受信データを他のダウンストリーム サービスに転送します。 ここでは、IoT Hub のルートを利用して、デバイス データを Azure Storage に送信します。 Azure Storage にあるデバイス データは、残存耐用年数 (RUL) 分類器をトレーニングするために Azure Machine Learning によって使用されます。

  • この後のチュートリアルで、IoT Hub を使用して Azure IoT Edge デバイスを構成および管理します。

このセクションでは、スクリプトを使用して Azure IoT ハブと Azure Storage アカウントを作成します。 次に、ハブで受信したデータを Azure Storage コンテナーに転送するルートを Azure portal で構成します。 これらの手順は、完了するまでに約 10 分かかります。

  1. 開発用 VM に接続して PowerShell ウィンドウを開き、IoTHub ディレクトリに移動します。

    cd C:\source\IoTEdgeAndMlSample\IoTHub
    
  2. 作成スクリプトを実行します。 サブスクリプション ID、場所、リソース グループには、開発用 VM を作成したときと同じ値を使用します。

    .\New-HubAndStorage.ps1 -SubscriptionId <subscription id> -Location <location> -ResourceGroupName <resource group>
    
    • Azure へのサインインを要求されます。
    • スクリプトにより、ハブと Storage アカウントを作成するための情報が確認されます。 y キーまたは Enter キーを押して続行します。

このスクリプトは、実行するのに約 2 分かかります。 完了すると、スクリプトによって、IoT ハブとストレージ アカウントの名前が出力されます。

IoT Hub 内での Storage へのルートを確認する

前のセクションで実行したスクリプトでは、IoT ハブの作成処理の一環として、カスタム エンドポイントとルートも作成されています。 IoT Hub ルートは、クエリ式とエンドポイントで構成されています。 メッセージが式と一致すると、データはルートに沿って、関連付けられているエンドポイントに送信されます。 エンドポイントにできるのは、イベント ハブ、Service Bus キュー、トピックです。 この場合は、ストレージ アカウント内の BLOB コンテナーがエンドポイントです。 Azure portal を使用して、スクリプトによって作成されたルートを確認してみましょう。

  1. Azure portal を開いて、このチュートリアルで使用しているリソース グループに移動します。

  2. リソースの一覧で、スクリプトによって作成された IoT ハブを選択します。 末尾にランダムな文字が付いた名前になります (例: IotEdgeAndMlHub-jrujej6de6i7w)。

  3. 左側のウィンドウのメニューの [ハブ設定] で、[メッセージ ルーティング] を選択します。

  4. [メッセージ ルーティング] ページで [カスタム エンドポイント] タブを選択します。

  5. [ストレージ] セクションを展開します。

    IoT Hub ポータル内のカスタム エンドポイントの一覧にある turbofanDeviceStorage という名前のストレージのスクリーンショット。

    カスタム エンドポイントの一覧に turbofanDeviceStorage があることを確認します。 このエンドポイントについて、次の特性に注目してください。

    • [コンテナー名] に表示されている devicedata という名前で作成した Blob Storage コンテナーを参照します。
    • その [ファイル名形式] は、名前に「パーティション」を含みます。 この形式は、このチュートリアルで後ほど Azure Notebooks を使っておこなうファイル操作の際に、さらに便利なものとなります。
    • [状態] が正常である必要があります。
  6. [ルート] タブを選択します。

  7. turbofanDeviceDataToStorage という名前のルートを選択します。

  8. [Routes details](ルートの詳細) ページで、ルートのエンドポイントが turbofanDeviceStorage エンドポイントであることに注目してください。

    turbofanDeviceDataToStorage ルートに関する詳細を示すスクリーンショット。

  9. ルーティング クエリを見ると、true に設定されています。 この設定は、すべてのデバイス テレメトリ メッセージがこのルートに一致しており、そのためすべてのメッセージが turbofanDeviceStorage エンドポイントに送信されることを意味します。

  10. このページは編集していないので、そのまま閉じます。

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

このチュートリアルはセットの一部であり、各記事は前の記事の作業が行われたことが前提になっています。 最後のチュートリアルを完了するまで、リソースのクリーンアップはしないでください。

次のステップ

この記事では、IoT ハブを作成し、Azure Storage アカウントへのルートを構成しました。 次に、シミュレートされたデバイスのセットから IoT ハブを通じてストレージ アカウントにデータを送信します。 後のチュートリアルでは、IoT Edge デバイスおよびモジュールを構成した後、ルートを再確認し、ルーティング クエリについてもう少し詳しく確認します。

次の記事に進んで、監視対象にするシミュレートされたデバイスを作成してください。