次の方法で共有


チュートリアル: Azure Machine Learning と IoT Edge を使用したエンド ツー エンド のソリューション

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

重要

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

IoT アプリケーションは、インテリジェント クラウドとインテリジェント エッジを活用したいと考える場合が多い。 このチュートリアルでは、クラウド内の IoT デバイスから収集されたデータを使用して機械学習モデルをトレーニングし、そのモデルを IoT Edge にデプロイし、モデルを定期的に維持および調整する方法について説明します。

この一連のチュートリアルの概念はすべてのバージョンの IoT Edge に適用されますが、シナリオを試すために作成したサンプル デバイスでは IoT Edge バージョン 1.1 が実行されます。

このチュートリアルの主な目的は、機械学習を使用して、特にエッジで IoT データの処理を導入することです。 一般的な機械学習ワークフローの多くの側面に触れる一方で、このチュートリアルは機械学習の詳細な概要を意図したものではありません。 ある時点では、ユース ケース用に高度に最適化されたモデルを作成しようとはしません。IoT データ処理に実行可能なモデルを作成して使用するプロセスを説明するのに十分です。

このチュートリアルのこのセクションでは、次の内容について説明します。

  • チュートリアルの後続の部分を完了するための前提条件。
  • チュートリアルの対象ユーザー。
  • チュートリアルでシミュレートされるユース ケース。
  • ユース ケースを満たすために、チュートリアルの全体的なプロセスを実行します。

Azure サブスクリプションをお持ちでない場合は、開始する前に Azure 無料アカウントを作成してください。

[前提条件]

このチュートリアルを完了するには、リソースを作成する権限がある Azure サブスクリプションにアクセスする必要があります。 このチュートリアルで使用されるサービスの一部には、Azure の料金が発生します。 Azure サブスクリプションをまだお持ちでない場合は、 Azure 無料アカウントを使い始めることができます。

また、PowerShell がインストールされているマシンも必要です。ここで、スクリプトを実行して、開発用マシンとして Azure 仮想マシンを設定できます。

このドキュメントでは、次のツールセットを使用します。

  • データ キャプチャ用の Azure IoT ハブ

  • データの準備と機械学習の実験のためのメイン フロントエンドとしての Azure Notebooks。 サンプル データのサブセットでノートブックで Python コードを実行することは、データ準備中に反復的で対話型のターンアラウンドを迅速に行う優れた方法です。 Jupyter Notebook を使用して、コンピューティング バックエンドで大規模に実行するスクリプトを準備することもできます。

  • 大規模な機械学習と機械学習イメージ生成のバックエンドとしての Azure Machine Learning。 Jupyter Notebook で準備およびテストされたスクリプトを使用して、Azure Machine Learning バックエンドを駆動します。

  • 機械学習イメージのオフクラウド アプリケーション用の Azure IoT Edge

明らかに、利用可能な他のオプションがあります。 たとえば、特定のシナリオでは、IoT デバイスから初期トレーニング データをキャプチャするためのコードなしの代替手段として IoT Central を使用できます。

対象ユーザーとロール

この一連の記事は、IoT 開発や機械学習の経験がない開発者を対象としています。 エッジに機械学習をデプロイするには、さまざまなテクノロジを接続する方法に関する知識が必要です。 したがって、このチュートリアルでは、IoT ソリューションのためにこれらのテクノロジを結合する 1 つの方法を示す、エンドツーエンドのシナリオ全体について説明します。 実際の環境では、これらのタスクは、特殊化が異なる複数のユーザーに分散される可能性があります。 たとえば、開発者はデバイスまたはクラウド コードに重点を置き、データ サイエンティストは分析モデルを設計します。 個々の開発者がこのチュートリアルを正常に完了できるように、その理由だけでなく、何が行われているかを理解するのに十分な情報と詳細情報へのリンクを含む補足ガイダンスを提供しました。

または、さまざまな役割を持つ同僚とチームを組んでチュートリアルを一緒に実行し、完全な専門知識を持ち、チームとして物事がどのように一緒に収まるかを学ぶことができます。

どちらの場合も、読者の方向を変えるために、このチュートリアルの各記事はユーザーの役割を示します。 これらのロールには、次のものが含まれます。

  • クラウド開発 (DevOps 容量で作業するクラウド開発者を含む)
  • データ分析

ユース ケース: 予測メンテナンス

このシナリオは、2008年の予後健康管理会議(PHM08)で提示されたユース ケースに基づいています。 目標は、一連のターボファン航空機エンジンの残存耐用年数 (RUL) を予測することです。 このデータは、商用バージョンの MAPSS (Modular Aero-Propulsion システム シミュレーション) ソフトウェアである C-MAPSS を使用して生成されました。 このソフトウェアは、健康、制御、およびエンジンのパラメータを便利にシミュレートするための柔軟なターボファンエンジンシミュレーション環境を提供します。

