web-dev-qa-db-ja.com

リモートサーバーでTensorboardを実行するにはどうすればよいですか?

私はTensorflowに慣れていないので、自分がやっていることを視覚化することで大きな恩恵を受けます。 Tensorboardは便利な視覚化ツールであることは理解していますが、リモートのUbuntuマシンで実行するにはどうすればよいですか?

74
user

リモートサーバーがローカルの外部IPを受け入れるようにする問題を回避するために、次のことを行います。

  • マシンにsshするとき、オプション-Lを使用して、リモートサーバーのポート6006をマシンのポート16006に転送します(たとえば):ssh -L 16006:127.0.0.1:6006 olivier@my_server_ip

サーバーのポート(6006)上のポート(127.0.0.1:6006)上のすべてが、ポート(16006)上のマシンにforwardedされることです。


  • その後、デフォルトのtensorboard --logdir logportで標準の6006を使用して、リモートマシンでテンソルボードを起動できます。
  • ローカルマシンで http://127.0.0.1:16006 に移動し、リモートTensorBoardをお楽しみください。
127

別のsshコマンドを使用してポートフォワードすることができます。このコマンドは、サーバーへの接続方法に関係する必要はありません(他の回答の代わりとして)。したがって、以下のステップの順序は任意です。

  1. あなたから 地元 マシン、実行

    ssh -N -f -L localhost:16006:localhost:6006 <user@remote>

  2. に リモート マシン、実行:

    tensorboard --logdir <path> --port 6006

  3. 次に、ローカルマシンの(この例では) http:// localhost:16006 に移動します。

(sshコマンドの説明:

-N:リモートコマンドなし

-f:バックグラウンドでsshを置く

-L <machine1>:<portA>:<machine2>:<portB>

<machine2>:<portB>(リモートスコープ)を<machine1>:<portA>(ローカルスコープ)に転送します

38
eqzx

特別なことをする必要はありません。とにかく走れ:

tensorboard --Host 0.0.0.0 <other args here>

サーバーのURLとポートに接続します。 --Host 0.0.0.0は、ローカルマシン上のすべてのIPv4アドレスの接続からリッスンするようにtensorflowに指示します。

29
0xcaff

何らかの理由で動作しない場合の別のオプションは、sshfsを使用してファイルシステムにlogdirディレクトリをマウントすることです。

sshfs user@Host:/home/user/project/summary_logs ~/summary_logs

tensorboardをローカルで実行します。

7
Scientist1642
  1. "whats my ip"をグーグル検索するか、次のコマンドを入力して、local外部IPを見つけます:wget http://ipinfo.io/ip -qO -
  2. remote外部IPを決定します。これはおそらく、リモートサーバーにSSH接続するときにユーザー名の後に来るものです。そこから再びwget http://ipinfo.io/ip -qO -を実行することもできます。
  3. local外部IPアドレスを受け入れるようにリモートサーバーのトラフィックを保護する
  4. Tensorboardを実行します。デフォルトのポートに注意してください:6006
  5. ブラウザにremote外部IPアドレスを入力し、その後にポートを入力します:123.123.12.32:6006

リモートサーバーがローカルIPアドレスからのトラフィックに対して開かれている場合、リモートTensorboardを表示できるはずです。

警告:if allインターネットトラフィックがシステムにアクセスできる場合(アクセスできる単一のIPアドレスを指定していない場合)、誰でもTensorBoardの結果を表示できますそして、SkyNet自体を作成することによる暴走。

7
JohnAllen

これは適切な答えではなく、トラブルシューティングであり、私のような経験の浅い他のネットワーク作成者に役立つことを願っています。

私の場合(firefox + ubuntu16)、ブラウザーは接続していましたが、空白のページ(タブ上のテンソルボードロゴ)が表示され、ログアクティビティはまったく表示されませんでした。その理由が何であるかはまだわかりません(詳しくは調べませんでしたが、知っている人がいれば知らせてください!)が、ubuntuのデフォルトのブラウザーに切り替えて解決しました。ここでの正確な手順は、@ Olivier Moindrotの答えとほぼ同じです。

  1. サーバーで、テンソルボードを開始します:tensorboard --logdir=. --Host=localhost --port=6006
  2. クライアントで、sshトンネルssh -p 23 <USER>@<SERVER> -N -f -L localhost:16006:localhost:6006を開きます
  3. UbuntuのBrowserを開き、localhost:16006にアクセスします。テンソルボードページは、大幅な遅延なしに読み込まれます。

SSHトンネルが効果的に機能していることを確認するには、 this python script のような単純なエコーサーバーが役立ちます。

  1. サーバーの<ECHO>.pyファイルにスクリプトを配置し、python <ECHO>.pyで実行します。これで、サーバーのエコースクリプトは .0.0.0:5555 をリッスンします。
  2. クライアントで、sshトンネルssh -p <SSH_PORT> <USER>@<SERVER> -N -f -L localhost:12345:localhost:5555を開きます
  3. クライアントでは、トンネルを開くのに使用したのと同じターミナル(ステップ2)で、telnet localhost 12345を発行すると、サーバーで実行されているエコースクリプトに接続します。 helloと入力してEnterキーを押すと、helloが出力されます。その場合、SSHトンネルは機能しています。これは私の場合であり、問​​題はブラウザに関係しているという結論に至りました。別の端末から接続しようとすると、端末がフリーズしました。

私が言ったように、それが役立つことを願っています!
乾杯、
アンドレス

5
fr_andres

ポート転送を使用してssh接続を作成する必要があります。

ssh -L 16006:127.0.0.1:6006 user@Host

次に、tensorboardコマンドを実行します。

tensorboard --logdir=/path/to/logs

次に、ブラウザのtensorboardに簡単にアクセスできます。

localhost:16006/
3
user4911648

Sshキーを使用する必要がある人(企業サーバーの場合)。

最後に-i /.ssh/id_rsaを追加するだけです。

$ ssh -N -f -L localhost:8211:localhost:6007 myname@servername -i /.ssh/id_rsa

0
Aerin

テンソルボードの実行中に、もう1つのオプション--Host = システムのIPを指定すると、http:// ホストシステムのIPを使用して他のシステムからアクセスできます。 6006

0
user2973566