Edited at

プロキシのある社内から利用できるjupyter notebook(GPU、EC2、ubuntu16.04、TensorFlow)の構築


はじめに

主に下記を参考にさせていただきました

ubuntu 16.04が使いたかったので、その部分が違います

Proxyが厳しい企業内からも利用できるJupyter NotebookをAWS上に用意する

https://qiita.com/shunyas/items/3fa1a0f9e3287b6fb5bf

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

https://qiita.com/nicco_mirai/items/1da092912adbce71b82b

一通りやるのに1~2時間ぐらいかかると思われます


手順


前提


利用環境


  • ブラウザの80と443しかポートがあいてない環境

  • AWSのアカウントがある

  • AWSにブラウザで接続できる


構築環境


  • ブラウザのポート自由

  • AWSのアカウントがある

  • AWSにブラウザで接続できる

  • AWSにSSHで接続できる


1 利用環境でEC2の準備をする

AWSに繋がる確認も含めて利用環境からサインインしてバージニア北部に移動します

EC2ダッシュボードから、インスタンスの作成をします

「Ubuntu」で検索すると下記が表示されるので、これを選択してください


Ubuntu Server 16.04 LTS (HVM), SSD Volume Type


インスタンスタイプは p2.2xlarge を選択してください

Volume Storage は20Gにしてください


2 構築環境でjupyter notebookのインストール


  • 2-1 SSHで作成したEC2インスタンスに接続する

puttyで接続する場合は、インスタンス作成時に保存したキーペアの.pemファイルを.ppkファイルに変換します

参考

pem ⇒ ppk 変換

https://qiita.com/naka46/items/3297242f3386b5f9e3dc

AWSにログインして作成したEC2のインスタンスの「パブリック DNS (IPv4)」を調べputtyのHostに入力します

puttyのconnection -> SSH -> Auth にあるPrivate key file for authenticationに変換したppkファイルを指定します

puttyのconnection -> Data にあるAuto-login username に ubuntu と入力します

これでOpenを押して接続します

下記を参考にしました

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

https://qiita.com/nicco_mirai/items/1da092912adbce71b82b#%E4%BB%BB%E6%84%8F%E3%81%AEssh%E3%82%AF%E3%83%A9%E3%82%A4%E3%82%A2%E3%83%B3%E3%83%88%E3%81%A7%E3%82%A4%E3%83%B3%E3%82%B9%E3%82%BF%E3%83%B3%E3%82%B9%E3%81%AB%E5%85%A5%E3%82%8B


  • 2-2 下記を参考にしてjupyter notebookをインストールします

英語ですが、コマンド部分を上から順にコピペすればできます

コマンド部分は$の行です

tensorFlowの動作確認の部分は飛ばしたほうがいいと思います

Setup TensorFlow GPU with AWS EC2 on Ubuntu 16.04 in 10 minutes.

https://medium.com/@dichen_5479/setup-tensorflow-gpu-with-aws-ec2-on-ubuntu-16-04-in-10-minutes-7ee64e47a66a

10minitesとかいてますが、私は30分はかかりました

p2.xlargeですと、0.5ドルぐらいですね


3 構築環境でjupyter notebookの確認


  • 3-1 セキュリティグループの設定

作成したEC2インスタンスのセキュリティグループの「インバウンド」を開いて編集を押す

「カスタム TCP ルール」

「ポート範囲」を8888

ソースを「任意の場所」

にして保存する

ルールの追加で

「HTTPS」

ソースを「任意の場所」

を選択して保存する


  • 3-2 画面の確認

「2 構築環境でjupyter notebookのインストール」を最後まで実行すると、下記のような文字列が表示されます

http://localhost:8888/?token=abcdefg12345jkfatecateta

localhostを、「パブリック DNS (IPv4)」に変更してブラウザで開くと、jupyter notebookが表示されています


4 構築環境で自動起動の設定

ここからは下記を参考にします

Proxyが厳しい企業内からも利用できるJupyter NotebookをAWS上に用意する

https://qiita.com/shunyas/items/3fa1a0f9e3287b6fb5bf

「Port 8888 を Proxyが通過できる443へフォワードする」以降を実施します

上記ではエディタをnano で編集していますが、操作がわからないのでviで実施しました

「起動スクリプト」はパスがかわります

source /home/ubuntu/src/anaconda3/bin/activate root


source /home/ubuntu/miniconda3/bin/activate root

「GPU用の環境変数の設定」に関しては

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

https://qiita.com/nicco_mirai/items/1da092912adbce71b82b#ssl%E8%A8%BC%E6%98%8E%E6%9B%B8%E3%82%92%E4%BD%9C%E3%82%8B

「SSL証明書を作る」

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

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

の3つを実施してからになります

c.NotebookApp.certfile と c.NotebookApp.keyfile のパスはsslかcertかどちらかにそろえてください

パスワードはsha1からの文字列になります

あと下記にしないとエラーになりました

c.NotebookApp.ip = '*'


c.NotebookApp.ip = '0.0.0.0'

minicondaをインストールしているので、


5 利用環境で確認

AWSにサインインして、EC2を再起動

https://パブリック DNS (IPv4)

に「この接続ではプライバシーが保護されません」、「このサイトの閲覧を続行する (推奨されません)。 」を突破してアクセスして

jupyter notebook のログイン画面が表示されたら完了です

ログインのパスワードは「パスワードのハッシュを作る」で入力した文字列です


おわりに

プロキシには負けたくない