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

のドキュメントを表示していますAWS IoT Greengrass Version 1。AWS IoT Greengrass Version 2の最新のメジャーバージョンです。AWS IoT Greengrass。の使用方法の詳細については、「」を参照してください。AWS IoT Greengrass V2の詳細については、AWS IoT Greengrass Version 2開発者ガイド

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

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

この機能は、以下で使用できます。AWS IoT GreengrassCore v1.6 以降。

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

ローカル推論の実行を開始するには、「AWS Management Console を使用して機械学習推論を設定する方法」を参照してください。

AWS IoT Greengrass ML 推論のしくみ

推論モデルは、任意の場所でトレーニングし、ローカルに機械学習リソースGreengrass グループで、その後Greengrass Lambda 関数からアクセスできるようになります。たとえば、深層学習モデルを構築し、トレーニングできます。SageMakerを作成し、Greengrass コアにデプロイします。その後、Lambda 関数はローカルモデルを使用して、接続されたデバイスで推論を実行し、新しいトレーニングデータをクラウドに送り返すことができます。

以下の図に示しているのは、AWS IoT Greengrass の ML Inference ワークフローです。


        機械学習ワークフローのコンポーネント、およびコアデバイス間の情報フロー,AWS IoT Greengrassサービス、クラウドでトレーニングされたモデルです。

AWS IoT Greengrass ML Inference により、ML ワークフローの各ステップがシンプルになります。

  • ML フレームワークのプロトタイプを構築し、デプロイする。

  • クラウドトレーニング済みモデルにアクセスし、それらのモデルを Greengrass コアデバイスにデプロイする。

  • ローカルリソースであるハードウェアアクセラレーター (GPU や FPGA など) にアクセスできる推論アプリケーションを作成する。

機械学習リソース

機械学習リソースは、クラウドトレーニング済み推論モデルを表し、AWS IoT Greengrassコア。機械学習リソースをデプロイするには、まず Greengrass グループに追加し、グループ内の Lambda 関数がそれらのリソースにアクセスできる方法を定義します。グループ展開中、AWS IoT Greengrassは、クラウドからソースモデルパッケージを取得し、Lambda ランタイム名前空間内のディレクトリに抽出します。その後、Greengrass Lambda 関数によって、ローカルにデプロイしたモデルを使用して推論が実行されるようになります。

ローカルにデプロイしたモデルを更新するには、まず機械学習リソースに対応するソースモデル (クラウド内) を更新してから、そのグループをデプロイします。デプロイ中、AWS IoT Greengrass によってソースの変更が確認されます。変更が検出された場合、AWS IoT Greengrass によってローカルモデルが更新されます。

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

AWS IoT Greengrassは、機械学習リソース用に SageMaker および Amazon S3 モデルソースをサポートしています。

モデルソースには、以下の要件が適用されます。

  • SageMaker および Amazon S3 モデルソースを保存する S3 バケットは、SSE-C を使用して暗号化することはできません。 サーバー側の暗号化を使用するバケットの場合、AWS IoT GreengrassML 推論は、現時点では、SSE-S3 または SSE-KMS 暗号化オプションのみをサポートしています。サーバー側の暗号化オプションの詳細については、「」を参照してください。サーバー側の暗号化を使用したデータの保護()Amazon Simple Storage Service 開発者ガイド

  • SageMaker および Amazon S3 モデルソースを保存する S3 バケットの名前にピリオド (.). 詳細については、「」で、SSL での仮想ホスト型バケットの使用に関するルールを参照してください。バケット命名規則()Amazon Simple Storage Service 開発者ガイド

  • サービスレベル AWS リージョン サポートは、両方で利用できる必要があります。AWS IoT GreengrassおよびSageMaker。現在、AWS IoT Greengrassは、以下のリージョンの SageMaker モデルをサポートしています。

    • 米国東部 (オハイオ)

    • 米国東部(バージニア北部)

    • 米国西部 (オレゴン)

    • アジアパシフィック (ムンバイ)

    • アジアパシフィック (ソウル)

    • アジアパシフィック (シンガポール)

    • アジアパシフィック (シドニー)

    • アジアパシフィック (東京)

    • 欧州 (フランクフルト)

    • 欧州 (アイルランド)

    • 欧州 (ロンドン)

  • 以下のセクションで説明しているように、AWS IoT Greengrass にはモデルソースに対する read アクセス許可が必要です。

SageMaker

AWS IoT Greengrassは、SageMaker トレーニングジョブとして保存されるモデルをサポートしています。SageMaker は、完全マネージド型の ML サービスであり、組み込みまたはカスタムアルゴリズムを使用してモデルを構築し、トレーニングすることが可能です。詳細については、「」を参照してください。SageMaker とは()SageMaker 開発者ガイド

SageMaker 環境をバケットの作成その名前にsagemaker、次にAWS IoT Greengrassには、SageMaker トレーニングジョブにアクセスするための十分な権限があります。AWSGreengrassResourceAccessRolePolicy 管理ポリシーは、名前に文字列 sagemaker が含まれるバケットへのアクセスを許可します。このポリシーは Greengrass サービスのロールにアタッチされます。

