Cosnomi

プログラミングをする医学生。物を作ること、自動化すること、今まで知らなかったことを知ることが好き。TypeScript書いたり、Pythonで機械学習したりなど。

Twitter / GitHub / Keybase
TOP >

AWSでディープラーニングの環境構築をした

Nov. 18, 2018機械学習AWS

GPUを使えるクラウドとしては、AWS(Amazon), GCP(Google), Azure(Microsoft)などがあります。今回は、AWS上でのディープラーニング環境構築のポイントをご紹介します。

環境構築は Deep Learning AMIを用いる

AWSの用意しているDeep Learning AMIを使えば、AWSでディープラーニング環境を構築するのは非常に簡単です。AMI自体の利用料金は無料で、かかるのはAWSのインスタンス利用料金のみです。

このAMIにはTensorFlowやKerasなどが最初から入っており、GPUを利用するためのCUDAも設定されているため、実行したいスクリプトが既にあれば1分とかからずに学習を開始できます。TensorFlow以外にも、CaffeやTheanoなども使えます。

おすすめは p2 インスタンス

AWSでは多くの種類のインスタンスがありますが、おすすめはP2インスタンスです。Deep Learning AMIでは、推奨GPUインスタンスとしてG3, P2, P3挙げられています。P3は他の2つより高性能ですが料金は高く、初めてAWSを使うには少しおすすめできません。

では、G3とP2の違いは何でしょうか。それぞれの説明文を見てみましょう。

まず、G3インスタンスの説明です。

Amazon EC2 G3 instances are the latest generation of Amazon EC2 GPU graphics instances that deliver a powerful combination of CPU, host memory, and GPU capacity. G3 instances are ideal for graphics-intensive applications such as 3D visualizations,

(拙訳)

Amazon EC2 G3 インスタンスは EC2 GPU グラフィックインスタンスの最新世代で、CPU, ホストメモリ、GPU の性能を強力に連携させます。G3 インスタンスはグラフィックを多用するアプリケーションに理想的です。例えば 3D の視覚化, …

一方、P2の説明は次のようになっています。

Amazon EC2 P2 Instances are powerful, scalable instances that provide GPU-based parallel compute capabilities. For customers with graphics requirements, see G2 instancesfor more information.

(拙訳)

Amazon EC2 P2 インスタンスは強力でスケーラブルなインスタンスで、GPU を利用した並列計算が可能です。グラフィック性能が必要なユーザーは、G2 インスタンスのページを御覧ください。

よって、AWS側の想定用途としては次のようになるでしょう。

  • G3: 3Dなどのグラフィック
  • P2: GPUを利用した計算

しかしながら、New G3 Instances in AWS – Worth it for Machine Learning? によるとRNNではG3のほうが良いようです

最初はシングル GPU で

P2、G3、P3はいずれもGPUの数が異なる複数のバージョンがあります。P2の場合、p2.xlargeではシングルGPU、p2.8xlargeでは8台のGPU、p2.16xlargeでは16台のGPUを利用可能です。 料金は単純にGPUの台数分、n倍されて増えます。

私はKerasを使うことが多いのですが、マルチGPUを利用するときはweightsやmodelの保存で結構テクニックが必要です。また、GPU以外の箇所がボトルネックになっている場合はGPUを増やしたところで学習速度がそこまで改善せず、コスパが悪化する可能性もあります。以上のことから、実験段階のうちはシングルGPU(hoge.xlarge)が良いかと思います。

インスタンスの利用申請が必要

AWSでP2やP3インスタンスを利用するには利用申請が必要です。(多分G3もです)AWS登録直後にP2インスタンスなどをlaunchしようとすると、下の画像のようなエラーが表示されます。

デフォルトでこれらのインスタンスの台数制限は0になっており、これを増やすにはサポートに連絡する必要があります。簡単なフォームを埋めるだけです。目的には「ディープラーニングで使用するので、GPUが使えるインスタンスを利用したい」などと書けばいいと思います。人間が審査しているようで実際に利用を開始できるのは申請後3~4日程度です。

まだ他のインスタンス(p2.xlargeなど)の利用実績がないのに高額なインスタンス(p3.16xlargeなど)を申請すると断られます img 5bf18866a4aa0

source activate を忘れない

インスタンスの利用申請が通り、SSHクライアントでインスタンスに接続できたとします。

Deep Learning AMIをAWSインスタンスで利用するには、source activate <環境名>コマンドを実行する必要があります。これを忘れると、tensorflowなどデフォルトでAMIに入っているライブラリが利用できません。また、pipなどでtensorflowを入れてしまうと、GPU付きのインスタンスを利用しているにもかかわらず、CPUのみで演算をしてしまい、非常にもったいないです。

<環境名>の一覧はこちらに記載されています。

私の場合は、TensorFlow(+Keras2) with Python3を使いたいので、 source activate tensorflow_p36 となります。これは、インスタンスを起動する度に必要です。


最後まで読んでいただきありがとうございます。コメントフォームは設置していません。訂正・意見・感想などはTwitter(@cosnomi)などへお願いします。
記事一覧へ