衝撃の発表で、仕事に身が入らなくなった @kitajima_orihime です。
本当は他の記事を先に書こうと思っていたのですが、今日はChainerの思い出をいろいろ書きます。
私とChainerの出会い
ISPにいた頃、最初はCaffeでDLの仕事をしていました。ただCaffeってとんでもなく使いにくいじゃないですか。
まあいろいろ悪戦苦闘していたところにChainerが出てきたわけです。
Chainer 1.5頃までは社内の別のメンバがMr. Chainerをやっていて、自分としても興味がないわけじゃなかったのですが(むしろTensorflowやらなきゃな……とか思っていたり)、なかなかChainerまでは手が回りませんでした。
Chainer 1.11でしたっけ、trainerとかが整備されたところでもう一度コードを見たら、なんじゃこの簡潔なコードは!アレからひたすらChainerを推し続けた結果、社内でのMr. Chainerへの道をまっしぐらとなりました。
某案件でChainerの中身を全部追いかけて底のほうを弄ったり、全脳アーキテクチャ系の仕事でお世話になったり、急遽Chainer Chemistryについて某所でクローズドな講演を頼まれて頭ぱーんしてみたり、Chainer Meetupで何度か発表させて頂いたり。遺伝研スパコンにもお世話になりました。
気付いたら、社内で"Chainerのことならこの人に聞け"の立場を完全に獲得していました。
Chanierの良いところ
Chainer v3あたりが一番わかりやすかったかな、と思います。いまのChainerに繋がる基盤はほぼ仕上がっていて、でもハードウェアのバージョンとかに依存する細かいifはまだ少なくて。
ガリガリにC言語でチューニングしたり細かくH/Wやライブラリバージョンに合わせたチューニングをしていないのでパフォーマンスが出ないのはしょうがないとしても、Deep Learningのフレームワークの一番奥底までが見通し良く読めるってのは、PFNの鬼のような実力のなせる技ですね。
その後の私とChainer
LSWではそこまでバリバリ深層学習!って仕事内容ではなかったとはいえ、OptunaをAWS分散環境でリリース直後から使い倒してみたり色々やれたようには思います。
アラヤは言うまでもなく深層学習の会社なのでバリバリChainerに復帰しました。社内で統一フレームワークがあるわけじゃないのですが、Chainer派はやはり人数多くはないですね。
Chainerのもくもく会では、Anaconda/numpy由来のバグを踏んで胃が痛くなったりもしていました。
ChainerにPRを出せなかったのが心残りではあります。Issue出したことはあるのですが、PR出しを一度はやりたかった……
今後のChainerとの向き合い方
Chainer3あたりのあっさりとした構造、多分今後も価値があると思います。
PyTorchがどこまであっさりとした使い方をサポートするかですが、やっぱりPyTorchってPyTorchですし、あっさりとnumpy/cupyだけをサポートするChainer3あたりってわかりやすいんですよね。
深層学習の実装「フレームワーク」を学ぶには、下手にTFとかPyTorchとかに手を出すよりもChainer3を(古いとはいえ)丁寧に学ぶことには教科書的な意味があるんじゃないかな、と思います。
そしてさっさとPyTorchでもろもろ実装できるようにがんばらないとですね。エンジニアは生涯学び続ける仕事なので、まだまだ学んでいきますぞい!
Chainer ChemistryとかChainerRLとかのPyTorch移植、楽しみにしてます。