TensorFlowのTensorBoardをGoogleCloudのDockerに表示しようとしています。
http://tensorflow.org/how_tos/summaries_and_tensorboard/index.md
_tensorboard --logdir ./
_
ApacheをGoogleCloudで実行しています(最初のコンテナー「ai-Unicorn」にある可能性があります。Dockerは独自のコンテナー「docker-playground」を作成しました)。 Google Cloudのデフォルトページは http://104.197.119.57/ で確認できます。
私は次のようにGoogleCloudでTensorBoardを起動します。
root@6cf64fd299f0:/# tensorboard --logdir ./ Starting TensorBoard on port 6006 (You can navigate to http://localhost:6006)
ポート6006を使用して、「カスタムポートのブラウザウィンドウで開く」というGoogle CloudSSHオプションを試しました。
「ポート6006のVMに接続できません。」と表示されます。
Google CloudからTensorBoardを表示する正しい方法は何ですか?
デフォルト までに、TensorBoardは127.0.0.1
でリクエストを処理します。これは、同じマシンで実行されているプロセスにのみアクセスできます。 TensorBoardを--Host 0.0.0.0
で起動すると、リモートインターフェースでもリクエストが処理されるため、リモートで接続できるはずです。
$ tensorboard --logdir ./ --Host 0.0.0.0
「カスタムポートのブラウザウィンドウで開く」ではTensorBoardサーバーに接続されないことに注意してください。このオプションは、サーバー上の[〜#〜] ssh [〜#〜]サーバーに接続するために使用されます。非標準ポート。 Google Cloud Platform docs VMからポートを公開する方法に関する情報があります。 VMへのリモートアクセスのためにTCPポート6006での接続を許可する必要があります。 ここでの手順 に従って、Dockerコンテナからポート6006を公開する必要がある場合もあります。 =。
EDIT:Dockerの構成に役立ついくつかのステップバイステップの説明を追加しました。ここにはいくつかの問題があり、どれが失敗しているかを判断することはできません。
Dockerコンテナを起動するときにポート転送を構成します。
(vm)$ docker run -p 0.0.0.0:7007:6006 -it b.gcr.io/tensorflow/tensorflow
これにより、接続がVM)のポート7007からDockerコンテナの6006に転送されます(他の値も可能です)。
Dockerコンテナ内からTensorBoardに接続できることを確認します。
(container)$ tensorboard --logdir ./ --Host 0.0.0.0 --port 6006 &
(container)$ curl http://localhost:6006/
2番目のコマンドは、HTMLをコンソールに出力する必要があります。
VMのシェルで、コンテナーで実行されているTensorBoardインスタンスに接続できることを確認します。
(vm)$ curl http://localhost:7007/
コマンドは、同じHTMLをコンソールに出力する必要があります。
ローカルクライアントがVMのポート7007に接続できるようにGoogleCloudファイアウォールを構成します。
(client)$ gcloud compute firewall-rules create tensorboard --allow tcp:7007
これで、クライアントのWebブラウザーでTensorBoardに接続できるようになります。
TensorBoardを表示するためにDockerを使用する必要はありません。ただし、Dockerを使用する場合は、Dockerイメージ内でTensorBoardを実行するだけです。
秘訣は、デフォルトのTensorBoardtcpポート6006への外部アクセスを許可することです。
次の実用的なソリューションを試して、Google CloudVMにTensorBoardを表示しました。
gcloud認証に合格していることを確認してください。
gcloud auth login
tcpポート6006へのパブリックアクセスを許可する
gcloud compute Firewall-rules create tensorboard-port --allow tcp:6006
VMでTensorBoardを実行します
tensorboard --logdir = workspace/train /
外部IPアドレスを使用して、VMの外部のTensorBoardにアクセスします。
オープンアドレス http:// your_vm_external IP:6006 /、
例えば http://104.196.140.145:6006/ 、ここで104.196.140.145はVMの外部IPアドレスです。
もう1つのオプションは、ngrok
を使用してトンネリングすることです。参照: Google ColabでTensorboardを使用できますか?
$ 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)