LoginSignup
12
13

More than 5 years have passed since last update.

AWSのGPUインスタンスでJupyter Notebookを実行する(Windows 2018/07版)

Last updated at Posted at 2018-07-30

表紙
PythonとKerasによるディープラーニング

買いました。
この1月貪るように読みながら「これはいぬ!これはねこ!」などとやっております。

大変よい本なのですが、巻末付録である標題の項目がWindowsユーザーにとっては少し不親切なのと、一部それはダメだろって部分があるのでそのあたりを補足出来たらと思いこの記事を書きました。

概要

手順は以下の通りです。なおAWSのアカウントは既に作成してあり、コンソールにログインしているものとします。

  • インスタンスの制限を解除してもらう
  • セキュリティグループを作る
  • インスタンスを立てる
  • 任意のSSHクライアントでインスタンスに入る
  • 諸々のパッケージをアップデートする
  • SSL証明書を作る
  • パスワードのハッシュを作る
  • Jupyter Notebook(Lab)の構成ファイルを作る

インスタンスの制限を解除してもらう

画面左のメニューから制限を開くと、こんな感じで種類ごとに立てられるインスタンス数の上限が見れます。

02_インスタンス制限.PNG

私の場合1番安いGPUインスタンスであるp2.xlargeの上限が0だったので、制限緩和のリクエストを送りました。

03_インスタンス制限.PNG

上限が0のままインスタンスを立てようとすると
You have requested more instances (1) than your current instance limit of 0 allows for the specified instance type. Please visit http://aws.amazon.com/contact-us/ec2-request to request an adjustment to this limit.
と怒られます(ました)。

セキュリティグループを作る

ダッシュボードから。
特にこだわりがなければdefaultを編集すればいいと思います。

05_セキュリティグループ.PNG

インスタンスを立てる

いよいよインスタンスを立てます。
本に倣いますのでAMIはDeep Learning AMI (Ubuntu) Version 12.0、
インスタンスタイプはp2.xlarge、
セキュリティグループは先ほど設定したものを使います。
キーペアは無ければ作ってダウンロードしておいてください。

06_ステータス.PNG

作成が完了したらダッシュボードから実行中のインスタンスを見に行き、
インスタンスの状態がrunningになってることを確認してIPv4パブリックIPをメモります。

任意のSSHクライアントでインスタンスに入る

ここではPuTTY-ranvisを使います。Windows10だと標準のものがあるみたいなのでそっちを使いましょう。
参考1:PuTTY を使用した Windows から Linux インスタンスへの接続
参考2:Windowsでsshクライアント「PuTTY」を使う

puttygen.exeで先ほど落とした秘密鍵を.pemから.ppkに変換し、
putty.exeを以下の設定にして開くを押します。

07_putty.PNG
/セッション

08_putty.PNG
/接続

09_putty.PNG
/接続/SSH/認証

ログイン出来ると

=============================================================================
       __|  __|_  )
       _|  (     /   Deep Learning AMI (Ubuntu) Version 12.0
      ___|\___|___|
=============================================================================

↑こんな感じの画面が出ます。

諸々のパッケージをアップデートする

ここ何故か本だとpipを使ってるんですが、AnacondaなのでCondaの方がいいと思うんですね。

$ conda update conda
$ source activate tensorflow_p36
↑ここは好きな環境を選んでください。他に使える環境はコンソールに書いてあります。

$ conda update --all

↓ここからは任意。Pillowがないと5章で詰みます。
$ conda install Jupyterlab
$ conda install Pillow

参考:Kerasに「PILが無い」と怒られた場合の対策

SSL証明書を作る

HTTPS接続に必要になります。

$ mkdir ssl
$ cd ssl
$ openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout "cert.key" -out "cert.pem" -batch
$ cd

パスワードのハッシュを作る

$ python -c 'import IPython;print(IPython.lib.passwd())'

パスワードの入力を求められるので、任意のパスワードを2回入力してください。
'sha1:'から始まるパスワードのハッシュが作成されるので、まるっとコピーします。

Jupyter Notebook(Lab)の構成ファイルを作る

本ではJupyter Notebookの使用が推奨されていますが、後継のJupyter Labというものもあります。
参考:Jupyter Lab事始め
ただし本稿執筆時点(2018/07/30)ではどちらで--generate-configしてもjupyter_notebook_config.pyが作成される模様。

$ jupyter notebook --generate-config

作成された構成ファイルをviなり何なりで編集します。
参考:Linuxの定番テキストエディタ「vi」をマスターしよう(1)基本操作編 (1/2)

$ vi ~/.jupyter/jupyter_notebook_config.py

先頭に

c = get_config()
c.IPKernelApp.pylab = 'inline'
c.NotebookApp.ip = '*'
c.NotebookApp.port = 8888
c.NotebookApp.open_browser = False
c.NotebookApp.certfile = '/home/ubuntu/ssl/cert.pem'
c.NotebookApp.keyfile = '/home/ubuntu/ssl/cert.key'
c.NotebookApp.password = 'メモったパスワード'

を追加すればよいです。

接続

ここまで終われば

$ jupyter notebook

でJupyterを起動し、ローカルのブラウザから
https://メモったIP:8888
に接続して終了です。セキュリティの警告が出るはずなのでブラウザごとに何とか対応してください。

お疲れ様でした。

続きます(2018/08/01)

AWS(EC2)でJupyter Notebookを使う際の面倒ごとを全部自動化する

12
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
13