Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Jetson x Azure ハンズオン DeepStream Azure IoT

734 views

Published on

NVIDIA x Microsoft Startup Day

大串 正矢
エヌビディア合同会社
シニアソリューションアーキテクト

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Jetson x Azure ハンズオン DeepStream Azure IoT

  1. 1. 大串 正矢, 2020.11.26 DEEPSTREAM AZURE IoT
  2. 2. 2 コンパスに記載のセットアップの確認 Connpassに記載のハードウェアの準備ができていますか ハードウェアの準備ができていない場合は参加できません。申し訳ありませんが、聴講のみになり ます。 Connpassに記載のソフトウェアの準備ができていますか ソフトウェアの準備ができていない方はこのプレゼンの時間に準備お願いします。 分からない点があればTAに確認お願いします。
  3. 3. 3 AI REVOLUTION 空間の利用率はより重要に 交通マネジメント 小売り 医療工場 小売りと配送 スタジアムとカジノ 空港アクセス制御 $2T INDUSTRY —AIを使用して、多くの業界で運用効率と安全性を向上
  4. 4. 4 ビデオ分析の課題 高精度な AI 高いスループットを実現 大規模な展開
  5. 5. 5 BUILD WITH DEEPSTREAM
  6. 6. 6 インテリジェントビデオ分析 アプリケーション ピクセル 洞察 収集, デコード 前処理 より深い分析、 可視化 推論:検知、分類、 追尾 メタデータ受信 IoTセンサー エッジ クラウド
  7. 7. 7 DEEPSTREAM SOFTWARE STACK CUDA-X Kubernetes ON GPUsNVIDIA Containers RT TensorRT DEEPSTREAM SDK JETSON | TESLA | EGX NVIDIA COMPUTING PLATFORM - EDGE TO CLOUD Triton Inference Server† Multimedia Hardware Accelerated Plugins Bi-directional IoT Messaging OTA model update Applications and Services Reference Applications & Helm Charts Python C/C++ † - Formerly TensorRT Inference Server
  8. 8. 8 GSTREAMER DeepStreamはGSTREAMERをベースで構成。 GSTREAMERのプラグイン機能を組み合わせて提供 PLUGINS – メディア処理パイプラインの基本的な構成要 素 PADS – プラグインの入力と出力であり、他のプラグインを 接続。 これらは、リンクとデータフローを制御するために使 用。 BINS – 複数のプラグインを組み合わせて機能を実現した もの PIPELINE – トップレベルのBINS。 アプリケーションと連携を 取るためのbusを提供し、子プラグインの同期を管理
  9. 9. 9 GSTREAMER Buffers – パイプライン内のプラグイン間でストリー ミングデータを渡すためのオブジェクト Events – イベントは、プラグイン間またはアプリケー ションからプラグインに送信されるオブジェクト Messages – プラグインによってパイプラインのメッ セージバスに投稿されたオブジェクト。アプリケーショ ンに送られる Queries - アプリケーションがパイプラインから情報 を要求
  10. 10. 10 DEEPSTREAMで良く使用する単語 1) Multi-Stream – DeepStreamパイプラインへの入力ソース数 2) Multi-GPU – 同一システム内の複数のGPUカード間でのパイプラインの同時実行 3) Metadata – 分析のためにプラグイン(オブジェクトタイプなど)およびアプリケーション(人数カウント など)によって生成された情報 4) PGIE(Primary GPU Inference Engine) – TensorRTを使用した最初に推論するGPU推論エンジ ン 5) SGIE (Secondary GPU Inference Engine) – TensorRTを使用した2番目に推論するGPU推論エ ンジン
  11. 11. 11 マルチストリームバッチ処理 1. 最適なパフォーマンスを提供するにはNvInferプラグインにバッチ入力が必要。バッチ入力がモデル 推論に使用するTensorRTのGPUコアの使用率を向上させるため 2. 複数の入力ソースを組み合わせるか、単一の入力をバッファリングして、連続するフレームのバッチ を形成 3. 複数のソース(カメラ/デコーダー)からのバッファーのフローを制御 4. バッチ制御用の連続したバッファーを形成-変換/スケーリング/オンスクリーンディスプレイ 5. メタデータを添付して、異なるソースのバッファーを区別
  12. 12. 12 DEEPSTREAM パイプライン GST-NvInfer (Car-Detect) Gst-uridecode GST- NvTracker (Car-LPR) (Car-Color) (Car-Model) GST-NvInfer (Car-Make) GST- NvEglglessink GST- nvosd GST- nvmultistrea mtiler ビデオデコード Primary Detector オブジェクトト ラッカー Secondary Classifiers On Screen Display Tiler Renderer Gst-uridecode Gst-uridecode Gst-uridecode N ストリーム GST- nvstreammux StreamMux
  13. 13. 13 DECODER プラグイン マルチストリーム同時デコードをサポート NVDECODE API を使用 H.264 H.265 エンコード機能も持っている Name - nvvideo4linux2 decoder nvvideo4linux2 libv4l2 NVDEC/NVENC/ NVJPEG(Jetson) エンコードされ たストリーム YUV Low Level API HW
  14. 14. 14 VIDEO AGGREGRATOR 「n」入力ストリームを受け入れ、シーケンシャルバッ チフレームに変換するプラグイン スケーリングのサポート–ビデオ入力の解像度がモデ ルの解像度と異なる場合、またはその逆の場合に スケーリングを変更する Name - nvstreammux nvstreammux CPU + GPU / VIC (Jetson) YUV/ RGBA バッチ化された YUV/RGBA + metadata HW
  15. 15. 15 VIDEO AGGREGRATOR Contiguous buffer of size W x H x N allocated by GstNvStreamMuxer Async Cuda Memcpy Queue for S1 buffers Queue for S2 buffers Queue for SM buffers Batching algorithm Batch of N buffers of size (W x H) Decoder / Camera 1 Decoder / Camera 2 Decoder / Camera M GST - NvInfer Round Robin then FCFS
  16. 16. 16 推論 検出と分類 Primary & Secondary モード Caffe, ONNXモデルサポート TensorRTで検出、分類モデルが動作 バッチ推論 複数の検出がされるのでそれらをクラスタリング Triton Inference ServerとTensorRTモデルの切 り替え可能 Name - nvinfer nvinfer GPU/ DLA(Jetson)/ VIC(DLA) Low Level API HW YUV/RGBA + [Meta] YUV/RGBA + Meta nvds_inferutils nvds_infer
  17. 17. 17 OBJECT トラッカー KLT、IOU, NvDCFをサポート https://docs.nvidia.com/metropolis/deep stream/5.0DP/plugin- manual/index.html#page/DeepStream%20 Plugins%20Development%20Guide/deepstr eam_plugin_details.3.02.html# スケーリングとフォーマット変換のために内部的に CUDAカーネルを使用 Name - nvtracker nvtracker Tracker API GPU + CPU + VIC(Jetson) Low Level API HW YUV/RGBA + meta YUV/RGBA + meta
  18. 18. 18 スクリーン TILER ビデオウォールの作成に使用 複数の入力ソースをビデオタイル出力に配置 構成可能なウィンドウサイズを設定 Name - nvmultistreamtiler nvmultistreamtiler VIC(Jetson)/ GPU + CPU HW YUV/RGBA + All Meta YUV/RGBA + All Meta
  19. 19. 19 スクリーンディスプレイ 色付きの線とバウンディングボックス テキスト/ラベル 矢印、線、円 Name - nvosd nvosd OSD API CPU + GPU/ VICJetson() Low Level API HW RGBA + All Meta RGBA + All Meta
  20. 20. 20 スクリーンディスプレイ
  21. 21. 21 DEEPSTREAMのメタデータ メタデータには、グラフ内のプラグインによって生成された情報が含まれる 各プラグインは、メタデータ構造に追加情報を付与 すべての段階で生成されたメタデータは、後続の処理で使用可能 Gstreamerバッファーに添付された新しいメタデータタイプを作成できるため、Gstreamerでカスタムメタデータ拡 張が可能 詳細: https://docs.nvidia.com/metropolis/deepstream/5.0DP/dev- guide/DeepStream_Development_Guide/baggage/group__metadata__structures.html
  22. 22. 22 [application] enable-perf-measurement=1 # パフォーマンスを計測するかどうかの設定 perf-measurement-interval-sec=5 # パフォーマンスを計測するためのサンプリング間隔 kitti-track-output-dir =/home/kitti_data_tracker # KITTI メタデータの出力先を変更可能 詳細 https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_ref_app_deepstream.html#application-group Application Group DEEP STREAM 設定ファイル
  23. 23. 23 [source0] enable=1 # sourceを使用するかどうかの設定 type=3 # 入力ソースのタイプ設定。3の場合は複数のURI(ファイルパスなど) uri=file://./videos/drones_0%d.mp4 # URIの設定(ファイルパス、ウェブリンクなど) num-sources=1 # 入力ソースの数 gpu-id=0 # sourceで使用するGPUの指定 詳細:https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_ref_app_deepstream.html#source-group Source Group DEEP STREAM 設定ファイル RTSP/RAW DECODE BATCHING TRACKING VIZ DISPLAY/ STORAGE/ CLOUD DNN(s) IMAGE PROCESSING
  24. 24. 24 [streammux] gpu-id=0 # streammuxで使用するGPUの指定 live-source=0 # ソースがライブであるかどうかを設定 batch-size=4 # 推論で使用する際のバッチサイズ batched-push-timeout=40000 # バッチが作成されるまでの最大待ち時間。この時間を過ぎると自動的に次の処理へ width=1280 # トータルの幅のピクセルサイズ height=720 # トータルの高さのピクセルサイズ enable-padding=0 # アスペクト比を保つためにパディングを許可するかどうか nvbuf-memory-type=0 # メモリ確保方法を指定。0はプラットフォームで指定されているデフォルトの方法 詳細: https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_ref_app_deepstream.html#streammux-group StreamMux Group DEEP STREAM 設定ファイル RTSP/RAW DECODE BATCHING TRACKING VIZ DISPLAY/ STORAGE/ CLOUD DNN(s) IMAGE PROCESSING
  25. 25. 25 [primary-gie] enable=1 # primary-gieを使用するかどうかの設定 gpu-id=0 # primary-gieで使用するGPUの指定 gie-unique-id=1 # 生成されたメタデータがどのモデルで分類、検出されたかを識別するためのユニークIDの設定 nvbuf-memory-type=0 # メモリ確保方法を指定。0はプラットフォームで指定されているデフォルトの方法 config-file=infer_config.txt # Gst-nvinferプラグインのプロパリティを指定するファイルのパス 詳細: https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_ref_app_deepstream.html#primary-gie- and-secondary-gie-group Primary GIE Group (GPU Inference Engine) DEEP STREAM 設定ファイル RTSP/RAW DECODE BATCHING TRACKING VIZ DISPLAY/ STORAGE/ CLOUD DNN(s) IMAGE PROCESSING
  26. 26. 26 [property] gpu-id=0 # 使用するGPUの指定 net-scale-factor=0.017352074 # ピクセル正規化のための値 offsets=123.675;116.28;103.53 # 各ピクセルから差し引かれる色成分の平均値、実際は平均値にnet-scale-factorをかけた後に引かれる model-engine-file=./stanford_resnext_batch4.plan # 使用するモデルファイルのパス labelfile-path=./stanford.names # モデルの識別結果を把握するためのラベルファイル batch-size=4 # バッチサイズ network-mode=2 # 推論の際の数値精度。0:FP32、1: INT8、2: FP16 num-detected-classes=80 # モデルで検出できるクラス数 interval=2 # 推論のためにスキップされる連続のバッチ数 gie-unique-id=1 #生成されたメタデータがどのモデルで分類、検出されたかを識別するためのユニークIDの設定 output-blob-names=boxes;scores;classes # 出力レイヤー名 parse-bbox-func-name=NvDsInferParseRetinaNet # カスタムバウンディングボックスをパースする関数。指定しなければGst-nvinferのresnetモデルのものを使用 custom-lib-path=./libnvdsparsebbox_retinanet.so # カスタムモデルで使用されるカスタムメソッドを含むライブラリを指定 詳細: https://docs.nvidia.com/metropolis/deepstream/4.0/DeepStream_Plugin_Manual.pdf (Gst-nvinfer File Configuration Specifications章) Primary GIE Config File (infer_config.txt) DEEP STREAM 設定ファイル RTSP/RAW DECODE BATCHING TRACKING VIZ DISPLAY/ STORAGE/ CLOUD DNN(s) IMAGE PROCESSING
  27. 27. 27 [class-attrs-all] threshold=0.3 # 検出の閾値 eps=0.5 # グループ化する際のDBSCANアルゴリズムに使用される値 group-threshold=0 # グループ化するための閾値 detected-min-w=4 # 検出するための最小幅 detected-min-h=4 # 検出するための最小高さ detected-max-w=0 # 検出するための最大幅 detected-max-h=0 # 検出するための最大高さ 詳細: https://docs.nvidia.com/metropolis/deepstream/4.0/DeepStream_Plugin_Manual.pdf (Table 3. Gst-nvinfer plugin, [class-attrs-...] groups, supported keys) Primary GIE Config File (infer_config.txt) DEEP STREAM 設定ファイル RTSP/RAW DECODE BATCHING TRACKING VIZ DISPLAY/ STORAGE/ CLOUD DNN(s) IMAGE PROCESSING
  28. 28. 28 [tracker] enable=1 # Trackerを使用するかどうかの指定 tracker-width=1280 # トラッキングする幅のピクセルサイズ tracker-height=720 # トラッキングする高さのピクセルサイズ ll-lib-file=/opt/nvidia/deepstream/deepstream-4.0/lib/libnvds_mot_iou.so # 低レベルのトラッカー実装ライブラリパスを指定 ll-config-file=iou_config.txt # IoU処理をする際に設定ファイルパスを指定 gpu-id=0 #使用するGPUの指定 enable-batch-process=1 # 複数のストリームにわたるバッチ処理を有効にするかどうかの指定 詳細:https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_ref_app_deepstream.html#tracker-group Tracker Group DEEP STREAM 設定ファイル RTSP/RAW DECODE BATCHING TRACKING VIZ DISPLAY/ STORAGE/ CLOUD DNN(s) IMAGE PROCESSING
  29. 29. 29 [osd] enable=1 # On Screen Displayを使用するかどうかの指定 gpu-id=0 # 使用するGPUの指定 border-width=1 # バウンディングボックスの線のサイズ text-size=12 # テキストサイズ text-color=1;1;1;1; # テキストカラー text-bg-color=0.3;0.3;0.3;1 # テキストの背景色 font=Arial # テキストのフォント clock-x-offset=800 # クロックのx位置 clock-y-offset=820 # クロックのy位置 clock-text-size=12 # クロックのテキストサイズ clock-color=1;0;0;0 # クロックのカラー nvbuf-memory-type=0 # メモリ確保方法を指定。0はプラットフォームで指定されているデフォルトの方法 詳細:https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_ref_app_deepstream.html#osd-group On Screen Display Group DEEP STREAM 設定ファイル RTSP/RAW DECODE BATCHING TRACKING VIZ DISPLAY/ STORAGE/ CLOUD DNN(s) IMAGE PROCESSING
  30. 30. 30 [sink0] enable=1 # sinkを使用するかどうかの指定。sinkは複数指定可能 type=2 # 1=FakeSink:出力はせずに仮の出力先を指定。 クラウド連携で使用。2=EglSink: レンダリングAPIを使用するための設定。 3=File: ファイル出力するための設定。4=RTSP: RTSP出力するための設定 sync=1 # レンダリングの際に同期するかどうかの設定。0の場合は同期しない source-id=0 # ソースグループのID を設定 gpu-id=0 # 使用するGPUの指定 nvbuf-memory-type=0 # メモリ確保方法を指定。0はプラットフォームで指定されているデフォルトの方法 詳細:https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_ref_app_deepstream.html#sink-group On Screen Display Group DEEP STREAM 設定ファイル RTSP/RAW DECODE BATCHING TRACKING VIZ DISPLAY/ STORAGE/ CLOUD DNN(s) IMAGE PROCESSING
  31. 31. 31 [tiled-display] enable=1 # tiled-displayを使用するかどうかの設定 rows=2 # 行数 columns=2 # 列数 width=1280 # トータルの幅のピクセルサイズ height=720 # トータルの高さのピクセルサイズ gpu-id=0 # この機能を制御するGPUを指定 nvbuf-memory-type=0 # メモリ確保方法を指定。0はプラットフォームで指定されているデフォルトの方法 詳細:https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_ref_app_deepstream.html#tiled-display- group Tiled Display Group (オプション) DEEP STREAM 設定ファイル RTSP/RAW DECODE BATCHING TRACKING VIZ DISPLAY/ STORAGE/ CLOUD DNN(s) IMAGE PROCESSING
  32. 32. 32 リアルタイムパフォーマンスの実現 8 16 32 42 8 32 64 84 0 10 20 30 40 50 60 70 80 90 Nano Xavier NX AGX Xavier T4 Performance in streams Number of 1080p, 30fps streams processed with DeepStream H265 H264 Data generated using DeepStream reference app Full performance data in DeepStream performance documentation Watch the performance optimization video tutorial
  33. 33. 33 DEEPSTREAM5の特徴
  34. 34. 34 PYTHON サポート C/C++ Python https://github.com/NVIDIA-AI-IOT/deepstream_python_apps
  35. 35. 35 DEEPSTREAM WITH TRITON INFERENCE SERVER AI Inference NVIDIA Triton Inference Server DeepStream Application TensorRT Triton Inference Server Pros 高いスループット 高い柔軟性 Cons カスタムレイヤーの場合プ ラグインの記述が必要 TensorRTに比べてパ フォーマンスが低い
  36. 36. 36 TRITON – DEEPSTREAM アーキテクチャ Gst-nvinferserver Application (C++/Python) nvds_infer_server 前処理 カラー変換 & スケーリング 中央値差分 Tensor正規化 後処理 物体検出 クラス識別 セグメンテーション Triton Lib (C API) Inference model NV12/RGBA buffers Batch Metadata NV12/RGBA buffers Modified Batch Metadata NV12/RGBA buffers Input Tensors (CUDA mem) Tensor output (CUDA mem) Metadata
  37. 37. 37 MASK R-CNN アプリケーションのデプロイ SOURCE DECODE STREAMMUX TRACKER MSGCONV MSGBROKERINFERENCE DeepStream app TensorRT OSD Use mask for tracking Add mask to message Draw mask
  38. 38. 38 GETTING STARTED WITH DEEPSTREAM
  39. 39. 39 GETTING STARTED APPLICATIONS Available in C and Python Name Function deepstream-test1 DeepStream Hello worldアプリケーション。 ビデオファイルを解析して物体検出の結果を 表示 deepstream-test2 test1上に構築し、検出されたオブジェクトに オブジェクト分類を追加します deepstream-test3 test1上に構築し、複数のビデオ入力を追加し ます deepstream-test4 test1上に構築し、nvmsgbrokerプラグインを 介してIoTサービスへの接続を追加します Object detection Classific- ation BatchingDecode Object detection BatchingDecode Object detection Object detection Message Broker Message Converter C/C++ apps | Python apps
  40. 40. 40 END-TO-END APPS
  41. 41. 41 DEEPSTREAM APPLICATION BATCHINGDECODE OBJECT DETECTION TRACKER VIZ EDGE CLOUD ANALYTICS – COUNT PEOPLE RULES PeopleNet Model: https://ngc.nvidia.com/catalog/models/nvidia:tlt_peoplenet GitHub: TBD PeopleNet
  42. 42. 42 Demo 人数カウントアプリ
  43. 43. 43 DEPLOY
  44. 44. 44 デプロイメントのスケール DeepStream container IoT edge device DeepStream container IoT edge device DeepStream container IoT edge device CLOUD Download the Demo to deploy DeepStream application using Helm charts and Kubernetes on NGC
  45. 45. 45 双方向 IOT コミュニケーション メタデータ、状態、マル チメディアの送信 アプリケーションのオーケストレー ション、OTAアップデート、情報 のリクエスト、イベントのレコード DeepStream container IoT edge device
  46. 46. 46 ユースケース: 頻繁なモデル変更が必要なエッジ展開 ダウンタイムゼロのオンザフライモデル更新 SDKで提供される OTA モデルアップデート NGC PUBLISH TLT DeepStream container TRAIN
  47. 47. 47 スマートレコード RECORD METADATA ユースケース: ➢ トリガーベースのイベントレコード ➢ 異常の記録 利点: ➢ 選択的な記録によりディスク容量を節約
  48. 48. 48 セキュリティ DeepStream Application IoT edge device Secure authentication with SSL certificates and SASL/Plain 認証局(CA) クライアント証明書 サーバー証明書 リクエスト サーバーの証明書を送信 クライアント証明書を送信 サーバーの証明書を検証 クライアントの証明書を検証
  49. 49. 49 クラウド連携 AWS How to integrate NVIDIA DeepStream on Jetson Modules with AWS IoT Core and AWS IoT Greengrass | The Internet of Things on AWS – Official Blog https://aws.amazon.com/blogs/iot/how-to-integrate-nvidia-deepstream-on-jetson-modules-with-aws-iot-core-and-aws-iot-greengrass/
  50. 50. 50 クラウド連携 Azure Azure-Samples/NVIDIA-Deepstream-Azure-IoT-Edge-on-a-NVIDIA-Jetson-Nano: This is a sample showing how to do real-time video analytics with NVIDIA DeepStream connected to Azure via Azure IoT Edge. It uses a NVIDIA Jetson Nano device that can process up to 8 real-time video streams concurrently. https://github.com/Azure-Samples/NVIDIA-Deepstream-Azure-IoT-Edge-on-a-NVIDIA-Jetson-Nano IoT Edge Agent IoT Edge Runtime IoT Hub Container Registry VLC media player ネットワーク ストリーミング Visual Studio Code ImageのPull IoT Edge の 管理、指示 Module配置情報の転送 Azure Deep Stream
  51. 51. 51 GET STARTED TODAY Pre-trained Models Powerful End to End Intelligent Video Analytics Made Easy Transfer Learning Toolkit DeepStream SDK Transfer Learning ToolkitPre-trained models on NGC TLT Object Detection TLT DetectNet_v2 Object Detection TLT classification TLT Instance segmentation DeepStream SDK Documentation Documentation Developer Forums Getting started resources, sample apps, webinars & tutorials Developer Forums Free Online DLI Course Getting started resources, sample apps, webinars & tutorials Developer Forums Sign up for our new webinar: CREATE INTELLIGENT PLACES USING NVIDIA PRE-TRAINED VISION MODELS AND DEEPSTREAM SDK
  52. 52. 52 NEW DEVELOPER CONTENT TutorialTutorial Developer blog Tutorial Video Tutorial Tutorial Tutorial Tutorial Enroll in the NVIDIA Developer Program to get the latest developer updates Implementing real-time AI-based face mask detection
  53. 53. 53 Azure IoT Edge
  54. 54. 54 Azure IoT Edgeの利点(一部) エッジデバイスの死活監視 dockerコンテナ(Azure IoT Edgeのドキュメントに準拠すると“モジュール“と表記されているため以降は”モジュールに統一”)のデプロイ、監視 エッジのモジュールとクラウドのコミュニケーション(クラウド側にデータ保存も可能) IoT hubでコンテナを管理できる 参考:https://docs.microsoft.com/en-us/azure/iot-edge/iot-edge-runtime
  55. 55. 55 Azure IoT Edge IoT Edge モジュール: Azureのサービス、独自のコードを実行するコンテナ、IoT Edgeデバイスにデプロイされそのデバイスのローカルで実行 IoT Edge ランタイム: 個々のIoT Edgeデバイス上で動作し、各デバイスにデプロイされたモジュールを管理 クラウドベースのインターフェース: IoT Edgeデバイスをリモートから監視して管理 参考:https://docs.microsoft.com/ja-jp/azure/iot-edge/about-iot-edge IoT Edge モジュール
  56. 56. 56 IoT Edgeモジュール IoT Edge モジュール 実行単位となるものでDocker互換のコンテナとして実装される 互いに通信を行う複数のモジュールを構成することでデータ処理パイプラインの作成可能 Azureのサービスが利用可能: 今回はDeep Streamのコンテナを使用 参考:https://docs.microsoft.com/ja-jp/azure/iot-edge/about-iot-edge IoT Edge モジュール
  57. 57. 57 IoT Edge ランタイム IoT Edgeランタイム 個々のIoT Edgeデバイス上で動作し、各デバイスにデプロイされたモジュールを管理 モジュールの正常性をクラウドにレポートしてリモート監視可能に 参考:https://docs.microsoft.com/ja-jp/azure/iot-edge/about-iot-edge
  58. 58. 58 クラウドベースのインターフェース IoT Hub クラウドベースのインターフェース IoT Edgeデバイスをリモートから監視して管理 まとまったデバイスに対してワークロード(コンテナに搭載した機能)を送信して実行 参考:https://docs.microsoft.com/ja-jp/azure/iot-edge/about-iot-edge
  59. 59. 59 Azure IoT Edge Hub エッジデバイスとクラウドをつなぐProxyのような役割 MQTT(Message Queuing Telemetry Transport)を用いた接続により必要な多数の接続があっても対応可能にしている 参考:https://docs.microsoft.com/en-us/azure/iot-edge/iot-edge-runtime
  60. 60. 60 MQTT(Message Queuing Telemetry Transport) HTTPのデメリット 同期プロトコル メッセージのブロードキャストコストが高い ヘッダーのサイズが大きい MQTT ヘッダーが小さい パブリッシュ・サブスクライブモデル 多数のクライアントがあることが想定 ブローカーがクライアントからのメッセージを管理 Sensor Sensor Sensor Sensor Sensor Publish sensor data Subscribe config change Broker Data processing and storage Admin console Publish config change Subscribe sensor data
  61. 61. 61 Azure IoT Edge Hub: Module Communication モジュール間のコミュニケーションを操作、管理可能 この機能によって、データのパイプラインの作成を可能に 参考:https://docs.microsoft.com/en-us/azure/iot-edge/iot-edge-runtime
  62. 62. 62 Azure IoT Edge Agent エッジデバイスの死活監視 エッジデバイス上のモジュールの状態監視 参考:https://docs.microsoft.com/en-us/azure/iot-edge/iot-edge-runtime IoT Edge Agent

×