iTAC_Technical_Documents

アイタックソリューションズ株式会社

ブログ名

機械学習のためのAWSサーバー環境構築

概要

tensorflowを用いた機械学習AWSサーバーで行うための環境構築方法をご紹介します。

インスタンスの作成

初めのAWSのアカウント作成手順は以下の通りに進めればokです。
アカウント作成手順↓ https://aws.amazon.com/jp/register-flow/

サービスのec2からインスタンスの作成をします。

f:id:iTD_GRP:20191212041920j:plain

f:id:iTD_GRP:20191212041932j:plain

AMIの選択

AMIはDeep Learning AMI (Amazon Linux)を選択します。

f:id:iTD_GRP:20191212042014j:plain

インスタンスタイプの選択

ファミリーはGPUインスタンスのものを選択します。
タイプは機械学習向けのp2かp3あたりが良いと思います。今回はp2.xlargeを選択しました。

f:id:iTD_GRP:20191212042028j:plain

それぞれのタイプについての説明↓ https://aws.amazon.com/jp/ec2/instance-types/

以降の設定は今回特に必要ないので、これでインスタンスを作成します。
作成を押すとキーペアを作成するポップアップがでるので、新しいキーペアの作成をしたらキーペアのダウンロードを行ってください。

インスタンスへの接続

インスタンスへ接続するためのクライアントソフトを用意します。
今回はTera Termというものを使用します。
以下からダウンロードとインストールを行ってください。 https://ja.osdn.net/projects/ttssh2/releases/

初めにEC2インスタンスを起動します。

f:id:iTD_GRP:20191212042042j:plain

するとページの下に以下のようなステータスが表示されます。

f:id:iTD_GRP:20191212042054j:plain

次にTera Termを起動します。

f:id:iTD_GRP:20191212042109j:plain

ホストの部分にはパブリックDNSまたはIPv4パブリックIP を入力します。
するとSSH認証を行うポップアップが出てきます。

f:id:iTD_GRP:20191212042121j:plain

特に設定をしていなければ、ユーザー名のところはec2-user、パスフレーズは空欄で大丈夫です。

次に”RSA/DSA/ECDSA/ED25519鍵を使う”にチェックを入れ、[秘密鍵]ボタンを押します。
するとファイル選択ウィンドウが出てくるので、さっきダウンロードしたキーペアのpemファイルを選択します。

そしてokボタンを押すとログインができます。

f:id:iTD_GRP:20191212042144p:plain

ログインをすると様々なディープラーニングフレームワークを切り替えるための各種の 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が無効化されます。

f:id:iTD_GRP:20191212042211j:plain

実行してみると1エポックあたりに1分以上の時間がかかっていることがわかります。

続いてGPU環境。

f:id:iTD_GRP:20191212042238j:plain

1エポックあたり8~10秒程度と、とても早くなったことがわかりますね。

次回

引き続き室内の人を認識する研究を行っていきます。
次回はHaar-Like特徴などを用いた手法での物体検出を試してみたいと思います。


目次へ戻る