機械学習の推論を実行する - AWS IoT Greengrass

機械学習の推論を実行する

AWS IoT Greengrass で、クラウドトレーニング済みモデルを使用し、ローカルに生成されたデータに対して、エッジデバイスに機械学習 (ML) の推論を実行できます。ローカル推論の実行により低レイテンシーとコスト節約のメリットを得ながら、モデルのトレーニングと複雑な処理にクラウドコンピューティングの処理能力を活用できます。

AWS IoT Greengrass は、推論をより効率的に実行するために必要な手順を作成します。推論モデルをどこでもトレーニングし、機械学習コンポーネントとしてローカルにデプロイできます。例えば、Amazon SageMaker で深層学習モデルまたは Amazon Lookout for Vision でコンピュータビジョンモデルを構築してトレーニングできます。次に、コンポーネントでこれらのモデルをアーティファクトとして使用してコアデバイスに推論を実行するため、これらのモデルを Amazon S3 バケットに保存できます。 

AWS IoT Greengrass ML 推論のしくみ

AWS は、デバイスに機械学習の推論を実行するワンステップデプロイの作成に使用できる機械学習コンポーネントを提供します。これらのコンポーネントをテンプレートとしても使用し、お客様の特定の要件を満たすカスタムコンポーネントを作成できます。

AWS は、次の機械学習コンポーネントのカテゴリを示します。

  • モデルコンポーネント - Greengrass アーティファクトとして機械学習モデルが含まれます。

  • ランタイムコンポーネント - 機械学習フレームワークとその従属関係を Greengrass コアデバイスにインストールするスクリプトが含まれます。

  • 推論コンポーネント - 推論コードが含まれ、機械学習フレームワークをインストールして事前学習済みの機械学習モデルをダウンロードするためのコンポーネント従属関係が含まれます。

機械学習の推論を実行するために作成する各デプロイは、推論アプリケーションの実行、機械学習フレームワークのインストール、機械学習モデルのダウンロードをするコンポーネントが少なくとも 1 つ構成されています。AWS が提供するコンポーネントでサンプル推論を実行するには、推論コンポーネントをコアデバイスにデプロイします。コアデバイスは、対応するモデルとランタイムコンポーネントを従属関係として、自動的に含めます。デプロイをカスタマイズするには、カスタムモデルコンポーネントでサンプルモデルコンポーネントをプラグインまたはスワップアウトしたり、テンプレートとして AWS が提供するコンポーネントにコンポーネントレシピを使用して独自のカスタム推論、モデル、ランタイムコンポーネントを作成したりできます。

カスタムコンポーネントを使用して機械学習の推論を実行するには、次の手順を実行します。

  1. モデルコンポーネントを作成します。このコンポーネントには、推論の実行に使用する機械学習モデルが含まれています。AWS は、サンプルの事前学習済み DLR と TensorFlow Lite モデルのサンプルを提供します。カスタムモデルを使用するには、独自のモデルコンポーネントを作成します。

  2. ランタイムコンポーネントを作成します。このコンポーネントには、モデルの機械学習ランタイムをインストールするために必要なスクリプトが含まれています。AWS は、深層学習ランタイム (DLR) と TensorFlow Lite のサンプルランタイムコンポーネントを提供します。カスタムモデルと推論コードで他のランタイムを使用するには、独自のランタイムコンポーネントを作成します。

  3. 推論コンポーネントを作成します。このコンポーネントには、推論コードが含まれており、モデルとランタイムコンポーネントが従属関係として含まれます。AWS は、DLR と TensorFlow Lite を使用してイメージ分類とオブジェクト検出にサンプル推論コンポーネントを提供します。他のタイプの推論を実行したり、カスタムモデルやランタイムを使用したりするには、独自の推論コンポーネントを作成します。

  4. 推論コンポーネントをデプロイします。このコンポーネントをデプロイするとき、AWS IoT Greengrass はモデルとランタイムコンポーネントの従属関係を自動的にデプロイもします。

