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

ありがとう、Chainer。頼むぜPyTorch。

2019/12/5、PFNからChainerの開発を停止しPyTorchの開発に貢献するというアナウンスがありました。

Preferred Networks、深層学習の研究開発基盤をPyTorchに移行

オフィシャルな発表が出たことは衝撃的でしたが、心の中で「いつかはこうなるんじゃないか」という思いがあったのも事実です。さびしくはありつつも、決断にはベストな時期だったのではないかと思います。ここ最近は動的グラフをサポートしたTensorFlow 2.0の公開があり、機能的にほぼ差異がなくなった2大フレームワークの決戦がいよいよ始まる・・・という雰囲気です。そんな中でのChainer開発合流のニュースは十分存在感が出る時期ですし、PyTorch陣営としてもありがたかったのではないかなと思います(積まれているIssue/PRもTensorFlowより多いですし)。

本記事では、Chainerへの感謝とPyTorch合流への期待を綴りたいと思います。

Chainerへの感謝

Chainerが登場したのは2015年6月です。このころ、深層学習の実装は今とは比べ物にならないくらい大変でした。pylearn2を使っていましたが、そもそもインストールがすごくめんどくさかったです。Windowsでやろうなんて日には、「正気なの?」と疑われる有様でした。

Windows/Python3でpylearn2を使う

RNNは実装どころか情報もほとんどありませんでした。LSTMの実装が容易になり普及する前で、そもそもつかえんのかといわれているような状態でした。PyBrainという更新がほぼ停止していたライブラリで何とか実装をしていました。

ニューラルネットワークで時系列データの予測を行う

そんな中現れたChainerは、インストールも割りと容易で実装も容易でした。何より設計がとてもきれいで、「これだよこれ!!」と感動したのを覚えています。

Chainerで始めるニューラルネットワーク

Chainerを使った勉強会も何回か開催しました。

論文を読んでいて、Salesforceがオフィシャルで採用しているようだと知りました。日本の会社が作ったフレームワークが、海外の著名機関の研究に使われていると知りかなりうれしかった思い出があります。

2015/12にはKerasが出て、Kaggleで結構使われるようになりました。その後TensorFlowも公開されました。チーム内で「Chainerか、Keras(TensorFlowバックエンド)か」という検討を行ったのですが、エースの「Kerasでいきましょう」という提言もありKerasを選択しました。正直に言えば、自分としてもGoogle相手にChainerが向こうを張り続けられるか、という点に不安がありました。

ただ初期のKeras/TensorFlowで、自然言語でよく使うRNNを実装するというのは地獄of地獄以外の何物でもありませんでした。正直、なんどChainerに戻りたいと思ったかしれません。以下の記事を書いていたのは、ちょうどチーム全員(このころ2人だったけど)で血反吐をはいていたころです。

単体テストをかけたとき、テストごとのTensorFlowグラフがコンタミしてクラッシュしたのはいい思い出です(※意識せずデフォルトグラフを使った場合の挙動で、分ければ回避は可能です)。新しく入ってきた後輩も「Chainerで書きたい」とごねる始末のなか、辛抱強くKerasをつかって本を書いたりもしてました。結局RNNの面倒さはずっと変わらなかったと思います(単純なモデルはKerasのLayerでかなり楽になったけど)。

そんな中、PyTorchが登場しました。StanfordのKarpathy先生が開発に入ったようで、登場したときかなり期待したのを覚えています。

TutorialやExampleが丁寧に作られていて、開発の「熱量」がとても感じられました。

当時のメールマガジン。

Weekly Machine Learning #3

そしてその後、SalesforceがPyTorchに切り替えたのを知るという。。。

とにかく加速度がすごかったです。そして、KerasがTensorFlowの一部になるというニュースがありました。振り返ればこのころから新参vs大手の2大フレームワークの対決が始まったのかもしれません。それと同時にTheanoの開発が停止pylearn2が開発停止CaffeはCaffe2へ、と新陳代謝も起き始めます。

なんだかすごい歴史を振り返っているように思いますが、ここまでの出来事が1~2年の間に起こっています。古参のフレームワーク続々が倒れる中Chainerが衰えることなく開発を続け新バージョン、さらにはChainerCVなどの派生ライブラリをリリースしてきたのはてきたのはとてもすごいことだと思います。細かいところですがChainerコントリビュートができたのは、念願かなった気がしてとてもうれしかったです。

Chainerが普及しきれなかったのには、大きく心の疚しさを感じるところがあります(さっとKerasを選択してしまったというのもあり・・・)。アーティストがファンを必要とするように、オープンソースも普及にはコミュニティの力が欠かせないと感じています。もしかしたら、同じくらい大事だと思います。今後すばらしい才能による発明があっても「日本のコミュニティ」が足かせになって発展しきれないんじゃないかとか、「日本初」は「世界に通用しない」という漫然とした思い込みが成長を阻害したのでは、などもんもんと思うところはあります。そんなこともあり、最近は積極的にGitHubのStarを押すようにしています(GitHubのStar数は、たぶん思われているより相当のインパクトがあります)。

PyTorch合流への期待

PyTorchの内部コードが、Chainerのようにきれいになるといいなと思っています。PyTorchは使うのを躊躇するレベルで中身がえぐいところがあり(これ)、この辺がなおるといいなと思っています。

また、ChainerRLのVisualizerは強化学習研究者垂涎の強力機能だと感じています。TensorBoardになるのかわかりませんが、ぜひこの資産はPyTorchでも使えたらなと思っています。

chainerrl-visualizer

Chainerというリポジトリはアーカイブされるのかもしれませんが、各種DNNフレームワークのAPIが似たり寄ったりになる中で、移行できる資産は少なくないのではないかと思います。PyTorchの中、あるいは外側のエコシステムなど、Chainerの資産が活かされることでより安心して使えるフレームワークになることを期待しています。そして、「PyTorch、Chainer合流のおかげてすごい良くなったよね」と評価されるようになることを願っています。

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
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