Works by

Ren's blog

@rennnosuke_rk 技術ブログです

【AWS】AWSでGPUコンピューティングする際の環境セットアップ

Usage

アカウント登録

まずはAWSのアカウント登録を行います。
下記ページを参考に、AWSのアカウントを作成してください。 aws.amazon.com

インスタンスの作成

GPUインスタンスの作成を行います。 AWSトップページの左上「サービス」プルダウンをクリックし、コンピューティング->EC2 を選択。

f:id:rennnosukesann:20180723090045p:plain

f:id:rennnosukesann:20180723090049p:plain

するとEC2ダッシュボード画面に遷移するので、「インスタンスを作成」ボタンをクリック。

f:id:rennnosukesann:20180728003342p:plain

インスタンス一覧に「Deep Learning AMI (Ubuntu) Version 12.0」があるので「選択」をクリック。

f:id:rennnosukesann:20180728003514p:plain

今回はGPUを使用したいので、「GPUインスタンス」である「p2.xlarge」を選択し、「確認と作成」ボタンをクリックします。

f:id:rennnosukesann:20180728003710p:plain

※有料です。料金は下記記載
2018/07/28時点では 0.900 USD/h( 米国東部 (バージニア北部) および米国西部 (オレゴン) の価格)

aws.amazon.com

有料との脅しが入りますが、課金の心意気をもって作成をクリック。

f:id:rennnosukesann:20180728004034p:plain

インスタンス作成にあたり、キーペアを作成します。
キー名を入力し「キーペアのダウンロード」ボタンを押します。
今後インスタンスへのSSHログイン等に使用するので、厳重に保管してください。再取得はできないので、紛失時は新たな鍵を生成する必要があります。

キーペアが作成できたら、「インスタンスの作成」をクリック。

f:id:rennnosukesann:20180728004400p:plain

するとインスタンスの作成が開始されます。

初回の作成ではインスタンスの作成に失敗するので、http://aws.amazon.com/contact-us/ec2-request/にアクセスし、インスタンス上限を増やしてもらいましょう。「申請理由の説明」欄には、DeepLearningを検証したい旨を書きます。 申請を送信してからおよそ30分くらいで申請が受理されるはずなので、再度インスタンスの作成を行ってみてください。

f:id:rennnosukesann:20180728004801p:plain

f:id:rennnosukesann:20180728005230p:plain

インスタンス作成ステータス画面が表示され、「インスタンスを表示」ボタンを押した先のページでインスタンスが表示されていればインスタンス作成成功です。

f:id:rennnosukesann:20180728005811j:plain

f:id:rennnosukesann:20180728005631p:plain

SSHログイン

次は立ち上げたインスタンス内の環境にログインします。

$ ssh -i [key_pair_path] [user_name]@[パブリック DNS or IPv4 パブリック IP]

The authenticity of host '[パブリックDNS(IPv4 パブリック IP)]' can't be established.
ECDSA key fingerprint is SHA256:[SHA256ハッシュ値]
Are you sure you want to continue connecting (yes/no)? yes

[key_pair_path]には先程ダウンロードした鍵ファイルへのパスを、
[user_name]には今回ログインするユーザ(ubuntu)を、
[パブリック DNS or IPv4 パブリック IP]にはインスタンスのパブリックDNS、またはIPv4アドレスを入力してください。

ちなみにDNSドメインIPv4アドレスはインスタンス一覧のページに載っています。

f:id:rennnosukesann:20180728010702j:plain

ログインに成功すると↓のような出力がなされます。

=============================================================================
       __|  __|_  )
       _|  (     /   Deep Learning AMI (Ubuntu) Version 12.0
      ___|\___|___|
=============================================================================

Welcome to Ubuntu 16.04.4 LTS (GNU/Linux 4.4.0-1062-aws x86_64v)...

tensorflow環境をセットアップ

今回使用するインスタンスにはすでに様々な仮想環境が用意されています。

Please use one of the following commands to start the required environment with the framework of your choice:
for MXNet(+Keras2) with Python3 (CUDA 9.0 and Intel MKL-DNN) _______________________________ source activate mxnet_p36
for MXNet(+Keras2) with Python2 (CUDA 9.0 and Intel MKL-DNN) _______________________________ source activate mxnet_p27
for TensorFlow(+Keras2) with Python3 (CUDA 9.0 and Intel MKL-DNN) _____________________ source activate tensorflow_p36
for TensorFlow(+Keras2) with Python2 (CUDA 9.0 and Intel MKL-DNN) _____________________ source activate tensorflow_p27
for Theano(+Keras2) with Python3 (CUDA 9.0) _______________________________________________ source activate theano_p36
for Theano(+Keras2) with Python2 (CUDA 9.0) _______________________________________________ source activate theano_p27
for PyTorch with Python3 (CUDA 9.0 and Intel MKL) ________________________________________ source activate pytorch_p36
for PyTorch with Python2 (CUDA 9.0 and Intel MKL) ________________________________________ source activate pytorch_p27
for CNTK(+Keras2) with Python3 (CUDA 9.0 and Intel MKL-DNN) _________________________________ source activate cntk_p36
for CNTK(+Keras2) with Python2 (CUDA 9.0 and Intel MKL-DNN) _________________________________ source activate cntk_p27
for Caffe2 with Python2 (CUDA 9.0) ________________________________________________________ source activate caffe2_p27
for Caffe with Python2 (CUDA 8.0) __________________________________________________________ source activate caffe_p27
for Caffe with Python3 (CUDA 8.0) __________________________________________________________ source activate caffe_p35
for Chainer with Python2 (CUDA 9.0 and Intel iDeep) ______________________________________ source activate chainer_p27
for Chainer with Python3 (CUDA 9.0 and Intel iDeep) ______________________________________ source activate chainer_p36
for base Python2 (CUDA 9.0) __________________________________________________________________ source activate python2
for base Python3 (CUDA 9.0) __________________________________________________________________ source activate python3

Tensorflow(GPU)用仮想環境もあるので、ぜひ使わせてもらいましょう。
下記コマンドを打つと仮想環境に入ります。

$ source activate tensorflow_p36

pythonを起動してtensorflow上でGPUが使用できるか確認してみましょう。

$ python
Python 3.6.6 |Anaconda, Inc.| (default, Jun 28 2018, 17:14:51) 
[GCC 7.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow
/home/ubuntu/anaconda3/envs/tensorflow_p36/lib/python3.6/site-packages/h5py/__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.
  from ._conv import register_converters as _register_converters
>>> from tensorflow.python.client import device_lib
>>> device_lib.list_local_devices()
[name: "/device:CPU:0"
device_type: "CPU"
memory_limit: 268435456
locality {
}
incarnation: 7836901512070260373
, name: "/device:GPU:0"
device_type: "GPU"
memory_limit: 11285538407
locality {
  bus_id: 1
  links {
  }
}
incarnation: 3647875569071979833
physical_device_desc: "device: 0, name: Tesla K80, pci bus id: 0000:00:1e.0, compute capability: 3.7"
]
>>> 

ちゃんとTensorflowにGPUが認識されていることが確認できました!

参考

aws.amazon.com

qiita.com

thr3a.hatenablog.com