#はじめに
対話型でPythonやDeep Learningのコードが実行可能なJupyter notebook環境を、即座にブラウザ上で利用できるGoogle Colaboratory。個人でGPUマシンを調達するハードルが高かったので非常に重宝しています。しかし、90分目を離すと実行が振り出しに戻ってしまい、萎えぽよな気持ちになることが何度かあったので本記事で対策方法を共有します。
#12時間&90分ルール
Google Colaboratoryでは以下の条件を満たす場合、実行中のプログラムがあってもインスタンスの状態がすべてリセットされていまいます。
- 【12時間ルール】新しいインスタンスを起動してから12時間経過
- 【90分ルール】ノートブックのセッションが切れてから90分経過
1つ目の12時間ルールについては、学習データや中間生成物をGoogle Driveに退避させることで学習を継続することができます。多くの記事でGoogle Driveとの連携は紹介されており、私も連携して利用する事が多いです。以下の記事でGoogle Driveの連携について言及しています。
2つ目の90分ルールの対策について、本記事で取り扱います。ノートブックのセッションが切れて90分経過すると、書いたコードは残ってはいるものの、また環境準備の一連の流れをやり直す必要があります。
#90分ルール対策
ノートブックを定期的にアクティブな状態にすることで、インストールしたツールや中間生成ファイルを最大12時間は継続利用することができます。アイドル状態が続くとノートブックの接続が切れますが、ノートブックの画面右上の"再接続"ボタンから再接続すれば、アイドル状態を解除できます。対策は至ってシンプル。1時間おきにノートブックをリロードするだけ!2つの方法を紹介します。
- 方法1:スクリプトの作成
- 方法2:ブラウザのアドオンを利用
方法1のスクリプトも超簡単ですが、それも面倒くさいという人はブラウザのアドオンを使えば一発です。
##方法1:スクリプトの作成
定期的にノートブックをブラウザのタブで開いてスクロールすれば問題ありませんが、寝てる間に学習を実行したいですよね。そこで、1時間おきにノートブックにアクセスするスクリプトを書きました。(恐ろしくシンプルなコードですが…)Mac環境であればopen
コマンドで開いたURLが自動的にリロードされるので、とても簡単に実行可能です。
自分のノートブックのURL(https://colab.research.google.com/drive〜
)を記載するだけで利用できます。
#!/bin/bash
for i in `seq 0 12`
do
echo "[$i]" ` date '+%y/%m/%d %H:%M:%S'` "connected."
open <<自分のノートブックのURL>>
sleep 3600
done
スクリプトファイル"access_colab.sh"を作成し、初期設定で実行権限がない場合はchmod
で権限の変更をします。
$chmod 755 access_colab.sh
実行すると勝手に1時間おきにページにアクセスしてくれます。
$ ./access_colab.sh
[0] 18/07/21 18:37:00 connected.
[1] 18/07/21 19:37:00 connected.
: :
[12] 18/07/22 06:37:00 connected.
ノートブックの接続がタイムアウトすると、右上のステータス表示が「再接続」に変わります。上記のスクリプトを実行すると、1時間おきにノートブックにアクセスして「接続中」ステータスに変わります。
###注意点
- パソコンは自動スリープしない設定にすること
##方法2:ブラウザのアドオンを利用
90分対策の他の方法として、ブラウザのアドオンで自動リロードしてくれるツールをインストールすれば簡単に回避することができます。私は、自宅の環境ではラズパイが常時電源オンなので、Chromiumブラウザのアドオンを入れて定期的にリロードする設定にして放置することが多いです。
- Chromium、Google Chromeなどで利用可能なアドオン: Auto Refresh
右上のアイコンに、経過時間や色が表示されるのでカウントもわかりやすいです。
###注意点
- メニュー上で「ランタイム」→「ランタイムのタイプを変更」にて「このノートブックを保存する際にコードセルの出力を除外する」にチェックをいれる
- リロードの実行の1回目だけ、再読込み実行時に確認のウィンドウが出るので「再読み込み」ボタンを押す
#まとめ
90分問題には地味に苦しめられていましたが、ちょっとした工夫ですぐ解決することができました。非常に簡素ですが、同じくGoogle Colaboratoryのセッション切れが煩わしいと感じている人にはおすすめです。
ぜひ、お試しあれ!
以上