繁体   English   中英

在Google Cloud上的Docker上查看Tensorboard

[英]View Tensorboard on Docker on Google Cloud

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

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

tensorboard --logdir ./

我在Apache 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的正确方法是什么?

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

$ 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上的外壳中,确保可以连接到在容器中运行的TensorBoard实例:

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

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

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

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

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

您不必使用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. 在您的VM上运行TensorBoard

    张量板--logdir = workspace / train /

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

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

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

享受TensorBoard

另一个选择是使用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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM