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


116

私はTensorflowを初めて使用するので、自分が何をしているかを視覚化することで大きなメリットが得られます。Tensorboardは便利な視覚化ツールであることを理解していますが、リモートのUbuntuマシンで実行するにはどうすればよいですか?


いくつかの可能な解決策:(1)ローカルマシンでの実行と同じかもしれませんが、これは確認していません。実行すると、ローカルのブラウザーからアクセスできるポート番号が表示されます。機械。(2)RealVNCなどのリモートデスクトップソフトウェアを使用できますか?(3)同じリモートマシンでテンソルフロー計算も実行していると思います。ログファイルをローカルマシンにダウンロードして、ローカルマシンでテンソルボードを実行することもできます。
Yao Zhang

回答:


185

リモートサーバーがローカルの外部IPを受け入れる問題を回避するために私が行うことは次のとおりです。

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

これ6006は、サーバーのポート(内127.0.0.1:6006)のすべてがポート上のマシンに転送されることを意味します16006


  • 次にtensorboard --logdir log、デフォルトの6006ポートを持つ標準を使用して、リモートマシンでテンソルボードを起動できます
  • ローカルマシンでhttp://127.0.0.1:16006にアクセスして、リモートTensorBoardをお楽しみください。

1
また、テンソルボードプロットがSafariで真っ黒になるという問題があり、Chromeで動作します(問題#4856に関連)
Olivier Moindrot

2
小さなヒント:127.0.0.1ここにあるローカルであるとして、あなたがそれを残す必要がありますので、マシンのIPは、。リモートIPに変更しないでください。これで10分も無駄にした。なんてバカなんだ!
DarkZero 2017

これと、-4sshフラグでIPv4を強制することで解決しました。同様の質問を読んで、多くの人がサーバーのIPv6アドレスに問題を抱えています。
Robert Parcus

sshシェルにとどまる必要があるようです。sshシェルを閉じると、リモートテンソルボードからの応答がありません。sshシェルをシャットダウンするときにテンソルボードに接続する方法はありますか?
ファン

@ファン:以下の他の回答を確認してください。基本的には-N、sshシェルを開かないようにフラグを追加できます。追加すると-f、ssh接続がバックグラウンドになります。
Olivier Moindrot

78

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>(ローカルスコープ)に 転送する


@ 0xcaffで言及されているように、代わりに他のインターフェースをリッスンする必要があります
mmohaveri

特定のポートの場合、ssh -p PORTNUMBER -N -f -L localhost:16006:localhost:6006 <user @ remote>。
Wey Shi

63

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

tensorboard --host 0.0.0.0 <other args here>

サーバーのURLとポートに接続します。--host 0.0.0.0ローカルマシン上のすべてのIPv4アドレス上の接続から聞くことがtensorflow伝えます。


これは正解です。ほとんどの場合、テンソルボードは外部サービスから見えるアドレスにバインドされていません。
Duane

1
それは私にとってリモートサーバーでは機能しません...何が欠けていますか?
Idan azuri

パブリックIPのみをリッスンする場合は、次のようにできます:tensorboard --host $(hostname -I)<other args here>次に、テンソルボードが出力するURLをコピーして貼り付けます:TensorBoard 1.12.2 at 10.0 .50.42:6006(終了するにはCTRL + Cを押します)
Morten

1
@Idanazuriリモートマシンへのhttpアクセスがありますか、それともファイアウォールで保護されていますか(例:ssh接続経由でのみアクセス可能)?sshのみの場合、この回答は機能しません。
drevicko

17

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

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

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


10
  1. グーグルまたは次のコマンドを入力して、ローカル外部IP を見つけます"whats my ip"wget http://ipinfo.io/ip -qO -
  2. リモート外部IPを決定します。これはおそらく、リモートサーバーにSSHでログインするときにユーザー名の後に表示されるものです。wget http://ipinfo.io/ip -qO -そこからもまたできます。
  3. リモートサーバートラフィックを保護して、ローカルの外部IPアドレスのみを受け入れる
  4. Tensorboardを実行します。デフォルトのポートは次のとおりです。6006
  5. ブラウザにリモート外部IPアドレスを入力し、その後にポートを入力します。123.123.12.32:6006

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

警告すべてのインターネットトラフィックがシステムにアクセスできる場合(システムにアクセスできる単一のIPアドレスを指定していない場合)、誰でもTensorBoardの結果を表示し、SkyNetを作成して暴走する可能性があります。


7

これは適切な答えではありませんが、トラブルシューティングツールであり、うまくいけば、私のような経験の少ない他のネットワーカーを助けます。

私の場合(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トンネルが効果的に機能していることを確認するには、次のpythonスクリプトのような単純なエコーサーバーが役立ちます。

  1. スクリプトを<ECHO>.pyサーバーのファイルに入れ、で実行しpython <ECHO>.pyます。これで、サーバーは0.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トンネルは機能しています。これは私のケースであり、問​​題はブラウザに関係しているという結論に導きました。別の端末から接続しようとすると、端末がフリーズしました。

私が言ったように、それが役に立てば幸いです!
乾杯、
アンドレス


私はchromium + ubuntu14でまったく同じ問題を抱えていますが、さらに悪いことに、あるコンピュータから転送されたポートでは完全に正常に機能しますが、別のコンピュータでは同じ空白のページ(正しいファビコンがある)が表示されます。Firefoxは問題なく動作します。それでもまだわかりません。Firefoxを使用しているだけです。
LucasB 2017年

うん、多くの要因が関与が、限り、それは作品として...ノートへのもう一つは、TFが付属していますTBのバージョンが...ここで見つけることができTB-スタンドアロン1と異なっていることであるhttps://github.com/dmlc/tensorboardだけに、より選択肢を追加しますセットアップ。乾杯
fr_andres

7

リモートサーバーのターミナルで次のコマンドを直接実行して、テンソルボードを実行できます。

tensorboard --logdir {tf_log directory path} --host "0.0.0.0" --port 6006

または、ipythonノートブック内でテンソルボードを起動することもできます。

%load_ext tensorboard
%tensorboard --logdir {tf_log directory path} --host "0.0.0.0" --port 6006

4

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

ssh -L 16006:127.0.0.1:6006 user@host

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

tensorboard --logdir=/path/to/logs

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

localhost:16006/

3

--bind_all オプションは便利です。

$ tensorboard --logdir runs --bind_all

ポートは6006から段階的に自動的に選択されます。(6006、6007、6008 ...)


1

sshキーを使用する必要があるすべての人(企業サーバー用)。

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

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


0

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


0

別のアプローチは、リバースプロキシを使用することです。これにより、SSHを使用せずにインターネットに接続された任意のデバイスからTensorboard表示できます。このアプローチにより、たとえばモバイルデバイスでTensorboardを表示するのがはるかに簡単/扱いやすくなります。

手順:

1)TensorboardをホストしているリモートマシンにリバースプロキシNgrokをダウンロードします。手順については、https://ngrok.com/downloadを参照してください(約5分のセットアップ)。

2)実行しますngrok http 6006(ポート6006でTensorboardをホストしている場合)

3)ngrokが出力するURLを保存します。

ここに画像の説明を入力してください

4)ブラウザに入力してTensorBoardを表示します。

ここに画像の説明を入力してください

Sam Kirkilesに感謝

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.