Itsukaraの日記

最新IT技術を勉強・実践中。最近はDeep Learningに注力。

Google Cloud PlatformでのA3C実験環境構築スクリプト

Deep Learningの実験にクラウドは欠かせないと感じており、Google Cloud Platform (GCP)Amazon Web Servicesの無料試用枠を活用しています。今後は、Microsoft AzureIBM Softlayerの無料試用枠も活用する予定です。

実験にあたっては、色々なクラウドで同じ環境を構築する必要があるので、構築用のスクリプトを作成しました。下記Githubgcp-installというディレクトリに置きましたのでご活用ください。GCP向けに作ったスクリプトですが、同じOS(Ubuntu14.04)ならば使えるはずです。

github.com

使い方

使い方は、ログ(install-and-run.log)を見て頂ければ解ると思います。

スクリプトが4つありますので、順番に実行するだけです。途中で入力を求められた場合は、改行のみか、「y」or「yes」+改行でOKです。ただ、AnacondaのインストールでLicenseを表示して「--More--」と出た時は「q」を入力してください。

なお、GCPの導入方法は下記をご覧ください。色々機能がありますが、仮想マシンに相当するCompute Engineが使えるようになれば十分です。
qiita.com

GCPへのログイン

GCPへのログインはブラウザからも可能です。しかし、ファイル転送なども必要になるので、Linuxではsshやscp、WindowsではTeratermのアクセス環境を整えておくと便利です。

私は主にUbuntuからGCPを使っていますが、仮想マシンIPアドレスは停止するたびに変わるため、sshやscpで頻繁にidentity_fileを指定する必要があります。また、id名やホストのIPアドレスを書くのも面倒なので、ちょっとしたスクリプトを書いて使ってます。

WindowsからGCPを使う場合はTeratermを使っています。Teratermは、データ転送がGUIから簡単にできるので便利です。また、Teraterm Menuでアクセス先を簡単に管理できるのも便利です。

nohupでの実行

GCPにずっと繋いでいるのも面倒なので、途中で端末の接続を切りたいと思いますが、端末の接続を切ると、実行していたプログラムは終了されてしまいます。しかし、nohupでコマンドを起動すれば、端末の接続が切れても、プログラムの実行は継続します。例えば下記のようになります。

nohup python a3c.py &> log &

プログラムを途中で止めるには、"ps -aux | grep python" で上記のPIDを確認し、"kill -2 PID"で、Control-Cに相当する割り込みを送れば、データをSAVEしたうえで、実行が終了します。

追記(2016/8/25)

上記で書き忘れましたが、同じクラウド上では、一度環境を作ってしまえば、その環境のスナップショットを取り、スナップショットから新しいインスタンスを生成すれば、同じ環境をいくつでも作れます。