AWS が提供するコンポーネントの使用を開始するには、「チュートリアル: TensorFlow Lite を使用したサンプルイメージ分類推論の実行」を参照してください。

カスタム機械学習コンポーネントの作成方法については、「機械学習コンポーネントのカスタマイズ」を参照してください。

AWS IoT Greengrass バージョン 2 との相違点

AWS IoT Greengrass は、モデル、ランタイム、推論コードなど、機械学習の機能ユニットをコンポーネントに統合し、機械学習ランタイムのインストール、トレーニング済モデルのダウンロード、デバイスに推論を実行するため、ワンステッププロセスを使用できるようにします。

AWS が提供する機械学習コンポーネントを使用することにより、サンプル推論コードと事前トレーニング済みモデルで機械学習の推論の実行を開始できる柔軟性が得られます。カスタムモデルコンポーネントをプラグインして、AWS が提供する推論とランタイムコンポーネントと一緒に独自のカスタムトレーニング済モデルを使用できます。完全にカスタマイズされた機械学習ソリューションの場合、パブリックコンポーネントをテンプレートとして使用してカスタムコンポーネントを作成し、任意のランタイム、モデル、推論タイプを使用できます。

要件

機械学習コンポーネントを作成して使用するには、次のものが必要になります。

  • Greengrass コアデバイス。アカウントをお持ちでない場合は、「チュートリアル: AWS IoT Greengrass V2 の開始方法」を参照してください。

  • AWS が提供するサンプル機械学習コンポーネントを使用するために最低 500 MB のローカルのストレージ容量。

サポートされているモデルソース

AWS IoT Greengrass は、Amazon S3 に保存されるカスタムトレーニング済機械学習モデルの使用をサポートしています。Amazon SageMaker のエッジパッケージングジョブを使用して、SageMaker Neo コンパイル型モデルのモデルコンポーネントを直接作成することもできます。SageMaker Edge Manager を AWS IoT Greengrass と使用する方法の情報については、「Greengrass コアデバイスで Amazon SageMaker Edge Manager を使用」を参照してください。Amazon Lookout for Vision のモデルパッケージングジョブを使用して、Lookout for Vision モデルのモデルコンポーネントを作成することもできます。Lookout for Vision を AWS IoT Greengrass と使用する方法の詳細については、「Greengrass コアデバイスのAmazon Lookout for Vision を使用」を参照してください。

モデルを含む S3 バケットは、次の要件を満たしている必要があります:

  • SSE-C を使用して暗号化してはなりません。サーバー側の暗号化を使用するバケットの場合、AWS IoT Greengrass 機械学習の推論は現在、SSE-S3 または SSE-KMS 暗号化オプションのみをサポートしています。サーバー側の暗号化の詳細については、「Amazon Simple Storage Service ユーザーガイド」の「サーバー側の暗号化を使用したデータ保護」を参照してください。

  • それらの名前にピリオド (.) を含めることはできません。詳細については、「Amazon Simple Storage Service ユーザーガイド」のバケット命名規則で、SSL で仮想ホスト型バケットの使用に関するルールを参照してください。

  • モデルソースを保存する S3 バケットは、機械学習コンポーネントと同じ AWS アカウント と AWS リージョン にある必要があります。

  • AWS IoT Greengrass はモデルソースに対する read 許可が必要になります。AWS IoT Greengrass に対して S3 バケットへのアクセスを有効化するには、Greengrass デバイスのロールs3:GetObject アクションを許可する必要があります。デバイスロールの詳細については、「コアデバイスが AWS サービスを操作できるように認証する」を参照してください。

サポートされている機械学習ランタイム

AWS IoT Greengrass は、カスタムトレーニング済モデルで機械学習の推論を実行するため、カスタムコンポーネントを作成して、任意の機械学習ランタイムを使用できます。カスタム機械学習コンポーネントの作成方法については、「機械学習コンポーネントのカスタマイズ」を参照してください。

