オプション: ML 認定のためのデバイスの設定 - AWS IoT Greengrass

AWS IoT Greengrass Version 1 は 2023 年 6 月 30 日に延長ライフフェーズに参加しました。詳細については、「AWS IoT Greengrass V1 メンテナンスポリシー」を参照してください。この日以降、 AWS IoT Greengrass V1 は機能、機能強化、バグ修正、またはセキュリティパッチを提供する更新をリリースしません。で実行されるデバイスは中断 AWS IoT Greengrass V1 されず、引き続き動作し、クラウドに接続します。に移行 AWS IoT Greengrass Version 2することを強くお勧めします。これにより、重要な新機能が追加され、プラットフォームのサポートが追加されます

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

オプション: ML 認定のためのデバイスの設定

IDT for AWS IoT Greengrass は、デバイスがクラウドトレーニング済みモデルを使用してローカルで ML 推論を実行できることを検証するための機械学習 (ML) 認定テストを提供します。

ML 認定テストを実行するには、まず、「IDT テストを実行するためのデバイス設定」の説明に従ってデバイスを設定する必要があります。次に、このトピックの手順に従って、実行する ML フレームワークの依存関係をインストールします。

ML 認定のためのテストを実行するには、IDT v3.1.0 以降が必要です。

ML フレームワークの依存関係のインストール

ML フレームワークの依存関係はすべて、/usr/local/lib/python3.x/site-packages ディレクトリ以下にインストールする必要があります。確実に正しいディレクトリにインストールするには、依存関係をインストールするときに sudo root アクセス許可を使用することをお勧めします。仮想環境は、認定テストではサポートされていません。

注記

コンテナ化を使用して実行される Lambda 関数を (Greengrass コンテナモードで) テストしている場合、/usr/local/lib/python3.x で Python ライブラリのシンボリックリンクを作成することはサポートされていません。エラーを回避するには、依存関係を正しいディレクトリにインストールする必要があります。

ターゲットフレームワークの依存関係をインストールするには、以下のステップに従います。

 

Apache MXNet 依存関係のインストール

このフレームワークの IDT 認定テストには、次の依存関係があります。

  • Python 3.6 or Python 3.7。

    注記

    Python 3.6を使用している場合は、Python 3.7 からPython 3.6 バイナリへのシンボリックリンクを作成する必要があります。これにより、 AWS IoT Greengrassの Python 要件を満たすようにデバイスが設定されます。以下に例を示します。

    sudo ln -s path-to-python-3.6/python3.6 path-to-python-3.7/python3.7
  • Apache MXNet v1.2.1 以降。

  • NumPy。MXNet バージョンと互換性があるバージョンのものをしようする必要があります。

MXNet のインストール

MXNet のドキュメントの指示に従って、MXNet をインストールします

注記

Python 2.x と Python 3.x の両方がデバイスにインストールされている場合は、実行するコマンドで Python 3.x を使用して依存関係をインストールします。

MXNet のインストールの検証

次のいずれかのオプションを選択して、MXNet のインストールを検証します。

オプション 1: デバイスに SSH 接続してスクリプトを実行する

  1. デバイスに SSH 接続します。

  2. 次のスクリプトを実行して、依存関係が正しくインストールされていることを確認します。

    sudo python3.7 -c "import mxnet; print(mxnet.__version__)"
    sudo python3.7 -c "import numpy; print(numpy.__version__)"

    出力ではバージョン番号が表示されまます。スクリプトがエラーなく終了する必要があります。

オプション 2: IDT 依存関係テストを実行する

  1. device.json が ML 認定用に設定されていることを確認します。詳細については、「ML 認定のための device.json の設定」を参照してください。

  2. フレームワークの依存関係テストを実行します。

    devicetester_[linux | mac | win_x86-64] run-suite --group-id mldependencies --test-id mxnet_dependency_check

    テストサマリーに、mldependencies の結果として PASSED が表示されます。

 

TensorFlow の依存関係のインストール

このフレームワークの IDT 認定テストには、次の依存関係があります。

  • Python 3.6 or Python 3.7。

    注記

    Python 3.6を使用している場合は、Python 3.7 からPython 3.6 バイナリへのシンボリックリンクを作成する必要があります。これにより、 AWS IoT Greengrassの Python 要件を満たすようにデバイスが設定されます。以下に例を示します。

    sudo ln -s path-to-python-3.6/python3.6 path-to-python-3.7/python3.7
  • TensorFlow 1.x。

TensorFlow のインストール

TensorFlow のドキュメントの指示に従い、pip またはソースを使用して、TensorFlow 1.x をインストールします。

