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.
SensorBeeの紹介
第2回  分散システム勉強会
柏原秀蔵(@suma90h)
Preferred  Networks,  Inc.
2016/03/21
⾃自⼰己紹介
l  柏原秀蔵 / Preferred Networks, Inc. (PFN)
–  2011年年秋にPFI⼊入社 → 2014年年PFNへ
–  製品開発とか最近は主にパッケージング、CI担当
l  SIProp勉強会との...
それまで何やってたの?
l  ⼊入社以前・⼤大学時代のアルバイト
–  セキュリティ製品の開発(インストーラ、エンジン開発、テストツール作成)
–  AndroidアプリとWebサービス/独⾃自CIツール作成
l  ⼤大学研究室
–  Sc...
本⽇日の内容
l  話すこと
–  SensorBee概要
–  事例例紹介
–  UDF/UDS/pluginによる拡張
–  Go⾔言語での実装についてと、アーキテクチャっぽいこと周辺
l  話さないこと
–  機械学習、Chainer...
(特に)  ネットワークのエッジ  /  フォグにおいて
ストリームデータに対して
機械学習  (特にDeep  Learning)  を利利⽤用した
⾮非構造化データ向けのETLを
低レイテンシで適⽤用することを⽬目的としたツール
Light...
ETLツール・ストリーム処理理といっても
l  ETL:
–  Extract 読み込んだデータの前処理理・整形
–  Transform 加⼯工(実際に⽬目的とする処理理をする)
                          Sens...
{
"id": 123,
"age": "35",
"gender": "male",
"location": {
"x": 252.1,
"y": 179.3
},
…
}
SensorBee™:  Stream  processing  e...
SensorBee™:  Transform
8
Camera
Vehicle
Router
Sensor
fluentd
RDBMS
Search
Engine
NoSQL
Data Sources Data DestinationsSens...
SensorBee™:  Flexibility  and  Extensibility
Camera
Vehicle
Router
Sensor
fluentd
RDBMS
Search
Engine
NoSQL
Data Sources D...
SensorBee™:  in  Deep  Intelligence  in  Motion
10
Camera
Vehicle
Router
Sensor
fluentd
RDBMS
Search
Engine
NoSQL
Data Sou...
CES2016⾃自動⾞車車の⾃自動運転のデモ
l  https://www.youtube.com/watch?v=7A9UwxvgcV0
l  ⾃自動運転のデモ  ぶつからないをアピール
l  ⾚赤い⾞車車は⼈人が運転しているが、⽩白い...
Source/Sink/Stateとストリームという概念念
名前 説明
Stream ストリームはSourceから⽣生成される
ストリームは何か処理理してから、新しく名前を付けてストリー
ムを作成し、後から別名で参照することもできる
また、結合...
分散システムとの関わり
l  単体でも動作可能
–  ETLツールなので、単体で分散システムというわけではない
–  元々機械学習を適⽤用するためのツール
l  他サービスとの連携や、適材適所で分散させてもよい
–  エッジ/クラウドどちら...
ここからdisktnkさんの資料料
http://www.slideshare.net/disktnk/sensorbee-‐‑‒59782111
14
サンプル例例:監視カメラから⼈人物認識識をやりたい
15
{
"id": 123,
"age": ”35",
"gender": “female",
"location": {
"x": 252.1,
"y": 179.3
},
…
}
{
"...
サンプル例例:監視カメラからデータを取得
16
[Source]
管理理カメラのデータ=フレームデータ
を取得
{
"id": 123,
"age": ”35",
"gender": “female",
"location": {
"x": 2...
サンプル例例:画像データから⼈人物を切切り取り
17
[Stream+UDF]
⼈人物の抽出
{
"id": 123,
"age": ”35",
"gender": “female",
"location": {
"x": 252.1,
"y"...
サンプル例例:切切り取った⼈人物画像を解析
18
[Stream+UDF]
⼈人物データの解析
{
"id": 123,
"age": ”35",
"gender": “female",
"location": {
"x": 252.1,
"y...
サンプル例例:解析データを出⼒力力
19
{
"id": 123,
"age": ”35",
"gender": “female",
"location": {
"x": 252.1,
"y": 179.3
},
…
}
{
"id": 131...
デモ:  顔認識識
l  OpenCV  の  CascadeClassifier  を使⽤用した顔認識識
–  今回は  ultraist様のLBPモデルを使⽤用  
http://ultraist.hatenablog.com/entry/...
デモ:  顔認識識→からの笑い男
l  ハッカーの憧れ
21
x,y,w,h  を元に画像を貼るUDF
デモ:  顔認識識→からの笑い男→もう⼀一度度動画へ
l  OpenCV  の    VideoWriter  を使⽤用して動画にまとめる
22
動画ファイル
を作るSink
デモ動画  +
disktnkさんの資料料ここまで。
23
UDF/UDS/Source/SinkはPluginで拡張可能
l  SourceとSink
–  Fluentd
–  MQTT
–  ファイル
–  OpenCVのカメラ/Webカメラ/AVI出⼒力力…  など
l  UDF(User-...
SensorBeeと実⾏行行モード
l  Go⾔言語なので単⼀一バイナリが基本
–  静的リンクで30MBくらいのフットプリント
l  実⾏行行時の種類が複数ある
–  run   サーバとして実⾏行行(同時にBQL実⾏行行も可)、shel...
run  +  shell:  APIサーバとクライアントという形
l  近年年よく⾒見見るMicroservicesっぽい形態
–  APIサーバ(run)とクライアント(shell)という実⾏行行形態を取っている
–  Dockerのdo...
開発苦労話的な何か
l  Go⾔言語なのでチーム開発はやりやすい
–  go  fmtとか知っている⼈人は感覚がわかるはず、知らない⼈人は知っても損はない
l  goroutineを多⽤用しているため、並⾏行行プログラミングが中々難しい
l...
ぜひ使ってみてください!  github  starもよろしく!
l  http://sensorbee.io  
l  http://docs.sensorbee.io/en/latest/  
l  https://github.co...
ありそうな質問
l  いつから開発しているか?
–  2015年年3⽉月が最初のコミット
l  過去・他OSSとの差分、特徴は?
–  JSONのような⾮非構造化データを扱えること(SparkでもJSON対応RDDあったかも)
–  SQL...
Copyright  ©  2016
Preferred  Networks  All  Right  Reserved.
Upcoming SlideShare
Loading in …5
×

SensorBeeの紹介

1,686 views

Published on

第2回分散システム勉強会

Published in: Technology

SensorBeeの紹介

  1. 1. SensorBeeの紹介 第2回  分散システム勉強会 柏原秀蔵(@suma90h) Preferred  Networks,  Inc. 2016/03/21
  2. 2. ⾃自⼰己紹介 l  柏原秀蔵 / Preferred Networks, Inc. (PFN) –  2011年年秋にPFI⼊入社 → 2014年年PFNへ –  製品開発とか最近は主にパッケージング、CI担当 l  SIProp勉強会との関わり –  2009年年頃(B3)にScalaでpub/subしたものを発表させてもらった(⿊黒歴史) –  第何回かのPaxosの回に参加させてもらったり –  ⼤大学での研究室は分散システム・OS系の出⾝身 l  活動・趣味 –  システム系論論⽂文輪輪読会  主催 –  輪輪読と付いてるけど輪輪読してない、通常の論論⽂文読み会です –  趣味はお菓⼦子作り(焼き菓⼦子)と⼆二輪輪⾞車車でツーリング 2
  3. 3. それまで何やってたの? l  ⼊入社以前・⼤大学時代のアルバイト –  セキュリティ製品の開発(インストーラ、エンジン開発、テストツール作成) –  AndroidアプリとWebサービス/独⾃自CIツール作成 l  ⼤大学研究室 –  Scala製の分散処理理基盤の開発 l  PFI/PFN –  検索索エンジンの開発 –  機械学習フレームワークJubatusの開発(主にサーバシステム・RPC周辺) –  映像解析基盤の開発(主にパッケージング、テストとその⾃自動化) l  趣味プログラミング:バイナリエディタ作成 –  メモリに乗らないサイズのファイル向けのデータ構造と⾃自作Viewが熱い –  GUI開発が疲れてやめてしまった  http://github.com/suma/hex 3
  4. 4. 本⽇日の内容 l  話すこと –  SensorBee概要 –  事例例紹介 –  UDF/UDS/pluginによる拡張 –  Go⾔言語での実装についてと、アーキテクチャっぽいこと周辺 l  話さないこと –  機械学習、Chainer(Neural  Networkフレームワーク)のこと –  いわゆる”ストリーム処理理系”の浅くから深いところの理理論論と実装全般 u  ストリーム処理理の理理論論とか実は疎いので... u  WindowやJoinの実装はどうなってるのかね?  と質問されると困ります l  機械学習との連携詳細は「Elasticsearchと機械学習を実際に連携させる」 –  http://www.slideshare.net/nobu_̲k/elasticsearch-‐‑‒59627321 4
  5. 5. (特に)  ネットワークのエッジ  /  フォグにおいて ストリームデータに対して 機械学習  (特にDeep  Learning)  を利利⽤用した ⾮非構造化データ向けのETLを 低レイテンシで適⽤用することを⽬目的としたツール Lightweight  Stream  Processing  Engine  for  IoT http://sensorbee.io 5
  6. 6. ETLツール・ストリーム処理理といっても l  ETL: –  Extract 読み込んだデータの前処理理・整形 –  Transform 加⼯工(実際に⽬目的とする処理理をする)                          SensorBeeでは機械学習で何かを分類したり、画像から物体認識識したり –  Load           データを書き出す l  OSSのストリーム処理理ツールの例例(実を⾔言うと、使ったことないのが多い) –  Apache  Storm –  Norikra –  Spark  Streaming l  ちなみにSensorBeeは(Complex)Event  Processingではない   6
  7. 7. { "id": 123, "age": "35", "gender": "male", "location": { "x": 252.1, "y": 179.3 }, … } SensorBee™:  Stream  processing  engine  for  IoT 7 Camera Vehicle Router Sensor fluentd RDBMS Search Engine NoSQL Data Sources Data Destinations SensorBee™ focuses on transformation of and information extraction from structured and unstructured streaming data at the edge of the network, in the Fog, and in the Cloud. Machine learning and Deep Learning perform data transformation and information extraction. SensorBee™ enriches information content and adds new value prior to data being loaded to data processing systems. ETL くらいのバランス
  8. 8. SensorBee™:  Transform 8 Camera Vehicle Router Sensor fluentd RDBMS Search Engine NoSQL Data Sources Data DestinationsSensorBee™ BQL, an SQL-like language •  Filter •  Aggregate •  Join Data processing flow by a SQL-like language BQL is designed for stream processing. It is schema-less and uses JSON as its internal data model. CREATE SOURCE camera TYPE webcam_mjpeg WITH uri="http://host:port/path/to/video"; CREATE STREAM frames AS SELECT RSTREAM snowflake_id("general_id") AS id, * FROM camera1 [RANGE 1 TUPLES]; CREATE STREAM regions AS SELECT RSTREAM id AS frame_id, snowflake_id("general_id") AS id, * FROM detect_people("frames", "detection_config_parameters") [RANGE 1 TUPLES]; CREATE STREAM regions_with_metainfo AS SELECT RSTREAM classify("age_model", image) AS age, classify("gender_model", image) AS gender, * FROM regions [RANGE 1 TUPLES]; CREATE STREAM male_average_ages AS SELECT RSTREAM avg(age) AS age FROM regions_with_metainfo [RANGE 5 MINUTES] WHERE gender = "male";
  9. 9. SensorBee™:  Flexibility  and  Extensibility Camera Vehicle Router Sensor fluentd RDBMS Search Engine NoSQL Data Sources Data DestinationsSensorBee™ Plug-in Plug-in UDF Custom functionalities are added as User Defined Functions (UDFs) and User Defined States (UDSs) of BQL, such as Deep Learning transformations. Machine learning •  Classification •  Regression •  Object recognition •  Anomaly detection Machine learning algorithms supported in DIMo are online and do not require local storage. UDS
  10. 10. SensorBee™:  in  Deep  Intelligence  in  Motion 10 Camera Vehicle Router Sensor fluentd RDBMS Search Engine NoSQL Data Sources Data DestinationsSensorBee™ Deep  Learning   DeepIntelligence
 in-Motion(DIMo) Sta-s-cs   Computer   vision   Detect/Track/ Recognize   Reinforcement   learning   Distributed/ Curriculum   Time-­‐series   RNN  /   Representa-on   Sensor   fusion   Mul--­‐modal   Feedback/Ac-on   …   Libraries Plug-in Plug-in UDF UDF DIMo provides various libraries that use machine learning to support complex data processing flow. UDS
  11. 11. CES2016⾃自動⾞車車の⾃自動運転のデモ l  https://www.youtube.com/watch?v=7A9UwxvgcV0 l  ⾃自動運転のデモ  ぶつからないをアピール l  ⾚赤い⾞車車は⼈人が運転しているが、⽩白い⾞車車は邪魔されてもぶつからないよう動く l  バックエンドがSensorBee –  Chainer連携 11
  12. 12. Source/Sink/Stateとストリームという概念念 名前 説明 Stream ストリームはSourceから⽣生成される ストリームは何か処理理してから、新しく名前を付けてストリー ムを作成し、後から別名で参照することもできる また、結合(Join)したり、集約(Aggregation)、フィルタ (Filtering)などできるようになる Source ストリームの情報源。ファイル、ネットワークやDBなど。拡張 可能 Sink ストリームの書き込み先。Source同様、ファイル、ネットワー クやDBなど。拡張可能 State 状態を持つような処理理を実⾏行行できるようになる。関数だけだと 状態を変更更していく処理理ができない 例例えば、機械学習のモデルは状態に相当する。 12
  13. 13. 分散システムとの関わり l  単体でも動作可能 –  ETLツールなので、単体で分散システムというわけではない –  元々機械学習を適⽤用するためのツール l  他サービスとの連携や、適材適所で分散させてもよい –  エッジ/クラウドどちら側においてもよく、分散システムのアプリケーションを構 成する⼀一要素としてもよい –  Source/Sinkといった外部ネットワークとの接点を持つ l  Apache  Sparkなどとは異異なる⽬目的・使い⽅方を想定している –  (分散ではないが)Large  scale  data  processingであるとか –  RDDs(Resilient  Distributed  Datasets)のような分散向けの仕組みはない 13
  14. 14. ここからdisktnkさんの資料料 http://www.slideshare.net/disktnk/sensorbee-‐‑‒59782111 14
  15. 15. サンプル例例:監視カメラから⼈人物認識識をやりたい 15 { "id": 123, "age": ”35", "gender": “female", "location": { "x": 252.1, "y": 179.3 }, … } { "id": 131, "age": ”22", "gender": “male", "location": { "x": 120.5, "y": 80.2 }, … }
  16. 16. サンプル例例:監視カメラからデータを取得 16 [Source] 管理理カメラのデータ=フレームデータ を取得 { "id": 123, "age": ”35", "gender": “female", "location": { "x": 252.1, "y": 179.3 }, … } { "id": 131, "age": ”22", "gender": “male", "location": { "x": 120.5, "y": 80.2 }, … }
  17. 17. サンプル例例:画像データから⼈人物を切切り取り 17 [Stream+UDF] ⼈人物の抽出 { "id": 123, "age": ”35", "gender": “female", "location": { "x": 252.1, "y": 179.3 }, … } { "id": 131, "age": ”22", "gender": “male", "location": { "x": 120.5, "y": 80.2 }, … }
  18. 18. サンプル例例:切切り取った⼈人物画像を解析 18 [Stream+UDF] ⼈人物データの解析 { "id": 123, "age": ”35", "gender": “female", "location": { "x": 252.1, "y": 179.3 }, … } { "id": 131, "age": ”22", "gender": “male", "location": { "x": 120.5, "y": 80.2 }, … }
  19. 19. サンプル例例:解析データを出⼒力力 19 { "id": 123, "age": ”35", "gender": “female", "location": { "x": 252.1, "y": 179.3 }, … } { "id": 131, "age": ”22", "gender": “male", "location": { "x": 120.5, "y": 80.2 }, … } [Sink] 解析データの保存
  20. 20. デモ:  顔認識識 l  OpenCV  の  CascadeClassifier  を使⽤用した顔認識識 –  今回は  ultraist様のLBPモデルを使⽤用   http://ultraist.hatenablog.com/entry/20110718/1310965532   20 ここで顔認識識を⾏行行う →x,y,w,h  を出⼒力力するUDF
  21. 21. デモ:  顔認識識→からの笑い男 l  ハッカーの憧れ 21 x,y,w,h  を元に画像を貼るUDF
  22. 22. デモ:  顔認識識→からの笑い男→もう⼀一度度動画へ l  OpenCV  の    VideoWriter  を使⽤用して動画にまとめる 22 動画ファイル を作るSink
  23. 23. デモ動画  + disktnkさんの資料料ここまで。 23
  24. 24. UDF/UDS/Source/SinkはPluginで拡張可能 l  SourceとSink –  Fluentd –  MQTT –  ファイル –  OpenCVのカメラ/Webカメラ/AVI出⼒力力…  など l  UDF(User-‐‑‒defined  function)/UDS(User-‐‑‒defined  state)もプラグイン化可能 –  py,  pymlstate u  Pythonスクリプトを呼び出すバインディングと、 u  機械学習(Chainer)に特化したインタフェースを提供するpymlstateがある l  プラグインの実現⽅方法 –  sensorbee実⾏行行バイナリを静的リンクで⽣生成する仕組み。shared  objectではない –  設定ファイルとbuild_̲sensorbeeというgo  buildラッパーでビルドする 24
  25. 25. SensorBeeと実⾏行行モード l  Go⾔言語なので単⼀一バイナリが基本 –  静的リンクで30MBくらいのフットプリント l  実⾏行行時の種類が複数ある –  run  サーバとして実⾏行行(同時にBQL実⾏行行も可)、shellからのクエリを受け付ける –  runfile  BQLファイルを実⾏行行 –  shell  runで起動したサーバに接続してBQLを問いあわせる –  topology サーバ内のトポロジ作成/削除を管理理する –  他にもありますが省省略略 25 run (server process) shell (client) BQL 結果
  26. 26. run  +  shell:  APIサーバとクライアントという形 l  近年年よく⾒見見るMicroservicesっぽい形態 –  APIサーバ(run)とクライアント(shell)という実⾏行行形態を取っている –  Dockerのdockerコマンドみたいな形 –  とはいえ、SensorBeeで動かすBQLで作るアプリケーションは、1プロセスで複数 のアプリケーション(トポロジ)を持ってもよい 26
  27. 27. 開発苦労話的な何か l  Go⾔言語なのでチーム開発はやりやすい –  go  fmtとか知っている⼈人は感覚がわかるはず、知らない⼈人は知っても損はない l  goroutineを多⽤用しているため、並⾏行行プログラミングが中々難しい l  Python拡張(Python  C-‐‑‒API)でハマりまくった –  cgoというC呼び出しの仕組みが難しいというのもある –  Initialize関数の喚ぶ順序の関係 –  PythonのGCは参照カウンタ u  PythonのNew  Referenceを返す内部関数、返さない内部関数まぎらわしい u  Pythonスクリプトの関数呼び出しの引数に与えるObjectの参照数で混乱 u  ⼿手動DecRef呼び出しのし忘れ  →  こっそりメモリリーク –  Global  Interpreter  Lockを初期化するNativeスレッドは同じである必要がある –  結論論:Python  C-‐‑‒APIは⼈人類には早すぎた 27
  28. 28. ぜひ使ってみてください!  github  starもよろしく! l  http://sensorbee.io   l  http://docs.sensorbee.io/en/latest/   l  https://github.com/sensorbee/sensorbee   28
  29. 29. ありそうな質問 l  いつから開発しているか? –  2015年年3⽉月が最初のコミット l  過去・他OSSとの差分、特徴は? –  JSONのような⾮非構造化データを扱えること(SparkでもJSON対応RDDあったかも) –  SQLに近い⽂文法のクエリ⾔言語を持っていること 29
  30. 30. Copyright  ©  2016 Preferred  Networks  All  Right  Reserved.

×