Upgrade to Pro — share decks privately, control downloads, hide ads and more …

機械学習・データ分析のお供に!! AWS IoT Greengrassのご紹介

機械学習・データ分析のお供に!! AWS IoT Greengrassのご紹介

2019/4/17に開催された「HIGOBASHI.AWS 第10回 機械学習&データ分析編」の発表資料です

TomoyaIwata

April 17, 2019
Tweet

More Decks by TomoyaIwata

Other Decks in Technology

Transcript

  1. 1
    機械学習・データ分析のお供に︕︕
    AWS IoT Greengrassのご紹介

    View Slide

  2. スライドは後で⼊⼿することが出来ますので
    発表中の内容をメモする必要はありません。
    写真撮影をする場合は
    フラッシュ・シャッター⾳が出ないようにご配慮ください
    Attention

    View Slide

  3. #higobashi.aws 3
    ⾃⼰紹介
    lサーバーレス開発部
    l2018年5⽉⼊社
    l最近もっぱらGreengrassおじさん
    l最近機械学習に⼊⾨
    lML取ったどー︕
    岩⽥ 智哉

    View Slide

  4. #higobashi.aws 4
    話すこと/話さないこと
    • 話すこと
    • Greengrassの概要
    • データ分析・機械学習にGreengrassをどう活⽤できるのか
    • Greengrassと他のAWSサービスの連携
    • 話さないこと
    • データ分析・機械学習の具体的な⼿法やアルゴリズム
    • ベストプラクティス的な話

    View Slide

  5. #higobashi.aws 5
    アジェンダ
    • Greengrassについて(これがメイン)
    • 他のAWSサービスについて
    • Greengrassと他のAWSサービスの組み合わせ例
    • デモ
    • まとめ

    View Slide

  6. 6
    Greengrassとは︖

    View Slide

  7. #higobashi.aws 7
    Greengrassとは
    • エッジコンピューティングに利⽤できるAWSのサービス
    • エッジデバイスにGreengrass Core(以後GGCore) をインストールして利⽤
    • GreengrassGroup(以後GGGroup)という単位でエッジ側のリソースを管理
    • AWS IoTとシームレスに統合
    • AWS IoTが備える各種の機能を拡張し、エッジ側での処理を可能に
    • エッジ側でLambda関数を実⾏可能
    • メッセージング
    • 状態の同期(ローカルシャドウ)
    • …etc

    View Slide

  8. #higobashi.aws 8
    エッジコンピューティングについて
    • そもそもエッジコンピューティングとは︖
    • データの⽣成元・⽣成元付近でデータを処理する形態
    • いちいちクラウドにデータを上げない
    • 分散処理
    • エッジコンピューティングに期待すること
    • レイテンシの削減
    • 帯域幅の削減
    • クラウドサービスの利⽤費削減

    View Slide

  9. #higobashi.aws 9
    Greengrassの構成要素
    Shadows
    implementation
    Lambda
    runtime
    Message
    manager
    Group
    management
    Discovery
    service
    OTA
    agent
    Local Resource
    access
    Local Machine
    learning Inference
    Local
    secret Manager
    Connectors
    Software Disitribution
    Feature
    CloudService
    AWS IoT
    Greengrass API

    View Slide

  10. #higobashi.aws 10
    GGCoreのセットアップ⼿順
    • クラウド側の設定
    • GGGroupの作成
    • 証明書の発⾏ 等
    • エッジ側の設定
    • GGCore導⼊に必要なOSの設定(カーネルパラメータの調整など)
    • GGCoreの導⼊
    • クラウド側で発⾏した証明書や設定ファイルの組み込み 等
    イケてるエッジデバイスが完成

    View Slide

  11. #higobashi.aws 11
    GGの管理コンソール(デプロイ)
    「デプロイ」という単位で
    諸々の定義をエッジデバイスに反映

    View Slide

  12. #higobashi.aws 12
    GGの管理コンソール(サブスクリプション)
    サブスクリプションという単位で
    Lambda関数ごとに権限を管理

    View Slide

  13. #higobashi.aws 13
    GGの管理コンソール(Lambda)
    エッジデバイスで稼働させたい
    Lambda関数の設定を管理

    View Slide

  14. #higobashi.aws 14
    GGの管理コンソール(コネクタ)
    AWSが提供する「コネクタ」を
    利⽤することで他のAWSサービスとの
    連携が容易に

    View Slide

  15. 15
    Greengrassでの
    Lambda関数について

    View Slide

  16. #higobashi.aws 16
    GreengrassでのLambda関数
    • AWS Lambdaと同等のランタイム(⾔語は制限あり)がエッジで利⽤可能
    • AWS Lambdaと同様の プログラミングモデルで実装が可能
    • クラウド上で開発したLamdba関数をシームレスにデプロイ可能
    AWS Lambdaと異なりクラウド上のリソースを使わないので
    いくら使っても従量課⾦が発⽣しない︕︕

    View Slide

  17. #higobashi.aws 17
    GGでのLambda関数のユースケース
    • データ収集系
    • 取得したデータを加⼯してクラウドにUP
    • 取得したデータをフィルタして必要なデータだけクラウドにUP
    • 機械学習系
    • トレーニング⽤のデータを収集してクラウドにUP
    • 取得したデータに対してローカルで推論処理を実⾏
    • ローカルの推論処理に失敗したデータをクラウドUP

    View Slide

  18. 18
    GreengrassでのLambda関数
    データ分析や
    機械学習のお供に最適︕︕

    View Slide

  19. #higobashi.aws 19
    Lambda関数の仕様の違いについて
    Greengrass(ローカルLambda) AWS Lambda
    ライフサイクル オンデマンド、long-lived
    -
    ※分類するならオンデマンド
    プログラミング⾔語
    Python2.7
    Java8
    Node.js6.10
    C,C++
    Python2.7
    Python3.6
    Python3.7
    …..
    タイムアウト制限 上限なし 15分
    メモリ制限
    上限なし
    マシンスペックが許す限りは..
    3008M
    root権限 設定すれば利⽤可能︕︕ 利⽤不可
    プログラミング⾔語に制約があるが、AWS Lambdaよりも柔軟な実装が可能

    View Slide

  20. #higobashi.aws 20
    Lambda関数のライフサイクル
    ライフサイクルにlong-livedを選択することでタイマー処理なども実現可能
    • イベント発⽣に合わせてコンテナを新規作成or再利⽤
    • AWS Lambdaと同じようなライフサイクル
    • 1つのLambda関数に対して複数のコンテナが⽣成され得る
    オンデマンド
    • GG Core起動時にコンテナを1つ起動
    • 1つのコンテナで全てのイベントを処理
    • 常駐プロセスとして捉えることもできる
    long-lived

    View Slide

  21. #higobashi.aws 21
    GG上のLambda関数の開発
    AWS IoT Greengrass Core SDKを利⽤することでLambda関数の開発がスムーズに
    以下のランタイム向けにGGCoreのSDKが提供されている
    • Python2.7
    • Java8
    • Node.js6.10
    • C、C++

    View Slide

  22. #higobashi.aws 22
    SDKを使った開発(Python2.7の場合)
    通常のAWS Lambdaでboto3の
    IoTDataPlane.Clientクラスを利⽤するのと
    ほぼ同様の感覚でコードが書ける
    import greengrasssdk
    client = greengrasssdk.client('iot-data')
    import boto3
    client = boto3.client('iot-data')
    GG 上で動かす場合 AWS Lambdaや開発環境で動かす場合
    client.publish(‘some/topic/hoge’, data)

    View Slide

  23. #higobashi.aws 23
    AWS Lambda開発との⽐較
    同名メソッドでもたまにインターフェースが
    違うことがあるので注意︕︕
    print(res['payload’])
    {"metadata":{"desired":{…
    print(res['payload’])
    object at 0x10f77eb70>
    GG Lambdaの場合 AWS Lambdaやローカル環境の場合
    get_thing_shadow()のレスポンスに
    含まれるペイロードが
    dict
    get_thing_shadow()のレスポンスに
    含まれるペイロードが
    botocore.response.StreamingBody

    View Slide

  24. 24
    リソースについて

    View Slide

  25. #higobashi.aws 25
    Greengrassでのリソース
    • エッジデバイス上のデバイスやボリュームを表現するエンティティ
    • ホワイトリスト形式でLambda関数から「リソース」へのアクセスを制御
    IoTDevice
    GreenGrass Core
    Lambda
    function
    Lambda
    function
    Lambda
    function

    View Slide

  26. #higobashi.aws 26
    GG Groupに定義できるリソース
    • デバイス・・・カメラやセンサー等
    • ボリューム・・・ホストOS上のボリュームをLambdaのコンテナ内にマウント
    ローカル
    • Sagemakerでトレーニング済みのモデルをエッジデバイスにデプロイ︕︕
    • S3に保存したモデルをエッジデバイスにデプロイ︕︕
    Machine Learning︕︕
    • AWS Secrets Managerと連携して機密情報を管理
    シークレット

    View Slide

  27. #higobashi.aws 27
    Machine learning inference
    • GGCore1.6以後で利⽤可能
    • 任意の場所でトレーニングしたモデルをGGにデプロイ可能
    • SageMakerのトレーニングジョブ結果
    • S3上に保存したモデル...SageMakerNEOとの連携が︕︕
    • デプロイ後はGG上のLambda関数からアクセスが可能

    View Slide

  28. #higobashi.aws 28
    SageMaker Neo
    • Machine Learningのモデルをどこでも実⾏可能に変換
    • ARM, Intel, NVIDIA
    • モデルの作成はSageMaker以外の環境でもOK
    • オンプレに学習環境があるなら、それを使うのもOK
    • 複数のフレームワークをサポート
    • TensorFlow, MXNet, PyTorch, XGBoost
    ※東京リージョンはまだ

    View Slide

  29. 29
    GG Groupに定義できるリソース
    Machine Learningのリソースを
    利⽤することで、エッジ側で
    推論処理の実⾏が可能に︕︕

    View Slide

  30. 30
    コネクタについて

    View Slide

  31. #higobashi.aws 31
    Greengrass Connectorsについて
    • ⼀般的なユースケースに合わせてAWSが⽤意したモジュール
    • Connectorsを使うことで他サービスとの連携が容易に
    ConnectorsによってLambda関数の開発が加速化︕︕
    https://docs.aws.amazon.com/ja_jp/greengrass/latest/developerguide/connectors.html

    View Slide

  32. #higobashi.aws 32
    提供済みのGreengrass Connectors
    2018/4現在AWSから提供されているGreengrass Connectors
    Connector 説明
    CloudWatch Metrics カスタムメトリクスを Amazon CloudWatch に発⾏します。
    Device Defender システムメトリクスを AWS IoT Device Defender に送信します。
    Image Classification
    ローカルイメージ分類推論サービスを実⾏します。この connector では、複数
    のプラットフォーム⽤のバージョンが⽤意されています。
    IoT Analytics Sends data from devices and sensors to AWS IoT Analytics.
    Kinesis Firehose Amazon Kinesis Data Firehose デリバリストリームにデータを送信します。
    Modbus-RTU Protocol Adapter Modbus RTU デバイスにリクエストを送信します。
    Raspberry Pi GPIO Raspberry Pi Core デバイスの GPIO ピンをコントロールします。
    Serial Stream Core デバイスのシリアルポートに対する読み込みと書き込みを⾏います。
    ServiceNow MetricBase Integration ServiceNow MetricBase に時系列メトリクスを発⾏します。
    SNS メッセージを Amazon SNS トピックに送信します。
    Splunk Integration データを Splunk HEC に発⾏します。
    Twilio Notifications Twilio のテキストまたは⾳声メッセージをトリガーします。
    https://docs.aws.amazon.com/ja_jp/greengrass/latest/developerguide/connectors-list.html

    View Slide

  33. 33
    Greengrassと組み合わせて
    有効活⽤できそうな
    他のAWSサービスの紹介

    View Slide

  34. #higobashi.aws 34
    他のAWSサービス紹介1
    AWS Lambda
    Amazon Kinesis
    AWS Glue
    Amazon QuickSight
    AWS上で発⽣したイベントをトリガーにユーザーが作成した関数が実⾏できるサービス
    クラウド側でのデータ加⼯やサービス間連携のラッパーに
    データの抽出、変換、ロード (ETL) 処理を⾏うためのマネージドサービス
    機械学習やデータ分析の前処理に
    BI(Business Intelligence)サービス
    データの分析・可視化に最適
    ストリーミングデータをリアルタイムで収集、処理、分析するためのサービス
    エッジ -> クラウドのデータ収集に

    View Slide

  35. #higobashi.aws 35
    他のAWSサービス紹介2
    Amazon S3
    ストレージサービス
    データレークとしてサービス関連系の中核に利⽤
    Amazon Elasticsearch Service
    Elasticsearchのマネージドサービス
    検索・分析・可視化に
    Amazon Sagemaker
    機械学習のワークフロー全般をカバーするマネージドサービス
    様々なライブラリに対応
    AWS IoT Analytics
    IoTデータの分析を簡単に実⾏できるマネージドサービス
    SagemakerやQuick Sightと連携可能

    View Slide

  36. 36
    Greengrassと他の
    AWSサービスを組み合わせた
    データ分析・機械学習の環境例

    View Slide

  37. #higobashi.aws 37
    GGと他AWSサービスの組み合わせ例1
    GG Lambda -> Kinesis Firehose connector -> Kinesis Firehose -> Amazon ES & Kibana
    Lambda
    function
    AWS Cloud
    GG Core
    Amazon Kinesis Data
    Firehose
    Amazon Elasticsearch
    Service
    AWS IoT Core
    Amazon ESにデータを集めてKibanaで可視化

    View Slide

  38. #higobashi.aws 38
    GGと他AWSサービスの組み合わせ例1

    View Slide

  39. #higobashi.aws 39
    GGと他AWSサービスの組み合わせ例2
    GG Lambda -> Kinesis Firehose connector -> IoT Analytics -> Quick Sight
    Lambda
    function
    AWS Cloud
    GG Core
    AWS IoT Core
    IoT Analyticsにデータを集めてQuick Sightで可視化
    Amazon QuickSight
    AWS IoT Analytics

    View Slide

  40. #higobashi.aws 40
    GGと他AWSサービスの組み合わせ例2

    View Slide

  41. #higobashi.aws 41
    GGと他AWSサービスの組み合わせ例3
    SageMakerのモデルをエッジにデプロイ エッジで画像分類
    結果の信頼度が範囲外の画像をS3にUPし、再トレーニングに利⽤
    https://aws.amazon.com/jp/blogs/iot/machine-learning-at-the-edge-using-and-retraining-image-classification-models-with-aws-
    iot-greengrass-part-1/

    View Slide

  42. #higobashi.aws 42
    GGと他AWSサービスの組み合わせ例3

    View Slide

  43. 43
    デモ
    先ほどの組み合わせ例を
    使って簡単にデモします

    View Slide

  44. #higobashi.aws 44
    デモ1 データ収集&可視化
    • デバイス上で計測した温度の情
    報をクラウドにUP
    • 上記の処理を5秒に1回実⾏
    • 今回はデモなので温度は0~30の
    範囲でランダムに設定

    View Slide

  45. #higobashi.aws 45
    デモ2 エッジでの推論
    • デバイス上で画像を撮影し、
    ローカルで推論処理を実⾏
    • 推論結果をクラウドにUP
    • 推論結果が閾値の範囲外の場合
    は画像データをS3にUP
    https://aws.amazon.com/jp/blogs/iot/machine-learning-at-the-edge-using-and-retraining-image-classification-models-with-aws-
    iot-greengrass-part-1/

    View Slide

  46. #higobashi.aws 46
    まとめ
    • データ分析や機械学習のためにエッジ側の技術
    が注⽬されている
    • エッジコンピューティングには⼤きな可能性が
    • Greengrassを活⽤することでクラウドとエッジ
    の統合が容易に

    View Slide

  47. 47
    まとめ
    Greengrass⾯⽩いので
    ぜひ遊んでみて下さい

    View Slide

  48. 48

    View Slide