エッジ上での製造用エンドツーエンドのコンピューター ビジョン

Azure Data Factory
Azure IoT Edge
Azure IoT Hub
Azure Machine Learning
Azure Pipelines

このアーキテクチャ例は、製造業におけるモノのインターネット (IoT) コンピューター ビジョンのエンドツーエンド アプローチを示しています。

アーキテクチャ

Diagram showing the end-to-end approach to computer vision from the edge to the cloud and back.

このアーキテクチャの Visio ファイルをダウンロードします。

データフロー

  1. IoT Edge カスタム モジュールを使って、ライブ ビデオ ストリームをキャプチャし、フレームに分割し、画像データに対して推論を実行して、インシデントが発生したかどうかを判断します。
  2. カスタム モジュールでは、Azure Storage SDK メソッドまたは BLOB API を使用して、未加工のビデオ ファイルを Azure Storage にアップロードします。これは未加工のメディア ストアとして機能します。
  3. カスタム モジュールから Azure IoT Hub に推論結果とメタデータを送信します。これは双方向通信の中央メッセージ ハブとして機能します。
  4. Azure Logic Apps は、インシデント イベントに関するメッセージの IoT Hub を監視します。 Azure Logic Apps は、推論の結果とメタデータをストレージの Microsoft Dataverse にルーティングします。
  5. インシデントが発生すると、Azure Logic Apps は SMS と電子メール通知をサイト エンジニアに送信します。 サイト エンジニアは Power Apps に基づいてモバイル アプリを使い、インシデントを確認して解決します。
  6. Power Apps は、BLOB ストレージから推論の結果とメタデータを Dataverse から取得し、生のビデオ ファイルをプルして、インシデントに関する関連情報を表示します。 Power Apps は、サイト エンジニアが用意したインシデント解決を使って Dataverse を更新します。 この手順は、モデルの再トレーニングのために、人間参加型検証として機能します。
  7. Azure Data Factory は、未加工のビデオ ファイルを未加工メディア ストアからフェッチし、対応する推論結果とメタデータを Dataverse から取得するデータ オーケストレーターです。
  8. Data Factory は、未加工のビデオ ファイルとメタデータを Azure Data Lake に格納します。これは、監査目的のビデオ アーカイブとして機能します。
  9. Data Factory は、未加工のビデオ ファイルをフレームに分割し、推論の結果をラベルに変換し、データを Blob Storage にアップロードします。これは ML データ ストアとして機能します。
  10. モデル コードを変更すると、Azure Pipelines モデル オーケストレーター パイプラインが自動的にトリガーされます。オペレーターは手動でトリガーすることもできます。 また、コードを変更すると、Azure Machine Learning で ML モデルのトレーニングと検証のプロセスが開始されます。
  11. Azure Machine Learning でのモデルのトレーニングは、ML データ ストアからのデータを検証し、必要なデータ セットを Azure Premium Blob Storage にコピーすることから始まります。 このパフォーマンス層が、迅速なモデル トレーニングのためにデータ キャッシュを提供します。
  12. Azure Machine Learning は、Premium データ キャッシュ内のデータセットを使用してモデルをトレーニングし、トレーニング済みのモデルのパフォーマンスを検証し、新しくトレーニングしたモデルに対してスコアを付け、モデルを Azure Machine Learning レジストリに登録します。
  13. Azure Pipelines モデル オーケストレーターは、新しくトレーニングされた ML モデルのパフォーマンスをレビューし、以前のモデルよりも優れているかどうかを判断します。 新しいモデルの方が優れている場合は、パイプラインはそのモデルを Azure Machine Learning からダウンロードし、新しいバージョンの ML 推論モジュールを構築して Azure Container Registry で公開します。
  14. 新しい ML 推論モジュールの準備ができると、Azure Pipelines は Container Registry からモジュール コンテナーを IoT Hub の IoT Edge モジュールにデプロイします。
  15. IoT Hub は、新しい ML 推論モジュールを使用して IoT Edge デバイスを更新します。