注記

Python 2.x と Python 3.x の両方がデバイスにインストールされている場合は、実行するコマンドで Python 3.x を使用して依存関係をインストールします。

TensorFlow のインストールの検証

次のいずれかのオプションを選択して、TensorFlow のインストールを検証します。

オプション1:デバイスに SSH 接続してスクリプトを実行する

  1. デバイスに SSH 接続します。

  2. 次のスクリプトを実行して、依存関係が正しくインストールされていることを確認します。

    sudo python3.7 -c "import tensorflow; print(tensorflow.__version__)"

    出力ではバージョン番号が表示されまます。スクリプトがエラーなく終了する必要があります。

オプション 2: IDT 依存関係テストを実行する

  1. device.json が ML 認定用に設定されていることを確認します。詳細については、「ML 認定のための device.json の設定」を参照してください。

  2. フレームワークの依存関係テストを実行します。

    devicetester_[linux | mac | win_x86-64] run-suite --group-id mldependencies --test-id tensorflow_dependency_check

    テストサマリーに、mldependencies の結果として PASSED が表示されます。

 

Amazon SageMaker AI Neo Deep Learning Runtime (DLR) の依存関係をインストールする

このフレームワークの IDT 認定テストには、次の依存関係があります。

  • Python 3.6 or Python 3.7。

    注記

    Python 3.6を使用している場合は、Python 3.7 からPython 3.6 バイナリへのシンボリックリンクを作成する必要があります。これにより、 AWS IoT Greengrassの Python 要件を満たすようにデバイスが設定されます。以下に例を示します。

    sudo ln -s path-to-python-3.6/python3.6 path-to-python-3.7/python3.7
  • SageMaker AI Neo DLR。

  • numpy。

DLR テストの依存関係をインストールした後、モデルをコンパイルする必要があります。

DLR のインストール

DLR のドキュメントの指示に従って、Neo DLR をインストールします

注記

Python 2.x と Python 3.x の両方がデバイスにインストールされている場合は、実行するコマンドで Python 3.x を使用して依存関係をインストールします。

DLR のインストールの検証

次のいずれかのオプションを選択して、DLR のインストールを検証します。

オプション 1: デバイスに SSH 接続してスクリプトを実行する

  1. デバイスに SSH 接続します。

  2. 次のスクリプトを実行して、依存関係が正しくインストールされていることを確認します。

    sudo python3.7 -c "import dlr; print(dlr.__version__)"
    sudo python3.7 -c "import numpy; print(numpy.__version__)"

    出力ではバージョン番号が表示されまます。スクリプトがエラーなく終了する必要があります。

オプション 2: IDT 依存関係テストを実行する

  1. device.json が ML 認定用に設定されていることを確認します。詳細については、「ML 認定のための device.json の設定」を参照してください。

  2. フレームワークの依存関係テストを実行します。

    devicetester_[linux | mac | win_x86-64] run-suite --group-id mldependencies --test-id dlr_dependency_check

    テストサマリーに、mldependencies の結果として PASSED が表示されます。

DLR モデルのコンパイル

DLR モデルは、ML 認定テストに使用する前にコンパイルする必要があります。手順については、次のいずれかのオプションを選択します。

オプション 1: Amazon SageMaker AI を使用してモデルをコンパイルする

SageMaker AI を使用して IDT が提供する ML モデルをコンパイルするには、次の手順に従います。このモデルは Apache MXnet で事前にトレーニングされています。

  1. デバイスタイプが SageMaker AI でサポートされていることを確認します。詳細については、Amazon SageMaker AI API リファレンス」の「ターゲットデバイスオプション」を参照してください。デバイスタイプが現在 SageMaker AI でサポートされていない場合は、「」の手順に従いますオプション 2: TVM を使用して DLR をコンパイルする

    注記

    SageMaker AI によってコンパイルされたモデルで DLR テストを実行するには、4 ~ 5 分かかる場合があります。この間、IDT を停止しないでください。

  2. 事前トレーニング済みでコンパイルされていない DLR 用 MxNet モデルを含む tarball ファイルをダウンロードします。

  3. tarball を解凍します。このコマンドを実行すると、以下のディレクトリ構造が生成されます。

    resnet18 ディレクトリには 3 つのファイルが含まれています。
  4. synset.txtresnet18 ディレクトリ以外の場所に移動します。新しい場所を書き留めておきます。このファイルは、コンパイルされたモデルのディレクトリに、後でコピーします。

  5. resnet18 ディレクトリの内容を圧縮します。

    tar cvfz model.tar.gz resnet18v1-symbol.json resnet18v1-0000.params
  6. 圧縮ファイルを の Amazon S3 バケットにアップロードし AWS アカウント、「モデルをコンパイルする (コンソール)」の手順に従ってコンパイルジョブを作成します。

    1. [入力設定] では、次の値を使用します。

      • [データ入力設定] に {"data": [1, 3, 224, 224]} と入力します。

      • [機械学習フレームワーク] で、MXNet を選択します。

    2. [出力設定] では、次の値を使用します。

      • [S3 Output location] (S3 出力場所) には、コンパイル済みモデルを保存する Amazon S3 バケットまたはフォルダへのパスを入力します。

      • [ターゲットデバイス] で、デバイスタイプを選択します。

  7. 指定した出力場所からコンパイル済みモデルをダウンロードし、ファイルを解凍します。

  8. コンパイル済みモデルのディレクトリに synset.txt をコピーします。

  9. コンパイル済みモデルのディレクトリの名前を resnet18 に変更します。

    コンパイル済みモデルのディレクトリでは、次のディレクトリ構造が必要です。

    コンパイル済みモデルのディレクトリ resnet18 には、4 つのファイルが含まれています。

