私はTensorflowを初めて使用するので、自分が何をしているかを視覚化することで大きなメリットが得られます。Tensorboardは便利な視覚化ツールであることを理解していますが、リモートのUbuntuマシンで実行するにはどうすればよいですか?
私はTensorflowを初めて使用するので、自分が何をしているかを視覚化することで大きなメリットが得られます。Tensorboardは便利な視覚化ツールであることを理解していますが、リモートのUbuntuマシンで実行するにはどうすればよいですか?
回答:
リモートサーバーがローカルの外部IPを受け入れる問題を回避するために私が行うことは次のとおりです。
-L
のポートに転送するオプション(たとえば)を使用します。
6006
16006
ssh -L 16006:127.0.0.1:6006 olivier@my_server_ip
これ6006
は、サーバーのポート(内127.0.0.1:6006
)のすべてがポート上のマシンに転送されることを意味します16006
。
tensorboard --logdir log
、デフォルトの6006
ポートを持つ標準を使用して、リモートマシンでテンソルボードを起動できます127.0.0.1
ここにあるローカルであるとして、あなたがそれを残す必要がありますので、マシンのIPは、。リモートIPに変更しないでください。これで10分も無駄にした。なんてバカなんだ!
-4
sshフラグでIPv4を強制することで解決しました。同様の質問を読んで、多くの人がサーバーのIPv6アドレスに問題を抱えています。
ssh
(他の回答の代わりとして)サーバーへの接続方法に結び付ける必要のない別のコマンドを使用して、ポート転送することができます。したがって、以下のステップの順序は任意です。
ローカルマシンから、実行します
ssh -N -f -L localhost:16006:localhost:6006 <user@remote>
上のリモートマシン、実行します。
tensorboard --logdir <path> --port 6006
次に、(この例では)ローカルマシンのhttp:// localhost:16006に移動します。
(sshコマンドの説明:
-N
:リモートコマンドなし
-f
:sshをバックグラウンドに配置
-L <machine1>:<portA>:<machine2>:<portB>
:
<machine2>:<portB>
(リモートスコープ)を<machine1>:<portA>
(ローカルスコープ)に 転送する
特別なことをする必要はありません。とにかく走れ:
tensorboard --host 0.0.0.0 <other args here>
サーバーのURLとポートに接続します。--host 0.0.0.0
ローカルマシン上のすべてのIPv4アドレス上の接続から聞くことがtensorflow伝えます。
"whats my ip"
。wget http://ipinfo.io/ip -qO -
wget http://ipinfo.io/ip -qO -
そこからもまたできます。6006
123.123.12.32:6006
リモートサーバーがローカルIPアドレスからのトラフィックに対して開かれている場合は、リモートTensorboardを表示できるはずです。
警告:すべてのインターネットトラフィックがシステムにアクセスできる場合(システムにアクセスできる単一のIPアドレスを指定していない場合)、誰でもTensorBoardの結果を表示し、SkyNetを作成して暴走する可能性があります。
これは適切な答えではありませんが、トラブルシューティングツールであり、うまくいけば、私のような経験の少ない他のネットワーカーを助けます。
私の場合(firefox + ubuntu16)ブラウザは接続していましたが、空白のページ(テンソルボードのロゴがタブに表示されています)が表示され、ログアクティビティはまったく表示されませんでした。その理由が何であるかはまだわかりません(詳しくは調べませんでしたが、誰かが知っている場合はお知らせください)。ubuntuのデフォルトブラウザーに切り替えることで解決しました。ここでの正確な手順は、@ Olivier Moindrotの回答とほとんど同じです。
tensorboard --logdir=. --host=localhost --port=6006
ssh -p 23 <USER>@<SERVER> -N -f -L localhost:16006:localhost:6006
Browser
、にアクセスしlocalhost:16006
ます。テンソルボードページは、それほど遅れることなく読み込まれるはずです。SSHトンネルが効果的に機能していることを確認するには、次のpythonスクリプトのような単純なエコーサーバーが役立ちます。
<ECHO>.py
サーバーのファイルに入れ、で実行しpython <ECHO>.py
ます。これで、サーバーは0.0.0.0:5555でリッスンするエコースクリプトを持つことになります。ssh -p <SSH_PORT> <USER>@<SERVER> -N -f -L localhost:12345:localhost:5555
telnet localhost 12345
はサーバーで実行されているエコースクリプトに接続します。入力hello
してEnter キーを押すと、印刷がhello
戻るはずです。その場合、SSHトンネルは機能しています。これは私のケースであり、問題はブラウザに関係しているという結論に導きました。別の端末から接続しようとすると、端末がフリーズしました。私が言ったように、それが役に立てば幸いです!
乾杯、
アンドレス
https://github.com/dmlc/tensorboard
だけに、より選択肢を追加しますセットアップ。乾杯
ポート転送を使用してSSH接続を作成する必要があります。
ssh -L 16006:127.0.0.1:6006 user@host
次に、tensorboard
次のコマンドを実行します。
tensorboard --logdir=/path/to/logs
次にtensorboard
、ブラウザで以下に簡単にアクセスできます。
localhost:16006/
テンソルボードを実行しているときに、システムのもう1つのオプション--host = ipを指定すると、ホストシステムの http:// ip:6006 を使用して他のシステムからアクセスできます。
別のアプローチは、リバースプロキシを使用することです。これにより、SSHを使用せずにインターネットに接続された任意のデバイスからTensorboardを表示できます。このアプローチにより、たとえばモバイルデバイスでTensorboardを表示するのがはるかに簡単/扱いやすくなります。
手順:
1)TensorboardをホストしているリモートマシンにリバースプロキシNgrokをダウンロードします。手順については、https://ngrok.com/downloadを参照してください(約5分のセットアップ)。
2)実行しますngrok http 6006
(ポート6006でTensorboardをホストしている場合)
3)ngrokが出力するURLを保存します。
4)ブラウザに入力してTensorBoardを表示します。