SlideShare uma empresa Scribd logo
1 de 20
【2017年】ディープラーニング
のフレームワーク比較
SEPT., 2017
鈴木亮太,大津耕陽,歌田夢香,細原大輔
フレームワーク多すぎ
• Amazon Machine Learning, Apache SINGA, Big Sur, BigDL, Blocks, Caffe, Caffe2,
Chainer, cuda-convnet, cuDNN, darknet, Deeplearning4j, deepy, DIGITS, Dlib,
DSSTNE, DyNet, Eblearn, Keras, Lasagne, MatConvnet, Mathematica, Microsoft
Cognitive Toolkit (CNTK), Minerva, Mocha.JL, MXNet, neon, Neural Designer,
Nnabla, nolearn, NV-Caffe, OpenDeep, PaddlePaddle, PredictionIO, Purine,
PyBrain, Pylearn2, PyTorch, Sparking Warter, TensorFlow, Theano, Torch7, Watson
◦ 他多数
• なにこれ
• 推測するに,理論的には単純で実装が簡単だから「よーしおれらもつくるべー」
が量産された結果だと思われる.
◦ あるいはcaffeつらい
• で,どれがいいの?
概要
• メンバーが実際に使ってみて,各フレームワーク×各観点で分析を行いました.
◦ インストールしやすさ
◦ 実装の容易さ
◦ 処理速度
◦ 学習速度を実験して比較
◦ 他と比較した特徴
◦ 10年後残る?
◦ 使用可能言語
◦ 拡張性
◦ Windowsで使える?
• フレームワーク
◦ Caffe/Caffe2, Torch7/PyTorch, TensorFlow,Keras,Chainer,MatConvNet
特徴早見表
• Caffe/Caffe2
◦ 古豪
◦ Caffe2からFacebook
◦ インストール・開発困難→Caffe2で改善
◦ コードが長い
◦ 最速
• Torch7/PyTorch
◦ Facebook
◦ 高速(Caffe並み)
◦ 開発が楽
◦ 研究者ユーザが多い
• TensorFlow
◦ Google製
◦ 低速
◦ 学習(Session)に慣れが必要
• Keras
◦ 非常におてがる,初心者の勉強向け
◦ 勉強だけにして早期卒業をお勧め
• Chainer
◦ PFN
◦ 日本人ユーザがほとんど
◦ Define by Run
◦ メンテナンスがホット
• MatConvNet
◦ MATLABでつかえる
◦ 研究者ユーザが多い
• Theano/PyLearn2
◦ 古豪2
◦ しらない
◦ 終了のお知らせ
Caffe
• 古豪
◦ 使い続ける従来のユーザが多い
◦ でも絶賛人口流出中
• 言語
◦ C++ベース,Pythonも
• 苦行
◦ インストールが大変?
◦ 初心者には苦行
◦ 最近はそれほどでもない
◦ Windowsにも素直に入る
◦ コーディングがすごく大変
◦ 一つのネットワーク組むのに3倍以上コード書かさ
れる
◦ 一つのネットワークに複数のファイルを用意する
必要があってつらい
◦ 一線を画すガラパゴス感
• 最速
◦ すごいはやい
◦ Python系はオーバヘッドがある
◦ 学習速度は正義
◦ 週オーダが日オーダになれば色々試行錯誤して
よりよいものが作れる
◦ 開発系・組み込み系では更に重要
• Caffe2の出現に期待感
• 10年後残る?
◦ Caffe2の頑張りで残ると思われる
Caffe2
• FacebookがメンテするCaffeの後継
◦ Torchとの連携が目論めそう
• ネットワーク構築方法が他のフレーム
ワークに近くなる,ユーティリティインタ
フェースがついた
◦ イマドキな感じで使える かも(未調査)
• インストールが辛い
◦ まだWindowsでの安定的なインストール
が不能
◦ Caffeのようにこれから改善する?
Torch7
• Facebookが拡張を出してる
• Lua
◦ モジュールの中身はC++なので,C++ラッ
パーもある
• 高速?(Caffe並み?)
◦ arXivの論文によれば.
◦ 実際使ってみると遅いことが…
◦ 「速い」って言ってるスコアが出ない
=ビルドが難物?
• 開発が楽
◦ Kerasに毛が生えたレベルで使えるもよう
◦ 有用なモジュールが多数あって便利
• インストールは楽なほう
• Windowsへのインストールは絶望レベル
に困難
◦ 一応やりかたはQiitaの記事にまとめました
• ヨーロッパの研究者のユーザ人口が多
い?
• 再現性が高い
◦ いざPublishされているものを試してみると,
他のものでは同じ値が出てこないが,Torch
だとそのまま出てくる
• 総じて研究者向け
◦ 開発にも使えるか
PyTorch
• Facebookがメンテナンスしている
• Python
• ChainerのForkなので,Chainerとよく似
てる
◦ モジュール名が違うくらい
• Define by Run
• Python系では最速
◦ 中身のテンソル計算系などのC++実装が
Torchの流用
◦ データローダが高速
◦ (本稿では)なぜかTorchよりはやい
• インストール,開発が楽
◦ Windowsでも問題なし
• PyTorchに移行するTorchユーザ多い
TensorFlow
• Google製
◦ ユーザ人口が最大
◦ 検索すればやりたいことはほぼ必ず見つかる
◦ 企業ユーザが多い?
◦ シェアは正義
• Python,C++
• 開発が楽
◦ DNN分かっている人なら,が前につく
◦ 拡張がやりやすい
• 低速?
◦ 意外と早い?
安定して最速ビルドを利用できる模様
• 難しい?
◦ 「計算グラフ」で実装する低レベル仕様
◦ 開発・DNN初心者が触るのは難しいかも
◦ ユーザ多い=初心者・非エンジニア多い
◦ Kerasの吸収で解決するかも
• マシン分散がやりやすい
◦ (研究界と比較して)大資産な企業と親
和性が高い
• 今後,更に人口が増えるのでは
Keras
• 「お手軽」が至上のテーマ
• すごく簡単
◦ インストール1行,気にしなくても勝手に
GPUで高速化
◦ コーディングもいちばん簡単
◦ あらゆる部分がブラックボックス化してい
て,もはやプログラミング不要.ただマー
クアップするだけ
• TensorFlow,Theanoをバックエンドに
する
◦ ユーザ的にはほぼTensorFlowが現状か
• 開発者が一人
◦ 状況が変わると開発終了するかも
• TensorFlowに吸収され中
◦ Kerasモジュールがある
◦ しばらくしたら不要になる?
◦ 「TensorFlowは難しい」を払拭する?
Chainer
• 日本の企業Prefered Networks(PFN)
が作っている
• Define by Runのさきがけ
◦ 真にRNNを実装可能なパラダイム
◦ 自然言語処理系に強い
• DNNをよく知っている必要がありそう
• インストール簡単
• DNNはもちろん,様々な機械学習がで
きるフレームワークとして成長中
• 機械学習屋が使うのに便利そう
• 低速?
◦ 実行時にネットワークをコンパイルする
模様
◦ 本当に遅いのかちゃんと調べたい
MatConvNet
• MATLABで使える
◦ MATLAB使ってた研究者にモテモテ
• これ自体はフリーで導入も簡単
◦ Parallel Conputing Toolbox(有料)が必要
• インストール超簡単
◦ さすが有料なだけあるMATLAB
• ネットワーク構築の書き方は独特
• 低速?
◦ 要調査
その他
• CNTK
◦ Microsoft様
◦ 高速,多言語らしい
• DyNet
◦ Define by Runだって
• MXNet
◦ 高速だって
• Deeplearning4j
◦ Javaだって
学習速度比較
0
2000
4000
6000
8000
10000
12000
14000
16000
MNIST_CNN (CPU)
0
1
2
3
4
5
6
7
8
9
10
XOR_MLP (CPU)
0
10
20
30
40
50
60
70
80
90
100
MNIST_CNN (GPU)
0
5
10
15
20
25
30
35
40
45
XOR_MLP (GPU)
Ubuntu
Windows
s/10000epoch s/10000epoch
s/12epoch s/12epoch
学習速度比較
• Caffeはやっぱり最速
• TensorFlowは実は速い?PyTorchも速
そう
• なぜかTorchが遅い
◦ ビルドのところで揺れがある?=インス
トールが鬼門?
• Kerasはとりあえず遅い
◦ TensorFlowバックエンドなのに,何してる
の?
• MatConvNetは遅いかもしれない
調査を続けたい
• 実は学習速度≠全体の実行速度
◦ Chainerはぱっと見遅いが,実はDefine
by Runの都合上,ネットワークコンパイ
ルも計測時間に含まれてしまっているの
で注意.
• ビルドのやり方,環境によって実行速
度に差が出る
◦ 速度的に安定したビルドの仕方がな
い?
• 速度のボトルネック要因
◦ データセットのロード
◦ ネットワークのコンパイル
◦ メモリの扱い
◦ ループのオーバヘッド?
◦ ネットワークの計算
今回の計測ターゲット
言語で比較
• 基本的にラッパーが出回る
◦ 特にC++のラッパーは多いので使うとき
に調査するべき
◦ Caffeモデルに変換してCaffe on OpenCV
が個人的にオススメ
• C++
◦ Caffe, TnsorFlow
• Lua
◦ Torch
• Python
◦ TensorFlow, Keras, PyTorch, Chainer
• Matlab
◦ MatConvNet
• Java
◦ Deeplearning4j
• C#
◦ CNTK
結論
• 折角いろいろあるので,適材適所がよいのでは
◦ あとは宗教
• 下記,メンバーのお勧めです.
• 初心者
◦ Tensorflow/Kerasがよさそうです.実に簡単にNNが構築でき,Web資料も親切なのが多いです.
◦ が,玉石混交なので逆に欲しい情報にたどり着かないことも・・・
◦ (今のところ)Caffeはいろいろと苦行なのでやめておいたほうが…
• 企業エンジニア
◦ プロトタイピングにTensorFlow/Torch,開発にCaffe
◦ 自社開発
◦ 今からメジャーになるのはまずムリだと思いますが
• 研究者
◦ TensorFlowかPyTorchがオススメ
◦ Chainer vs PyTorch > PyTorchがメジャーとりそうな流れ
◦ Caffeが安定して高速動作するのでその点ではオススメ.難しいけど…
• 宗教家
◦ Java教,Microsoft教,…
おまけ
フレームワーク間移行
• DNNの移行は,ネットワーク構造だけ実装,重みなどのパラメータをコピーする
ことでできる
• Model Zooに学習済みモデルいっぱいあるので,それ使いまわせるといいよね
◦ 時間がすごくかかる学習はやりたくないよね
◦ というか研究室レベルでは無理の領域に入ってる
• コンバータを作る人は多いが,完全網羅はされなそう
◦ 使いたいときはちゃんとできるのか調べる必要がある
w00
w01 w10
w11
コピー
コピー
ネットワーク構造は
先に作る
ハイパーパラメータのチューニング
• 「最適」の保証は理論的にない
• 学習率が一番影響が大きいので頑張って調整しましょう
• 探索をやりましょう
◦ グリッド探索
◦ ベイズ推定
• ネットワーク構造は最大・自動生成不能パラメータ

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