それ以外の場合は、AWS IoT Greengrass に、トレーニングジョブが保存されるバケットに対する readアクセス許可を付与する必要があります。そのためには、サービスロールに以下のインラインポリシーを埋め込みます。複数のバケット ARN を含めることができます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::my-bucket-name" ] } ] }
Amazon S3

AWS IoT Greengrassは、Amazon S3 に保存されたモデルをサポートしています。tar.gzまたは.zipファイル。

を有効化するにはAWS IoT GreengrassAmazon S3 バケットに保存されているモデルにアクセスするには、AWS IoT Greengrass readバケットへのアクセス許可をone以下を実行します。

  • 名前に greengrass が含まれるバケットにモデルを保存します。

    AWSGreengrassResourceAccessRolePolicy 管理ポリシーは、名前に文字列 greengrass が含まれるバケットへのアクセスを許可します。このポリシーは Greengrass サービスのロールにアタッチされます。

     

  • Greengrass サービスロールにインラインポリシーを埋め込みます。

    バケット名に greengrass が含まれない場合は、サービスロールに以下のインラインポリシーを追加します。複数のバケット ARN を含めることができます。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::my-bucket-name" ] } ] }

    詳細については、「」を参照してください。インラインポリシーの埋め込み()IAM ユーザーガイド

Requirements

機械学習リソースの作成と使用には、以下の要件が適用されます。

  • 使用する必要があります。AWS IoT GreengrassCore v1.6 以降。

  • ユーザー定義の Lambda 関数は、readまたはread and writeオペレーションは、リソースに対して実行されます。他のオペレーションに対するアクセス許可はありません。関連する Lambda 関数のコンテナ化モードによって、アクセス権限の設定方法が決まります。詳細については、「Lambda 関数から機械学習リソースにアクセスする」を参照してください。

  • コアデバイスのオペレーティングシステム上のリソースの完全パスを指定することが必要です。

  • リソース名または ID の最大長は 128 文字で、パターン [a-zA-Z0-9:_-]+ を使用する必要があります。

ML 推論用のランタイムとライブラリ

AWS IoT Greengrass では、次の ML ランタイムとライブラリを使用できます。

これらのランタイムとライブラリは、NVIDIA Jetson TX2、Intel Atom、および Raspberry Pi プラットフォームにインストールできます。ダウンロード情報については、「サポートされている Machine Learning ランタイムおよびライブラリ」を参照してください。コアデバイスに直接インストールできます。

互換性と制限については、必ず以下の情報を参照してください。

SageMaker Neo 深層学習ランタイム

SageMaker Neo 深層学習ランタイムを使用して、最適化された機械学習モデルによる推論をAWS IoT Greengrassデバイス。これらのモデルは、機械学習推論の予測速度を上げるために、SageMaker Neo 深層学習コンパイラを使用して最適化されています。SageMaker でのモデルの最適化の詳細については、「」を参照してください。SageMaker Neo ドキュメント

注記

現在、特定のAmazon Web Services リージョンでのみ Neo Deep Learning コンパイラを使用して機械学習モデルを最適化できます。ただし、Neo ディープラーニングランタイムは、それぞれの AWS リージョン この場合、次のようになります。AWS IoT Greengrasscore がサポートされています。詳細については、「最適化された機械学習推論を設定する方法」を参照してください。

MXNet のバージョニング

Apache MXNet は現在、下位互換性を保証していないため、フレームワークの新しいバージョンを使用してトレーニングするモデルは、フレームワークの以前のバージョンでは正しく動作しないことがあります。モデルトレーニング段階とモデル提供段階との間で競合を回避し、一貫したエンドツーエンドエクスペリエンスを実現するには、両方の段階で同じバージョンの MXNet フレームワークを使用します。

Raspberry Pi の MXNet

ローカル MXNet モデルにアクセスする Greengrass Lambda 関数では、以下の環境変数が設定される必要があります。

MXNET_ENGINE_TYPE=NativeEngine

関数コードで環境変数を設定することも、関数のグループ固有設定に追加することもできます。構成設定として環境変数を追加する例については、このステップを参照してください。

注記

サードパーティのコード例を実行するなどの MXNet フレームワークの一般使用に対しては、環境変数を Raspberry Pi で設定する必要があります。

Raspberry Pi での TensorFlow モデルの制限

推論結果を向上させるための推奨事項は、Raspberry Pi プラットフォームで TensorFlow 32-bit Arm ライブラリを使用したテストに基づいています。これらの推奨事項は、上級ユーザーのみを対象としており、いかなる種類の保証もありません。

  • チェックポイント形式を使用してトレーニングされたモデルは、提供する前にプロトコルバッファ形式で "圧縮" する必要があります。例については、「TensorFlow-Slim イメージ分類モデルライブラリ」を参照してください。

  • TF-Estimator および TF-Slim ライブラリはトレーニングコードまたは推論コードで使用しないでください。代わりに、以下の例に示している .pb ファイルモデルロードパターンを使用してください。

    graph = tf.Graph() graph_def = tf.GraphDef() graph_def.ParseFromString(pb_file.read()) with graph.as_default(): tf.import_graph_def(graph_def)
注記

TensorFlow でサポートされているプラットフォームの詳細については、TensorFlow のドキュメントの「TensorFlow のインストール」を参照してください。