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.

20180824 DLLab推論ナイト_深層学習モデル推論ライブラリ「Menoh」の紹介/Python以外でDeepLearning

1,042 views

Published on

深層学習推論ライブラリ「Menoh(メノウ)」をDeep Learning Labの推論ナイトでご紹介しました。
Menohは学習済みのDNNモデルをONNX形式から読み込んで動作させる推論専用のライブラリです。
Menoh repository:
https://github.com/pfnet-research/menoh

Published in: Technology
  • Be the first to comment

20180824 DLLab推論ナイト_深層学習モデル推論ライブラリ「Menoh」の紹介/Python以外でDeepLearning

  1. 1. 岡田 真太郎(エンジニア at PFN) 深層学習モデル推論ライブラリ 「Menoh」の紹介 / Python以外でDeepLearning
  2. 2. 私は誰か 岡田真太郎 (@okdshin) エンジニア at PFN Menohのコア部分の開発者 https://github.com/pfnet-research/menoh Effective Modern C++邦訳版の査読をしました 最近Rustに押され気味ですがC++が好きです 2 (https://www.oreilly.co.jp/books/images/picture_large978-4-87311-736-2.jpeg)
  3. 3. DLにおける推論とは何か • 学習済みのモデルを使ってForwardの計算を行うこと • 学習とやることが似ているように見えるが, 実際は推論と学習はかなり別モノ • 人間は学校を背負って会社に行かない 3
  4. 4. いま推論がアツい • 各社が次々と推論用フレームワークを発表 • DeepLearningの知見が十分溜まってきた • これからはいかに学習させるかだけではなく, – どうやって推論させて – どのようにサービスに結びつけるか が重要に 4
  5. 5. 最近推論がアツい • 各社が次々と推論用フレームワークを発表 • DeepLearningの知見が十分溜まってきた • これからはいかに学習させるかだけではなく, – どうやって推論させて – どのようにサービスに結びつけるか が重要に 5
  6. 6. 岡田 真太郎(エンジニア at PFN) 深層学習モデル推論ライブラリ 「Menoh」の紹介 / Python以外で DeepLearning
  7. 7. Menohの特長 • ONNXをサポート • Intel CPUによる高速な推論 • 大量の言語バインディング 7
  8. 8. Example : 物体認識 RubyでVGG16を動かす https://github.com/pfnet-research/menoh-ruby 8 (https://qiita.com/7rpn/items/eec83e60fa4f695ffa5a)
  9. 9. 9 ※menoh-rubyのVGG16 exampleから抜粋
  10. 10. Example : 画像キャプショニング Rustで画像キャプショニングする https://github.com/Hakuyume/menoh-captioning 10 ”a dog laying on a bed with a blanket .”(https://upload.wikimedia.org/wikipedia/commons/7/79/Trillium_Poncho_cat_dog.jpg) ← 入力画像 ↓出力文字列
  11. 11. 11 ※menoh-captioningから抜粋
  12. 12. Menohの特長 • ONNXをサポート • Intel CPUによる高速な推論 • 大量の言語バインディング 12
  13. 13. ONNXとは何か? DLフレームワーク間で学習済みモデルを交換する ための現状の(ほぼ)デファクトフォーマット 13 (https://onnx.ai/supported-tools)
  14. 14. ONNXとは何か? DLフレームワーク間で学習済みモデルを交換する ための現状の(ほぼ)デファクトフォーマット 14 (https://onnx.ai/supported-tools)
  15. 15. ChainerはONNXエクスポートに対応 onnx-chainerでChainerから 学習したモデルをONNX形式 で出力できる 15 onnx-chainer
  16. 16. onnx-chainerの使い方 16
  17. 17. Menohのワークフロー 17 Menoh 推論 TRAIN EXPORT IMPORT (or Other DL framework)
  18. 18. Menohの特長 • ONNXをサポート • Intel CPUによる高速な推論 • 大量の言語バインディング 18
  19. 19. DNNの学習はGPUが主流 リッチな計算資源で 大規模に計算を回す 19 (https://logmi.jp/285838)(https://www.slideshare.net/iwiwi/nips17-86470238)
  20. 20. 一方で推論時は... 20 家に1024台も GPU無いよ... 学習したモデルを 使いたいけど そもそも CPUしかない
  21. 21. 推論はCPUでやりたい • 推論では学習時よりも貧弱な計算リソース(例えばCPU)し か使えない場合が多い • ただし,学習時と比べて処理するデータ量(eg バッチサイ ズ)が少ないとCPUで十分なことも多い • Intelは高速にDNNの処理を行うライブラリ「MKL-DNN」を開 発して公開している 21 Menohはバックエンドに MKL-DNNライブラリを採用
  22. 22. CPUで高速な推論 22 Intel Corei7-6500U CPU (2.50GHz) with 8G memory
  23. 23. Intel CPU用以外のバックエンドも追加予定 • ARM CPU用バックエンド • CUDA用バックエンド も開発中 23 GPUが使えるなら やっぱり使いたいよね
  24. 24. Menohの特長 • ONNXをサポート • Intel CPUによる高速な推論 • 大量の言語バインディング 24
  25. 25. DL学習用フレームワークはPythonがデファクト 全部Pythonで記述するのが前提 25
  26. 26. 一方で推論時は... 26 Pythonでしか DNNを動かせ ないよ Ruby on RailsのWeb サービス上でDNNを 走らせたいけど... Rubyを諦めるしか ないのか..
  27. 27. 組み込みでも... 27 C++すら 怪しいのに... 自動車用ハードウェアで Pythonは動かない 組み込みでDLは 諦めるしか..
  28. 28. 推論はPythonでない言語でやりたい • Pythonはあらゆる分野で使われているわけではない – 例えば今でもWeb業界ではRubyに根強い人気がある – 組み込みだとCやC++しか使えないこともある • でもPythonの使えない分野でもDLの成果を利用したい • 他の言語が好きだけど嫌々Pythonを使っている人もいる 28 MenohはPython以外の 様々なプログラミング言語から利用可能
  29. 29. Menohの言語バインディング (1/2) • menoh (C, C++) • menoh-ruby • menoh-haskell • menoh-sharp (C#) • go-menoh • node-menoh (NodeJS) • menoh-rs (Rust) 29
  30. 30. Menohの言語バインディング (2/2) • (非公式) menoh-ros (RobotOS) • (非公式) menohcaml (OCaml) • menoh-java と menoh-julia も開発中 30
  31. 31. なんでそんなに言語バインディングがあるの? 31
  32. 32. Menohの実装レイヤー 32 Intel CPU BLAS Numpy ideep MKL-DNN Chainer (Python) Menoh (C lang) C++ Ruby Haskell C# NodeJS Go Rust ...
  33. 33. Menohの実装レイヤー 33 Intel CPU BLAS Numpy ideep MKL-DNN Chainer (Python) Menoh (C lang) C++ Ruby Haskell C# NodeJS Go Rust ...
  34. 34. 大量のバインディングの理由 - C APIが定義されている 他の言語からラップするのが簡単 - PFNには様々な背景を持つエンジニアいる ぞれぞれが特定の言語のエキスパート - 20%プロジェクトルール それぞれの20%の時間を共有 34 20% rule
  35. 35. お気に入りの言語で推論しよう! 35
  36. 36. 36 無い場合はぜひバインディングを 作って我々に教えてください!! お気に入りの言語で推論しよう!
  37. 37. 実際に • 非公式版menoh-rs (Rust) • menoh-ros (ROS) • menohcaml (OCaml) はPFN社外の人が自発的に開発 menohcamlの人曰く 「Menohはすごくラップしやすかった」 37
  38. 38. Menohのこれから • さらなる言語バインディングとOperator対応 – PHP, D, Perl... – もっと様々なモデルが読みこめるように • ARM,CUDAバックエンド • 複数のバックエンドを協調させて動作 – 計算資源を使い切れるように • 様々なモデル最適化機能 – 計算グラフ最適化,バックエンド最適化 38
  39. 39. Menohの紹介まとめ • DLにおける学習と推論は大きく異なる • MenohはDNN推論用フレームワークであり, – 学習済みモデルをONNX形式から読込めて – CPUだけの環境で高速に動作し – Python以外の様々な言語から利用できる • 今後MenohはGPUやARM CPUでも動作するよう になる 39 https://github.com/pfnet-research/menoh
  40. 40. 画像の出典 • 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. 40

×