深層強化学習と実装例
深層強化学習と実装例深層強化学習と実装例
深層強化学習と実装例
 
画像認識モデルを作るための鉄板レシピ
画像認識モデルを作るための鉄板レシピ画像認識モデルを作るための鉄板レシピ
画像認識モデルを作るための鉄板レシピ
 
畳み込みニューラルネットワークの高精度化と高速化
畳み込みニューラルネットワークの高精度化と高速化畳み込みニューラルネットワークの高精度化と高速化
畳み込みニューラルネットワークの高精度化と高速化
 
先端技術とメディア表現1 #FTMA15
先端技術とメディア表現1 #FTMA15先端技術とメディア表現1 #FTMA15
先端技術とメディア表現1 #FTMA15
 
Optimizer入門&最新動向
Optimizer入門&最新動向Optimizer入門&最新動向
Optimizer入門&最新動向
 
Skip Connection まとめ(Neural Network)
Skip Connection まとめ(Neural Network)Skip Connection まとめ(Neural Network)
Skip Connection まとめ(Neural Network)
 
トピックモデルの評価指標 Perplexity とは何なのか?
トピックモデルの評価指標 Perplexity とは何なのか?トピックモデルの評価指標 Perplexity とは何なのか?
トピックモデルの評価指標 Perplexity とは何なのか?
 
