人工知能の代名詞になっているdeep learning(深層学習)ですが、フレームワークに何を選ぶかは重要で、深層学習とフレームワークでググると、ChainerとTenserFlowがトップページを独占しています。TensorFlowはグーグルがopen source化したフレームワークのようです。
Chainerは前回紹介したPreferred Networksが開発した国産フレームワークで、国内では当然知名度が高いのですが、海外だと全然と言った感じです。海外だと結構選択の幅があるようなのですが、日本人には国産のChainerがいいのではないでしょうか。
deep learning, framework, bestでトップページに出て来たサイトを色々と調べて見ました。DL4J vs. Torch vs. Theano vs. Caffe vs. TensorFlow ← このサイトを見た結果、良さ気なフレームワークは、TorchかCaffeなのですが、前者は使用言語がLuaなのがあれで、後者は運用がかなり面倒なような事が書いてあります。
Caffe
Caffe is a well-known and widely used machine-vision library that ported Matlab’s implementation of fast convolutional nets to C and C++ (see Steve Yegge’s rant about porting C++ from chip to chip if you want to consider the tradeoffs between speed and this particular form of technical debt).
「Caffeは、Matlabの高速なCNN(Convolutional Neural Network)実装をC/C++へ移植した有名で広く使われているマシンビジョン(コンピュータービジョン、機械視覚)ライブラリです。(技術的負債であるこの変態仕様のせいで、速度的有利が相殺されている現状を知りたいなら、C++のチップ毎の移植に関するエンジニア達の激しい不満を読んでみて下さい。)」
速度があっても、GPUカード交換の度に、新しいGPUチップ用にC++の書き換えが必要になるようです。GPUカードの交換サイクルが長くなっているとは言え、面倒臭い作業な事には変わりはないので、ずっと同じGPUカードを使い続ける人以外は辛そうです。ただ、GPUを使わないでも使えるみたいなので、CPU modeでもいいならありかもしれませんが、それだと一番の売りの速度が出ないので、そもそもCaffeを使う意味が無いような気もします。
Nvidia support
Nvidiaのサイトで調べてみました。Deep Learning Frameworks
CaffeがトップなのでやはりCaffeが一番人気なのかもしれません。さらに、Caffeは 最新のcuDNN v5 for GPU accelerationをサポートしています。チュートリアルサイトもあるので初心者には敷居が低くなっています。他には、GoogleのTensorFlow、Torch、TheanoがcuDNNの最新バージョンをサポートしています。MicrosoftのCNTKとChainerはcuDNN v4となっていますが、そのうちv5に対応されるのではないでしょうか。Chainerが他のフレームワークと一線を画するような記載が載っています。
Chainer
Chainer is a deep learning framework that’s designed on the principle of define-by-run. Unlike frameworks that use the define-and-run approach, Chainer lets you modify networks during runtime, allowing you to use arbitrary control flow statements.
「Chainerは、define-by-runの原則の上に設計されている深層学習フレームワークです。define-and-runアプローチを使っているフレームワークとは違い、Chainerは、ランタイムでのネットワーク修正が可能で、任意の制御フローステートメントを使えるようになります。」
Chainerの売りであるdefine-by-runが、一部で人気の秘密になっているようです。国産フレームワークという事もあり、日本人のファンも多いのではないでしょうか。日本がAIで世界市場で勝負するには、Preferred Networksのような将来性のあるベンチャーの力が必要になってきます。Chainerを使って学習することで、若くて有能な人達は、この将来有望なベンチャーの社員になれる可能性も少しは出てくるのではないでしょうか。