Above & Beyond

日々のアウトプット記録

公開されている Jupyter Notebook のファイルを Google Colaboratory で動かす

02/13(水)に参加した「みんなのPython勉強会#42」で、Jupyter Notebookを使って実際にコードを動かしていくセッションがありました。

セッション中のツイートでこんな声があったので、「それ、PC無くてもスマフォでできるよ!」と思って書き始めたのがこのエントリです。

もっとも、ガッツリ仕事で使うのには向かないと思いますので、その点はご注意を。

f:id:kabukawa:20190214192205p:plain:w400


目次


Google Colaboratoryとは

Googleの提供するPython実行環境です。
Googleアカウントを持っていれば、ブラウザだけで使えます。(実行環境はGoogle Cloudに作られる)
しかも、無料です。
他にも、Google ドライブをマウントできたり、GPU(!?)が使えたりします。

  • PC手元にないんだけどスマフォからPythonコード動かして試したい
  • Pythonを勉強するために手軽に始めたいんだけど環境を作るのが面倒
  • ハンズオンやりたいんだけど環境がバラバラだと意図しないトラブルがあるので面倒

等の場合に便利だと思います。

Google Colaboratoryは Jupyter Notebookからフォーク、つまり派生したものなので、Jupyter Notebookのファイルが読み込めます。
既存のファイルがあったり、公開されているものをトレースしたい場合にも便利に使えると思います。


公開されているノートブックを読み込む

公開されている .ipynb 形式のファイルが有れば、それをGoogleドライブにアップロードすることで Google Colaboratory に読み込むことができます。


.ipynb 形式のファイルを用意

今回のきっかけになったセッションでは、.ipynb 形式のファイルが公開されていますので、それをまずダウンロードします。

http://www.tsjshg.info/Stapy20190213_Tsuji.ipynb


Google Colaboratory を開く

次に、Google Colaboratory を開きます。

colab.research.google.com


ファイルのアップロード

こんな感じの画面が表示されると思いますので、画面上の方にあるタブ部分で ">" (赤枠部分)をタッチして右側に隠れているタブを表示します。
右端まで行くと「アップロードタブ」(赤枠)が表示されるので、タッチします。

f:id:kabukawa:20190214182946j:plain:h500 f:id:kabukawa:20190214183036j:plain:h500

ファイルのアップロード画面が表示されますので、先程ダウンロードした .ipynb ファイルを指定してアップロードを行います。

f:id:kabukawa:20190214183347j:plain:h500

なお、アップロードされたファイルはGoogleドライブに保存されますので、Googleドライブの共有機能を使って他のユーザーとファイルを共有することもできます。


Python実行環境起動待ち

ファイルが読み込まれると、バックグラウンドでPython実行用の仮想マシンGoogle Cloud側に起動します。
起動するまでは画面上部に「接続中」(赤枠)と表示されます。
仮想マシンが起動して、Pythonが実行できるようになると、「接続済み」に変わります。

f:id:kabukawa:20190214183537j:plain:h500 f:id:kabukawa:20190214183713j:plain:h500


コード編集/実行

あとはコードのセル部分を表示して、実行や編集の操作を行います。
画面で赤枠で囲ってある部分をタッチすると実行ボタンが表示され、青枠で囲ってある部分をタッチするとコードの編集ができます。

f:id:kabukawa:20190214183817j:plain

実行ボタンが表示されたところ。
左上にあるハンバーガーメニュー(〓 みたいな表示のボタン)をタッチすれば、ファイルの保存や一括実行等ができます。

f:id:kabukawa:20190214183942j:plain:h500 f:id:kabukawa:20190214184622j:plain:h500

コードの編集は、スマフォのソフトウェアキーボードだと厳しいところはあると思いますが、 どうしても快適にコードを書きたければBluetoothキーボードを接続して使えばいいと思います。
結構コンパクトなキーボードが販売されていますし、PCと違って持ち込みで問題にされる可能性は低いのではないでしょうか。


その他

Googleドライブをマウント

Google Colaboratory はGoogleドライブにファイルを保存できると同時に、Google Colaboratory からGoogleドライブをマウントできます。
こんなコードをセルで実行すると、一時的にマウントするためのコードを要求する画面と、ログインしてコードを得るためのリンクが画面上に表示されるます。

from google.colab import drive
drive.mount('/content/drive')

ログイン後に表示されるコードを先程のコード入力画面に入力すると、ドライブのファイルが Google Colaboratory 直接参照できるようになります。
これは例えば、ドライブに置いてあるサイズの大きなファイルやExcelファイルなどを読み込みたいという場合に便利に使うことができるのではないでしょうか。
但し、Googleドライブには容量制限があるので、それを超えないように注意しておく必要があります。(有料で追加は可能ですけど)


コマンドの実行

Google Colaboratory のバックエンドでPythonを動かすための仮想マシンが起動している、ということを上の方で書きました。
ということは Linuxコマンドを使えるということでもあります。試しに、セル上で "!cat /etc/os-release" を実行してみたらこんな結果が表示されました。

NAME="Ubuntu"
VERSION="18.04.1 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.1 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic

Ubuntu 18.04 LTSが動いている事がわかります。
gitも使えますしローカルディスクの割当もあるので、GitHubからコードやデータをチェックアウトしてきて使うとかも可能。
巨大なファイルは事前にGoogleドライブに置いておけば使うのも簡単ですね。


注意点

Google Colaboratory は無料で使えるのですが、実行できる時間に制限があります。

以下の条件に引っかかると、バックエンドで動作している仮想マシンがシャットダウンされてしまいます。

  • 最大12h経過
  • なにも実行されていない状態、または実行中でもブラウザでタブが開かれていない状態で90分経過

.ipynb ファイルはGoogleドライブに保存されているのですが、仮想マシンがシャットダウンされると処理途中だったモデルやそこまでの実行結果を保存していたメモリ、環境変数などが消えてしまします。この点は注意が必要です。(僕が仕事で使うのには向かないと考える理由の一つです)


おわりに

Google Colaboratory、いかがでしょうか?
個人的にはとても便利で良いサービスだと思います。
正式なサービスとして誰にでも進められるものではないかもしれませんが、Pythonを始めたいけどどこから始めればいいかわからないという場合には使ってみ価値はあると思います。 ということで、興味を持った人は使ってみてもらえると嬉しいです!