Google Cloud Plathome上にTensorflowを展開する

Tensorflowを使いはじめて、はや4ヶ月。そろそろ手元のMacbookではマシンパワーがおぼつかないケースが出てきました。

既存のAWSDebianに入れようかとも考えましたが、せっかくなので、Google Cloud Plathomeを使うことにしました。

申し込みからコードの実行まで1.5時間ぐらいでした。以下、その記録です。

1. 申し込む

cloud.google.comから申し込みます。

cloud.google.com

既存のGoogleアカウントでログインしましたが、再度住所等の情報を入力しました。60日、$300分の無料クレジットがついてきます。クレジットカードの入力が必要です。

 

2. 利用する

チュートリアルが表示されます。ゲーミフィケーションのような流れです。pythonによるHello, Worldチュートリアルがあったので、それに従ってみたところ、Webアプリケーションができてしまいました。App Engineというアプリケーション用のクラウドプラットホームを使っていたようです。Herokuに似ています。Webアプリケーションを構築するのであれば魅力的ですが、今回は違うようです。

 

少し調べるとGoogle Prediction APIというものがありましたが、Tensorflowではないようです。また、Cloud Machine LearningというJupyter Notebookが利用できるものもありましたが、Limited Previewでした。GoogleのサイトでJupyter Notebookを用いたデモを見たことがあり、こちらも興味深いのですが、今回は対話形式は特に必要としておらず、cronなどによるスケジュールなどをしたかったので、こちらの利用も見送りました。

 

結局、AWSのEC2のような、VMを作るタイプのCompute Engineというものを使うことにしました。 割とスタンダードなクラウド環境です。CPUとメモリのサイズをカスタマイズできるので、CPU=8コア , メモリ=7.2GBを選択しました。メモリはこんなに必要ないのですが、どうやらこれが最小サイズのようです。時代ですね。

 

3. ログイン

Compute Engine上で作成したインスタンスへのアクセスはブラウザベースで行えます。SSHのアイコンをクリックすると、ブラウザ上にエミュレートされたターミナルが立ち上がります。AWSのkey pairと比べると簡単にアクセスできる一方で、益々googleアカウントの重要性が増すなと思いました。

 

Chromeを使っている場合(私がそうだったのですが)、ターミナル・プラグインのインストールを勧められます。これを利用することで、ほぼターミナルと遜色のない環境になります。

 

4.Tensorflowをインストールする

 ここから先は、おなじみの作業です。私はanacondaを使っているので、

www.continuum.io

Anacondaをダウンロードし、インストールします。

user$ wget http://repo.continuum.io/archive/Anaconda3-4.1.1-Linux-x86_64.sh
user$ chmod u+x Anaconda3-4.1.1-Linux-x86_64.sh
user$ ./Anaconda3-4.1.1-Linux-x86_64.sh

Cloud Plathomeで用意されたdebianはコンパクトなものでしたので、インストール途中でbzip2がないと警告を受けました。apt-get update、apt-get install bzip2したのち、再度anacondaを入れました。

root# apt-get update 
root# apt-get install bzip2

その後、tensorflowを以下を参考に入れます。

Download and Setup

といっても今回は環境切り分けを特にしないので、pip install --upgrade でおしまいです。 

user$ touch 

~/anaconda3/lib/python3.5/site-packages/easy-install.pth

user$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.9.0-cp35-cp35m-linux_x86_64.whl

user$ pip install --upgrade $TF_BINARY_URL

5. 実行

まずは単純にpythonのコードを実行するだけをしました。実行中にCPUの使用率を見ると、該当するプロセスの利用率がおおよそ230%と3コアしか利用できていませんでした。この辺りの指定の仕方は、もう少し調べようと思います。今回は、学習パラメータを複数持たせた結果を知りたかったので、4つのプロセスを同時に走らせました。

6. その他

ずうっとマシンリソースを使い続けるわけではないので、動的に仮想マシンを制御することになります。少し調べたところ、gcloudというツールで制御できるようです。

更に、プリエンプティブル VMという仮想マシンを利用することで、よりリーズナブルに利用できそうです。

cloud.google.com