colabを使ってモデルを長時間学習させていると、セッションが切断されてしまうことがあります。
無料のcolabでは12時間、proだと最大24時間GPUを利用できますが、最大時間利用する前に切れます。
colabのセッションは対話型に設計されています。
つまり、マウスのクリックやキーを押したといったイベントが発生しないと12時間 or 24時間以下で切断されます。
そのため、長時間のモデルのトレーニングは難しいのですが、いくつかの解決方法があります。
今回は一番簡単な方法を紹介します。
その解決策とは、pythonスクリプトを書いてマウスクリックをエミュレートし、colabのインタラクションを維持するというのものです。
早速やってみましょう。
まずは必要なライブラリをインストールしておきます。
使うライブラリは、pynputです。
これを使うと入力デバイスの制御と監視ができます。今のバージョンではマウスとキーボードしかサポートしていませんが、今回のやりたいことに関しては用件を満たしています。
https://pynput.readthedocs.io/en/latest/
まずはpipを使ってインストールしておきます。
pip install pynput
次に任意のファイルを作成し、下記のコードを打ち込んでおきます。
from pynput.mouse import Controller, Button
import time
mouse = Controller()
while True:
mouse.click(Button.left, 1)
print('clicked')
time.sleep(5)
このスクリプトを実行すると、5秒毎に’clicked’が表示されることが確認できます。
実際の使い方を見てみます。スクリプトを起動している状態で、colabの画面に戻りモデルの学習を行なっていると仮定します。
重要なのは学習を行なっているセルの下に新規でセルを作り、そこにフォーカスが当たっている状態にすることです。|が点滅していれば大丈夫です。
これで、セッションが途中で切れることはありません。
モデルの学習中に外出しても問題ありません。
ただし、12時間or24時間でランタイムがリセットされてしまう回避方法は根本的にはないので、ドライブ等に定期的にモデルを保存するようにしましょう。