1.Google ColabのランタイムをGCEに設定するまとめ
・Google ColabのランタイムをGCEのインスタンスに変更する際のメモ
・Google Cloud SDKとDeep Learning VMの組み合わせだと楽に変更できる
・GCEは割り当て可能制限数を超えた部分は申請しないと増やせないので注意
2.Google Colabのランタイムの変更
アイキャッチ画像のクレジットはPhoto by Markus Spiske on Unsplash
2022年1月追記)本手順をおこなわなくてもGCPのMarketplaceから Colab用にセットアップされたGCE VMを設定し、Deployment Manager 内のリンクから起動できるようになりました。
自分のPCがGPU付きになったらクラウドもColabも使わなくなるのかな、と思っていたのですが、モデルのトレーニングなどで自分のPCが24時間動かしっぱなしになると、手持ち無沙汰になり、結局、Colabもクラウドも併用するようになりました。
その結果、最近、Colabを使いすぎたためか、Colab Proの日本リリースが近いためか、割り当てられるランタイムが以前より確実にスペックダウンしたものになる事が常態化しつつあるので、いざと言うときはColabの背後で動いているランタイムをGCE(Google Compute Engine、要はクラウド上で動かす仮想マシン)に切り替えられるように検証してみました。
敢えてColabにしなくともJupyterでも良いのかな、とも思いますが、Jupyterに慣れている方は同じくGCP(Google Cloud Platform)のAI Platform → AI Hub → ノートブック、から簡単に設定できてしまうので、Jupyterの場合は特に今回のような設定をする必要はありません。
今回行うのは上図の(3)のパターンです。(1)は通常のColab使用時の設定です。(2)は自分の使っているPCが強力なマシーンの場合に設定するローカルランタイム接続です。(3)は本来の位置づけはリモートランタイム接続ですが、gcloudと言うツールを使うと自PCのポートをGCEのポートに繋げてくれるため、ブラウザを自PCのポートに接続させればGCEに直接接続できるのでローカルランタイムとして設定します。(4)がリモートランタイム接続で、gcloudとGCEが影でやってくれる部分を自分で設定する必要があります。
(2)、(3)、(4)については公式サイトのドキュメント「ローカルランタイム」に簡単な説明があるので末尾にリンクを張っておきます。以下は粗いですが、具体的な(3)の手順解説メモになります。
1)マーケットプレイスからDeep Learning VMを検索してデプロイ
Deep Learning VMはColaboratory のローカル バックエンド サポートが事前設定されているらしいので、今回は素直にこれを使います。デプロイの部分は割愛してしまいますが、お好きなスペックのインスタンスを立ち上げてみてください。
初期設定ですと、GPUやCPUを多く割り当てすぎると「Quota ‘XXX’ exceeded. Limit: XX.X in region us-west1.」等々のQuota(割り当て可能数オーバー)のエラーメッセージが出たり、普段と違う地域(Region)でインスタンスを立ち上げようとすると「GPU_ALL_
デプロイ時に以下をメモります。
ゾーン 「us-west1-a」など
プロジェクトID「sage-extension-xxxxxx」など
名前「deeplearning-1-vm」など
デプロイ後でも、左上の「三」からCompute Engineの画面に行き、上部真ん中の「My First~」の部分は自分でつけた名前になっていると思いますが、クリックするとプロジェクトIDがわかります。
2)自分のPCにgoogle cloud SDKをインストール/セットアップ
ここも末尾のCloud SDKのドキュメントを見て設定してください、って事でばりっと割愛します。Windows、Mac、Linuxでやり方が違うので公式を見た方が早いです。
インストール後、公式ドキュメントに沿ってgcloud initで自分のアカウント情報を設定してセットアップを行ってください。
GCE側はDeep Learning VMのイメージを使っているのであれば、外部からのColab接続可能な設定でJupyterが自動起動するので特に設定は不要です。
3)gcloudで下記のコマンドを打ち込む
以下のgcloudコマンドを実行してで自PCのポート8080をGCEのポート8080に繋げて貰います。す。
gcloud compute ssh --project sage-extension-xxxxxxx --zone us-west1-a deeplearning-1-vm -- -L 8080:localhost:8080
ウィンドウが立ち上がるのでログインします。
この時点でちゃんと設定できていれば、自分のブラウザで
http://localhost:8080/lab
に接続すればGCE上のJupyterLabに接続できます。
4)Colabの設定
右上の「接続」の横の「▼」より、ローカルランタイムに接続、を選びます。
ダイアログが出て来るので、内容を確認してそのまま「接続」を押します。
自分が設定したVMに接続出来ます。下記ですとT4を2枚積んだVMに接続しています。お値段と性能の目安は「GCP上で大きなモデルを動かした際のGPUの性能比較」を参考にしてください。
3.Google ColabのランタイムをGCEに設定する関連リンク
1)research.google.com
ローカル ランタイム
2)cloud.google.com
Cloud SDK のドキュメント