#AWS Deep Learning AMI
AWS Deep Learning AMI(DLAMI)は、AWS EC2サービスで機械学習に適したインスタンスをかんたんに作成できるというものです。
GPUを搭載しているほか、condaや各種フレームワークもはじめから入っており、ML/DLのセットアップが非常にやりやすくなっています。
同様のサービスに「SageMaker」もありますが、こちらのほうが割安だと思います。
1.インスタンスの作成
AWS EC2で「インスタンスの作成」をクリック
AMI検索窓で「Deep Learning AMI」を入力
Ubuntu系、Amazon Linux、Microsoft Windows Serverの3つがあります。
ここでは、「Deep Learning AMI (Ubuntu 16.04) Version 26.0」を選択します
ステップ2の「インスタンスタイプの選択」でも、複数のGPUインスタンスがありますが、ここでは安価な「p2.xlarge」を選択します。
他は特に設定をしないので、「確認と作成」を押下して、インスタンスを作成します。
ちなみにこの構成では料金は、「1.542USD/時間」となっていました。
2.インスタンスの設定
後々、ローカルクライアント側からJupyter Notebookにアクセスできるよう、インスタンスの8888ポートを開けておきます。
作成したインスタンス>「説明」タブ>セキュリティグループのリンクをクリックし、セキュリティグループの詳細画面を開きます。
さらに「インバウンド」タブ>「編集」で「タイプ:カスタムTCPルール/ポート:8888」のルールを追加します。
3.インスタンスへの接続
インスタンスを起動後、Teratermなどでインスタンスに接続します。
(ユーザー名は「ubuntu」です)
Deep Learning AMIを起動すると、下記の様に表示され、このインスタンスで起動可能なフレームワークとその起動コマンドの一覧が表示されています。
赤枠にはTensorFlowの仮想環境の起動コマンドが記載されていますので、
TensorFlowを起動するには下記を入力すればOKです。
$ source activate tensorflow_p36
4.Jupyter Notebookの設定
Jupyter にはパスワードユーティリティがあるので、こちらを利用します。
後ほどブラウザからアクセスする際、パスワード認証がされるようになります。
$ jupyter notebook password
次にコンフィグファイルを設定します。
$ nano ~/.jupyter/jupyter_notebook_config.py
下記の行を加えておきます。
c.NotebookApp.ip = '*' #外部からのアクセスを許可する
c.NotebookApp.open_browser = False #自動でウィンドウを開かないようにする
c.NotebookApp.port = 8888 #ポート指定
さらに、自己署名 SSL 証明書を作成を作成しておきます。
$ cd ~
$ mkdir ssl
$ cd ssl
$ openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout mykey.key -out mycert.pem
5.Jupyter Notebookの起動
先に作成した証明書を利用しつつ、notebookを起動します。
$ jupyter notebook --certfile=~/ssl/mycert.pem --keyfile ~/ssl/mykey.key
クライアントPCのブラウザで、
https://[インスタンスのグローバルIPアドレス]:8888/
と入力すると、パスワードを求められた後、notebookを起動できます。