O slideshow foi denunciado.
Seu SlideShare está sendo baixado. ×

Deep Learningライブラリ 色々つかってみた感想まとめ

Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Carregando em…3
×

Confira estes a seguir

1 de 32 Anúncio

Mais Conteúdo rRelacionado

Diapositivos para si (20)

Semelhante a Deep Learningライブラリ 色々つかってみた感想まとめ (20)

Anúncio

Mais de Takanori Ogata (15)

Mais recentes (20)

Anúncio

Deep Learningライブラリ 色々つかってみた感想まとめ

  1. 1. Deep Learningライブラリ 色々つかってみた感想まとめ @conta_
  2. 2. Self Introduction 緒方 貴紀 (twitter: @conta_) CTO@ABEJA, Inc. Computer Visionとか、Machine Learningを使った プロダクト開発をやっています。
  3. 3. Deep Learning Library?
  4. 4. _人人人人人人人人人_ > 多すぎてつらい <  ̄Y^Y^Y^Y^Y^Y^Y^Y ̄
  5. 5. Dive into Deep Learning
  6. 6. *感じ方には個人差があります
  7. 7. 今回紹介するライブラリ
  8. 8. Caffe Caffe: UC Berkleyの人が作ってる。DeepLearning界隈ではかなり老舗なライブラリで、 功績は大きい 言語: ・CoreはC++。Python, MatlabのWrapperがある 特徴: ・基本的にProtocol Bufferでネットワークを記述
  9. 9. ■いいところ(個人的感想) ・Model Zooに学習済みモデルがたくさん公開されてる (既にCVPR2016の論文のモデルも公開されてる) ・研究者が割と使ってるので最新の研究成果がCaffeで実装されてたりする ・Multi-GPUに対応したので、設定1つで複数のGPUを利用可能 ・実行速度が割りと早い ・ネットワークのパフォーマンステストができる(caffe testコマンド)
  10. 10. ■つらいところ(個人的感想) ・カスタマイズがc++とProtocol Buffer。。。マヂつらぃゎ。。。(*1) =>人がカスタマイズしたものは、もはやわからん。 ・ネットワークをProtocol Bufferで書くのがつらい(*2) =>GoogLeNetは約2000行、ResNetは約7000行。。。 (Protocol Buffer職人芸) ・データセットを作成するのが大変 ・エラーがわかりにくい ・ソースコードを読めないと全機能は使えない、動きがわからない (ドキュメント更新しろ!) ・インストールがつらい (昔に比べると依存関係のOnOffのオプションが付いたため、 だいぶマシ) ・RNNを扱うことはできない(魔改造されたCaffeベースのものはあるけど。。。)
  11. 11. ■余談(*1) ・最近はPython Layerが追加されてPythonだけでもカスタマイズ できるように魔改造工夫している(No Documentation)
  12. 12. ■余談(*2) ・PythonでProtocol Bufferを生成 できるようになったため、 ループした記述が割と簡単になった (No Documentation)
  13. 13. ■こんなひとにおすすめ ・まず何か動かしたい人 ・とりあえず研究成果を試したい人 ・速度が必要な人 ・C++とProtocol Bufferを勉強したい人 ・根気強く何かと戦いたい人
  14. 14. Tensorflow: G⃝⃝gle製の分散行列計算ライブラリ。 別にDeepだけじゃないんだからね! 言語: ・CoreはC++。PythonとC++どちらでも動く。 特徴: ・分散処理が簡単にできる ・Googleのプロダクトで何年も利用されていて、安定感がある
  15. 15. ■いいところ(個人的感想) ・分散処理がめっちゃ簡単にできる(Distributed Tensorflow) ・GoogleがMLプラットフォームを提供開始 ・最近、Tensorflow使いました論文がよくでてきている ・コアがC++なのでAndroidでも動作する ・Docker Containerが落ちてるので、Docker使えるなら インストールに困らない ・Tensorboardがオシャレ
  16. 16. ■つらいところ(個人的感想) ・玄人向けライブラリ =>仕組みがちょっと複雑なので理解しないと使いこなせない =>ネットワークを書くのに一から記述する必要がある、Theano的な立ち位置 ・ソースコードが大規模なため改造が大変そう (一応ドキュメントはあるけど) ・Distributed Tensorflowを個人の資源で活用するのは困難なので、Googleのプラット フォームを使わないと恩恵を受けにくい =>分散コンピューティングのIOボトルネック、InfiniBandをいっぱい買えるお金持ち なら恩恵を受けられるかも
  17. 17. ■こんなひとにおすすめ ・仕組みの部分からDeep Learningを勉強したい人 ・Deep Learning 中∼上級者向けの人 ・大規模機械学習をやってみたい人 ・大規模機械学習基盤を作りたい人 ・Mobileに組み込みたい人
  18. 18. Chainer: PFN製のDeep Learningライブラリ。 言語: ・Python(+Cuda) 特徴: ・Define-by-Runという手法をとっていて、ネットワークを後から解 釈 ・すばらしい
  19. 19. ■いいところ(個人的感想) ・ネットワークの記述の柔軟性が高い (特にRNN系非常に書きやすい) ・内部の動作がどうなってるか非常にわかりやすい ・デバックしやすい ・ナウいアルゴリズムがいち早く実装されてる ・CupyというCudaが簡単に使える行列演算ライブラリが含まれてい て、自前のアルゴリズムを比較的簡単に高速化できる (C++で書いてラッパーとかつくらなくていい) ・中の人がすごい
  20. 20. ■つらいところ(個人的感想) ・ネットワーク以外の記述量が多くなってしまう(学習のコードとか) ・実行速度(最近はそこそこ早いっぽい) ・Deep Learning分かってないと多分使いこなせない
  21. 21. ■こんなひとにおすすめ ・Deep Learingを一からガッツリ勉強したい人 ・Deep Learning 中∼上級者の人 ・研究でTry and Errorを繰り返しながらアルゴリズムを開発したい人 ・複雑なネットワークを記述したい人 (ネットワーク内で条件文書きたい、データによって処理を分けたい等) ・RNNとかNLPとかを書きたい
  22. 22. ■MXNet: DMLC(Distributed (Deep) Machine Learning Community)が作って る。XGBoostの作成元としても有名。 ■言語: ・CoreはC++。Wrapperがたくさんあり、Python、C++、Scala、 R、Matlab、Juliaと多言語対応。 ■特徴: ・多言語! ・速度がかなり早い(所感) ・mshadow(行列演算)、ps-lite(分散処理)等のライブラリがベース
  23. 23. ■いいところ(個人的感想) ・分散処理(1Node, Multi-GPU、Multi-Node、Multi-GPUどちら も)がめっちゃ簡単にできる(Exampleあり) ・S3へモデルデータを保存する機能がある ・早い(ImageNet full datasetをGeForce GTX 980*4で8.5日) ・なぜ早いかがドキュメントで力説されている ・多分最も多言語が進んでいる ・C++で書かれてるので Mobile(iOS, Android)でも動く
  24. 24. ■つらいところ(個人的感想) ・エラーがわかりにくい、本当にわかりにくい ・ドキュメントが少ない =>特殊な学習データを作ったりするのは大変 =>難しいことをしようとするとソースを読まなければならない
  25. 25. ■こんなひとにおすすめ ・Deep Learning 中∼上級者向けの人 ・速度を求めている人 ・Python、C++以外でも利用したい人
  26. 26. ■Keras: PythonのDeep Learningライブラリ。 最近v1.0がリリースされた。 ■言語: ・Python ■特徴: ・Torchに似た記述方法。 ・行列演算のバックエンドはTheanoとTensorFlowを利用していて、 切り替えることができる
  27. 27. ■いいところ(個人的感想) ・ネットワーク記述が簡単、柔軟 ベースのAPIがたくさん準備されているため、記述量も少なく済 む。簡単なネットワークであればAPI組み合わせでなんとかなる。 v1.0.0から functional APIなるものが出来て、 非常に直感的にネットワークを記述できるようになった ・学習が簡単 Scikitのようにfit()関数呼び出せばよろしくやってくれる ・ソースが読みやすい
  28. 28. ■つらいところ(個人的感想) ・Multi-GPU非対応 TheanoをBackendとして使ってるとMulti-GPUつらい。 TensorflowのおかげでMulti-GPUが簡単にできるようになった? ・Pythonしか対応していない
  29. 29. ■こんなひとにおすすめ ・Deep Learningをやりたい人全般 ・あまり細かいことは気にせずにサクッとネットワークを作 りたい人 *個人的には一番おすすめ
  30. 30. まとめ ■Caffe ・とりあえずDeep Learing(CNN)やりたい人 ・研究成果を試したい人 ■Tensorflow ・分散コンピューティングやりたい人 ■Chainer ・アルゴリズム開発したい人 ・本気でDeep Learningを勉強したい人 ■MXNet ・速度が必要な人 ・Mobileで動かしたい人 ■Keras ・とりあえずDeep Learing勉強したい人 ・めんどくさいのである程度環境が準備されていて欲しいと思う人
  31. 31. We are hiring! → https://www.wantedly.com/companies/abeja

×