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

英語の翻訳が提供されている場合で、内容が矛盾する場合には、英語版がオリジナルとして取り扱われます。翻訳は機械翻訳により提供されています。

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

この機能は、 AWS IoT Greengrass コアv1.6 or later.

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

ローカル推論の実行を開始するには、「」を参照してください。 を使用して機械学習推論を設定する方法AWS マネジメントコンソール.

方法 AWS IoT Greengrass ML推論作業

推論モデルをどこにでもトレーニングし、 機械学習リソース グリーングラスグループからアクセスします。 Lambda 機能。たとえば、 SageMaker グリーングラスのコアに展開します。その後、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 マシンラーニングリソースのモデルソース。

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

  • S3バケットには SageMaker および Amazon S3 モデルソースは、SSE-Cを使用して暗号化しないでください。 サーバー側の暗号化を使用するバケットの場合、 AWS IoT Greengrass ML推論は現在、SSE-S3またはSSE-KMS暗号化オプションのみをサポートしています。サーバー側の暗号化オプションの詳細については、以下を参照してください。 サーバー側の暗号化を使用したデータの保護Amazon Simple Storage Service 開発者ガイド.

  • を格納しているS3バケットの名前 SageMaker および Amazon S3 モデルソースにピリオド(.)。詳細については、 バケット命名のルール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 managed policy では、文字列を含む名前のバケットにアクセスできます。 sagemaker。 このポリシーは、 グリーングラスサービスの役割.

そうでない場合は、 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 Greengrass 保存されているモデルにアクセス Amazon S3 許可する必要があります AWS IoT Greengrass read バケットにアクセスする許可を 1つ 以下のうち:

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

    は、 AWSGreengrassResourceAccessRolePolicy managed policy では、文字列を含む名前のバケットにアクセスできます。 greengrass。 このポリシーは、 グリーングラスサービスの役割.

     

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

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

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

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

Requirements

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

  • Core vAWS IoT Greengrass を使用していることが必要です。1.6 or later.

  • ユーザー定義 Lambda 機能で実行できる read または read and write 操作をリソース上で実行します。他の操作の権限は使用できません。 関連する Lambda 関数のコンテナ化モードによって、アクセス権限の設定方法が決まります。詳細については、「」を参照してください。Lambda 関数から機械学習リソースにアクセスする.

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

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

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

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

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

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

SageMaker Neo ディープラーニングランタイム

以下を使用できます。 SageMaker Neo 深層学習ランタイム マシンラーニングモデルの最適化により、 AWS IoT Greengrass デバイス。これらのモデルは、機械学習推論の予測速度を上げるために、SageMaker Neo 深層学習コンパイラー を使用して最適化されています。モデル最適化の詳細については、 SageMaker、を参照してください。 SageMaker Neo文書.

注記

現在、特定の AWS リージョンでのみ Neo 深層学習コンパイラー を使用して機械学習モデルを最適化できます。ただし、 Neo 深層学習ランタイム すべてのAWSリージョンで最適化されたモデルにより、 AWS IoT Greengrass コア がサポートされています。詳細については、以下を参照してください。 最適化された機械学習推論の設定方法.

MXNet のバージョニング

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

Raspberry Pi の MXNet

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

MXNET_ENGINE_TYPE=NaiveEngine

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

注記

サードパーティのコード例を実行するなどの 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 のドキュメントを参照してください。