このチュートリアルで使用するデータは、 Turbofan エンジンの劣化シミュレーション データセットから取得されます。

readme ファイルから:

試験段階のシナリオ

データ セットは、複数の多変量時系列で構成されます。 各データ セットは、さらにトレーニングとテストのサブセットに分割されます。 各時系列は異なるエンジンからのデータです。つまり、データは同じ種類のエンジンのフリートからであると見なすことができます。 各エンジンは、ユーザーには知られていない初期摩耗と製造バリエーションの異なる程度で始まります。 この摩耗および変動は正常と考えられ、すなわち、故障状態とは見なされない。 エンジンのパフォーマンスに大きな影響を与える 3 つの操作設定があります。 これらの設定もデータに含まれます。 データはセンサー ノイズで汚染されています。

エンジンは各時系列の開始時に正常に動作し、シリーズ中のある時点で障害が発生します。 トレーニングセットでは、障害の程度が増し、システムが停止するまで至ります。 テスト セットでは、システム障害が発生する前に時系列が終了します。 競合の目的は、テスト セットで障害が発生するまでの残りの運用サイクルの数、つまり、エンジンが引き続き動作する最後のサイクルの後の運用サイクルの数を予測することです。 また、テスト データの真の残存耐用年数 (RUL) 値のベクトルも提供しました。

データはコンペティション用に公開されたため、機械学習モデルを派生させるいくつかのアプローチが個別に公開されています。 例を研究することは、特定の機械学習モデルの作成に関連するプロセスと推論を理解するのに役立つことがわかりました。 例を参照してください。

GitHub ユーザー jancervenka による航空機エンジンの故障予測モデル

GitHub ユーザー hankroark によるターボファン エンジンの劣化

プロセス

次の図は、このチュートリアルで実行する大まかな手順を示しています。

プロセスステップのアーキテクチャ図

  1. トレーニング データの収集: プロセスは、トレーニング データの収集から始まります。 場合によっては、データは既に収集されており、データベースまたはデータ ファイルの形式で使用できます。 特に IoT シナリオの場合は、IoT デバイスとセンサーからデータを収集し、クラウドに格納する必要があります。

    ターボファン エンジンのコレクションがないと仮定しているため、プロジェクト ファイルには、NASA デバイス データをクラウドに送信する単純なデバイス シミュレーターが含まれています。

  2. データを準備します。 ほとんどの場合、デバイスとセンサーから収集される生データには、機械学習の準備が必要です。 この手順では、データのクリーンアップ、データの再フォーマット、または前処理を行って、機械学習がキーオフできる追加情報を挿入する必要があります。

    航空機エンジンのマシン データの場合、データ準備では、データに関する実際の観測値に基づいて、サンプル内のすべてのデータ ポイントの明示的な故障までの時間を計算する必要があります。 この情報により、機械学習アルゴリズムは、実際のセンサー データ パターンとエンジンの予想される残存寿命の間の相関関係を見つけることができます。 この手順は、ドメイン固有の手順です。

  3. 機械学習モデルを構築します。 準備されたデータに基づいて、さまざまな機械学習アルゴリズムとパラメーター化を試してモデルをトレーニングし、結果を相互に比較できるようになりました。

    この場合、テストのために、モデルによって計算された予測結果と、一連のエンジンで観察された実際の結果を比較します。 Azure Machine Learning では、モデル レジストリで作成するモデルのさまざまなイテレーションを管理できます。

  4. モデルをデプロイします。 成功基準を満たすモデルが完成したら、デプロイに移行できます。 これには、REST 呼び出しを使用してデータをフィードし、分析結果を返すことができる Web サービス アプリにモデルをラップすることが含まれます。 その後、Web サービス アプリは Docker コンテナーにパッケージ化され、クラウドまたは IoT Edge モジュールとしてデプロイできます。 この例では、IoT Edge へのデプロイに焦点を当てています。

  5. モデルを維持および調整します。 この作業は、モデルがデプロイされた後は行われません。 多くの場合、データの収集を続け、そのデータを定期的にクラウドにアップロードしたいと考えています。 その後、このデータを使用してモデルの再トレーニングと調整を行い、IoT Edge に再デプロイできます。

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

このチュートリアルは、各記事が前の記事で行われた作業に基づいて構築されるセットの一部です。 最後のチュートリアルが完了するまで、リソースのクリーンアップをお待ちください。

次のステップ

このチュートリアルは、次のセクションに分かれています。

  1. 開発用マシンと Azure サービスを設定します。
  2. 機械学習モジュールのトレーニング データを生成します。
  3. 機械学習モジュールをトレーニングしてデプロイします。
  4. 透過的なゲートウェイとして機能するように IoT Edge デバイスを構成します。
  5. IoT Edge モジュールを作成してデプロイします。
  6. IoT Edge デバイスにデータを送信します。

次の記事に進み、開発マシンを設定し、Azure リソースをプロビジョニングします。