GCP上で一刻もはやくTensorFlowを使い始めたい！方向けの速習インストールガイド

[祝、東京リージョンオープン](http://googlecloudplatform-japan.blogspot.jp/2016/11/tokyo-region-now-open.html)ということで、それとはあまり関係ないですが、訳あって必要になったTensorFlowが動く環境をとにかくGCP上に構築したい、という方に向けた速習ガイドです。
TensorFlowは開発ペースがけっこう早いため、しばらくするとこの通りでは動かない可能性があります。

## 前提
- GCPのアカウントをすでに持っている
    - クレジットカードの登録とかを終わらせる必要があります
- Python2系の環境で良い
    - Python3系との過渡期なので、本当に2系で良いかは分かりません
- CPU版のTensorFlowで良い
    - こちらは本来的にはうれしくはないです。やっぱりGPUを使うべき！
    - ですが、TensorFlowを早く動くことが大前提で、チュートリアルをちょっと動かす程度なのでOKだとします。

## Step0:gcloudコマンドのインストールと設定（任意）
gcloudコマンドをインストール、設定しておきます。今回はgcloud自体はなくても大丈夫ですが、今後あると色々便利なので設定しておくと良いでしょう。
- [CLOUD SDK](https://cloud.google.com/sdk/)
- [Google Cloud SDKの設定](http://qiita.com/t-yotsu/items/a7391d2fb4c37c4ad284)

インスタンスへのログインはSSHでアクセスします。コンソールからブラウザでSSHできる機能が提供されていますのでそれを使ってもいいし、gcloudコマンド経由でも入れます。もちろん、よく使ってるSSHクライアントでも良いです。

以下、インスタンスにログイン後の作業です。基本的には[Download and Setup](https://www.tensorflow.org/versions/master/get_started/os_setup.html#download-and-setup) に従うだけです。TensorFlowのインストールがいくつか方法がありますが、今回はpipでのインストールとします。

## Step1: pipのインストール

念のためのパッケージの`update`と`upgrade`を実行してから、pipとTensorFlowのビルドに必要なライブラリ一式をインストールします。

```bash:
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install python-pip python-dev
```


## Step2: TensorFlowのインストール
普通に`pip install tensorflow`でもインストールできますが、サイトの情報に従います。色々とコンパイルされるっぽいですが、デフォルトのインスタンスタイプでも十分高速に実行されます。

```bash:
# Python2系かつCPU版の場合はこの環境変数を設定
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.11.0rc2-cp27-none-linux_x86_64.whl
$ sudo pip install --upgrade $TF_BINARY_URL
```

## Step3: gitのインストール
チュートリアルのサンプルコードを取得するためにgitをインストールしてから、[TensorFlowのリポジトリ](https://github.com/tensorflow/tensorflow)をcloneします。

```bash:
$ sudo apt-get install git
$ git clone https://github.com/tensorflow/tensorflow.git
```

## Step4: チュートリアルの実行
- TensorFlowのリポジトリのmasterに入っているチュートリアルは現在Python2系だとエラーが出るっぽいです。
    - 3系で実行すると大丈夫っぽいですが、3系を入れることの方がめんどくさいので、v0.11のブランチに変更します。
- さらに既知の[バグ？](https://github.com/tensorflow/tensorflow/issues/4880)っぽいものがあるため、追加で２つのライブラリもインストールします。
- あとはチュートリアルのコードを実行するだけです。

```bash:
$ sudo pip install pbr funcsigs
$ cd tensorflow
$ git checkout r0.11
# https://www.tensorflow.org/versions/r0.11/tutorials/mnist/beginners/index.html に対応するサンプルコードの実行
$ python tensorflow/examples/tutorials/mnist/mnist_softmax.py
# https://www.tensorflow.org/versions/r0.11/tutorials/mnist/tf/index.html に対応するサンプルコードの実行
$ python tensorflow/examples/tutorials/mnist/fully_connected_feed.py
```

## まとめ
インスタンスにログイン後、一応10回程度コマンドを打てばPython2系のCPU版TensorFlowを使えるようになります。

```bash:
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install python-pip python-dev
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.11.0rc2-cp27-none-linux_x86_64.whl
$ sudo pip install --upgrade $TF_BINARY_URL
$ sudo apt-get install git
$ git clone https://github.com/tensorflow/tensorflow.git
$ sudo pip install pbr funcsigs
$ cd tensorflow
$ git checkout r0.11
$ python tensorflow/examples/tutorials/mnist/mnist_softmax.py
$ python tensorflow/examples/tutorials/mnist/fully_connected_feed.py
```

## 余談
少し前の`fully_connected_feed.py`はマシンがめっちゃ熱くなるような回数ループをぶん回していた記憶がありますが、今はそうでもなさそうです。