NVIDIA Jetson TX2 の設定

https://docs.aws.amazon.com/ja_jp/greengrass/latest/developerguide/ml-dlc-console.html#jetson-lambda-dlc-config

NVIDIA Jetson TX2 の設定

NVIDIA Jetson TX2 でこのチュートリアルを実行するには、ソースイメージを用意して、Lambda 関数を設定します。GPU を推論に使用するには、Jetpack 3.3 でボードのイメージを作成するときに、デバイスに CUDA 9.0 と cuDNN 7.0 をインストールする必要があります。ローカルデバイスリソースも追加する必要があります。

AWS IoT Greengrass ソフトウェアをインストールできるように Jetsonを設定する方法については、「他のデバイスの設定」を参照してください。

  1. Lambda 関数用に静的な PNG あるいは JPG 画像をダウンロードして、画像分類に使用します。この例は小さいイメージファイルで最適に動作します。

    inference.py ファイルがあるディレクトリ (あるいは、このディレクトリのサブディレクトリ) に画像ファイルを保存します。これは、ステップ 3: Lambda 推論関数を作成する でアップロードした Lambda 関数デプロイパッケージにあります。

    注記

    代わりに、Jetson ボードにカメラを設置して、ソースイメージをキャプチャすることもできます。ただし、最初に静的イメージから開始することを強くお勧めします。

  2. Lambda 関数の設定を編集します。「ステップ 4: Lambda 関数を Greengrass グループに追加する」の手順に従います。

    1. [メモリ制限] の値を増やします。指定されたモデルを GPU モードで使用するには、2048 MB を使用します。

    2. [タイムアウト] の値を 5 分に増やします。これにより、リクエストの早過ぎるタイムアウトがなくなります。セットアップ後、推論の実行には数分かかります。

    3. [Lambda のライフサイクル] で、[Make this function long-lived and keep it running indefinitely] を選択します。

    4. [/sys ディレクトリへの読み込みアクセス] の [Enable] を選択します。

  3. 必要なローカルデバイスリソースを追加します。

    1. グループの設定ページで、[Resources (リソース)] を選択します。

      
                [Resources (リソース)] が強調表示されたグループの設定ページ
    2. [ローカル] タブで、[ローカルリソースの追加] を選択します。

    3. 各リソースを定義します。

      • [リソース名] と [デバイスパス] には、次の表の値を使用します。テーブルの行ごとに 1 つのデバイスリソースを作成します。

      • [リソースタイプ] で、[デバイス] を選択します。

      • [グループ所有者のファイルアクセス許可] で、[リソースを所有する Linux グループの OS グループアクセス許可を自動的に追加] を選択します。

      • [Lambda function affiliations (Lambda 関数の所属)] で、Lambda 関数への [読み取りと書き込みアクセス] を許可します。

        名前

        デバイスパス

        nvhost-ctrl

        /dev/nvhost-ctrl

        nvhost-gpu

        /dev/nvhost-gpu

        nvhost-ctrl-gpu

        /dev/nvhost-ctrl-gpu

        nvhost-dbg-gpu

        /dev/nvhost-dbg-gpu

        nvhost-prof-gpu

        /dev/nvhost-prof-gpu

        nvmap

        /dev/nvmap

AWS IoT Greengrass ML Inference のトラブルシューティング

テストに成功しなかった場合は、以下のトラブルシューティング手順を実行できます。Raspberry Pi のターミナルで以下のコマンドを実行します。

エラーログを確認する

  1. root ユーザーに切り替え、log ディレクトリに移動します。AWS IoT Greengrass ログへのアクセスには root アクセス許可が必要です。

     
    sudo su
    cd /greengrass/ggc/var/log
  2. runtime.log でエラーがないかどうかを確認します。

     
    cat system/runtime.log | grep 'ERROR'

    ユーザー定義の Lambda 関数ログでもエラーがないかどうかを確認できます。

     
    cat user/your-region/your-account-id/lambda-function-name.log | grep 'ERROR'

    詳細については、「ログでのトラブルシューティング」を参照してください。

Lambda 関数が正常にデプロイされていることを確認する

  1. /lambda ディレクトリ内のデプロイされた Lambda の内容を一覧表示します。コマンドを実行する前に、プレースホルダーの値を置き換えます。

     
    cd /greengrass/ggc/deployment/lambda/arn:aws:lambda:region:account:function:function-name:function-version
    ls -la
  2. ディレクトリに、「ステップ 3: Lambda 推論関数を作成する」でアップロードした optimizedImageClassification.zip デプロイパッケージと同じ内容が含まれていることを確認します。

    .py ファイルと依存関係がディレクトリのルートにあることを確認します。

推論モデルが正常にデプロイされていることを確認する

  1. Lambda ランタイムプロセスのプロセス識別番号 (PID) を見つけます。

     
    ps aux | grep lambda-function-name

    出力では、Lambda ランタイムプロセスの行の 2 列目に PID が表示されます。

  2. Lambda ランタイム名前空間を入力します。コマンドを実行する前に、pid プレースホルダーの値を置き換えてください。

    注記

    このディレクトリとその内容は、Lambda ランタイム名前空間にあるため、通常の名前空間には表示されません。

     
    sudo nsenter -t pid -m /bin/bash
  3. ML リソース用に指定したローカルディレクトリの内容を一覧表示します。

    注記

    ML リソースのパスが ml_model 以外の場合は、ここで置き換えてください。

     
    cd /ml_model
    ls -ls

    以下のファイルが表示されます。

     
        56 -rw-r--r-- 1 ggc_user ggc_group     56703 Oct 29 20:07 model.json
    196152 -rw-r--r-- 1 ggc_user ggc_group 200855043 Oct 29 20:08 model.params
       256 -rw-r--r-- 1 ggc_user ggc_group    261848 Oct 29 20:07 model.so
        32 -rw-r--r-- 1 ggc_user ggc_group     30564 Oct 29 20:08 synset.txt

Lambda 関数で /dev/dri/renderD128 が見つからない

このエラーは、OpenCL から必要な GPU デバイスに接続できない場合に発生します。Lambda 関数に必要なデバイスでデバイスリソースを作成する必要があります。

次のステップ

次は、最適化された他のモデルを試します。詳細については、Amazon SageMaker Neo のドキュメントを参照してください。

原文地址:https://www.cnblogs.com/cloudrivers/p/11898113.html