深層学習モデルのトレーニング

Amazon EC2 で AWS Deep Learning Containers を使用

AWS Deep Learning Containers (DL Containers) は、深層学習フレームワークがプリインストールされた Docker イメージです。環境の構築と最適化をゼロから行う面倒なプロセスをスキップして、カスタムの機械学習環境をすばやく簡単にデプロイできます。

開発者やデータサイエンティストは、AWS DL Containers を使用して、Amazon Elastic Container Service for Kubernetes (Amazon EKS)、セルフマネージド Kubernetes、Amazon Elastic Container Service (Amazon ECS)、Amazon EC2 にデプロイされたコンテナ化されたアプリケーションにすばやく機械学習を追加できます。

このチュートリアルでは、AWS Deep Learning Containers を使用して Amazon EC2 インスタンスで TensorFlow 機械学習モデルをトレーニングします。

このチュートリアルについて
時間 10 分                                           
料金 1 USD 未満
ユースケース 機械学習
製品 AWS Deep Learning Containers、Amazon EC2、Amazon ECR
対象者 開発者、データサイエンティスト
レベル 初心者
最終更新日 2019 年 3 月 27 日

1.AWS へのサインアップ

このチュートリアルを実行するには、AWS アカウントが必要です。このチュートリアルで AWS Deep Learning Containers を使用しても、追加料金は発生しません。支払いが必要になるのは、チュートリアルで使用する Amazon c5.large インスタンスのみで、チュートリアルの最後の終了の手順を終えても 1 USD 未満にしかならないはずです。 

2.Amazon ECR へのアクセス許可を追加する

AWS Deep Learning Container イメージは、完全マネージド型の Docker コンテナレジストリである Amazon Elastic Container Registry (ECR) にホストされています。このレジストリを使うと、開発者は Docker コンテナイメージを簡単に保存、管理、デプロイできます。この手順では、既存の IAM ユーザーアクセス許可を付与して Amazon ECR にアクセスできるようにします (AmazonECS_FullAccess ポリシーを使用)。

既存の IAM ユーザーがない場合は、IAM のドキュメントで詳細をご覧ください。

a.IAM コンソールに移動する

AWS マネジメントコンソールを開きます。このステップバイステップガイドは開いたままにしておいてください。画面が読み込まれたら、ユーザー名とパスワードを入力して作業を開始します。次に、検索バーに「IAM」と入力し、表示された [IAM] を選択してサービスコンソールを開きます。

b.ユーザーを選択する

左側のナビゲーションペインで、[ユーザー] を選択します。

c.アクセス許可を追加する

作成した新しい IAM ユーザーまたは既存の IAM ユーザーにアクセス許可を追加します。IAM ユーザーの概要ページで、[アクセス権限の追加] を選択します。

d.ECS フルアクセスポリシーを追加する

[既存のポリシーを直接アタッチ] を選択し、「ECS_FullAccess」を検索します。[Amazon_FullAccess] ポリシーを選択し、[確認] と [アクセス権限の追加] をクリックします。

e.インラインポリシーを追加する

IAM ユーザーの概要ページで、[インラインポリシーの追加] を選択します。

f.JSON ポリシーを貼り付ける

[JSON] タブを選択し、次のポリシーを貼り付けます。

{
       "Version": "2012-10-17",
       "Statement": [
              {
                     "Action": "ecr:*",
                     "Effect": "Allow",
                     "Resource": "*"
              }
       ]
}

このポリシーを ECR という名前で保存し、[ポリシーの作成] を選択します。

 

3.AWS Deep Learning Base AMI インスタンスを起動する

このチュートリアルでは、Nvidia ドライバー、docker、nvidia-docker などの必要な依存関係が事前にパッケージ化された AWS Deep Learning Base Amazon マシンイメージ (AMI) で AWS Deep Learning Containers を使用します。Deep Learning Containers は、これらのパッケージを含む任意の AMI で実行できます。

a.EC2 コンソールに移動する

AWS マネジメントコンソールのホーム画面に戻り、検索バーに「EC2」と入力して [EC2] を選択し、サービスコンソールを開きます。

b.Amazon EC2 インスタンスを起動する

再度 Amazon EC2 コンソールに移動し、[インスタンスを起動] ボタンを選択します。

c.AWS Deep Learning Base AMI を選択する

左側の AWS Marketplace タブを選択し、次に deep learning base ubuntu を探します。Deep Learning Base AMI (Ubuntu) を選択します。Deep Learning Base AMI (Amazon Linux) を選択することもできます。

d.インスタンスタイプを選択する

Amazon EC2 インスタンスタイプを選択します。Amazon Elastic Compute Cloud (EC2) は、クラウド上に仮想マシンを作成および実行するために使用するアマゾン ウェブ サービスです。AWS では、仮想マシンを "インスタンス" と呼んでいます。

このチュートリアルでは c5.large インスタンスを使用しますが、お客様は、GPU ベースの p3 インスタンスを含めた追加のインスタンスタイプから選択することができます。

[確認と作成] を選択します。

e.インスタンスを起動する

インスタンスの詳細を確認し、[起動] を選択します。

f.新しいプライベートキーファイルを作成する

