[レポート]AIM302: 機械学習のエッジ推論 #reinvent

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、小澤です。

本記事は現地時間2018/11/26-30で行われてたre:Invent 2018のセッション「Machine Learning at the Edge」のレポートとなります。

セッション概要

本セッションの概要は以下の通りです。

セッションタイトル:
 Machine Learning at the Edge


登壇者:
Julien Simon - Principal Technical Evangelist, Amazon Web Services
Brian Kursar - Vice President and Chief Data Scientist, Toyota Connected
Nimish Amlathe - Associate Data Scientist, Toyota Connected

セッション概要:
Video-based tools have enabled advancements in computer vision, such as in-vehicle use cases for AI. However, it is not always possible to send this data to the cloud to be processed. In this session, learn how to train machine learning models using Amazon SageMaker and deploy them to an edge device using AWS Greengrass, enabling you process data quickly at the edge, even when there is no connectivity.
(ビデオベースのツールは、AIの車載ユースケースなど、コンピュータビジョンの進歩を可能にしました。 ただし、このデータをクラウドに送信して処理することは必ずしも可能ではありません。 このセッションでは、AWS Greengrassを使用してAmazon SageMakerを使用してマシン学習モデルをトレーニングし、エッジデバイスに展開する方法を学び、接続がない場合でもエッジでデータを素早く処理できるようにします。)

セッション資料は以下で公開されています。

セッションレポート

なぜエッジでの機械学習が必要か?

機械学習にはデータが必要です。 IoTという言葉が流行っていることからもわかるとおり、現在ではPCやスマートフォンといった汎用的なデバイスのほかに様々な機器がネットにつながり日々膨大な量のデータを生成しています。

世の中の多くの機器がコンピューティングリソースを持ち、そこから様々なデータが生み出されますが、それらがすべて利用可能な状態になっているとは限りません。 セキュリティの問題で機器にたまったデータを持ち出すことが難しかったり、そもそもネットワークへの接続ができない可能性もあります。

そういった環境で機械学習を使った仕組みを導入したい場合、機器に直接モデルをデプロイして推論を行う必要があります。

AWS Greengrassを使ったエッジコンピューティング

AWSでは、Greengrassを使って推論のコードをエッジデバイスにデプロイすることが可能です。

機械学習では、大きく分けて「学習」と「推論」という2つのプロセスがありますが、「学習」の部分はクラウド上でSageMakerなどを使って行い、作成したモデルをエッジデバイスにデプロイすることで「推論」の部分はネットワークを介することなくデバイス上のみで完結させることが可能になります。

Greengrassにモデルをデプロイする流れは以下のようになります。

  • SageMaker(または自前)で学習してモデルを作成する
  • 推論用のLambda関数を記述する
  • それらをGreengrassグループのリソースに追加する
  • Greengrassにデプロイとアップデートの処理をお任せする

AWS DeepLensの紹介

DeepLensはAWSが提供するエッジ推論デバイスです。

DeepLensを使えばデバイスについたカメラで画像や映像認識などの処理がエッジで推論できます。 標準で様々なモデルが提供されているほか、AWSと統合されているためSageMakerのモデルをそのままデプロイすることも可能です。

利用イメージは以下のようになります。

DeepLensが設置された環境でカメラからの映像を取得してLambda関数で推論を行います。 推論された映像情報を可視化する必要がある場合は、それらを出力としてPCなどディスプレイをもつデバイスに配信します。

DeepLensは以下のフレームワークを使ったモデルに対応しています。

  • Tensorflow
  • Caffe
  • Apache MXNet

TOYOTAでのDeepLens活用事例

TOYOTAでのDeepLens活用事例が紹介されていました。

Cars for goodという、車載カメラの映像を使った有益な情報定期用のための仕組みを紹介していました。

道路状況や搭乗者に関する様々なデータを活用しています。

しかし、750万台もの車から送信される高解像度のデータは膨大な量となり、それらを管理維持するコストは年間数億ドル単位にもなります。

そこでDeepLensを使ってこのようなシミュレーションできる環境を構築していくつかの危惧すべき状態を検知できる仕組みを作ったということでした。

エッジ推論でのパフォーマンスを最適化する

エッジデバイスでは様々な制約があるためより小さく高速なモデルが必要とされます。 リソースの最適化や電力消費量なども問題となります。

そのため、以下のような要件が求められます。

  • コードの最適化
  • 量子化/混合モデルの学習
  • 不要なノードの削除
  • 圧縮

これらをいくつかを実現するためのテクニックはTensorFlowやMXNetで利用可能です。 また、デバイス固有の最適なモデルの生成にはSageMaker Neoの活用も可能です。

エッジ推論ができないような場面

いくつかの場面ではエッジ推論にこだわる必要はありません。

デバイスがHTTPSによる通信をサポートしている場合はSageMakerのエンドポイントを作成してそこにアクセスするのが最もいい手段となります。

以下のような場面ではエンドポイントへのアクセスを行うのが得策です。

  • エッジデバイスが非力
  • モデルがデバイスに簡単にデプロイできない
  • 予測時にクラウド上にある別なデータも別途必要になる
  • 予測の利用状況を中央集権的に管理する必要がある

ただし、この仕組みではネットワークへの常時接続が必須になります。

こういったデバイスがネットワークには接続できるがHTTPSには対応してない場合はMQTTを使った以下のような仕組みを作る必要があります。

  • SageMakerで学習する
  • エンドポイントをデプロイする
  • 推論用のLambda関数を作成する
  • デバイスからのMQTTメッセージをAWS IoT Coreを使って受け取りそれをトリガにして推論結果を返す

おわりに

今回は「Machine Learning at the Edge」のセッションレポートを書かせていただきました。

機械学習のエッジ推論は今非常にホットな分野ですが、一方で機械学習のハードウェアやデバイス固有の知識も必要になります。 デバイスごとに構成が違って、それぞれに合わせて動くものを個別に実装しなければならないという場面もあります。

SageMaker + Greengrassの組み合わせによってこれらが非常に便利になります。