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.

Menoh-Rubyで始めるお手軽簡単なDNN推論アプリ

1,600 views

Published on

2018年11月17日開催のRubyData Tokyo Meetupでの講演資料です。
三好 邦彦「Menoh-Rubyで始めるお手軽簡単なDNN推論アプリ」

Published in: Technology
  • Be the first to comment

Menoh-Rubyで始めるお手軽簡単なDNN推論アプリ

  1. 1. 三好 邦彦(ビジネス開発 & エンジニア at PFN) Menoh-Rubyで始める お手軽簡単なDNN推論アプリ
  2. 2. 自己紹介 三好 邦彦 (@colspan) • ビジネス開発 & エンジニア @ PFN – DL推論ライブラリMenoh Rubyバインド開発者 – 外観検査ソリューション開発・販売 https://pvi.preferred-networks.jp/ • オープンデータ分析 – 可視化ツール Seseki 開発 • とかち東京クラブ 代表 – 関東在住十勝出身者のゆるいコミュニティ – 関東で北海道と十勝を発信中 2
  3. 3. ディープラーニング(DL)が世の中を席巻 2012年にImageNetでエラー率が26%→16%に激減 (ILSVRC, 1000クラス分類) : 2012年 http://www.image-net.org/challenges/LSVRC/2012/ilsvrc2012.pdf 3
  4. 4. 医療画像解析では専門医に並ぶ精度を達成 • 一般物体の画像認識で発展したディープラーニング技術のストレートな応用 • 専門医を超える検出精度を出し始めている (左:皮膚がん、右:リンパ節転移) Detecting Cancer Metastases on Gigapixel Pathology Images [Lin+, 2017] Dermatologist-level classification of skin cancer with deep neural networks [Esteva+, Nature, 2017]
  5. 5. 自動運転の認識機能にDLを使うのは共通 • 多種センサー:高精細な深度情報 ←→ 見た目の課題、高コスト(改善中) • 画像センサー中心:低コスト ←→ 深度・遠方情報が不足し低精度(改善中 ) Lyft and Drive.ai partner on Bay Area self-driving ride-hailing pilot, Darrel Etherington, TechCrunch 雨天夜間走行のデモ動画あり [youtube] Drive.ai Tesla Autopilot:前後左右遠近8種類のカメラ+超音波+レーダー https://www.tesla.com/autopilot 5
  6. 6. 6 Deep Learning
  7. 7. 7 Deep Learning 深層学習
  8. 8. 8 Deep Learning 深層学習 Inference 推論
  9. 9. DLにおける推論とは何か • 学習済みのモデルを使ってForwardの計算を行うこと • 学習とやることが似ているように見えるが, 実際は推論と学習はかなり別モノ • 人間は学校を背負って会社に行かない 9
  10. 10. いま推論がアツい • DeepLearningの知見が十分溜まってきた • これからはいかに学習させるかだけではなく, – どうやって推論させて – どのようにサービスに結びつけるか が重要に 10
  11. 11. いま推論がアツい • DeepLearningの知見が十分溜まってきた • これからはいかに学習させるかだけではなく, – どうやって推論させて – どのようにサービスに結びつけるか が重要に 11
  12. 12. Menoh と Menoh-Ruby
  13. 13. Example : 物体認識 RubyでVGG16を動かす https://github.com/pfnet-research/menoh-ruby 13 (https://qiita.com/7rpn/items/eec83e60fa4f695ffa5a)
  14. 14. 14 Menoh-RubyのVGG16 example 超シンプルに推論!
  15. 15. Menohの特長 • をサポート • Intel CPUによる高速な推論 • 豊富な言語バインディング 15
  16. 16. Menohの特長 • をサポート • Intel CPUによる高速な推論 • 豊富な言語バインディング 16
  17. 17. ONNXとは何か? DLフレームワーク間で学習済みモデルを 交換するためのデファクトフォーマット 17 (https://onnx.ai/supported-tools)
  18. 18. Menohのワークフロー 18 Menoh 推論 TRAIN EXPORT IMPORT (or Other DL framework)
  19. 19. Menohの特長 • をサポート • Intel CPUによる高速な推論 • 豊富な言語バインディング 19
  20. 20. DNNの学習はGPUが主流 リッチな計算資源で 大規模に計算を回す 20 (https://logmi.jp/285838)(https://www.slideshare.net/iwiwi/nips17-86470238)
  21. 21. 一方で推論時は... 21 家に1024台も GPU無いよ… 学習したモデルを 使いたいけど そもそも CPUしかない
  22. 22. 推論はCPUでやりたい • 推論では学習時と比べて処理するデータ量 (eg バッチサイズ)が少なければCPUで十分なことも多い • Intelは高速にDNNの処理を行うライブラリ「MKL-DNN」 を開発して公開している 22 Menohはバックエンドに MKL-DNNライブラリを採用
  23. 23. CPUで高速な推論 23 Intel Corei7-6500U CPU (2.50GHz) with 8G memory
  24. 24. Menohの特長 • をサポート • Intel CPUによる高速な推論 • 豊富な言語バインディング 24
  25. 25. DL学習用フレームワークはPythonがデファクト モデル記述はPythonがデファクト 25
  26. 26. 一方で推論時は... 26 Pythonでしか DNNを 動かせないよ Ruby on Railsや LaravelでDNNを 走らせたいけど… 開発言語の数が 発散するのは 避けたい… 非同期で 推論しないと レスポンスが 悪くなる…
  27. 27. Menoh-Ruby を使えば • Ruby on Railsの コントローラやモデルに組み込む → 超コンパクトに実装 • Fluentdのfilterに組み込む → 非同期でガンガン推論 27 DLの推論タスクが Rubyベースの基盤技術に直結可能
  28. 28. 本日のデモ 28 Menoh-Ruby 画像送信 推論 filter 推論結果返却推論結果送信 推論履歴 蓄積 export
  29. 29. デモ 29
  30. 30. MenohとRubyで 楽しいDL推論サービスを!
  31. 31. 画像の出典 • Chainer logo is from https://www.preferred-networks.jp/wp-content/uploads/2017/02/chainer_white_s.png • TensorFlow logo “https://upload.wikimedia.org/wikipedia/commons/thumb/2/2d/Tensorflow_logo.svg/2000px- Tensorflow_logo.svg.png” by is licensed under CC BY 4.0 • PyTorch logo is from https://pytorch.org/static/img/logos/pytorch-logo-dark.png • Caffe2 logo is from https://avatars2.githubusercontent.com/u/13072719?s=400&v=4 • MXNet logo is from https://raw.githubusercontent.com/dmlc/web-data/master/mxnet/image/mxnet_logo_2.png • C, C++, Ruby, C#, NodeJS, Java, Python logos are from icon8 (https://icons8.com/) • “https://golang.org/doc/gopher/frontpage.png” by Renée French is licensed under CC BY 3.0 (https://creativecommons.org/licenses/by/3.0/) • “https://www.rust-lang.org/logos/rust-logo-128x128-blk.png” by Rust lang organization is licensed under CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/) • Haskell, OCaml, Julia logos are public domain on Wikipedia. • Fluentd logo is from https://www.fluentd.org/ • Ruby on Rails logo is from https://rubyonrails.org/ • Google Chrome logo is from https://www.google.com/intl/ja_ALL/chrome/ • Logitech QuickCam Pro 9000 https://support.logicool.co.jp/ja_jp/product/quickcam-pro-9000 31

×