機械学習を始めるプロセスの効率を向上させるため、AWS IoT Greengrass は、次の機械学習ランタイムを使用する推論、モデル、ランタイムコンポーネントのサンプルを示します。

AWS が提供する機械学習コンポーネント

次の表では、機械学習に使用される AWS が提供するコンポーネントを一覧表示します。

注記

AWS が提供する複数のコンポーネントは、Greengrass nucleus の特定マイナーバージョンに依存します。この従属関係により、Greengrass nucleus を新しいマイナーバージョンに更新するとき、これらのコンポーネントを更新する必要があります。各コンポーネントが依存する nucleus の特定バージョンの情報については、対応するコンポーネントのトピックを参照してください。nucleus の更新の詳細については、「AWS IoT Greengrass コアソフトウェア (OTA) の更新」を参照してください。

コンポーネント 説明 nucleus に依存 コンポーネントタイプ サポートされる OS オープンソース
Lookout for Vision エッジエージェント Amazon Lookout for Vision ランタイムを Greengrass コアデバイスにデプロイし、コンピュータビジョンを使用して産業製品の欠陥を検出できるようにします。 なし ジェネリック Linux なし
SageMaker Edge Manager Amazon SageMaker Edge Manager エージェントを Greengrass コアデバイスにデプロイします。 はい ジェネリック Linux、Windows なし
DLR イメージ分類 DLR イメージ分類モデルストアと DLR ランタイムコンポーネントを従属関係として使用し、DLR をインストール、サンプルイメージ分類モデルをダウンロード、サポートされているデバイスにイメージ分類推論を実行する推論コンポーネント。 はい ジェネリック Linux、Windows なし
DLR オブジェクトの検出 DLR オブジェクト検知モデルストアと DLR ランタイムコンポーネントを従属関係として使用し、DLR をインストール、サンプルオブジェクト検知モデルをダウンロード、サポートされているデバイスにオブジェクト検知推論を実行する推論コンポーネント。 はい ジェネリック Linux、Windows なし
DLR イメージ分類モデルストア Greengrass アーティファクトとしてサンプル ResNet-50 イメージ分類モデルを含むモデルコンポーネント。 はい ジェネリック Linux、Windows なし
DLR オブジェクト検出モデルストア Greengrass アーティファクトとしてサンプル YOLOv3 オブジェクト検出モデルを含むモデルコンポーネント。 はい ジェネリック Linux、Windows なし
DLR ランタイム DLR とその従属関係を Greengrass コアデバイスにインストールするために使用されるインストールスクリプトを含むランタイムコンポーネント。 はい ジェネリック Linux、Windows なし
TensorFlow Lite イメージ分類 TensorFlow Lite イメージ分類モデルストアと TensorFlow Lite ランタイムコンポーネントを従属関係として使用し、TensorFlow Lite をインストール、サンプルイメージ分類モデルをダウンロード、サポートされているデバイスにイメージ分類推論を実行する推論コンポーネント。 はい ジェネリック Linux、Windows なし
TensorFlow Lite オブジェクト検出 TensorFlow Lite オブジェクト検出モデルストアと TensorFlow Lite ランタイムコンポーネントを従属関係として使用し、TensorFlow Lite をインストール、サンプルオブジェクト検出モデルをダウンロード、サポートされているデバイスでのオブジェクト検出推論を実行する推論コンポーネント。 はい ジェネリック Linux、Windows なし
TensorFlow Lite イメージ分類モデルストア Greengrass アーティファクトとしてサンプル MobileNet v1 モデルを含むモデルコンポーネント。 はい ジェネリック Linux、Windows なし
TensorFlow Lite オブジェクト検出モデルストア Greengrass アーティファクトとしてサンプルシングルショット検出 (SSD) MobileNet モデルを含むモデルコンポーネント。 はい ジェネリック Linux、Windows なし
TensorFlow Lite ランタイム TensorFlow Lite とその従属関係を Greengrass コアデバイスにインストールするために使用されるインストールスクリプトを含むランタイムコンポーネント。 はい ジェネリック Linux、Windows なし