如何在远程服务器上运行Tensorboard?

时间:2016-06-23 09:40:01

标签: tensorflow machine-learning data-visualization remote-access tensorboard

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

12 个答案:

答案 0 :(得分:120)

以下是我要避免使远程服务器接受本地外部IP的问题:

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

它的作用是将服务器端口6006127.0.0.1:6006)中的所有内容转发到端口16006上的我的计算机上。

  • 然后,您可以使用标准tensorboard --logdir log使用默认6006端口
  • 在远程计算机上启动tensorboard
  • 在本地计算机上,转到http://127.0.0.1:16006并享受您的远程TensorBoard。

答案 1 :(得分:36)

您可以使用另一个ssh命令进行端口转发,该命令不需要与您连接到服务器的方式相关联(作为另一个答案的替代方案)。因此,以下步骤的顺序是任意的。

  1. 本地计算机上运行

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

  2. 远程计算机上的
  3. ,运行:

    tensorboard --logdir <path> --port 6006

  4. 然后,导航到本地计算机上的(在此示例中)http://localhost:16006

  5. (ssh命令的解释:

    -N:没有远程命令

    -f:将ssh放在后台

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

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

答案 2 :(得分:29)

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

tensorboard --host 0.0.0.0 <other args here>

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

答案 3 :(得分:7)

  1. 通过Google搜索"whats my ip"或输入此命令找到本地外部IP:wget http://ipinfo.io/ip -qO -
  2. 确定远程外部IP。这可能是在你的用户名进入远程服务器之后的结果。您也可以从那里再次wget http://ipinfo.io/ip -qO -
  3. 保护您的远程服务器流量,只接受您的本地外部IP地址
  4. 运行Tensorboard。请注意默认端口:6006
  5. 在浏览器中输入远程外部IP地址,然后输入端口:123.123.12.32:6006
  6. 如果远程服务器对来自本地IP地址的流量开放,您应该可以看到远程Tensorboard。

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

答案 4 :(得分:7)

如果由于某种原因无法使其工作的另一个选择是使用sshfs在文件系统上安装logdir目录:

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

然后在本地运行Tensorboard。

答案 5 :(得分:5)

这不是一个正确的答案,而是一个问题排查工具,希望能帮助像我这样经验不足的网络工作者。

在我的情况下(firefox + ubuntu16)浏览器正在连接,但显示空白页面(选项卡上有tensorboard徽标),并且根本没有显示任何日志活动。我仍然不知道可能是什么原因(看起来并不多,但如果有人知道请告诉我!),但我解决了它切换到ubuntu的默认浏览器。这里的确切步骤与@Olivier Moindrot的答案非常相似:

  1. 在服务器上,启动tensorboard:tensorboard --logdir=. --host=localhost --port=6006
  2. 在客户端上,打开ssh tunnel ssh -p 23 <USER>@<SERVER> -N -f -L localhost:16006:localhost:6006
  3. 打开ubuntu的Browser并访问localhost:16006。张量板页面应该加载没有太多延迟。
  4. 要检查SSH隧道是否有效工作,像this python script这样的简单回显服务器可以提供帮助:

    1. 将脚本放入服务器中的<ECHO>.py文件中,并使用python <ECHO>.py运行它。现在,服务器将在0.0.0.0:5555上监听echo脚本。
    2. 在客户端上,打开ssh tunnel ssh -p <SSH_PORT> <USER>@<SERVER> -N -f -L localhost:12345:localhost:5555
    3. 在客户端上,在用于打开隧道的同一终端中(步骤2),发出telnet localhost 12345将连接到服务器中运行的echo脚本。键入hello并按Enter键应该打印hello。如果是这种情况,您的SSH隧道正在运行。这是我的情况,并引导我得出结论,问题涉及浏览器。尝试从不同的终端连接导致终端冻结。
    4. 正如我所说,希望它有所帮助! 干杯,
      安德烈

答案 6 :(得分:4)

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

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

答案 7 :(得分:4)

--bind_all选项很有用。

$ tensorboard --logdir runs --bind_all

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

答案 8 :(得分:3)

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

library(shiny)
library(shinyjs)

ui <-  fluidPage(
  actionButton("tButton",label="Toggle Download Button"),
 downloadButton("singlePDF", label="Output Profile to PDF"),
  fluidRow(uiOutput("ui"))
  )

server <- function(session,input, output) { 
  #disabling the singlePDF button (the download PDF function)
  # Want the initial state of this button to be disabled
  shinyjs::disable(id="singlePDF")  
  observeEvent(input$tButton,{
      shinyjs::enable(id="singlePDF")  #want the button to enable
      output$ui <- renderUI(outputList)
      lnout <- tags$h2("Button pressed")
      outputList <- list(lnout)
  })
}

shinyApp(ui=ui, server=server)

然后运行ssh -L 16006:127.0.0.1:6006 user@host 命令:

tensorboard

然后,您可以轻松访问浏览器中的tensorboard --logdir=/path/to/logs

tensorboard

答案 9 :(得分:2)

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

步骤:

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

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

3)保存ngrok输出的URL:

enter image description here

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

enter image description here

特别感谢Sam Kirkiles

答案 10 :(得分:0)

在运行tensorboard时,再提供一个选项--host = 系统的IP ,然后您可以使用主机系统的http:// ip从其他系统访问它:6006

答案 11 :(得分:0)

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

只需在末尾添加-i /.ssh/id_rsa

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