研究効率化Tips Ver.2
研究効率化Tips Ver.2研究効率化Tips Ver.2
研究効率化Tips Ver.2
 
SSII2022 [SS1] ニューラル3D表現の最新動向〜 ニューラルネットでなんでも表せる?? 〜​
SSII2022 [SS1] ニューラル3D表現の最新動向〜 ニューラルネットでなんでも表せる?? 〜​SSII2022 [SS1] ニューラル3D表現の最新動向〜 ニューラルネットでなんでも表せる?? 〜​
SSII2022 [SS1] ニューラル3D表現の最新動向〜 ニューラルネットでなんでも表せる?? 〜​
 
TensorFlow計算グラフ最適化処理
TensorFlow計算グラフ最適化処理TensorFlow計算グラフ最適化処理
TensorFlow計算グラフ最適化処理
 
【メタサーベイ】基盤モデル / Foundation Models
【メタサーベイ】基盤モデル / Foundation Models【メタサーベイ】基盤モデル / Foundation Models
【メタサーベイ】基盤モデル / Foundation Models
 
画像認識と深層学習
画像認識と深層学習画像認識と深層学習
画像認識と深層学習
 
2019年度チュートリアルBPE
2019年度チュートリアルBPE2019年度チュートリアルBPE
2019年度チュートリアルBPE
 
