Google ColabのランタイムをGCEに設定する

調査研究

1.Google ColabのランタイムをGCEに設定するまとめ

・Google ColabのランタイムをGCEのインスタンスに変更する際のメモ
・Google Cloud SDKとDeep Learning VMの組み合わせだと楽に変更できる
・GCEは割り当て可能制限数を超えた部分は申請しないと増やせないので注意

2.Google Colabのランタイムの変更

アイキャッチ画像のクレジットはPhoto by Markus Spiske on Unsplash

自分の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_REGIONS」のエラーが出る場合があります。おそらくは、下記でやっているように単価が安い北米(us-west1)でGPU2枚刺しのインスタンスを立ち上げようとすると同様なエラーになるかもしれませんが、その場合は、Googleに申請すると割り当て可能数を増やしてくれます。ネットを検索するとすぐ増やしてくれる場合もあるようなのですが、私は諸々のヤリトリを求められて一週間くらいかかったので試すだけでしたら日本(asia-northeast1)でやった方が良いと思います。

デプロイ時に以下をメモります。
ゾーン 「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 のドキュメント

タイトルとURLをコピーしました