オプション 2: TVM を使用して DLR をコンパイルする

TVM を使用して、IDT によって提供される ML モデルをコンパイルするには、以下のステップに従います。このモデルは Apache MXNet で事前にトレーニングされているため、モデルをコンパイルするコンピューターまたはデバイスに MXNet をインストールする必要があります。MXNet をインストールするには、MXNet のドキュメントの指示に従います。

注記

ターゲットデバイス上でモデルをコンパイルすることをお勧めします。この方法はオプションですが、互換性を確保し、潜在的な問題を軽減するために役立ちます。

 

  1. 事前トレーニング済みでコンパイルされていない DLR 用 MxNet モデルを含む tarball ファイルをダウンロードします。

  2. tarball を解凍します。このコマンドを実行すると、以下のディレクトリ構造が生成されます。

    resnet18 ディレクトリには 3 つのファイルが含まれています。
  3. TVM のドキュメントの指示に従って、お使いのプラットフォームのソースから TVM のビルドとインストールを行います。

  4. TVM がビルドされたら、resnet18 モデルの TVM コンパイルを実行します。以下のステップは、TVM のドキュメントの「Quick Start Tutorial for Compiling Deep Learning Models」に基づいています。

    1. クローン作成された TVM リポジトリから relay_quick_start.py ファイルを開きます。

    2. リレーでニューラルネットワークを定義するコードを更新します。次のいずれかのオプションを使用できます。

      • オプション 1: mxnet.gluon.model_zoo.vision.get_model を使用してリレーモジュールとパラメータを取得します。

        from mxnet.gluon.model_zoo.vision import get_model block = get_model('resnet18_v1', pretrained=True) mod, params = relay.frontend.from_mxnet(block, {"data": data_shape})
      • オプション 2: ステップ 1 でダウンロードしたコンパイルされていないモデルから、以下のファイルをrelay_quick_start.py ファイルと同じディレクトリにコピーします。これらのファイルには、リレーモジュールとパラメータが含まれています。

        • resnet18v1-symbol.json

        • resnet18v1-0000.params

    3. コンパイル済みモジュールを保存してロードするコードを更新し、次のコードを使用します。

      from tvm.contrib import util path_lib = "deploy_lib.so" # Export the model library based on your device architecture lib.export_library("deploy_lib.so", cc="aarch64-linux-gnu-g++") with open("deploy_graph.json", "w") as fo: fo.write(graph) with open("deploy_param.params", "wb") as fo: fo.write(relay.save_param_dict(params))
    4. モデルをビルドします。

      python3 tutorials/relay_quick_start.py --build-dir ./model

      このコマンドを実行すると、以下のファイルが生成されます。

      • deploy_graph.json

      • deploy_lib.so

      • deploy_param.params

  5. 生成されたモデルファイルを resnet18 という名前のディレクトリにコピーします。これはコンパイル済みモデルのディレクトリです。

  6. コンパイル済みモデルのディレクトリをホストコンピュータにコピーします。次に、ステップ 1 でダウンロードしたコンパイルされていないモデルから、コンパイル済みモデルのディレクトリに synset.txt をコピーします。

    コンパイル済みモデルのディレクトリでは、次のディレクトリ構造が必要です。

    コンパイル済みモデルのディレクトリ resnet18 には、4 つのファイルが含まれています。

次に、AWS 認証情報と device.json ファイルを設定します