Semantic segmentation
Semantic segmentationSemantic segmentation
Semantic segmentation
 
機械学習と主成分分析
機械学習と主成分分析機械学習と主成分分析
機械学習と主成分分析
 
最適化超入門
最適化超入門最適化超入門
最適化超入門
 
画像処理基礎
画像処理基礎画像処理基礎
画像処理基礎
 
カルマンフィルタ入門
カルマンフィルタ入門カルマンフィルタ入門
カルマンフィルタ入門
 
Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料
Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料
Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料
 
SSII2019企画: 点群深層学習の研究動向
SSII2019企画: 点群深層学習の研究動向SSII2019企画: 点群深層学習の研究動向
SSII2019企画: 点群深層学習の研究動向
 

Destaque

古典的ゲームAIを用いたAlphaGo解説
古典的ゲームAIを用いたAlphaGo解説古典的ゲームAIを用いたAlphaGo解説
古典的ゲームAIを用いたAlphaGo解説
suckgeun lee
 

Destaque (19)

AI and Machine Learning Demystified by Carol Smith at Midwest UX 2017
AI and Machine Learning Demystified by Carol Smith at Midwest UX 2017AI and Machine Learning Demystified by Carol Smith at Midwest UX 2017
AI and Machine Learning Demystified by Carol Smith at Midwest UX 2017
 
地震対策ハッカソン キズナコントラクト
地震対策ハッカソン  キズナコントラクト地震対策ハッカソン  キズナコントラクト
地震対策ハッカソン キズナコントラクト
 
Waston が拓く UX の新しい地平 〜 UX デザイナーが IBM Waston を使ってみた 〜:2017年4月22日 AI eats UX me...
Waston が拓く UX の新しい地平 〜 UX デザイナーが IBM Waston を使ってみた 〜:2017年4月22日 AI eats UX me...Waston が拓く UX の新しい地平 〜 UX デザイナーが IBM Waston を使ってみた 〜:2017年4月22日 AI eats UX me...
Waston が拓く UX の新しい地平 〜 UX デザイナーが IBM Waston を使ってみた 〜:2017年4月22日 AI eats UX me...
 
Watsonに、俺の推しアイドルがかわいいと、わかってほしかった:2017年12月3日 IBM Cloud (Bluemix) 冬の大勉強会
Watsonに、俺の推しアイドルがかわいいと、わかってほしかった:2017年12月3日 IBM Cloud (Bluemix) 冬の大勉強会Watsonに、俺の推しアイドルがかわいいと、わかってほしかった:2017年12月3日 IBM Cloud (Bluemix) 冬の大勉強会
Watsonに、俺の推しアイドルがかわいいと、わかってほしかった:2017年12月3日 IBM Cloud (Bluemix) 冬の大勉強会
 
SoftLayer Bluemix Summit 2015: BluemixでWatsonをつかいたおせ!
SoftLayer Bluemix Summit 2015: BluemixでWatsonをつかいたおせ!SoftLayer Bluemix Summit 2015: BluemixでWatsonをつかいたおせ!
SoftLayer Bluemix Summit 2015: BluemixでWatsonをつかいたおせ!
 
ニューラルネットワークの仕組みを学ぶ 20170623
ニューラルネットワークの仕組みを学ぶ 20170623ニューラルネットワークの仕組みを学ぶ 20170623
ニューラルネットワークの仕組みを学ぶ 20170623
 
Atlassian Japan Forum 2017 The Information Ageの現実 なぜ組織が構造改革を進めなければならないのか
Atlassian Japan Forum 2017 The Information Ageの現実 なぜ組織が構造改革を進めなければならないのかAtlassian Japan Forum 2017 The Information Ageの現実 なぜ組織が構造改革を進めなければならないのか
Atlassian Japan Forum 2017 The Information Ageの現実 なぜ組織が構造改革を進めなければならないのか
 
Dots deep learning部_20161221
Dots deep learning部_20161221Dots deep learning部_20161221
Dots deep learning部_20161221
 
