我正在家中尝试使用Tensorboard监视一个Tensorflow培训,该培训正在我的机器上运行。
我们有一个ssh网关来访问工作中的机器,所以我必须建立一个ssh隧道,从网上看到的内容来看,这是如何与Tensorboard 6006的默认端口连接的方法:
ssh -NfL 6006:remote_machine:6006 user@ssh_gateway_machine
然后在远程计算机上:
tensorboard --logdir dir/ --port 6006
然后在家里的机器上:
http://localhost:6006
但是页面是白色的并且永远加载,无法检索数据。
当我尝试监视同一台机器但从另一台正在工作的机器上监视时,以相同的方式(没有ssh隧道)使用端口转发可以很好地工作,因此问题不是来自Tensorboard,而是来自我认为的ssh隧道。我不知道为什么。
答案 0 :(得分:2)
在启动张量板时尝试使用bind_all
参数。它允许张量板的远程连接。因此您的命令应类似于
tensorboard --logdir dir/ --port 6006 --bind_all
答案 1 :(得分:2)
我同意,您必须使用bind_all选项执行:
tensorboard --logdir dir/ --port 6006 --bind_all
但是,也许就您而言,您只需要检查ssh_gateway_machine
ssh服务器是否配置为允许端口转发:AllowTcpForwarding yes
?
此处的解释:
示例:
ssh user@ssh_gateway_machine
sudo -i
vi /etc/ssh/sshd_config
如果可能(询问您公司的IT安全人员),请编辑以下行:
AllowTcpForwarding yes
但是在我的情况下,因为我无法从Internet访问,所以我不得不使ssh远程端口转发-L
选项远程执行(在-R
上),直接连接到remote_machine
网络的任何端口。
因此,我认为我的remote_machine
远程端口转发方法更好,如果您的-R
可以访问互联网,并且可以在NAS或{{1 }}。
因此,我重复一遍,它是通过在remote_machine
上执行的local_machine
选项来完成的。
因此,-R
成为本地设备(例如,Synology NAS)。
如果您没有NAS,那么如果您安装/激活SSH服务器,则可能是您的remote_machine
。 (ssh_gateway_machine
== local_machine
)
并且您必须修改Internet提供商盒/网络路由器的端口转发),以将ssh传入端口转发到内部ssh_gateway_machine
(以便能够通过Internet提供商盒从Internet进行传入访问,直到您的local_machine
。
您必须在ssh_gateway_machine
(Synology NAS),ssh_gateway_machine
和ssh_gateway_machine
选项中检查和修改服务器ssh配置:
GatewayPorts
编辑行:
AllowTcpForwarding
此外,不要忘记修改ssh user@ssh_gateway_machine
sudo -i
vi /etc/ssh/sshd_config
的防火墙规则以仅接受来自GatewayPorts yes
AllowTcpForwarding yes
公用IP的ssh传入访问。
也许也可以在您的互联网路由器上完成。
之后,您必须从ssh_gateway_machine
执行:
remote_machine
with remote_machine
= ssh user@ssh_gateway_machine_public_ip -R 6006:localhost:6006
= ssh_gateway_machine_public_ip
网络图片: My network map
答案 2 :(得分:0)
就我而言,我使用 ERROR: LoadError: MethodError: no method matching /(::CValue, ::Vector{CValue})
在 ubuntu 上运行 tensorboard,并且在 tensorboard --logdir=runs
处看到了永远加载屏幕
我已多次运行该命令,每次它都会启动一个新端口,因此我尝试访问的端口被孤立张量板使用,导致永远加载屏幕。
最终对我有用的是
http://localhost:6008
并使用
运行一个新的张量板kill -9 <pid_my_old_tensorboards>