LoginSignup
47
40

More than 3 years have passed since last update.

Google Colaboratory を使う上で工夫したことのまとめ

Posted at

概要

Google Colaboratory (以下、Colab と呼ぶ) は Google が提供するクラウド版 Jupyter notebook (的な)サービスである。いくつかの制約はあるが、GPUが無料で使えるのがすごい。最近、これを使う機会が多かったので、私なりの使いこなしのコツを書いていきたい。

使いこなしのコツ

1. Google Drive をマウントする

Colab は Docker のコンテナとして動いているらしい。numpy, pandas, sklearn, tensorflow, torch 等のパッケージはあらかじめインストールされているものの、計算に必要なデータはどこか他から持ってくる必要がある。一番簡単なのは、Google Drive をマウントするやりかたであろう。

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

とすると、認証画面へのリンクが表示されるので、そこで必要な認証が行われる。あとは、/content/drive/My Drive に自分の Google Drive がマウントされているのが見えるはずだ。
(自分の Google Drive の全体がマウントされてしまうことに注意。一部のパスだけマウントできると聞いたこともあるが、やったことはない)

どうやら My Drive という名前は変えられないようなので、私は、

ln -s "/content/drive/My Drive" /content/gdrive

として、 /content/gdrive でアクセスできるようにしている。
(空白を含まないパスにするため)

2. Colab 上でもローカルPCでも動くようにする

Colab のファイルは拡張子が .ipynb であり、基本的には Jupyter notebook である。実際に、テキストエディタで開いてみると、これは JSON 形式で、Jupyter notebook に加えて、 Colab 特有の属性をいくつか書き加えたものであることがわかる。

Colab のファイルはデフォルトで、 Google Drive の /Colab Notebooks というパスに置かれる。通常は、ここからファイルとして直接ダウンロードしてもよい。 通常の Jupyter notebook と比較すると、こちらには改行がない。そこで cat hoge.ipynb | jq . > hoge2.ipynb などとして、JSON を整形すると見やすくなる。

ただ、どうも編集中の Colab のファイルは、直接 /Colab Notebooks からコピーすると、ファイルの中身が壊れていることがあった。そこで、 Colab の .ipynb をダウンロードする のメニューからダウンロードしたほうが安全である。また、ここからダウンロードすると、JSON にはちゃんと改行がある。

Colab 環境では /content がホームディレクトリになるので、私は、ローカルPC上でも /content ディレクトリを作っている。そして、その下に適当にディレクトリを作ることによって、 Colab でもローカル PC でも同じように利用することができる。

Colab かローカルPC かの判定のために次のようなコードを利用している。

3. 日本時間へタイムゾーン変更

Colab のタイムゾーンはデフォルトで UTC なので、これを日本標準時に変更。

if on_colab:
    !rm /etc/localtime
    !ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
    !date

4. 起動時間表示

Colab は最初に立ち上げたインスタンスが12時間後に強制シャットダウンされて、保存したデータもすべて失われるので、経過時間を知ることは重要。

if on_colab:
    !cat /proc/uptime | awk '{print $1 /60 /60 " hours (" $1 "sec)"}'

5. 90分のアイドルタイムアウトに対応

連続12時間の制限とは別に、90分間、Colab に触らないでいると、強制的にシャントダウンされてしまう。
これを防ぐためには、別の Colab ノートブックを開いて(ただしハードウェアアクセラレーターの設定は同じにする必要がある)、そこで次のようなコードを実行する。

import time


while True:
    time.sleep(3600):
    !date
    !ps ax # これはなくてもよい

こうすることでインスタンスをインスタンスを継続的に使うことができる。

6. Colab をずっと使っているとブラウザが激重になる現象

私の環境だけの問題かもしれないが、Colab で計算をしていると、ブラウザ(Google Chrome)がだんだん重くなっていく現象があった。どうも、Colab のノートブックをブラウザで開いていると、バックグランドで常に通信が発生して、それが重さの原因なるっぽい。画面表示があまりない場合には、ブラウザが重くなることはあまりなかった。そこで、計算に長時間要する場合には、5.のようにして、実行中のインスタンスが落ちないようにしたうえで、長時間の計算をしているノートブックを閉じてしまうとよい。インスタンスが落ちない限りはブラウザ上で表示されていなくても、計算は続行している。ふたたび、そのノートブックを開くと、閉じていたときに生成された画面出力も含めて、再びすべてが表示される。

まとめ

他にもいろいろあったような気もするが、とりあえず以上である。また何か思い出したら追加する。

47
40
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
47
40