Components

  • Azure IoT Edge サービスは、デバイス データをローカルで分析して、クラウドに送信するデータを減らし、イベントに迅速に対応し、低速の接続状態で動作します。 IoT Edge ML モジュールでは、ストリーミング ビデオ データから実用的な分析情報を抽出できます。
  • Azure IoT Hub は、何百万もの IoT デバイスとクラウドベースのバックエンド間で、セキュリティで保護された信頼性のある双方向通信を実現する、管理されたサービスです。 IoT Hub は、デバイスごとの認証、メッセージのルーティング、Azure サービスとの統合、IoT デバイスを制御し構成するための管理機能を提供します。
  • Azure Logic Apps は、アプリ、データ、サービス、システムを統合する自動ワークフローを作成および実行するためのサーバーレス クラウド サービスです。 開発者は、ビジュアル デザイナーを使って一般的なタスク ワークフローをスケジュールし、調整することができます。 Logic Apps には、多くの一般的なクラウド サービス、オンプレミス製品、またはその他のサービスとしてのソフトウェア (SaaS) アプリケーション用のコネクタがあります。 このソリューションでは、Logic Apps を使って、サイト エンジニアに SMS やメールでアラートを送信する自動通知ワークフローを実行します。
  • Power Apps はデータ プラットフォームであり、アプリ、サービス、コネクタ、コネクタで構成されるスイートです。 RAD (Rapid Application Development) 環境として機能します。 基になるデータ プラットフォームは Microsoft Dataverse です。
  • Dataverse は、Power Apps 用のクラウドベースのストレージ プラットフォームです。 Dataverse は人間参加型通知をサポートします。また、MLOps データ パイプラインに関連付けられたメタデータを格納します。
  • Azure Blob Storage は、非構造化データ用のスケーラブルでセキュリティで保護されたオブジェクト ストレージです。 アーカイブ、データ レイク、ハイパフォーマンス コンピューティング、機械学習、クラウドネイティブ ワークロードに使用できます。 このソリューションでは、BLOB ストレージに、ML データストア用のローカル データストアと ML モデルのトレーニング用の Premium データ キャッシュが用意されています。 Premium レベルの Blob Storage は、この例の人間参加型ビデオ ラベル付けのように、高速な応答時間と高いトランザクション レートが必要なワークロードに適しています。
  • Data Lake Storage は、高パフォーマンスの分析ワークロード用の非常にスケーラブルで安全なストレージ サービスです。 通常、データは、構造化データ、半構造化データ、または非構造化データを含む複数の異種ソースから取得されます。 Azure Data Lake Storage Gen2 は、Azure Data Lake Storage Gen1 の機能と Blob Storage を組み合わせ、ファイル システムのセマンティクス、ファイル レベルのセキュリティ、スケールを提供します。 また、Blob Storage の階層型ストレージ、高可用性、ディザスター リカバリーの機能も提供されます。 このソリューションでは、Data Lake Store に未加工のビデオ ファイルとメタデータ用のアーカイブ ビデオ ストアが用意されています。
  • Azure Data Factory は、データ統合と変換ワークフロー向けのハイブリッド、フル マネージドのサーバーレス ソリューションです。 コードなしの UI と使いやすい監視パネルが用意されています。 Azure Data Factory は、データ移動にパイプラインを使用します。 抽出、変換、読み込み (ETL) や抽出、読み込み、変換 (ELT) などのさまざまな変換タスクを実行するために、マッピング データ フローを使用します。 この例では、Data Factory で ETL パイプライン内のデータを推論データに調整し、再トレーニング目的で保存します。
  • Azure Machine Learning は、モデルをより迅速に構築し、デプロイするためのエンタープライズレベルの機械学習サービスです。 このサービスは、ローコード デザイナー、自動機械学習、さまざまな IDE をサポートするホストされた Jupyter Notebook 環境などと共に、あらゆるスキル レベルのユーザーに提供されます。
  • Azure PipelinesAzure DevOps チームベースの開発者サービスの一部であり、継続的インテグレーション (CI) と継続的配置 (CD) パイプラインを作成します。 この例では、Azure Pipelines モデル オーケストレーターを使って ML コードの検証、サーバーレス タスク パイプラインのトリガー、ML モデルの比較、推論コンテナーの構築を行います。
  • Container Registry は、コンテナー化された ML モデルを含む Docker コンテナー イメージを構築、格納、管理する Docker レジストリを作成および管理します。
  • Azure Monitor は、Azure リソースからテレメトリを収集して、チームが事前対応的に問題を特定し、パフォーマンスと信頼性を最大化できるようにします。

代替

データ パイプラインを使用してビデオ ストリームをイメージ フレームに分割する代わりに、Azure Blob Storage モジュールを IoT Edge デバイスに配置することができます。 それを受けて、推論モジュールは、推論された画像フレームをエッジ デバイスのストレージ モジュールにアップロードします。 ストレージ モジュールは、フレームを ML データ ストアに直接アップロードするタイミングを決定します。 この方法の利点は、データ パイプラインから 1 段階削除されることです。 トレードオフは、エッジ デバイスが Azure Blob Storage と密に結合されることです。

