LearningLog

主に機械学習について学んだことを残していく予定

AWSでdeep learningする上で必要な知識のまとめ2

AWSでp2インスタンスを作成するまでに登場する不明点を解明していく.

ステップ1:Amazonマシンイメージ(AMI)

参考:Amazon EC2 とは - Amazon Elastic Compute Cloud

AMIはOSやアプリケーションなどのソフトウェア構成を記録したテンプレート.以前利用したのは『Deep Learning AMI Ubuntu Version』というAMI.

これにはTensorflowやKerasといったdeep learning用のライブラリやPython3やjupyter notebookを含まれている.

Amazonが提供するAMI以外にも他業者が提供するAMIを利用したり自分で用意することも可能.

 

ステップ 2: インスタンスタイプの選択

インスタンスはアプリケーションを実行できる仮想サーバ.インスタンスタイプは利用するホストコンピュータのハードウェアを決定するもの.

タイプ毎に様々なメモリやストレージ等の組み合わせがあるので,用途に応じて選択する.GPU搭載のインスタンスはP2とG2があるが,deep learningをするなら汎用的に使えるP2一択か.

それと基本的にはインスタンスを終了したらデータは全て失われるが,Amazon S3やEBSに格納すればデータを保存できるらしい.一々学習用のデータを転送なんかしてられないので,これは是非とも利用したいところ.この辺の設定はステップ4:ストレージの追加で出来るようだ.

 

ステップ 6: セキュリティグループの設定

ステップ3~5はスキップして良いが,jupyter notebookを利用する場合はステップ6の設定が必要.セキュリティグループはインスタンストラフィックを制御する仮想ファイアウォールとして機能する,とのことだがよく分からんので調べてみる.

参考:https://n2p.co.jp/blog/tech/serverside/ec2-instance-2/

  • デフォルトでは『SSH接続,TCPプロトコルで22番ポートを使い全てのIPからの接続が可能』になっている.SSH接続は暗号鍵を用いた通信プロトコルインスタンス作成時にキーペアを作成するのはSSH接続に必要だから.
  • 暗号鍵を使っているとはいえ誰でもアクセスできるのは困るのでは,個人利用ならソースを"マイ IP"に変えておけば良さそう.
  • インスタンス上のjupyter notebookにローカルブラウザからアクセスするために,設定されているポートを開放しておく必要がある(デフォルトでは8888,configから変更可能)

後はキーペアを選択すればインスタンスが作成される.

 

おまけ:jupyter notebookの設定

参考:IPython notebookをリモート接続する - Qiita

        http://jupyter-notebook.readthedocs.io/en/latest/config.html

  • ip: デフォルトはlocalhost(生成したインスタンス) → 全てのIP
  • password: デフォルトは未設定 → sha1:<ハッシュ化されたパスワード>
  • open_browser: デフォルトはlocalでブラウザを開く → 開かない
  • port: デフォルトは8888 → ステップ6で指定したポート