【AWS】AWSでGPUコンピューティングする際の環境セットアップ
Usage
アカウント登録
まずはAWSのアカウント登録を行います。
下記ページを参考に、AWSのアカウントを作成してください。
aws.amazon.com
インスタンスの作成
GPUインスタンスの作成を行います。 AWSトップページの左上「サービス」プルダウンをクリックし、コンピューティング->EC2 を選択。
するとEC2ダッシュボード画面に遷移するので、「インスタンスを作成」ボタンをクリック。
インスタンス一覧に「Deep Learning AMI (Ubuntu) Version 12.0」があるので「選択」をクリック。
今回はGPUを使用したいので、「GPUインスタンス」である「p2.xlarge」を選択し、「確認と作成」ボタンをクリックします。
※有料です。料金は下記記載
2018/07/28時点では 0.900 USD/h( 米国東部 (バージニア北部) および米国西部 (オレゴン) の価格)
有料との脅しが入りますが、課金の心意気をもって作成をクリック。
インスタンス作成にあたり、キーペアを作成します。
キー名を入力し「キーペアのダウンロード」ボタンを押します。
今後インスタンスへのSSHログイン等に使用するので、厳重に保管してください。再取得はできないので、紛失時は新たな鍵を生成する必要があります。
キーペアが作成できたら、「インスタンスの作成」をクリック。
するとインスタンスの作成が開始されます。
初回の作成ではインスタンスの作成に失敗するので、http://aws.amazon.com/contact-us/ec2-request/にアクセスし、インスタンス上限を増やしてもらいましょう。「申請理由の説明」欄には、DeepLearningを検証したい旨を書きます。 申請を送信してからおよそ30分くらいで申請が受理されるはずなので、再度インスタンスの作成を行ってみてください。
インスタンス作成ステータス画面が表示され、「インスタンスを表示」ボタンを押した先のページでインスタンスが表示されていればインスタンス作成成功です。
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アドレスはインスタンス一覧のページに載っています。
ログインに成功すると↓のような出力がなされます。
============================================================================= __| __|_ ) _| ( / 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が認識されていることが確認できました!