13

我正在尝试在 Google Cloud 上的 Docker 上显示来自 TensorFlow 的 TensorBoard。

http://tensorflow.org/how_tos/summaries_and_tensorboard/index.md

tensorboard --logdir ./

我在 Google Cloud 上运行 Apache(它可能在我的第一个容器“ai-unicorn”中,Docker 制作了自己的容器“docker-playground”)。我可以在http://104.197.119.57/看到 Google Cloud 的默认页面。

我像这样在 Google Cloud 上启动 TensorBoard:

root@6cf64fd299f0:/# tensorboard --logdir ./ Starting TensorBoard on port 6006 (You can navigate to http://localhost:6006)

我使用端口 6006 尝试了名为“在自定义端口上的浏览器窗口中打开”的 Google Cloud SSH 选项。

它显示:“我们无法连接到端口 6006 上的 VM。”

从 Google Cloud 查看 TensorBoard 的正确方法是什么?

4

3 回答 3

26

默认情况下,TensorBoard 在 上提供请求127.0.0.1,只有在同一台机器上运行的进程才能访问。如果您使用 启动 TensorBoard --host 0.0.0.0,它还将为远程接口上的请求提供服务,因此您应该能够远程连接到它:

$ tensorboard --logdir ./ --host 0.0.0.0

请注意,“在自定义端口上的浏览器窗口中打开”不会将您连接到 TensorBoard 服务器 - 此选项用于连接到非标准端口上的SSH服务器。Google Cloud Platform 文档包含有关如何从您的 VM 公开端口的信息。您需要允许 TCP 端口 6006 上的连接才能远程访问您的 VM。您可能还需要按照此处的说明从 Docker 容器中公开端口 6006 。

编辑:添加了一些分步说明来帮助您进行 Docker 配置。这里有几个问题,无法判断哪一个失败了。

  1. 启动 Docker 容器时配置端口转发:

    (vm)$ docker run -p 0.0.0.0:7007:6006 -it b.gcr.io/tensorflow/tensorflow
    

    这会将连接从 VM 上的端口 7007 转发到 Docker 容器中的 6006。(其他值也是可能的。)

  2. 确保您可以从 Docker 容器内连接到 TensorBoard:

    (container)$ tensorboard --logdir ./ --host 0.0.0.0 --port 6006 &
    (container)$ curl http://localhost:6006/
    

    第二个命令应该将一些 HTML 打印到控制台。

  3. 在 VM 上的 shell 中,确保您可以连接到容器中运行的 TensorBoard 实例:

    (vm)$ curl http://localhost:7007/
    

    该命令应将相同的 HTML 打印到控制台。

  4. 配置 Google Cloud 防火墙以允许您的本地客户端连接到 VM 上的端口 7007。

    (client)$ gcloud compute firewall-rules create tensorboard --allow tcp:7007
    

    您现在应该可以在客户端的 Web 浏览器中连接到 TensorBoard。

于 2015-11-21T00:22:09.663 回答
11

您不必使用 Docker 来显示 TensorBoard。但是,如果您确实想使用 Docker,只需在 Docker 映像中运行 TensorBoard。

诀窍是允许外部访问默认的 TensorBoard tcp 端口 6006。

我尝试了以下工作解决方案来在我的 Google Cloud VM 中显示 TensorBoard。

  1. 确保您通过了 gcloud 身份验证:

    gcloud 身份验证登录

  2. 允许公共访问 tcp 端口 6006

    gcloud 计算防火墙规则创建 tensorboard-port --allow tcp:6006

  3. 在你的虚拟机上运行 TensorBoard

    张量板--logdir=工作区/火车/

  4. 使用外部 IP 地址访问 VM 外部的 TensorBoard:

    打开地址http://your_vm_external IP:6006/,

    例如http://104.196.140.145:6006/,其中 104.196.140.145 是我的虚拟机的外部 IP 地址。

享受 TensorBoard

于 2017-02-05T06:35:46.837 回答
2

另一种选择是使用ngrok隧道。请参阅:我可以将 Tensorboard 与 Google Colab 一起使用吗?

$ from jupyter notebook
ps = !ps -ax
is_tensorboard_running = len([f for f in ps if "tensorboard" in f ]) > 0

is_ngrok_running = len([f for f in ps if "ngrok" in f ]) > 0
print("tensorbord={}, ngrok={}".format(is_tensorboard_running, is_ngrok_running))

if not is_ngrok_running:  
#    grok should be installed in /content/ngrok
  get_ipython().system_raw('/content/ngrok http 6006 &')
  is_ngrok_running = True

# get public url for tensorboard
tensorboard_url = !curl -s http://localhost:4040/api/tunnels | python3 -c \
    "import sys, json; print(json.load(sys.stdin)['tunnels'][0]['public_url'])"    
print("tensorboard url=", tensorboard_url)
于 2018-02-02T04:17:01.740 回答