次の画面で、既存のキーペアから選択するか新しいキーを作成するかを選びます。キーペアは、SSH を使ってインスタンスにセキュアにアクセスするために使用します。パブリックキーは AWS に保存されます (家に取り付ける錠前に似ています)。プライベートキーはユーザーがダウンロードして使用します (家に入るために使用する鍵に似ています)。

[新しいキーペアの作成] を選択し、名前を付けます。次に、[キーペアのダウンロード] を選択してキーを安全な場所に保存します。キーをなくした場合、インスタンスにアクセスすることができなくなります。第三者がお客様のキーを入手した場合、その第三者はインスタンスにアクセスできてしまいます。

以前にプライベートキーファイルを作成しており、まだそれにアクセスできる場合は、[既存のキーペアの選択] を選択して既存のプライベートキーを使用することができます。

g.インスタンスの詳細を表示する

コンソールでインスタンス ID を選択し、新しく作成した Amazon EC2 の詳細を表示します。 

4.インスタンスに接続する

この手順では、SSH を使用して新しく起動したインスタンスに接続します。以下の手順では、Mac / Linux 環境を使用します。Windows を使用している場合は、こちらのチュートリアルの手順 4 に従ってください

a.インスタンスのパブリック DNS を見つけてコピーする

[説明] タブで Amazon EC2 インスタンスのパブリック DNS (IPv4) をコピーします。

b.コマンドラインターミナルを開く

ターミナルでは、セキュリティキーが存在するディレクトリへ変更するため下記のコマンドを使用し、次に SSH を使用してインスタンスへ接続します。

cd /Users/<your_username>/Downloads/

chmod 0400 <your .pem filename>

ssh -L localhost:8888:localhost:8888 -i <your .pem filename> ubuntu@<your instance DNS>

5.Amazon ECR にログインする

AWS Deep Learning Container イメージは、完全マネージド型の Docker コンテナレジストリである Amazon Elastic Container Registry (ECR) にホストされています。このレジストリを使うと、開発者は Docker コンテナイメージを簡単に保存、管理、デプロイできます。この手順では、Amazon ECR にログインしてアクセスできることを確認します。

a.EC2 インスタンスに AWS 認証情報を設定する

AWS アクセスキー ID とシークレットアクセスキーを提供する必要があります。まだこの情報を持っていない場合は、こちらからアクセスキー ID とシークレットアクセスキーを作成できます。

b.Amazon ECR にログインする

次のコマンドを使用して Amazon ECR にログインします。

$(aws ecr get-login --region us-east-1 --no-include-email --registry-ids 763104351884)

注意: コマンドには ‘$’ と括弧を含める必要があります。この手順が完了すると、‘Login Succeeded’ と表示されます。

 

6.Deep Learning Containers 使用して TensorFlow トレーニングを実行する

この手順では、Python 3.6 を搭載した CPU インスタンスで TensorFlow トレーニング用の AWS Deep Learning Container イメージを使用します。

a.AWS Deep Learning Containers を実行する

次のコマンドを使用して、EC2 インスタンスで AWS Deep Learning Container イメージを実行します。Deep Learning Container イメージがローカルに存在しない場合、このコマンドは自動的にイメージをプルします。

docker run -it 763104351884.dkr.ecr.us-east-1.amazonaws.com/tensorflow-training:1.13-cpu-py36-ubuntu16.04

注意: イメージのサイズにより、この手順には数分がかかる場合があります。GPU インスタンスを使用している場合は、‘docker’ ではなく ‘nvidia-docker’ を使用します。 この手順が正常に終了したら、コンテナに bash プロンプトを入力します。

 

b.サンプルモデルをプルしてトレーニングを行う

モデルをトレーニングするサンプル python スクリプトを含む Keras リポジトリをクローンします。

git clone https://github.com/fchollet/keras.git

c.トレーニングを開始する

次のコマンドで、カノニカル MNIST CNN モデルのトレーニングを開始します。

python keras/examples/mnist_cnn.py

AWS Deep Learning Container でトレーニングを正常に開始できました。

 

7.リソースを終了する

この手順では、このチュートリアル内で作成した Amazon EC2 インスタンスを終了させます。

重要: 活用されていないリソースを解約することで費用を削減し、ベストプラクティスとなります。リソースを終了しないと、お使いのアカウントに料金が発生する場合があります。

a.実行中のインスタンスを選択する

Amazon EC2 コンソールで [実行中のインスタンス] を選択します。

 

b.EC2 インスタンスを終了する

作成した EC2 インスタンスを選択し、[アクション]、[インスタンスの状態]、[終了] の順に選択します。

c.終了を確認する

終了を確認する画面が表示されます。[はい、終了する] を選択します。

注意: このプロセスが完了するまでに数秒かかることがあります。インスタンスが終了すると、EC2 コンソールのインスタンスの状態は、terminated に変更されます。

 

おめでとうございます

AWS Deep Learning Containers と TensorFlow を使用して MNIST CNN モデルを正常にトレーニングできました。

Amazon EC2、Amazon ECS、Amazon EKS、Kubernetes の CPU および GPU リソースで AWS DL Containers を使用してトレーニングと推論を行うことができます。

AWS のパフォーマンスとスケールに最適化されたこれらの安定版深層学習イメージは、独自の深層学習環境の構築に使用できます。

このチュートリアルは役に立ちましたか?