概要
tensorflowを用いた機械学習をAWSサーバーで行うための環境構築方法をご紹介します。
インスタンスの作成
初めのAWSのアカウント作成手順は以下の通りに進めればokです。
アカウント作成手順↓
https://aws.amazon.com/jp/register-flow/
サービスのec2からインスタンスの作成をします。
AMIの選択
AMIはDeep Learning AMI (Amazon Linux)を選択します。
インスタンスタイプの選択
ファミリーはGPUインスタンスのものを選択します。
タイプは機械学習向けのp2かp3あたりが良いと思います。今回はp2.xlargeを選択しました。
それぞれのタイプについての説明↓ https://aws.amazon.com/jp/ec2/instance-types/
以降の設定は今回特に必要ないので、これでインスタンスを作成します。
作成を押すとキーペアを作成するポップアップがでるので、新しいキーペアの作成をしたらキーペアのダウンロードを行ってください。
インスタンスへの接続
インスタンスへ接続するためのクライアントソフトを用意します。
今回はTera Termというものを使用します。
以下からダウンロードとインストールを行ってください。
https://ja.osdn.net/projects/ttssh2/releases/
初めにEC2インスタンスを起動します。
するとページの下に以下のようなステータスが表示されます。
次にTera Termを起動します。
ホストの部分にはパブリックDNSまたはIPv4パブリックIP を入力します。
するとSSH認証を行うポップアップが出てきます。
特に設定をしていなければ、ユーザー名のところはec2-user、パスフレーズは空欄で大丈夫です。
次に”RSA/DSA/ECDSA/ED25519鍵を使う”にチェックを入れ、[秘密鍵]ボタンを押します。
するとファイル選択ウィンドウが出てくるので、さっきダウンロードしたキーペアのpemファイルを選択します。
そしてokボタンを押すとログインができます。
ログインをすると様々なディープラーニングフレームワークを切り替えるための各種の Conda コマンドが表示されます。 keras+tensorflowバックエンドを使うならsource activate tensorflow_p36とコマンドを打つだけで、選択した環境が有効化できます。
プログラムの実行方法
Tera Termのファイル->TTSSH:Secure File Copy からローカルで用意したファイルをAWSに転送して実行できます。
複数のファイルを送りたいときはzip形式で転送して'unzip'コマンドでファイルの展開するとよいです。
CPUとGPUでの速度差
AWSサーバー環境構築が完了したので、実際にプログラムを実行してCPUとGPUでの速度の差を見てみます。
今回はこちらのサンプルコードを使用させていただきました。
まずはCPU環境から。
すでにGPUの環境で、あえてCPU環境を使うことは恐らく無いと思われますが、プログラム実行時に
$ CUDA_VISIBLE_DEVICES='' time python mnist_cnn.py
のようにするとGPUが無効化されます。
実行してみると1エポックあたりに1分以上の時間がかかっていることがわかります。
続いてGPU環境。
1エポックあたり8~10秒程度と、とても早くなったことがわかりますね。
次回
引き続き室内の人を認識する研究を行っていきます。
次回はHaar-Like特徴などを用いた手法での物体検出を試してみたいと思います。