我是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
port的标准6006
在远程计算机上启动tensorboard您可以使用另一个ssh
命令进行端口转发,该命令不需要与您连接到服务器的方式相关联(作为另一个答案的替代方案)。因此,以下步骤的顺序是任意的。
ssh -N -f -L localhost:16006:localhost:6006 <user@remote>
tensorboard --logdir <path> --port 6006
(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
告诉tensorflow监听本地计算机上所有IPv4地址的连接。
"whats my ip"
或输入以下命令找到您当地的外部IP:wget http://ipinfo.io/ip -qO -
wget http://ipinfo.io/ip -qO -
。6006
123.123.12.32:6006
如果远程服务器对来自本地IP地址的流量开放,您应该能够看到远程Tensorboard。
警告:如果所有互联网流量都可以访问您的系统(如果您没有指定可以访问它的单个IP地址),任何人都可以查看您的TensorBoard结果并自行创建SkyNet。
如果由于某种原因无法使其工作的另一个选择是使用sshfs在文件系统上安装logdir目录:
sshfs user@host:/home/user/project/summary_logs ~/summary_logs
然后在本地运行Tensorboard。
这不是一个正确的答案,而是一个故障排除者,希望能帮助像我这样的其他经验不足的网络工作者。
在我的情况下(firefox + ubuntu16)浏览器正在连接,但显示一个空白页面(选项卡上有tensorboard标志),并且没有显示任何日志活动。我仍然不知道可能是什么原因(看起来并不多,但如果有人知道请告诉我!),但我解决了它切换到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隧道是否有效工作,像this python script这样的简单回显服务器可以提供帮助:
<ECHO>.py
文件中,然后使用python <ECHO>.py
运行它。现在,服务器将使用0.0.0.0:5555监听echo脚本。ssh -p <SSH_PORT> <USER>@<SERVER> -N -f -L localhost:12345:localhost:5555
telnet localhost 12345
将连接到服务器中运行的echo脚本。键入hello
并按Enter键应该打印hello
。如果是这种情况,您的SSH隧道正在运行。这是我的情况,并引导我得出结论,问题涉及浏览器。尝试从不同的终端连接导致终端冻结。正如我所说,希望它有所帮助! 干杯, 安德烈斯
您必须使用端口转发创建ssh连接:
ssh -L 16006:127.0.0.1:6006 user@host
然后运行tensorboard
命令:
tensorboard --logdir=/path/to/logs
然后,您可以在浏览器中轻松访问tensorboard
:
localhost:16006/
运行tensorboard时,可以选择另一个选项--host = ip of your system,然后可以使用主机系统的http:// ip从其他系统访问它:6006
对于必须使用ssh密钥的任何人(对于公司服务器)。
最后添加-i /.ssh/id_rsa
。
$ ssh -N -f -L localhost:8211:localhost:6007 myname@servername -i /.ssh/id_rsa