LoginSignup
6
4

More than 5 years have passed since last update.

AWSで手軽にjupyter notebookを起動してローカルからアクセス

Posted at

AWSのGPUインスタンスでCIFAR-10の分類で作ったGPUインスタンスを、普段はお高いので止めておいて、時々jupyter notebookを起動してブラウザから触りたい。
想定は1リージョンに1インスタンスしかない、AWS超ライトユーザです。(設定が全然汎用的ではないので・・)

aws CLIでインスタンスを起動

コンソールをぽちぽちしても同じことができるが、時間がかるのでCLIがよい。
対象のリージョンにインスタンスが2つ以上ある場合、jqに渡すオプションは変更しないと失敗するはず。

describe-instancesでインスタンスIDをもってきて、そのまんまstart-instancesに渡す。この辺のノウハウはもっと良い記事があるに違いない。

aws ec2 start-instances --instance-ids `aws ec2 describe-instances | jq -r '.Reservations[].Instances[].InstanceId'` 

~/.ssh/configにLocalForwardの設定

"ec2"がドメインに含まれているPublic DNSにつなげたとき、ユーザ名とキーファイルは決め打ちで、LocalForwardする設定にする。
これで、SSH接続している間はローカルの8888に接続するとEC2側で待ち受けている8889に繋がるようになる。

Host *ec2*
    User ec2-user
    LocalForward 8888 127.0.0.1:8889
    IdentityFile ~/.ssh/gpu.pem

SSH接続してjupyter notebookを起動

SSHはその時のPublicDnsNameに繋がるように次のコマンドを実行する。

ssh `aws ec2 describe-instances | jq -r '.Reservations[].Instances[].PublicDnsName'` 

Keras(Theano)がGPUを使うように、jupyter notebookを起動する。起動ポートは8889にする。

THEANO_FLAGS=mode=FAST_RUN,device=gpu,floatX=float32 jupyter notebook --no-browser --port 8889 

ローカルのブラウザからアクセス

必要なipynbファイルはscpなどで送り込んでおく。
アクセス先は http://localhost:8888/ になる。

6
4
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
6
4