Google Colabが気に入って
Google Colabがあまりにもフレッシュな体験だったので使い倒していたのですが、12時間に一度初期化されるのはあまりに大変でした。
12時間おきにまっさらになる仮想マシンのようなものです。ただその仮想マシンは高性能。2vCPUに13GBのメモリー。ハードディスクも50GB(場合による)。GPUがデフォルトでついていて、少なくともTesla K80は使えます。
また、Ubuntuは18.04 LTSです。
素晴らしい・・。のですが、さすがに12時間に一度まっさらにされるのはしんどかった。対応策としては、
・Google Driveをマウントして、永続データを定期的にエクスポートしておく。
・初期化されたら、Google Driveを再マウントして、永続データをインポートする。
とやっていました・・が、やっぱり環境は一度構築したらずっと使いたいものです・・。
Google Cloud Platformへ乗り換える
Google Cloud Platform、通称GCP、Googleのクラウドです。
Google Colabの仮想マシンは結局はこの中にある一時仮想マシンであり、本格的に使いたいならこちらに乗り換えるのが吉だと思います。
ただ、まず慣れるまでは無料運用したい。常用するようになったらお金を支払ってもいいけれど最低限にしたい。
GCPはこのニーズにとてもフィットしたクラウドです。数日トレーニングで自宅のGPUを無停止で廻し続けると電気代もバカになりません。私が取った作戦を共有します。
まず、基本的な考え方として、GCPはアカウント解説後1年間、毎月$300の無料利用枠がつきます。したがって$300以内の利用であれば無料で使い倒せます。今回も$300以内に収めます。
次に、プリエンプティブVMを契約するということです。こちらは連続使用が最大24時間しかできないインスタンスですが、価格がべらぼうに安くなります。
しかもGPU付きのインスタンスも選べます。
私が選んだのは、下記の条件です。
ちなみに上記はアメリカのリージョンで借りました。アメリカじゃないと$300を超えてしまいます。
また、$241.10と言ってもずっと起動した場合の価格ですから、起動しなければ課金されません。使用率が50%だとすればここから半額になります。
また、アメリカのリージョンを契約するのにはもう一つ理由があります。
プリエンプティブVMは、利用するゾーンのリソースに余裕がないと利用中に停止されたり起動できなかったりします。
やっぱりアメリカがいっぱいリソース持ってます。ということでアメリカを選択(アメリカには複数のリージョンがありますが、これは断言しません。ここで言って変に人気が集中されても困るし・・)。
ということで、無事上記を借りて、Google Colabからの乗り換えを果たしています。1年後もガリガリ使うようならまじめに課金するつもりです。やはり使わないと勉強にならないですからね・・。このVM、確かに24時間ごとに自動で止まるのですが、再起動しても永続ディスクにありますから、Google Colabのように再度環境構築しなくても良いです。起動して再開するだけ。やはり人生の時間は貴重なので、勉強とは言え無駄な作業はどんどん減らしていかないとまずいですよね。
参考資料
今回の環境構築にあたって、便利な記事を添付しておきます。
初めに読む
一番初めにお世話になった資料。インスタンス立てるまでに少し苦労したのですが、はじめからこれを読んでおくのがお勧め。
GPUドライバ・CUDAのインストール
GCPがNVIDIAドライバーやCUDAのインストールスクリプトを公開しているのでセットアップが楽でした。
cuDNNのインストール
CUDAのインストールはGCPのスクリプトで十分ですが、cuDNNは手動で実施しなければいけません。上記「cuDNN のインストール」が非常に役に立ちました。
ちなみに、GCPのスクリプト通りインストールするとCUDAは10.0のものが入りますのでこれに対応したcuDNNをインストールしてください。
Google Driveのマウント(CLIベース)
コマンドでGoogle Driveをマウントする方法です。
Google Driveをマウントすると、ファイルの受け渡しがかなり楽です。しかもGCPの素晴らしいところは、Googleのサービス(Youtube、マップ、ドライブなど)に対する通信は無料であるということです。ということはGoogle Driveと通信する限りは通信料を気にする必要が全くないため、上記方法を利用してマウントを行いました。また、Google DriveとVMの間の受け渡しスピードもすごく速いです。
なお、認証については一か月キャッシュされるため、VMを再起動しても認証不要で再マウントできます(便利)。
VMへのSSH接続
機械学習利用のため外部と通信できる必要がない、と言う状況でSSHターミナルに入りたい時にブラウザから入る標準の方法はイマイチでした。
上記のように、gcloudコマンド導入後、
# gcloud compute ssh VM名
なんてやると勝手にputtyが起動してSSHログインできるのでこれがかなり便利。
・・・ということでかなりマニアックな内容でしたが、多分、私が後から思い出すときに使う記事にもなります。自宅で四苦八苦されている方にはぜひ利用をお勧めします。1年間は上記環境なら無料で使えますから。
ちなみに、じゃあクラウドで全部いいのかと言うと私は違う意見で、トレーニングとは関係ないデータのサニタイジングや、モデルを実際に動かすところなどはローカルPCでやった方がやりやすいと思います。特に画像や映像を扱う場合は手元で全部できたほうが便利です。クラウドにデータを運ぶのが大変なので。
また、VRやらゲームやらできますし。
ということで、引き続き高性能デスクトップパソコンのお勧めもしておきます。