Deep Learning AMIをCPUインスタンスで使ってみた

こんにちは。hacknoteのr.katoです。

前回、Deep Learning AMIを使ってみた(失敗)でt2.microを使ってみたところ
source activateの時にメモリ不足やCPUクレジット不足が原因でうまくいかなかったので、今回は推奨環境のc4.largeを使ってmnistをしました。

やったこと

推奨環境(CPU)でDeep Learning AMI(DLAMI)を使ってkerasサンプルコードのmnistを実行する。

インスタンス情報

  • c4.large
  • Deep Learning AMI (Ubuntu 18.04) Version 26.0 ami-07729b5941107618c
  • python 3.6.5 anaconda
  • tensorflow 2.0.0
  • keras 2.3.0
  • ボリュームタイプ standard 100GB

実際に実行したサンプルコード

下記のkerasが提供しているサンプルコードに実行時間を出力するコードを加えたものを実行しました。

https://github.com/keras-team/keras/blob/master/examples/mnist_cnn.py

実際の様子

login

前回の記事で紹介しましたが、sshでログインした際には、次の画像のようにDLAMIのAnacondaに設定してある仮想環境のリストと、その環境のacvtivateのコマンドが表示されるのでかなり楽です。

Anacondaの仮想環境をactivateする

今回はtensorflow2がバックエンドで動くkeras2の環境を使いたかったので、

source activate tensorflow2_p36 を実行しました。

体感だと3分程度ですんなりとactivateされました。

その時の出力も貼っておきます。
ただちょっと長いので折りたたんでおきますので気になる方はクリックしてください。

サンプルコード mnist_cnn.pyの実行

コードをこちらのページからダウンロードしてきて冒頭で述べたように変更し、実行しました。

このサンプルコードはmnistデータベースという分類問題によく使われる手書き文字を、CNNという畳込み計算とpooling計算とニューラルネットワークを組み合わせたもので分類するものです。

実行結果を折りたたんで貼っておきます。

Gets to 99.25% test accuracy after 12 epochs とサンプルコードにあるとおり、だいたい同じ結果がでました。

そして、試しにライブラリのimportの後からプログラム終了までの時間をiMac (21.5-inch, Late 2015)との比較もしたところ…

Maschinerun time[sec]
iMac (21.5-inch, Late 2015)712.4355142116547
c4.large1102.43935227394

というc4.largeのほうが実行速度が遅いという結果に…

この様に実行速度に差が出た理由としては、単純にCPUの苦手なCNNをさせたことにより、CPUのスペック差が出たためと考えられる。

おわりに

今回、初めてきちんとDeepLearningAMIを使ったが、いつもどおりの方法でEC2インスタンスを建てて、その上で自分に必要な環境をactivateするだけで機械学習の環境構築が済んでしまうため、非常に楽でした。

自分でGPUの型番に合わせて、CUDAなどをインストールして設定するのはなかなかに骨なので。

気をつける点があるとしたら、仮想環境をactivateした際、インスタンスへの最適化をしながらライブラリ等がインストールされるので、その間は待つ必要があることです。