Help us understand the problem. What is going on with this article?

Deep Learning フレームワークざっくり一覧

More than 1 year has passed since last update.

さて、この記事は「Deep Learning フレームワークざっくり紹介 Advent Calendar 2017」の1発めとしてとりあえず、今あるディープラーニング用フレームワーク、その他関連ライブラリをざざざっと紹介しようという記事です。
より詳細は他の記事なんかを読んでもらうとして、ここではホントに、概要の概要(作者とか)とポインタ(URLとか)のみ紹介していきます。

※ ここ数ヶ月の、広く浅い動向調査を元に書いてます。もしかしたら間違いとかあるかもですが、その場合はコメントとかで教えてください。

では以降、処理の上の方から下の方まで順に、ざざっと。

Higher API

いわゆるディープラーニングフレームワークを更に抽象化して、Deep Neural Network(DNN)を簡単に書けるようにしたライブラリです。

  • Keras
    • by Francois Chollet, Google
    • https://keras.io/ja/
    • 主にTensorFlowを抽象化して、より簡単にDNNを扱えるようにしたライブラリ。TensorFlow 1.4から、TensorFlowの中にマージされました。
    • TensorFlow, CNTK, Theano などのモデルを生成できます。
  • Gluon
    • by AWS, Microsoft
    • https://github.com/gluon-api/gluon-api
    • http://gluon.mxnet.io/
    • https://mli.github.io/cvpr17/
    • AWSとMicrosoftが作った、やはりDNNを簡単に書くためのライブラリです。現在はMXNetをターゲットにしていて、MXNetのライブラリの一部として公開されています。
    • 本来静的ネットワークを書くMXNetを、動的ネットワーク構築(define by run)で書けるようにできるのが特徴です。

Framework

俗に言う、ディープラーニングフレームワークです。これ以上の説明は不要ですね。

  • TensorFlow
    • by Google
    • https://www.tensorflow.org/
    • これも説明は不要ですか。恐らく世界でもっとも良く使われているフレームワーク。本稿執筆時点で最新バージョンは1.4です。
  • Chainer
    • by Preferred Networks
    • https://chainer.org/
    • これもご存知、PFNが公開した日本製フレームワーク。日本では非常によく使われている印象ですが、国外では残念ながら、そこまで広くは使われていない感。
    • ただし、おそらく動的ネットワーク構築(define by run)の手法を世界に普及させたフレームワークじゃないでしょうか。
  • Caffe
    • by Yangqing Jia, UC Barkeley
    • http://caffe.berkeleyvision.org/
    • 2013年ごろUCBで作られたフレームワーク。主に画像認識をターゲットとして作られたようです。
    • 設定ファイルだけで動かせるなど、比較的お手軽に扱えるのが特徴。現在も根強い人気。
  • Caffe2
    • by Yangqing Jia, Facebook
    • https://github.com/caffe2/caffe2
    • Caffe作者のJiaさんがFacebookに移り、Caffeを更に発展させる形で開発されたライブラリ。
    • Facebook内ではかなり使われているようですが、世間的には(Caffeに比べると)まだまだマイナーな印象があります。
  • MXNet
    • by ワシントン大学, CMU, AWS
    • https://mxnet.incubator.apache.org/
    • https://aws.amazon.com/jp/mxnet/
    • ワシントン大学、CMUなどを中心に開発されたライブラリ。その後AWSが公式サポートを表明、現在はApacheプロジェクトになっています。
    • Python, R, Julia, Go などなど、多言語でのバインディングがあるのが特徴。
  • PyTorch
    • by Adam Paszkeら, NYU, Facebook
    • http://pytorch.org/
    • かなり古いLua製フレームワークであるTorchと同じチームが提供している、Python製フレームワーク。
    • Chainerをforkして作られたという話があり、Chainerと同じく define by run をサポート。相当柔軟に書けるらしい。筆者の周りでは人気高いです。
  • The Microsoft Cognitive Toolkit (CNTK)
  • Theano
    • by Yoshua Bengio, モントリオール大学
    • http://deeplearning.net/software/theano/
    • ディープラーニング業界では有名な、Bengio教授の元で作られたPython向けフレームワーク。かなり古い。
    • 一時代を築いたイメージのあるライブラリですが、今年になって、バージョン1.0リリースとともに開発の停止がアナウンスされました。
  • neon
  • NNabla (Neural Network Library)

Graph IR

モデルを記述するための中間表現フォーマットです。普通は各フレームワークごとに独自のフォーマットを定めていますが、ここではフレームワーク独立な、標準フォーマットをご紹介。

  • ONNX (Open Neural Network Exchange)
    • by Facebook and Microsoft
    • https://github.com/onnx/onnx
    • FacebookとMSが提唱している標準フォーマット。最初に公式サポートされたのはPytorch、Caffe2、CNTK。これらのフレームワークのアウトプットをONNXを通じて相互にやりとりできたりします。
    • 最近はIntel(Nervana)、AWSその他多数の企業が公式サポートを表明。ONNXからMXNet、TensorFlowへのインポートができるようになってます。
    • 現在、最新版はどんどんアップデートされていて、仕様がどんどん変わっています。一般の人が安心して標準フォーマットとして使えるようになるには、まだ時間かかりそう。
  • NNEF (Neural Network Exchange Format)
    • by Khronos Group
    • https://www.khronos.org/nnef
    • OpenGLなどを定める標準化団体Khronos Groupが提唱する標準フォーマット。
    • ただ現時点では、プレスリリースで表明されているだけで、実装や仕様書の類はまだ一切公開されてません。
  • CoreML

Backend stack

DNNモデルを読み込んで、最適化・高速化したり、様々なプラットフォームにデプロイしたりするためのライブラリ。着目してる人が少ない(Qiitaにも記事とかあんまりない)ですが、ここも色々なのが提唱されてます。

おわりに

過去に書かれた同様の、フレームワーク一覧記事やリストがあるみたいなので、それを紹介しておきます。
(自分は特にこれらの記事を参考にせず、独自にまとめたんですが、いざ探してみるといっぱいあった……みんな思うところは一緒ですね……)

では!

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした