Hatena::ブログ(Diary)

shi3zの長文日記 RSSフィード Twitter

2016-09-24

Chainerはメジャーバージョンアップの頻度を下げるか、バージョン番号の付け方を変えるべき 08:39

 また・・・村がひとつ消えた・・・


 いや、Chainerがバージョンアップしてしまった・・・。

 しすぎである。


 当社の秋葉原リサーチセンターの調査によれば最近のChainerの更新頻度はこんな感じ


https://i.gyazo.com/1089ac374d1396585a5ac18d8bcea3e2.png


 やる気があるのは素晴らしい。

 前より格段に良くなっているのはわかる。

 P100に対応してくれないと困る人がいるのももちろん分かる。が、しかし。


 いや、今回は対応するのは比較的簡単だったけどさ https://github.com/uei/deel



 しかしミドルウェアがこく速度でバージョンアップすると困る人が大勢いる。嫌がらせをしたいわけじゃないなら、そろそろバージョンアップの頻度について見直すべきである。



 しかしChainerを業務で使ったり、Chainerに依存するOSSを作ったりしてる身としてはこの頻度でメジャーバージョンアップしちゃうとキャッチアップするのがとても厳しい。


 その上、あんまりメジャーバージョンアップがメジャーじゃない気がする。

 いや、もしかすると、1.xの1の部分がメジャーだって主張したいのかもしれないけど、1.0と1.16じゃ機能に差がありすぎる。だったらもっと早い段階で2.xになってるべき。1.0用に書いたソースを1.16で使う時にソースコードの互換性がなくなるというのはもはやマイナーバージョンの定義を逸脱してる


 たとえばtrainerを導入するのはまあいいとして、現状導入するメリットが殆ど無いんだよな。将来、trainerを使えば分散できるようになるという話ではあるけど、だとしたら、あんまりブラックボックスで囲みたくないから今のところtrainerは使わなくてもいいやと判断できる。


 みんなが使うバージョンを上げるのは、例えばせめて半年に一回とかにして欲しい。ついていけなくなっちゃう。しかもけっこう、細かい変更が多い。


 最近はバージョンアップしてもそんなに劇的に仕様が変わったりはしないけど、こうバージョンによって挙動やプログラムの書き方が違うとやっぱり本とか書く身としては、発売される前から本の内容が陳腐化されるのは困る。


 どうしてもメジャーバージョンを上げたいのなら、1.15.0.1みたいに4桁目をマイナー、3桁目を今のように使うということにしてほしいなあ。それか、Ubuntuみたいに、安定化バージョン(LTS)を残してガンガン開発するホットなバージョンと、とりあえず最低限のメンテだけはする安定化版に分けてほしい。


 ちなみに1.16.0はマイナーリリースらしいとリリースノートに書いてある。

 そう、あとリリースノートがないんだよ。最近のはやりなの?tensorflowにもリリースノートのようなものが見当たらないので流行りなのかもしれないけど、このスピードでバージョンアップされたら本当に困る。


(14:04追記)とおもったら勘違いみたいで、ちゃんとリリースノートはあるよと西川さんに教えてもらった。正直スマンかった。

Releases ? pfnet/chainer ? GitHub

https://github.com/pfnet/chainer/releases

 とはいえ、ふつうはここ(http://chainer.org)からいの一番に辿れるのがスジだろうよ!最新版がバージョンいくつなのか、こんなにもバージョンがクリティカルに効いてくるミドルウェアなのに掲載されてない!


 公式ドキュメントも、タイトルにバージョン番号入れようよ。それくらいわけわかんない。

Chainer ? A flexible framework of neural networks — Chainer 1.16.0 documentation

http://docs.chainer.org/en/stable/


 利用者はどうやってバージョン番号からそれを読み取れば良いのだ。せめてそこだけでも決めて欲しい。


 偶数がマイナー、奇数がメジャーというわけでもなさそうだし。


 というのも、クライアントから仕事を依頼されて、納品して三日後に「Chainerをバージョンアップしたら動かなくなりました」という話が平気で起きる。もちろん契約締結時にバージョンはこれこれをつかうと決め打ちでやるんだけど、新しいバージョンが出たらバージョンアップしてみたいというのは人情だ。さらに機能追加とバグフィックスを同時にやるのはできれば辞めて欲しい。


 さらにいえば仕様変更も同時に起きる。

 しかもけっこう絶望的なやつがあっさり起きて、結局、Chainerのバージョンアップに毎回振り回されていると「もうTensorFlowでいいかな・・・」と諦めの気持ちが生まれてきてしまう。


 ミドルウェアは性能や機能も大事だけど基本的には使ってもらえてナンボだし、使うというのはこの場合、学生が研究したり遊んだりしたりするだけじゃなくて業務に使うことだってあるわけだから、頻繁なバージョンアップがユーザーに対してメリットだけでなくデメリットにもなる可能性をもっと真剣に考えてほしいなあ。


 毎月やっているディープラーニングセミナーも、毎月教材を書き直さないといけない。下手すると教材を印刷したあとに仕様が変わってしまう、なんてこともある。これは困る。



 という話はフォーラムに書いたほうが良いんだろうか。

 しかしChainerのフォーラムは二子玉みたいに日本人同士でも英語で会話しなきゃなんないから面倒なんだよなあ

 

 

 で、バージョン番号に関しては日本語のフォーラムもあるのでそちらでトピック立ててと西川さんに言われたので立てましたよ。

Google グループ

https://groups.google.com/forum/#!topic/chainer-jp/i-WTvvae5vc