0.概要
- Signateコンペに参加するにあたって、GPU使って機械学習できる環境をできるだけ楽に構築したかった
- 参考にさせていただいたサイトをまとめておく
1.ColabでSignate APIを使う
手順
-
SIGNATEのアカウント設定画面で "API Token" の "作成" をクリック
-
"新規作成" をクリックしてAPI Token(signate.json)を取得
-
ダウンロードしたsignate.jsonをGoogle Driveの
マイドライブ/.signate
にアップロード -
signateConnect.py
をGoogle Driveのマイドライブ/Colab notebooks/modules
に配置signateConnect.pyfrom googleapiclient.discovery import build import io, os from googleapiclient.http import MediaIoBaseDownload from google.colab import auth def connect(): auth.authenticate_user() drive_service = build('drive', 'v3') results = drive_service.files().list( q="name = 'signate.json'", fields="files(id)").execute() signate_api_key = results.get('files', []) filename = "/root/.signate/signate.json" os.makedirs(os.path.dirname(filename), exist_ok=True) request = drive_service.files().get_media(fileId=signate_api_key[0]['id']) fh = io.FileIO(filename, 'wb') downloader = MediaIoBaseDownload(fh, request) done = False while done is False: status, done = downloader.next_chunk() print("Download %d%%." % int(status.progress() * 100)) os.chmod(filename, 600) if __name__ is "__main__": connect()
-
Google Colabで読み込む
from google.colab import drive import sys drive.mount('/content/drive') sys.path.append('/content/drive/MyDrive/Colab Notebooks/modules') import signateConnect !pip install signate signateConnect.connect()
-
Colabの設定としては、ランタイムをGPUにするのと、その他から猫モードにするのがすき
2.Colabの90分制限対策
-
Google Colaboratoryの90分セッション切れ対策【自動接続】
- スクリプト方式では、メインブラウザをfirefoxにしている場合は1時間ごとブラウザで新しくタブが開かれました
- AutoRefreshアドオンを使用する方法はマルウェア報告があるという噂もあり、非推奨です
手順(Mac向け)
-
スクリプトを作成
zombie-nize_colab.sh#!/bin/bash for i in `seq 0 12` do echo "[$i]" `date '+%y/%m/%d %H:%M:%S'` "connected." open (Colab NotebookのURL) sleep 3600 done
-
実行権限付与
terminal$ chmod 744 zombie-nize_colab.sh
-
ターミナルから叩いておく
terminal$ ./zombie-nize_colab.sh
3.ColabとVSCodeを連携する
-
Google ColabとVSCodeを用いた分析環境運用方法 〜kaggle Tipsを添えて〜
- ローカルのVSCodeからremote-sshで接続する
- Google Colab をSSH と VS Code で使う
注意
- Colab周りはGoogleさんが推奨している使用方法ではないことを多くやっているので、急に使えなくなるリスクなどありそう
- 使用する際は自己責任でお願いします