Mais conteúdo relacionado
Semelhante a 【2017年】ディープラーニングのフレームワーク比較 (20)
【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つらい
• で,どれがいいの?
- 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の頑張りで残ると思われる
- 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はもちろん,様々な機械学習がで
きるフレームワークとして成長中
• 機械学習屋が使うのに便利そう
• 低速?
◦ 実行時にネットワークをコンパイルする
模様
◦ 本当に遅いのかちゃんと調べたい
- 15. 学習速度比較
• Caffeはやっぱり最速
• TensorFlowは実は速い?PyTorchも速
そう
• なぜかTorchが遅い
◦ ビルドのところで揺れがある?=インス
トールが鬼門?
• Kerasはとりあえず遅い
◦ TensorFlowバックエンドなのに,何してる
の?
• MatConvNetは遅いかもしれない
調査を続けたい
• 実は学習速度≠全体の実行速度
◦ Chainerはぱっと見遅いが,実はDefine
by Runの都合上,ネットワークコンパイ
ルも計測時間に含まれてしまっているの
で注意.
• ビルドのやり方,環境によって実行速
度に差が出る
◦ 速度的に安定したビルドの仕方がな
い?
• 速度のボトルネック要因
◦ データセットのロード
◦ ネットワークのコンパイル
◦ メモリの扱い
◦ ループのオーバヘッド?
◦ ネットワークの計算
今回の計測ターゲット
- 17. 結論
• 折角いろいろあるので,適材適所がよいのでは
◦ あとは宗教
• 下記,メンバーのお勧めです.
• 初心者
◦ Tensorflow/Kerasがよさそうです.実に簡単にNNが構築でき,Web資料も親切なのが多いです.
◦ が,玉石混交なので逆に欲しい情報にたどり着かないことも・・・
◦ (今のところ)Caffeはいろいろと苦行なのでやめておいたほうが…
• 企業エンジニア
◦ プロトタイピングにTensorFlow/Torch,開発にCaffe
◦ 自社開発
◦ 今からメジャーになるのはまずムリだと思いますが
• 研究者
◦ TensorFlowかPyTorchがオススメ
◦ Chainer vs PyTorch > PyTorchがメジャーとりそうな流れ
◦ Caffeが安定して高速動作するのでその点ではオススメ.難しいけど…
• 宗教家
◦ Java教,Microsoft教,…