DeepLearning ハンズオン環境構築 @ MaruLabo × JAWS-UG

# この資料で書いていること

ディープラーニング・ハンズオン [@MaruLabo × JAWS-UG AI](https://jawsug-ai.connpass.com/event/46920/) で利用する資料です。


# ハンズオン環境

* Python2 系 GPU 版 TensorFlow
* AWS の設定
 - AWS 公式の Deep Learning AMI を利用
 - GPU x 1 のインスタンス（使えない方は CPU のみサーバ）
 - ポートは TensorBoard に 6006、とデモアプリに 80 を開放


# 1. AWS マネジメントコンソールでの操作


## 1.1 マネジメントコンソールにログイン

https://console.aws.amazon.com/ec2/v2/home?region=us-east-1#Instances

* 今回のハンズオンは無料枠の範囲ではないインスタンスタイプを利用します
* クーポンを利用する際は該当のアカウントであることを確認しましょう


## 1.2 マーケットプレイスで AMI 指定

https://aws.amazon.com/marketplace/pp/B01M0AXXQB

* AWS 公式の深層学習用 AMI
* `continue` を押しましょう

![marketplace.png](https://qiita-image-store.s3.amazonaws.com/0/66457/de023242-e86d-52f8-b7c6-d83d0566c8a0.png)


## 1.3 EC2 コンソールの起動

* 今回はポートなどを調整したいので `Manual Launch` を選択
* US East (N. Virginia) の `Launch with EC2 Console` を押します

![launch.png](https://qiita-image-store.s3.amazonaws.com/0/66457/ab6690a7-8c6e-c66e-dd16-bc6f11b99343.png)


## 1.3 GPU インスタンスの指定

*  `g2.2xlarge` を選択します
*  **GPU 起動を事前に申請できなかった方**は `c4.4xlarge` を
*  `次の手順: インスタンスの詳細を設定` に進みましょう

![gpu.png](https://qiita-image-store.s3.amazonaws.com/0/66457/2afd781a-64bf-a774-db39-5d5d71a98a97.png)


## 1.4 パブリック IP などの確認

* **自動割り当てパブリック IP** が `有効` であることを確認
* EC2 に慣れている方は `スポット価格の設定` もぜひどうぞ
* `次の手順: ストレージの追加` に進みましょう

![type.png](https://qiita-image-store.s3.amazonaws.com/0/66457/b68ba320-9be0-cfd8-9767-cc07f1c0c44c.png)


## 1.5 公開ポートの設定

* `ストレージ` と `タグ` の設定はそのまま次の手順へ
* `ルールの追加` から、**80 番**と **6006 番**ポートを追加
* `確認と作成` を押します

![sg.png](https://qiita-image-store.s3.amazonaws.com/0/66457/cede0c58-5695-4c02-1259-75f48cd04677.png)


## 1.6 起動インスタンスの確認

* Deep Learning AMI
* g2.2xlarge（または c4.4xlarge）
* 22 / 80 / 6006 番ポートの解放
* `作成` を押します

![confirm.png](https://qiita-image-store.s3.amazonaws.com/0/66457/c738ff33-4d95-5e88-28f7-386aec20099e.png)


## 1.7 SSH 鍵のダウンロード

* `新しいキーペアの作成` を選択します
* 適当な名前をつけて `キーペアのダウンロード` を押しましょう
* `インスタンスの作成` を押します

![create.png](https://qiita-image-store.s3.amazonaws.com/0/66457/fa7fdd66-be0e-7afd-4283-113096e6406e.png)


# 2. TensorFlow 動作確認


## 2.1 サーバのパブリック IP の確認

起動したインスタンスを選択し、パプリック IP アドレスを確認します。
https://console.aws.amazon.com/ec2/v2/home?region=us-east-1#Instances

![public-ip.png](https://qiita-image-store.s3.amazonaws.com/0/66457/a611417f-a8a2-d666-72a3-43b0cf5f6d41.png)


## 2.2 サーバへ SSH 接続

* Mac ならターミナル、Windows なら TeraTerm などを起動
* ダウンロードした pem を使って SSH ログイン
* 不慣れな方は [こちら](http://dev.classmethod.jp/cloud/aws/aws-beginner-ec2-ssh/) をご覧ください..

```sh:例
$ chmod 400 keypair.pem
$ ssh -i keypair.pem ec2-user@<ec2.public.ip.address>
```


## 2.3 GPU の確認

* （GPU でない方は飛ばしてください）
* Deep Learning AMI はなんと NVIDIA ドライバもインストール済！
* 以下のコマンドで GPU の状況を確認してみましょう

```sh
$ nvidia-smi

Thu Dec 29 11:44:57 2016       
+------------------------------------------------------+                       
| NVIDIA-SMI 352.99     Driver Version: 352.99         |                       
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GRID K520           On   | 0000:00:03.0     Off |                  N/A |
| N/A   32C    P8    17W / 125W |     11MiB /  4095MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+
```


## 2.4 TensorFlow の動作確認

TensorFlow も既にインストールされています。

```sh
# 確認用 Python スクリプトの取得
git clone -b r0.11 --depth 1 https://github.com/tensorflow/tensorflow.git
cd tensorflow/tensorflow/examples/tutorials/mnist/

# TensorFlow バージョン確認 (応答まで 1 分程度かかります）
python -c 'import tensorflow as tf; print(tf.__version__)'

# MNIST (softmax 版) の動作確認
python mnist_softmax.py

# MNIST (DNN 版) の動作確認
python fully_connected_feed.py
```




# 3. TensorFlow 実習

続きはこちら

http://qiita.com/ornew/items/acb2d51b6d6e228cbbd0