AMIをGPUインスタンスで使ってみたツイートシェアはてなこんにちは。hacknoteのr.katoです。前回は、CPUインスタンスを使ってCNNによるmnistの分類をしました。機械学習、CNNと言ったらGPUインスタンスでしょっ!ということで、今回はGPUインスタンスでCNNによるmnistの分類をしていきます。そもそもなぜGPU?CNNというニューラルネットワークは畳み込みやpoolingといった行列計算をエゲツない数を同時にこなす必要のあるものです。パソコンの頭脳と言われるCPUは行列計算が不得意です。そこで、行列計算が得意で高速な学習と識別が可能なGPUが使われるようになりました。AMI(DLAMI)を使ってkerasサンプルコードのmnistを実行する。100GB実際に実行したサンプルコード下記のkerasが提供しているサンプルコードに実行時間を出力するコードを加えました。何も指定しないとプログラム実行時にtensorflowとkerasでGPUのメモリを最初に専有してしまい、速度低下が発生してしまうため、必要になったらGPUのメモリを使用するようにするコードを加えて実行しました。ちなみに、CPUインスタンスの時と同じコードを実行したら、515secかかりました。https://github.com/keras-team/keras/blob/master/examples/mnist_cnn.py実際の様子login同じAMIを使っているので、sshでログインしたときの様子は前々回と前回と完全に同じです。一瞬でactivateされました。CPUインスタンスの際はライブラリの入れ替えがあったため、3分ほど待つ必要がありましたが、今回は最初から入っているライブラリをそのまま使えるため、一瞬でactivateされたようです。その時の出力は次のようになっていました。mnist_cnn.pyの実行コードをこちらのページからダウンロードしてきて冒頭で述べたように変更し、実行しました。このサンプルコードはmnistデータベースという分類問題によく使われる手書き文字を、CNNという畳込み計算とpooling計算とニューラルネットワークを組み合わせたもので分類するものです。実行結果を折りたたんで貼っておきます。サンプルコードにあるとおり、だいたい同じ結果がでました。79.74062728881836となっており、案の定、GPUインスタンスでの実行がダントツTopでした。おわりに前回、CPUインスタンスを使った際はインスタンス作成後に環境構築で少々待ち時間が発生していましたが、今回はほぼありませんでした。GPUを使った機械学習は環境構築で時間がかかってしまったり、躓いたりと、機械学習をしてるんだか、GPUの設定をしているんだかわからなくなってくることが多かったのですが、DeepLearningAMIの登場でこの問題は解消されそうです。