やりたいこと
EC2インスタンス上でpytorchでモデル構築する際、実験結果等をtensorboardに保存しWebUIで可視化する
pytorchでtensorboardを利用する方法はpytorch tensorboard document
に記載されているのでこのリンクを参照にすればよいが、EC2上でtensorboardのwebuiを立てる場合、
tensorboard --logdir=runs
だけではブラウザから見ることはできない. そこでEC2からtesorboardのサーバーを立ててブラウザでアクセスする方法をメモ.
必要なこと
EC2からWebUIをたててブラウザで見るために追加で必要なことは2つ
- hostの設定.
- portの解放
1. hostの設定
tensorboard -h
と実行すると、以下のようなオプションが確認できる
--host ADDR What host to listen to (default: localhost). To serve to the
entire local network on both IPv4 and IPv6, see `--bind_all`,
with which this option is mutually exclusive.
これを設定すれば良い。EC2からjupyterを立てる時のよう0.0.0.0
とかに設定すれば良いので
tensorboard --logdir=runs --host=0.0.0.0
とすれば良い.
2. portの解放
--host=0.0.0.0
だけではブラウザでhttp://パブリックIP:6006
と打ってもWebUIが表示されない.
これはEC2が(デフォルトでは)6006を解放していないためである。
EC2のポートを解放するには、
awsから
EC2 > インスタンス > 該当のインスタンスを選択 > セキュリティ > インバウンドルール
でインバウンドルール(EC2へのアクセスを制御する設定)を確認する.
ここに6006が設定されていなければ、6006にアクセスできない.
設定方法は、EC2に紐づいているセキュリティルールを選択してインバウンドルールの編集
から、
TCP 6006
を追加する.
ソースの部分が0.0.0.0/0
となっていると誰でも接続できてしまうので、他の人に接続されたくない場合はソースのカスタムの欄を推してそこからマイIP
または自分のIP
を選択すれば自分のPC以外からの接続を拒否できる.
上記の手順を行うと、
http://パブリックIP:6006
でtensorboardに接続できる