モデル オーケストレーションには、Azure Pipelines または Azure Data Factory のいずれかを使用できます。

  • Azure Pipelines の利点は、ML モデル コードとの密接な関係です。 CI/CD を使ったコード変更で、トレーニング パイプラインを簡単にトリガーできます。
  • Data Factory の利点は、各パイプラインが必要なコンピューティング リソースをプロビジョニングできることです。 Data Factory は ML トレーニングを実行するために Azure Pipelines エージェントを保持しないので、通常の CI/CD フローが輻輳状態になる可能性があります。

シナリオの詳細

完全に自動化されたスマート ファクトリは、人工知能 (AI) と機械学習 (ML) を使用して、データの分析、システムの実行、および時間の経過に伴うプロセスの改善を行います。

この例では、カメラから Azure IoT Edge デバイスに画像を送信し、ML モデルを実行します。 このモデルで推論を計算し、さらに処理するために、実用的な出力をクラウドに送信します。 人間の介入は、ML モデルがキャプチャするインテリジェンスの一部です。 ML プロセスは、ML アルゴリズムのトレーニング、テスト、調整、検証の継続的なサイクルです。

考えられるユース ケース

製造プロセスでは、安全性と品質保証のアプリケーションで IoT コンピューター ビジョンを使います。 IoT コンピューター ビジョン システムを使うと、次のことができます。

  • 適切なラベル付けなど、製造ガイドラインに確実に準拠する。
  • 表面の凹凸など、製造上の欠陥を特定する。
  • 建物や領域の入り口を監視することでセキュリティを拡張する。
  • 個人用保護装置 (PPE) の使用状況やその他の安全対策を検出することで、ワーカーの安全を確保する。

考慮事項

以降の考慮事項には、ワークロードの品質向上に使用できる一連の基本原則である Azure "Well-Architected Framework" の要素が組み込まれています。 詳細については、「Microsoft Azure Well-Architected Framework」を参照してください。

可用性

ML ベースのアプリケーションには、通常、トレーニングと処理のためにそれぞれ 1 つのリソース セットが必要です。 トレーニング リソースは実際の運用環境の要求によって直接操作されることはないので、一般に高可用性は必要ありません。 要求を処理するために必要なリソースには、高可用性が必要です。

Operations

このソリューションは次の 3 つの運用領域に分かれています。

  • "IoT 運用" の場合、エッジ デバイス上の ML モデルを使って、接続されたカメラのリアルタイム画像を使ってビデオ フレームを推論します。 また、エッジ デバイスはクラウド ストレージにキャッシュされたビデオ ストリームを送信し、監査とモデルの再トレーニングに使います。 ML の再トレーニングが完了したら、Azure IoT Hub は、新しい ML 推論モジュールを使用してエッジ デバイスを更新します。

  • MLOps の場合、モデルのトレーニング、テスト、デプロイ操作を調整するために DevOps プラクティスを使います。 MLOps のライフサイクル管理では、複雑な意思決定のために ML モデルを使うプロセス、またはモデルの "運用化" を自動化します。 MLOps の鍵となるのは、ML モデルを構築、トレーニング、評価、デプロイするチーム間で緊密に連携することです。

  • "人間参加型" 運用の場合、自動化の特定の手順で介入するように人間に通知します。 人間参加型トランザクションでは、ワーカーは機械学習予測の結果を確認して評価します。 人間の介入は、ML モデルがキャプチャするインテリジェンスの一部となり、モデルの検証に役立ちます。

    次の人間の役割は、このソリューションの一部です。

    • "サイト エンジニア" は、Logic Apps から送信されたインシデント通知を受信し、ML モデルの結果または予測を手動で検証します。 たとえば、サイト エンジニアはモデルの予測に失敗したバルブを調べることができます。

    • "データ ラベラー" は、再トレーニングのためにデータ セットにラベルを付け、エンドツーエンド ソリューションのループを仕上げます。 データ ラベル付けプロセスは、画像データの場合に、アルゴリズムを使って信頼性の高いモデルをトレーニングする最初の手順として特に重要です。 この例では、Azure Data Factory を使ってビデオ フレームを陽性グループと擬陽性グループに整理しています。これにより、データ ラベラーの作業が簡単になります。

    • "データ サイエンティスト" は、ラベルが付けられたデータ セットを使用して、適切な実際の予測を行うためのアルゴリズムをトレーニングします。 データ サイエンティストは、CI プロセスで MLOps と共に GitHub Actions または Azure Pipelines を使い、モデルを自動的にトレーニングおよび検証します。 トレーニングは、手動でトリガーするか、新しいトレーニング スクリプトまたはデータをチェックインすることで自動的にトリガーすることができます。 データ サイエンティストは、自動的にモデルを登録、デプロイ、管理できる Azure Machine Learning ワークスペースで作業します。

    • "IoT エンジニア" は、Azure Pipelines を使ってコンテナー内の IoT Edge モジュールを Container Registry に公開します。 エンジニアは、CD パイプラインを使うことで、オンデマンドでインフラストラクチャをデプロイおよびスケールできます。

    • "セキュリティ監査担当者" は、モデルの予測に関する疑問が生じた場合、アーカイブされたビデオ ストリームをレビューして異常を検出し、コンプライアンスを評価し、結果を確認することができます。

    このソリューションでは、IoT Hub を使ってカメラのテレメトリを取り込み、Azure Monitor にメトリックを送信するので、サイト エンジニアは調査とトラブルシューティングを行うことができます。 Azure Machine Learning によって監視メトリックとモデル テレメトリが Azure Monitor に送信され、IoT エンジニアとデータ サイエンティストは運用を最適化できます。

