AWS に Anaconda + Python3 + jupyter notebook + keras/tensorflow環境導入

概要

そもそもjupyter をAWSに入れればいいんじゃねと思った時の備忘録です。

環境は以下

ホスト

 ・macOS High Sierra 10.13.4
 ・VirtualBox 5.2.1
 ・Vagrant 2.0.4

ゲスト

 ・CentOS7
 ・Anaconda3-5.2.0
 ・Python3.6.5(Anaconda経由でインストール)

機械学習ライブラリ

 ・tensorflow-1.8.0
 ・keras 2.2.0

AWSアカウントとEC2インスタンスの作成

もともとAWSアカウントは持っていたので割愛。

AWS EC2でWebサーバーを構築してみる

こちらとか参考になります。 注意点としてjupyter notebookを立ち上げる際に、ポート8888を解放して繋げるので、セキュリティグループのルールを新しく作成する必要があります。 こんな感じ f:id:mashi-prog:20180611234809p:plain

SSHの設定

Host deep-dev(エイリアスの作成、任意のホスト名)
hostname ec2------.us-west-2.compute.amazonaws.com(EC2)
identityfile ~/.ssh/----.pem (AWSで発行した鍵)
user cents(ログインユーザー)
# SSH接続
$ ssh deep-dev

これを~/.ssh/configに記述することで、SSH接続が簡単にできるようになります。

ソフトウェアインストール

# yumのアップデート
$ sudo yum update
# 色々インストール
$ sudo yum -y install git vim gcc gcc-c++ python-setuptools python-devel postgresql-devel

Anacondaのインストール

# anacondaのバージョン確認
$ pyenv install -l | grep anaconda
# 最新版インストール
$ pyenv install anaconda3-5.2.0
$ pyenv rehash
# anacondaをpythonのデフォルトに設定
$ pyenv global anaconda3-5.2.0
$ echo 'export PATH="$PYENV_ROOT/versions/anaconda3-5.2.0/bin/:$PATH"' >> ~/.bashrc
$ source ~/.bashrc
# condaの更新(これしないとたまにダメ)
$ conda update setuptools

jupuyter notebookの設定

$ jupyter notebook --generate-config
$ ipython
In [1]: from notebook.auth import passwd

In [2]: passwd()
Enter password: ○○○○
Verify password: ○○○○

Out[2]: 'sha1:○○○○○○○○○○'

出力された'sha1:○○○○'を

$ vim ~/.jupyter/jupyter_notebook_config.py
...
c.NotebookApp.ip = '*'
...
c.NotebookApp.open_browser = False
c.NotebookApp.port = 8888
# パスワードをコピー
c.NotebookApp.password = 'sha1:○○○○'

これでパスワードログインが可能になります。

# jupyter notebookサーバを起動する。  
# nohupとつけるとターミナルを閉じてもコマンドを実行してくれる。
$ nohup jupyter notebook $

ブラウザからEC2ダッシュボードのパブリックDNSの名前:ポート番号(8888)でアクセス f:id:mashi-prog:20180612000623p:plain パスワードログイン! これで完了!

参考

qiita.com

$