簡體   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