古典的ゲームAIを用いたAlphaGo解説
古典的ゲームAIを用いたAlphaGo解説古典的ゲームAIを用いたAlphaGo解説
古典的ゲームAIを用いたAlphaGo解説
 
【LT版】Elixir入門「第7回:Python/KerasをElixirから繋いでアレコレする」
【LT版】Elixir入門「第7回:Python/KerasをElixirから繋いでアレコレする」【LT版】Elixir入門「第7回:Python/KerasをElixirから繋いでアレコレする」
【LT版】Elixir入門「第7回:Python/KerasをElixirから繋いでアレコレする」
 
【macOSにも対応】AI入門「第3回:数学が苦手でも作って使えるKerasディープラーニング」
【macOSにも対応】AI入門「第3回:数学が苦手でも作って使えるKerasディープラーニング」【macOSにも対応】AI入門「第3回:数学が苦手でも作って使えるKerasディープラーニング」
【macOSにも対応】AI入門「第3回:数学が苦手でも作って使えるKerasディープラーニング」
 
[DL輪読会] MoCoGAN: Decomposing Motion and Content for Video Generation
[DL輪読会] MoCoGAN: Decomposing Motion and Content for Video Generation[DL輪読会] MoCoGAN: Decomposing Motion and Content for Video Generation
[DL輪読会] MoCoGAN: Decomposing Motion and Content for Video Generation
 
AlphaGo Zero 解説
AlphaGo Zero 解説AlphaGo Zero 解説
AlphaGo Zero 解説
 
Kerasで深層学習を実践する
Kerasで深層学習を実践するKerasで深層学習を実践する
Kerasで深層学習を実践する
 
一年目がWatsonを調べてみた Discovery編
一年目がWatsonを調べてみた Discovery編一年目がWatsonを調べてみた Discovery編
一年目がWatsonを調べてみた Discovery編
 
Watson Build Challengeに参加してみた
Watson Build Challengeに参加してみたWatson Build Challengeに参加してみた
Watson Build Challengeに参加してみた
 
Pycon2017
Pycon2017Pycon2017
Pycon2017
 
Tokyo webmining 2017-10-28
Tokyo webmining 2017-10-28Tokyo webmining 2017-10-28
Tokyo webmining 2017-10-28
 
Pythonを使った機械学習の学習
Pythonを使った機械学習の学習Pythonを使った機械学習の学習
Pythonを使った機械学習の学習
 

Semelhante a 【2017年】ディープラーニングのフレームワーク比較

TensorFlowプログラミングと分類アルゴリズムの基礎
TensorFlowプログラミングと分類アルゴリズムの基礎TensorFlowプログラミングと分類アルゴリズムの基礎
TensorFlowプログラミングと分類アルゴリズムの基礎
Etsuji Nakai
 

Semelhante a 【2017年】ディープラーニングのフレームワーク比較 (20)

EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
 
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
 
ChainerでDeep Learningを試す為に必要なこと
ChainerでDeep Learningを試す為に必要なことChainerでDeep Learningを試す為に必要なこと
ChainerでDeep Learningを試す為に必要なこと
 
私とOSSの25年
私とOSSの25年私とOSSの25年
私とOSSの25年
 
20161027 hadoop summit Generating Recommendations at Amazon Scale with Apach...
20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apach...20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apach...
20161027 hadoop summit Generating Recommendations at Amazon Scale with Apach...
 
TensorFlowプログラミングと分類アルゴリズムの基礎
TensorFlowプログラミングと分類アルゴリズムの基礎TensorFlowプログラミングと分類アルゴリズムの基礎
TensorFlowプログラミングと分類アルゴリズムの基礎
 
ChainerでDeep Learningを試すために必要なこと
ChainerでDeep Learningを試すために必要なことChainerでDeep Learningを試すために必要なこと
ChainerでDeep Learningを試すために必要なこと
 
DLL#3 Microsoft Community & AI Update
DLL#3 Microsoft Community & AI UpdateDLL#3 Microsoft Community & AI Update
DLL#3 Microsoft Community & AI Update
 
大規模並列実験を支えるクラウドサービスと基盤技術
大規模並列実験を支えるクラウドサービスと基盤技術大規模並列実験を支えるクラウドサービスと基盤技術
大規模並列実験を支えるクラウドサービスと基盤技術
 
TensorFlowによるCNNアーキテクチャ構築
TensorFlowによるCNNアーキテクチャ構築TensorFlowによるCNNアーキテクチャ構築
TensorFlowによるCNNアーキテクチャ構築
 
