catch-img

CONEXIOBlackBearで機械学習モデルを動かす(3) SageMaker Studioで学習させたモデルをAWS Greengrassでデプロイ

はじめに

こんにちは。コネクシオIoTブログ 技術記事担当のHです。

前回はAWS IoT Greengrassを用いて、クラウドからCONEXIOBlackBearにデプロイし、動作させてみました。

今回は、SageMakerで機械学習モデルを学習させ、前回と同様GreengrassでCONEXIOBlackBearにデプロイし、動作させてみることにします。


実施環境

基本的に、前回と同じ学習データとモデルの構成を使用し、学習環境をSageMakerにします。ですので、CONEXIOBlackBear側は同じです。

  • - CONEXIOBlackBear OSバージョン 1.1.5
  • - Python3.7
  • - tensorflow 2.0.0(keras 2.2.4)
  • - USB接続のWebカメラ

SageMakerの環境は、後述しますが、

  • - Python3.6
  • - tensorflow 2.1(keras 2.3.0)

です。


1. SageMaker Studioを起動

Amazon SageMakerは、こちらにある通り、完全マネージドの機械学習サービスと謳われており、非常に多くのサービスから構成されていることがわかります。

では、この中で、今回どれを使用すればいいのかということですが、今回やりたいのは、


自前の学習用のプログラムコードが既にあって、それをクラウド上で動かしたい


ということなので、最も基本的なSageMaker StudioというWebブラウザ上で使えるIDEで直接コードを書いて実行すればよさそうだということがわかりました。

なので、SageMaker Studioを起動していきます。


今回使用したAWSアカウントで、SageMaker Studioが一度も使用されていなかったので、ユーザーの作成が必要でした。以下のような画面で、ユーザー名とロールを設定して、送信ボタンを押しました。


ロールは、以下のように自動作成であってもいろいろ選択肢がありますが、任意のS3バケットとしています。


しばらくすると、SageMaker Studio コントロールパネルという画面が開きます。


先ほど作成したユーザー名が表示され、右端の Studioを開く というボタンを押すと、SageMaker Studioが開きます。

UIの詳細は、公式ドキュメントにある通りなので割愛しますが、Pythonの機械学習系開発環境としてお馴染みのJupyterLabの画面ですので、慣れている方も多いかと思います。


2. SageMaker Studioで学習

2.1 ノートブックを作成

ノートブックを作成にあたり、まずSageMaker StudioのLauncher中ほどにあるNotebooks and compute resourcesという項目で、SageMakerImageを選択しますが、最終的にデプロイしたいエッジ側と環境を合わせる必要があるため、


Tensorflow 2.1 Python 3.6 (Optimized for CPU)


というイメージを選択しました。(実は、はじめTensorflow 2.3を使用したところ、エッジ側のTensorflowとのバージョン不整合により、モデルデータの読み込みができませんでした。そのため、上記のバージョンにしています。)


2.2 学習

学習のためのコードは、以前の記事と同様です。

次に、コードの実行に使用するインスタンスタイプですが、こちらを参考にいくつか試したところ、1エポック分の所要時間が

  • ml.t3.medium 約146秒
  • ml.c5.large 約96秒
  • ml.c5.xlarge 約60秒

となりました。ml.t3.mediumだと、手元のPCよりも遅かったのですが、ml.c5だと速くなり、クラウド上のリソースの恩恵が受けられることになります。

したがって、ここではml.c5.xlargeを選択しました。50エポックの所要時間は、およそ50分でした。


3. Greengrassでデプロイ

3.1 S3に学習済みモデルデータを置く

先ほど学習させたモデルは、SageMaker Studio内のディレクトリに出力してあるので、前回と同じ手順で、zip圧縮したデータを所定のバケット/パスにアップロードしました。

そして、前回の記事の3.3.2 機械学習リソースの設定と同様の手順で、モデルソースとして今回学習させたモデルデータを選択します。

3.2 CONEXIOBlackBear

CONEXIOBlackBear側についても、前回の記事の3.5, 3.6の手順を実施します。


この状態でデプロイをしたところ、成功しました。


4. 動作確認

AWS IoTコンソールのテスト用デバイスゲートウェイ画面で、hello/worldトピックをサブスクライブすると、以下のようなメッセージを受信しました。CONEXIOBlackBearから推論した結果が届いています。


というわけで、SageMakerで学習させた機械学習モデルデータをGreengrassでCONEXIOBlackBearにデプロイして動かすことができました。


まとめ

これまで3回にわたって、機械学習モデルで推論を行うプログラムをCONEXIOBlackBearで動かしてきました。今回は比較的簡単な例を取り上げていますが、同様にしてクラウド上の大規模なコンピューティングリソースを使って大量の学習を行ったモデルを作成してエッジにデプロイすることで、様々な高度なアプリケーションが実現できると思います。今後、もっと色々チャレンジしたいと思います。


5分で理解できる!
Smart Ready IoTソリューションセット
ご質問やご要望はこちらから
お気軽にお問い合わせください

リモートメンテナンスとは? 導入の利点や懸念事項を解説

2021-06-07

新型コロナウイルスの影響により一気に広がりを見せたリモートワーク。製造業も例外ではなく、工場の設備や機器のメンテナンスにおいても人の接触を避けつつ、遠隔地から対応できることが求められています。本記事では、遠隔地から設備・機器の保守管理を行うリモートメンテナンスについて、その利点や導入の際の懸念事項を紹介します。

製造現場の生産性向上を実現する工場の遠隔監視について

2021-06-07

昨今、高齢化社会による人手不足や長時間労働など、製造業を取り巻く労働環境の改善は急務といえます。現場主体の製造業が働き方改革を進めていくには、インターネットを通じて設備や機器をモニタリングする遠隔監視が欠かせません。この記事では、遠隔監視の必要性やメリット、システムを導入する際の注意点を解説します。

5Gについて

2021-05-06

製造業のIoT化が注目される理由とは? 背景や導入のメリットを解説

2021-03-26

世界的な広がりを見せた新型コロナウイルス感染症の影響により、あらゆるシーンで“非対面”や“非接触”が求められるようになりました。こうした状況で関心が寄せられているのがIoT。本記事では、製造業のIoT化が注目されるようになった背景や、導入のメリットを紹介します。