忙しい人向け
GoogleColabがreCAPTCHAを搭載したぽいのでこの記事の手法は完璧ではなくなりました。
・Google Colabの90分問題をどうにかするよ
・自動リロードはできないからコンソールからJavascriptで直接"再接続"を押すよ
function ClickConnect(){
console.log("更新")
document.querySelector("#top-toolbar > colab-connect-button").shadowRoot.querySelector("#connect").click()
document.querySelector("#top-toolbar > colab-connect-button").shadowRoot.querySelector("#connect").click()
}
setInterval(ClickConnect,3600*1000)
Google Colabの制限とは
google colaboratory、通称Google Colabでは無料でGPUが使えるなどの豊富なメリットがありますが、その代償としていくつかの制限が設けられてます。GPUのリソース制限、未操作90分による接続切れ、12時間の連続運転による接続切れ。
今回はそのうちの未操作90分による接続切れ、いわゆる90分問題をどうにかします
過去にできたこと
「自動リロードによるページの再読み込み→自動接続」による接続切れ回避を前まではできるようになってましたが、現在は変更の破棄をするかどうか聞かれるダイアログにより行えなくなりました。
ちなみに同じようにリロードするとでてくるダイアログにあるチェックボックスにチェックを入れても無意味なようです。
ローカル上のスクリプト経由による自動リロードについては未検証です。
今回やること
なので今回は別の手法としてページ上でなにかしらの作業を定期的にさせるようなスクリプトを置きます。
実行中のセルに影響が出なければ問題はないはずですが、万が一ネットワークの不調などで接続が切れてしまった時のために右上の再接続ボタンを押すようにします。
コードは上記の通り。あとはブラウザのコンソールを立ち上げ(やり方はブラウザごとに違うので各自検索をお願いします)、コードを入力すれば完了です。
60分間に一回ボタンを押し、コンソール上のログに”更新”と出力します。
ちなみに、普段は再接続ではなく接続済みとなってるはずなので問題が起きなければアクティブなセッションの一覧が定期的に表示されるはずです。
自動リロードが通らない原因
どうやらセルのログが更新されるたびにページに変更が発生するようで、それをブラウザ側がありがた迷惑に確認してくるのが原因のようです。
参考元
https://qiita.com/enmaru/items/2770df602dd7778d4ce6
https://qiita.com/Gimina_Graph/items/4bdf3e3c3658eeb0eba8
https://flat-kids.net/2020/07/28/google-colab-%E3%82%BB%E3%83%83%E3%82%B7%E3%83%A7%E3%83%B3%E5%88%87%E3%82%8C%E3%82%92%E9%98%B2%E6%AD%A2%E3%81%99%E3%82%8B/
追記
冒頭のコードを変更しました。
変更点
・引っ張ってくる要素をGoogleColab側に合わせて変更しました
・二回押すことで画面上はほとんど変化がないようにしました(上手くいってるかわかりません)