20180723 PFNの研究基盤 / PFN research system infrastructure
20180723 PFNの研究基盤 / PFN research system infrastructure20180723 PFNの研究基盤 / PFN research system infrastructure
20180723 PFNの研究基盤 / PFN research system infrastructure
 
マイクロサービスに至る歴史とこれから - XP祭り2021
マイクロサービスに至る歴史とこれから - XP祭り2021マイクロサービスに至る歴史とこれから - XP祭り2021
マイクロサービスに至る歴史とこれから - XP祭り2021
 
Chainer on Azure 2 年の歴史
Chainer on Azure 2 年の歴史Chainer on Azure 2 年の歴史
Chainer on Azure 2 年の歴史
 
Using Deep Learning for Recommendation
Using Deep Learning for RecommendationUsing Deep Learning for Recommendation
Using Deep Learning for Recommendation
 
Thriftを用いた分散型のNyancatを作ってきた
Thriftを用いた分散型のNyancatを作ってきたThriftを用いた分散型のNyancatを作ってきた
Thriftを用いた分散型のNyancatを作ってきた
 
いきなりAi tensor flow gpuによる画像分類と生成
いきなりAi tensor flow gpuによる画像分類と生成いきなりAi tensor flow gpuによる画像分類と生成
いきなりAi tensor flow gpuによる画像分類と生成
 
Hadoop Source Code Reading #17
Hadoop Source Code Reading #17Hadoop Source Code Reading #17
Hadoop Source Code Reading #17
 
産総研AIクラウドでChainerMN
産総研AIクラウドでChainerMN産総研AIクラウドでChainerMN
産総研AIクラウドでChainerMN
 
組込向けDeep Learning最新技術の紹介 量子化テクニックとDorefaNetについて
組込向けDeep Learning最新技術の紹介量子化テクニックとDorefaNetについて組込向けDeep Learning最新技術の紹介量子化テクニックとDorefaNetについて
組込向けDeep Learning最新技術の紹介 量子化テクニックとDorefaNetについて
 

Último

Último (12)

Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 

