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日程度です。
source activate を忘れない
インスタンスの利用申請が通り、SSHクライアントでインスタンスに接続できたとします。
Deep Learning AMIをAWSインスタンスで利用するには、source activate <環境名>
コマンドを実行する必要があります。これを忘れると、tensorflowなどデフォルトでAMIに入っているライブラリが利用できません。また、pipなどでtensorflowを入れてしまうと、GPU付きのインスタンスを利用しているにもかかわらず、CPUのみで演算をしてしまい、非常にもったいないです。
<環境名>の一覧はこちらに記載されています。
私の場合は、TensorFlow(+Keras2) with Python3を使いたいので、 source activate tensorflow_p36
となります。これは、インスタンスを起動する度に必要です。