Python
GitHub
Chainer
colaboratory
GoogleColaboratory

Colaboratoryで10秒で起動できる、ChainerのGitHubレポジトリ作ってみた

TL;DR

  • Google DriveにColaboratoryですぐに実行できるChainerのハンズオンを用意しました
  • GitHub上のレポジトリchainer-community/chainer-colab-notebookでバージョン管理していて、masterにマージされるとtravisが自動でGoogle Driveに反映します(@ikeyasu さんがやってくれました!)
  • Contribution Welcome ;)

Colaboratoryとは

  • Google社製の機械学習ツール。
  • Jupyter Notebookをwebサービス化したようなもの。
  • Googleドライブに保存でき、他のデータと同様に共有可能。
  • もちろん無料な上に、最近はGPUまでつかえるよう。

詳しい情報はこの記事などが詳しいです。
【秒速で無料GPUを使う】深層学習実践Tips on Colaboratory

ColaboratoryでChainerを動かすには

!apt -y install libcusparse8.0 libnvrtc8.0 libnvtoolsext1
!ln -snf /usr/lib/x86_64-linux-gnu/libnvrtc-builtins.so.8.0 /usr/lib/x86_64-linux-gnu/libnvrtc-builtins.so
!pip install 'cupy-cuda80==4.0.0b4' 'chainer==4.0.0b4'

ちなみにですが、chainer-jpというSlackがあるのですが、そこで下記のようにお願いしたら @kmaehashi さんが1日で作ってくれました。みなさんもChainerで困ったら聞いてみると良いかも!
スクリーンショット 2018-03-19 22.38.15.png

ChainerのハンズオンをColaboratoryで作ってみた

  • まず、既存のハンズオンやチュートリアルをColaboratoryで動くように変更し、Google Driveに集めました。
  • 作業内容は以下の通り、とても簡単でした。
    1. Jupyter Notebookをインポートする
    2. kmaehashi/chainer-colabを使ってGPU対応する
    3. 稼働時間、データ配置などを考慮して微修正する

Colaboratoryで動くようになったは良いけど・・・

上記のように、簡単にColaboratory用のハンズオンを用意できましたが、いくつか問題が発生しました。

  1. バージョン管理などのメンテナンスをどうすればいいのだろうか?GitHubみたいな感じでPRとか送ってもらえるようにしたいものの、管理がGoogle Driveだとそういうのができなさそう。
  2. GitHubで管理しようにも、Google Driveからdownloadしたipynb形式のファイルから改行が消えていて、とてもじゃないがバージョン管理できるファイル形式ではない。

課題1:バージョン管理をどうするか

ColaboratoryはGoogle Drive上のipynb形式のファイルを開けるので、ちょっとしたpythonのコードを書いたり、それを共有したりするのに向いています。ただ、バージョン管理、特に複数人で変更を加え、適切にレビュー・マージを繰り返すような複雑なバージョン管理をしようとなると厳しいです。そこでGitHubにレポジトリchainer-community/chainer-colab-notebookを作成して、管理することにしました。

課題2:Google Driveからdownloadしたipynb形式のファイルから改行が消えている

Google Drive上のipynb形式のファイルをDownloadすると下記のように改行が消えてしまっています。
スクリーンショット 2018-03-19 23.15.30.png

ただ、この問題の解決は簡単で下記のようにColaboratoryで開いて、「.ipynbをダウンロード」を使えば大丈夫でした。
image.png

結局どうなったか

  • 色々課題はあったが、バージョン管理もしたいし、Contiributionも自由にしてもらいたいので、GitHubで内容を管理するように。
  • さらに @ikeyasu さんのPRにより、travisで自動同期するようになった!

最後に

  • せっかくこのような仕組みを作ったので、自慢のハンズオン・チュートリアルがあればPRを送って頂けたらと思っています!
  • chainer-jpのSlackに#colaboratoryというchannelがあるので、興味がある方は参加してもらえるとありがたいです。