【2017年】ディープラーニングのフレームワーク比較

  • 2. フレームワーク多すぎ • Amazon Machine Learning, Apache SINGA, Big Sur, BigDL, Blocks, Caffe, Caffe2, Chainer, cuda-convnet, cuDNN, darknet, Deeplearning4j, deepy, DIGITS, Dlib, DSSTNE, DyNet, Eblearn, Keras, Lasagne, MatConvnet, Mathematica, Microsoft Cognitive Toolkit (CNTK), Minerva, Mocha.JL, MXNet, neon, Neural Designer, Nnabla, nolearn, NV-Caffe, OpenDeep, PaddlePaddle, PredictionIO, Purine, PyBrain, Pylearn2, PyTorch, Sparking Warter, TensorFlow, Theano, Torch7, Watson ◦ 他多数 • なにこれ • 推測するに,理論的には単純で実装が簡単だから「よーしおれらもつくるべー」 が量産された結果だと思われる. ◦ あるいはcaffeつらい • で,どれがいいの?
  • 3. 概要 • メンバーが実際に使ってみて,各フレームワーク×各観点で分析を行いました. ◦ インストールしやすさ ◦ 実装の容易さ ◦ 処理速度 ◦ 学習速度を実験して比較 ◦ 他と比較した特徴 ◦ 10年後残る? ◦ 使用可能言語 ◦ 拡張性 ◦ Windowsで使える? • フレームワーク ◦ Caffe/Caffe2, Torch7/PyTorch, TensorFlow,Keras,Chainer,MatConvNet
  • 4. 特徴早見表 • Caffe/Caffe2 ◦ 古豪 ◦ Caffe2からFacebook ◦ インストール・開発困難→Caffe2で改善 ◦ コードが長い ◦ 最速 • Torch7/PyTorch ◦ Facebook ◦ 高速(Caffe並み) ◦ 開発が楽 ◦ 研究者ユーザが多い • TensorFlow ◦ Google製 ◦ 低速 ◦ 学習(Session)に慣れが必要 • Keras ◦ 非常におてがる,初心者の勉強向け ◦ 勉強だけにして早期卒業をお勧め • Chainer ◦ PFN ◦ 日本人ユーザがほとんど ◦ Define by Run ◦ メンテナンスがホット • MatConvNet ◦ MATLABでつかえる ◦ 研究者ユーザが多い • Theano/PyLearn2 ◦ 古豪2 ◦ しらない ◦ 終了のお知らせ
  • 5. Caffe • 古豪 ◦ 使い続ける従来のユーザが多い ◦ でも絶賛人口流出中 • 言語 ◦ C++ベース,Pythonも • 苦行 ◦ インストールが大変? ◦ 初心者には苦行 ◦ 最近はそれほどでもない ◦ Windowsにも素直に入る ◦ コーディングがすごく大変 ◦ 一つのネットワーク組むのに3倍以上コード書かさ れる ◦ 一つのネットワークに複数のファイルを用意する 必要があってつらい ◦ 一線を画すガラパゴス感 • 最速 ◦ すごいはやい ◦ Python系はオーバヘッドがある ◦ 学習速度は正義 ◦ 週オーダが日オーダになれば色々試行錯誤して よりよいものが作れる ◦ 開発系・組み込み系では更に重要 • Caffe2の出現に期待感 • 10年後残る? ◦ Caffe2の頑張りで残ると思われる
  • 6. Caffe2 • FacebookがメンテするCaffeの後継 ◦ Torchとの連携が目論めそう • ネットワーク構築方法が他のフレーム ワークに近くなる,ユーティリティインタ フェースがついた ◦ イマドキな感じで使える かも(未調査) • インストールが辛い ◦ まだWindowsでの安定的なインストール が不能 ◦ Caffeのようにこれから改善する?
  • 7. Torch7 • Facebookが拡張を出してる • Lua ◦ モジュールの中身はC++なので,C++ラッ パーもある • 高速?(Caffe並み?) ◦ arXivの論文によれば. ◦ 実際使ってみると遅いことが… ◦ 「速い」って言ってるスコアが出ない =ビルドが難物? • 開発が楽 ◦ Kerasに毛が生えたレベルで使えるもよう ◦ 有用なモジュールが多数あって便利 • インストールは楽なほう • Windowsへのインストールは絶望レベル に困難 ◦ 一応やりかたはQiitaの記事にまとめました • ヨーロッパの研究者のユーザ人口が多 い? • 再現性が高い ◦ いざPublishされているものを試してみると, 他のものでは同じ値が出てこないが,Torch だとそのまま出てくる • 総じて研究者向け ◦ 開発にも使えるか
  • 8. PyTorch • Facebookがメンテナンスしている • Python • ChainerのForkなので,Chainerとよく似 てる ◦ モジュール名が違うくらい • Define by Run • Python系では最速 ◦ 中身のテンソル計算系などのC++実装が Torchの流用 ◦ データローダが高速 ◦ (本稿では)なぜかTorchよりはやい • インストール,開発が楽 ◦ Windowsでも問題なし • PyTorchに移行するTorchユーザ多い
  • 9. TensorFlow • Google製 ◦ ユーザ人口が最大 ◦ 検索すればやりたいことはほぼ必ず見つかる ◦ 企業ユーザが多い? ◦ シェアは正義 • Python,C++ • 開発が楽 ◦ DNN分かっている人なら,が前につく ◦ 拡張がやりやすい • 低速? ◦ 意外と早い? 安定して最速ビルドを利用できる模様 • 難しい? ◦ 「計算グラフ」で実装する低レベル仕様 ◦ 開発・DNN初心者が触るのは難しいかも ◦ ユーザ多い=初心者・非エンジニア多い ◦ Kerasの吸収で解決するかも • マシン分散がやりやすい ◦ (研究界と比較して)大資産な企業と親 和性が高い • 今後,更に人口が増えるのでは
  • 10. Keras • 「お手軽」が至上のテーマ • すごく簡単 ◦ インストール1行,気にしなくても勝手に GPUで高速化 ◦ コーディングもいちばん簡単 ◦ あらゆる部分がブラックボックス化してい て,もはやプログラミング不要.ただマー クアップするだけ • TensorFlow,Theanoをバックエンドに する ◦ ユーザ的にはほぼTensorFlowが現状か • 開発者が一人 ◦ 状況が変わると開発終了するかも • TensorFlowに吸収され中 ◦ Kerasモジュールがある ◦ しばらくしたら不要になる? ◦ 「TensorFlowは難しい」を払拭する?
  • 11. Chainer • 日本の企業Prefered Networks(PFN) が作っている • Define by Runのさきがけ ◦ 真にRNNを実装可能なパラダイム ◦ 自然言語処理系に強い • DNNをよく知っている必要がありそう • インストール簡単 • DNNはもちろん,様々な機械学習がで きるフレームワークとして成長中 • 機械学習屋が使うのに便利そう • 低速? ◦ 実行時にネットワークをコンパイルする 模様 ◦ 本当に遅いのかちゃんと調べたい
  • 12. MatConvNet • MATLABで使える ◦ MATLAB使ってた研究者にモテモテ • これ自体はフリーで導入も簡単 ◦ Parallel Conputing Toolbox(有料)が必要 • インストール超簡単 ◦ さすが有料なだけあるMATLAB • ネットワーク構築の書き方は独特 • 低速? ◦ 要調査
  • 13. その他 • CNTK ◦ Microsoft様 ◦ 高速,多言語らしい • DyNet ◦ Define by Runだって • MXNet ◦ 高速だって • Deeplearning4j ◦ Javaだって
  • 14. 学習速度比較 0 2000 4000 6000 8000 10000 12000 14000 16000 MNIST_CNN (CPU) 0 1 2 3 4 5 6 7 8 9 10 XOR_MLP (CPU) 0 10 20 30 40 50 60 70 80 90 100 MNIST_CNN (GPU) 0 5 10 15 20 25 30 35 40 45 XOR_MLP (GPU) Ubuntu Windows s/10000epoch s/10000epoch s/12epoch s/12epoch
  • 15. 学習速度比較 • Caffeはやっぱり最速 • TensorFlowは実は速い?PyTorchも速 そう • なぜかTorchが遅い ◦ ビルドのところで揺れがある?=インス トールが鬼門? • Kerasはとりあえず遅い ◦ TensorFlowバックエンドなのに,何してる の? • MatConvNetは遅いかもしれない 調査を続けたい • 実は学習速度≠全体の実行速度 ◦ Chainerはぱっと見遅いが,実はDefine by Runの都合上,ネットワークコンパイ ルも計測時間に含まれてしまっているの で注意. • ビルドのやり方,環境によって実行速 度に差が出る ◦ 速度的に安定したビルドの仕方がな い? • 速度のボトルネック要因 ◦ データセットのロード ◦ ネットワークのコンパイル ◦ メモリの扱い ◦ ループのオーバヘッド? ◦ ネットワークの計算 今回の計測ターゲット
  • 16. 言語で比較 • 基本的にラッパーが出回る ◦ 特にC++のラッパーは多いので使うとき に調査するべき ◦ Caffeモデルに変換してCaffe on OpenCV が個人的にオススメ • C++ ◦ Caffe, TnsorFlow • Lua ◦ Torch • Python ◦ TensorFlow, Keras, PyTorch, Chainer • Matlab ◦ MatConvNet • Java ◦ Deeplearning4j • C# ◦ CNTK
  • 17. 結論 • 折角いろいろあるので,適材適所がよいのでは ◦ あとは宗教 • 下記,メンバーのお勧めです. • 初心者 ◦ Tensorflow/Kerasがよさそうです.実に簡単にNNが構築でき,Web資料も親切なのが多いです. ◦ が,玉石混交なので逆に欲しい情報にたどり着かないことも・・・ ◦ (今のところ)Caffeはいろいろと苦行なのでやめておいたほうが… • 企業エンジニア ◦ プロトタイピングにTensorFlow/Torch,開発にCaffe ◦ 自社開発 ◦ 今からメジャーになるのはまずムリだと思いますが • 研究者 ◦ TensorFlowかPyTorchがオススメ ◦ Chainer vs PyTorch > PyTorchがメジャーとりそうな流れ ◦ Caffeが安定して高速動作するのでその点ではオススメ.難しいけど… • 宗教家 ◦ Java教,Microsoft教,…
  • 19. フレームワーク間移行 • DNNの移行は,ネットワーク構造だけ実装,重みなどのパラメータをコピーする ことでできる • Model Zooに学習済みモデルいっぱいあるので,それ使いまわせるといいよね ◦ 時間がすごくかかる学習はやりたくないよね ◦ というか研究室レベルでは無理の領域に入ってる • コンバータを作る人は多いが,完全網羅はされなそう ◦ 使いたいときはちゃんとできるのか調べる必要がある w00 w01 w10 w11 コピー コピー ネットワーク構造は 先に作る
  • 20. ハイパーパラメータのチューニング • 「最適」の保証は理論的にない • 学習率が一番影響が大きいので頑張って調整しましょう • 探索をやりましょう ◦ グリッド探索 ◦ ベイズ推定 • ネットワーク構造は最大・自動生成不能パラメータ