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を動かすには
- kmaehashi/chainer-colabを使って、下記のようにコマンドを打つだけで準備完了
!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で困ったら聞いてみると良いかも!
ChainerのハンズオンをColaboratoryで作ってみた
- まず、既存のハンズオンやチュートリアルをColaboratoryで動くように変更し、Google Driveに集めました。
- 作業内容は以下の通り、とても簡単でした。
- Jupyter Notebookをインポートする
- kmaehashi/chainer-colabを使ってGPU対応する
- 稼働時間、データ配置などを考慮して微修正する
Colaboratoryで動くようになったは良いけど・・・
上記のように、簡単にColaboratory用のハンズオンを用意できましたが、いくつか問題が発生しました。
- バージョン管理などのメンテナンスをどうすればいいのだろうか?GitHubみたいな感じでPRとか送ってもらえるようにしたいものの、管理がGoogle Driveだとそういうのができなさそう。
- 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すると下記のように改行が消えてしまっています。
ただ、この問題の解決は簡単で下記のようにColaboratoryで開いて、「.ipynbをダウンロード」を使えば大丈夫でした。
結局どうなったか
- 色々課題はあったが、バージョン管理もしたいし、Contiributionも自由にしてもらいたいので、GitHubで内容を管理するように。
- さらに @ikeyasu さんのPRにより、travisで自動同期するようになった!
最後に
- せっかくこのような仕組みを作ったので、自慢のハンズオン・チュートリアルがあればPRを送って頂けたらと思っています!
- chainer-jpのSlackに#colaboratoryというchannelがあるので、興味がある方は参加してもらえるとありがたいです。