・まとめはじめにこんにちは。技術記事担当のHです。前回はCONEXIOBlackBearで機械学習モデルを動かしました。Greengrassを用いて、クラウドからCONEXIOBlackBearにデプロイし、動作させてみることにします。Coreソフトウェアv1.9.2をインストールしました。今回は、使用するPythonバージョンの関係上、v1.11.0が必要であるため、以前の手順に従い再インストールしました。プログラムをLambdaへデプロイプログラムのソースコードは、前回の記事を少し編集して使用しますが、基本的なロジックは全く同様で、一部のみ変更します。Lambda関数作成Lambdaコンソールにて、新たにGreengrass_HelloWorld2というLambda関数およびエイリアスGG_HellowWorld2を作成しました。前回からのコード変更部分まず、モデルの読み込み先パスを、後述の3.3.2におけるデバイス配置先設定と一致させるように変更しました。IoTテスト用ゲートウェイにパブリッシュするようにしました。ハンドラ関数lambda_handlerは、3.2で実行時間無制限としているため、中身は空です。※greengrassコンソールのアップデートにより、2020/12/16時点のコンソール画面では従来からあるグループ/コア/デバイスという画面構成がClassic(v1)という括りで分割されています。本記事では、以前作成したものを再利用するため、Classic(v1)の機能を使用します。以前作成したデバイス/MyFirstGroupグループを使用するため、手順は省略します。Lambdaより、Lambdaの追加ボタンを押し、以下のように設定しました。実行ユーザーはデフォルト、メモリは128MB、ライフサイクルは無制限としています。モデルデータのアップロード次に、学習済みモデルデータをGreengrassによりデバイスへデプロイするための設定を行います。SageMakerで学習したものを参照するという2通りがあります。今回はSageMakerを使用していないため、S3を利用することとします。学習済みモデルデータは、以前の記事の1.3で出力されたkeras_cifar10_trained_model.h5を使用します。アップロードについての注意点として、以下2つです。https://docs.amazonaws.cn/en_us/greengrass/latest/developerguide/gg-dg.pdf)"greengrass"が含まれるバケットピリオドが含まれないバケット名のバケットこの場合、Greengrassのサービスロールでそのバケットへのアクセス権限を与える必要がある今回は、名前に"greengrass"が含まれるバケットを作成してzipファイルを配置しました。機械学習リソースの設定3.3.1で配置したモデルデータをLambdaから参照するため、Greengrassコンソールで機械学習リソースの作成を行います。Learningより、機械学習リソースの追加ボタンを押し、以下のように設定しました。モデルとして、3.3.1でアップロードしたzipファイルを選択します。ローカルパスは、先述の通り、Lambdaのソースコード上で参照されるパスと一致するようにします。アクセス権限は、モデルデータの編集は必要ないため、読み取り専用としました。ローカルリソースの設定Lambda関数から、CONEXIOBlackBearのUSB端子に接続したWebカメラを使用するには、Greengrassコンソールでローカルリソースを追加する必要があります。ローカルより、ローカルリソースの追加ボタンを押し、以下のように設定しました。デバイスパスは、Webカメラが/dev/video2として認識されていたので、/dev/video2と入力します。Lambda関数に与えるアクセス権限は、読み取りと書き込みを設定する必要があります。Coreソフトウェア上のLambda関数からWebカメラにアクセスできるように事前に設定が必要です。CONEXIOBlackBearのUSB端子の有効化。/sys/class/gpio/gpio174/directionLambda関数はデフォルトでは、ggc_userユーザー/ggc_groupグループで実行されるため、/dev/video2にその他のユーザーの読み書きアクセス権限を与えます。ソフトウェアのデーモンを起動します。startそして、Greengrassコンソールからデプロイします。デプロイが正常に完了したら成功です。IoTコンソールのテスト用デバイスゲートウェイ画面で、hello/worldトピックをサブスクライブすると、以下のようなメッセージを受信しました。CONEXIOBlackBearから推論した結果が届いています。無事、機械学習モデルで推論を行うプログラムをGreengrassでデプロイして動かすことができました。まとめ以上のように、機械学習モデルで推論を行うプログラムをGreengrassでデプロイして動かすことが出来ました。今回は、PC上で学習を行った比較的時間の短い機械学習モデルを用いました。SageMakerなどクラウド上のコンピューティングリソースを使って大量の学習が必要な高度なモデルを作成し、動かしたいと思います。