Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

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

21 018 vues

Publié le

Caffe,Caffe2,TensorFlow,Keras,Torch,PyTorch,Chainer,MatConvNetの各ディープラーニングフレームワークについて,実際の使用感を比較しました.

Publié dans : Technologie
  • Soyez le premier à commenter

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

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

×