パフォーマンス

IoT デバイスのメモリと処理能力は限られているので、デバイスに送信するモデル コンテナーのサイズを制限することが重要です。 モデルの推論を実行し、許容時間内で結果を生成できる IoT デバイスを使ってください。

トレーニング モデルのパフォーマンスを最適化するために、このアーキテクチャの例では、Azure Premium Blob Storage を使用します。 このパフォーマンス レベルは、短時間の応答時間と、この人間参加型のビデオ ラベル付けシナリオのような高いトランザクション レートを必要とするワークロード向けに設計されています。

パフォーマンスに関する考慮事項は、データ インジェスト パイプラインにも適用されます。 Data Factory を使ってパフォーマンスとコスト効率が高いソリューションを実現することで、データ移動を最大化します。

スケーラビリティ

このソリューションで使われるほとんどのコンポーネントは、自動スケールするマネージド サービスです。

IoT アプリケーションのスケーラビリティは、IoT Hub クォータとスロットリングによって異なります。 次の要素を検討する必要があります。

  • IoT Hub に送信されるメッセージの日単位の最大クォータ。
  • IoT Hub インスタンスで接続されたデバイスのクォータ。
  • 取り込みと処理のスループット。

ML では、スケーラビリティとは、大規模なデータセットに対してモデルをトレーニングするために使用されるスケールアウト クラスターを指します。 スケーラビリティにより、ML モデルは、そのモデルを使用するアプリケーションの需要を満たすこともできます。 これらのニーズを満たすには、CPU とグラフィックス プロセッシング ユニット (GPU) 対応ノードのスケールアウトを ML クラスターで実現する必要があります。

スケーラブルなソリューションの設計に関する一般的なガイダンスについては、Azure アーキテクチャ センターの「パフォーマンス効率のチェックリスト」を参照してください。

セキュリティ

セキュリティは、重要なデータやシステムの意図的な攻撃や悪用に対する保証を提供します。 詳細については、「セキュリティの重要な要素の概要」を参照してください。

Dataverse や他の Azure サービスのアクセス管理を使うと、承認されたユーザーのみが環境、データ、レポートにアクセスできるように確保できます。 このソリューションでは、Azure Key Vault を使用してパスワードとシークレットを管理します。 Microsoft Azure Storage は、カスタマー マネージド キーを使用して暗号化されます。

セキュリティで保護された IoT ソリューションの設計に関する一般的なガイダンスは、「Azure のセキュリティ ドキュメント」と「Azure IoT 参照アーキテクチャ」を参照してください。

コスト最適化

コストの最適化とは、不要な費用を削減し、運用効率を向上させる方法を検討することです。 詳しくは、コスト最適化の柱の概要に関する記事をご覧ください。

一般的に、コストを見積もるには、Azure 料金計算ツールを使用します。 その他の考慮事項については、「コストの最適化」を参照してください。

Azure Machine Learning では、Container Registry、Azure Storage、Azure Key Vault の各サービスもデプロイされます。これには、追加の料金が発生します。 詳細については、「Azure Machine Learning のしくみ: アーキテクチャと概念」を参照してください。

Azure Machine Learning の価格には、クラウドでモデルをトレーニングするために使われる仮想マシン (VM) の料金が含まれています。 Azure リージョンごとの Azure Machine Learning と VM の使用可否については、「リージョン別の利用可能な製品」を参照してください。

共同作成者

この記事は、Microsoft によって保守されています。 当初の寄稿者は以下のとおりです。

プリンシパル作成者:

  • Wilson Lee | プリンシパル ソフトウェア エンジニア

次のステップ