目的
- 手動でColaboratory上のコードを実行させる
- Colaboratory の制限を回避する
参考
課題
- Colaroboratory には2の制約がある
- 12時間ルール : 新しいインスタンスを起動してから12時間経過
- 90分ルール : ノートブックのセッションが切れてから90分経過
対策
- 以下参考から抜粋(詳しいロジックは記載したサイトを参照)
- Colaboratory内でSeleniumを用いて以下のように対応する
- データ保存・読み込み, ファイル実行を自動で行う
- これまで避けられなかった12時間リセット問題を気にせず, 12時間以上かかるようなプログラムを実行できる
- 実行ファイル自ら, 定期的に自らのページにアクセスする
- 90分セッション切れが起こらない
- ローカルPCでスクリプトを常時起動させる必要がなくなる
手順
- Google Colabratory へアクセスできる User Agentを準備
- UAをgithub に push
- Colaboratory file を準備(FileA, FileB)
- Colaboratory file に設定項目を記入
- Colaboratory file へアクセスし、起動
- log の確認
- 【おまけ】model, data, tf-log のup
Google Colaboratory へアクセスできる User Agentを準備
Colaboratory file を準備(FileA, FileB)
- 参考のサイトから Colaboratory file を自分のドライブ環境へコピーする(FileAとFileB)
- 2つのfile の URLを控えておく ( 3 )
Colaboratory file に設定項目を記入
- github の レポジトリ名 ( 1 )
- (git clone されたときの) UAのpath
- Colaboratory file の URL (FileA, FileB)
- パラメータの修正 (2020/01時点では html の id の値が参考にしていた値と変わっていた)
def click_runall(self):
"""
「すべてのセルを実行」をクリックする関数
"""
select_dropdown = WebDriverWait(self.driver, 20).until(EC.element_to_be_clickable((By.ID,"runtime-menu-button")))
select_dropdown.click()
time.sleep(1)
select_dropdown = WebDriverWait(self.driver, 20).until(EC.element_to_be_clickable((By.ID,":1u")))
select_dropdown.click()
def click_change_runtime(self):
"""
ランタイムのタイプを変更する関数
"""
select_dropdown = WebDriverWait(self.driver, 30).until(EC.element_to_be_clickable((By.ID,"runtime-menu-button")))
select_dropdown.click()
select_dropdown = WebDriverWait(self.driver, 30).until(EC.element_to_be_clickable((By.ID,":25")))
Colaboratory file へアクセスし、起動
log の確認
- うまくいっていれば、log file が githubにpush されている
【おまけ】model, data, tf-log のup
- 基本的にlogはgithubを使って残していく作りになっている
- しかし、github にpush できないものを継続的に使いたい場合は google cloud storage等の cloud storage サービスを利用する
- 対象となるもの
- model
- train data
- result data
- tensorboard 等を利用していたら、tensorflow の log
- タイミング
- タイミングは git clone / git push のタイミングのどちらか
対象 |
up/down |
処理タイミング |
model (pre training するなら) |
download |
git clone |
model (できたもの) |
upload |
git push |
train data |
download |
git clone |
result data |
upload |
git push |
tf log |
upload |
git push |