172

我是 Tensorflow 的新手,我会从我正在做的一些可视化中受益匪浅。我知道 Tensorboard 是一个有用的可视化工具,但如何在远程 Ubuntu 机器上运行它?

4

12 回答 12

266

这是我为避免使远程服务器接受您的本地外部 IP 的问题而采取的措施:

  • 当我 ssh 进入机器时,我使用选项将远程服务器的端口-L传输到我机器的端口(例如): 600616006 ssh -L 16006:127.0.0.1:6006 olivier@my_server_ip

它的作用是6006将服务器端口(in 127.0.0.1:6006)上的所有内容转发到我的机器上的端口16006


  • tensorboard --logdir log然后,您可以使用具有默认6006端口的标准在远程机器上启动 tensorboard
  • 在您的本地机器上,访问http://127.0.0.1:16006并享受您的远程 TensorBoard。
于 2016-11-03T23:57:01.653 回答
124

您可以使用另一个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>

转发<machine1>:<portA>(本地范围)到<machine2>:<portB>(远程范围)

于 2017-02-24T17:44:59.623 回答
106

你不需要做任何花哨的事情。赶紧跑:

tensorboard --host 0.0.0.0 <other args here>

并连接到您的服务器 url 和端口。--host 0.0.0.0告诉 tensorflow 监听本地机器上所有 IPv4 地址的连接。

于 2017-05-31T23:32:14.280 回答
24

如果由于某种原因无法正常工作,另一种选择是使用 sshfs 在文件系统上简单地挂载 logdir 目录:

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

然后在本地运行 Tensorboard。

于 2017-03-29T20:56:24.580 回答
14

--bind_all选项很有用。

$ tensorboard --logdir runs --bind_all

端口会自动从 6006 中递增选择。(6006, 6007, 6008...)

于 2020-05-31T13:41:01.117 回答
13

您可以直接在远程服务器的终端上运行以下命令来运行 tensorboard:

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

或者你也可以在你的 ipython notebook 中启动 tensorboard:

%load_ext tensorboard
%tensorboard --logdir {tf_log directory path} --host "0.0.0.0" --port 6006
于 2019-10-10T10:22:52.353 回答
12
  1. 通过谷歌搜索或输入以下命令查找您的本地外部 IP :"whats my ip"wget http://ipinfo.io/ip -qO -
  2. 确定您的远程外部 IP。这可能是 ssh 进入远程服务器时您的用户名之后出现的内容。你也可以wget http://ipinfo.io/ip -qO -从那里再次。
  3. 保护您的远程服务器流量以仅接受您的本地外部 IP 地址
  4. 运行张量板。注意它默认的端口:6006
  5. 在浏览器中输入您的远程外部 IP 地址,然后是端口:123.123.12.32:6006

如果您的远程服务器对来自本地 IP 地址的流量开放,您应该能够看到远程 Tensorboard。

警告:如果所有互联网流量都可以访问您的系统(如果您没有指定可以访问它的单个 IP 地址),那么任何人都可以查看您的 TensorBoard 结果并自行创建 SkyNet。

于 2016-08-06T16:34:08.677 回答
8

您必须使用端口转发创建 ssh 连接:

ssh -L 16006:127.0.0.1:6006 user@host

然后你运行tensorboard命令:

tensorboard --logdir=/path/to/logs

tensorboard然后您可以在浏览器中轻松访问:

localhost:16006/
于 2017-12-20T16:56:16.030 回答
7

这不是一个正确的答案,而是一个疑难解答,希望能帮助其他像我这样经验不足的网络工作者。

在我的情况下(firefox+ubuntu16),浏览器正在连接,但显示一个空白页面(标签上带有 tensorboard 徽标),并且根本没有显示任何日志活动。我仍然不知道这可能是什么原因(没有仔细研究,但如果有人知道请告诉我!),但我解决了它切换到 ubuntu 的默认浏览器。这里的确切步骤与@Olivier Moindrot 的回答几乎相同:

  1. 在服务器上,启动 tensorboard:tensorboard --logdir=. --host=localhost --port=6006
  2. 在客户端,打开 ssh 隧道ssh -p 23 <USER>@<SERVER> -N -f -L localhost:16006:localhost:6006
  3. 打开ubuntuBrowser并访问localhost:16006。张量板页面应该没有太多延迟加载。

要检查 SSH 隧道是否有效工作,像这个 python 脚本这样的简单回显服务器可以提供帮助:

  1. 将脚本放入<ECHO>.py服务器中的文件并使用python <ECHO>.py. 现在服务器将在0.0.0.0:5555上监听 echo 脚本。
  2. 在客户端,打开 ssh 隧道ssh -p <SSH_PORT> <USER>@<SERVER> -N -f -L localhost:12345:localhost:5555
  3. 在客户端上,在用于打开隧道的同一终端中(步骤 2.),发出telnet localhost 12345将连接到服务器中运行的 echo 脚本。键入hello并按 Enter 应打印hello回来。如果是这种情况,您的 SSH 隧道正在工作。这是我的情况,并导致我得出问题涉及浏览器的结论。尝试从其他终端连接会导致终端冻结。

正如我所说,希望它有所帮助!
干杯,
安德烈斯

于 2017-07-11T03:11:09.140 回答
4

另一种方法是使用反向代理,它允许您从任何连接互联网的设备查看 Tensorboard,而无需 SSH。例如,这种方法可以使在移动设备上查看 Tensorboard 变得更加容易/易于处理。

脚步:

1) 在托管 Tensorboard 的远程计算机上下载反向代理 Ngrok。有关说明,请参阅https://ngrok.com/download(约 5 分钟设置)。

2)运行ngrok http 6006(假设您在端口 6006 上托管 Tensorboard)

3)保存ngrok输出的URL:

在此处输入图像描述

4) 将其输入任何浏览器以查看 TensorBoard:

在此处输入图像描述

特别感谢Sam Kirkiles

于 2020-01-23T22:21:26.760 回答
2

对于必须使用 ssh 密钥的任何人(对于公司服务器)。

只需-i /.ssh/id_rsa在最后添加即可。

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

于 2019-01-07T23:33:11.060 回答
0

在运行张量板时,再提供一个选项 --host= ip of your system然后你可以使用 http:// ip of your host system从其他系统访问它:6006

于 2017-03-24T19:01:26.097 回答