TensorBoard の設定

このドキュメントでは、Cloud TPU でプログラムのパフォーマンスを可視化および分析するために、TensorBoard を設定および実行する方法について説明します。

概要

TensorBoard には、TensorFlow データを視覚的に表示するための一連のツールが用意されています。モニタリングに使用することで、処理のボトルネックを特定し、パフォーマンスの改善方法を探る際に役立ちます。

前提条件

以下の手順では、Cloud Shell で Cloud TPU をすでに設定し、トレーニング アプリケーションを実行する準備ができていることを前提としています。

トレーニング準備ができたモデルがない場合は、MNIST チュートリアルから始めてください。

Cloud TPU Profiler をインストールする

モデルを実行している VM 上の cloud-tpu-profiler 2.3.0 の最新バージョンをインストールして、capture-tpu-profile スクリプトを作成します。

TensorBoard を実行する

ctpu up を実行して Compute Engine VM と Cloud TPU を作成したときに、Cloud Shell 環境のポート転送が自動的に設定され、TensorBoard が利用可能になります。トレーニング アプリケーションを実行しているシェルではなく、新しい Cloud Shell で TensorBoard を実行する必要があります。

別の Cloud Shell で TensorBoard を実行するには、次の手順に従います。

  1. 2 番目の Cloud Shell を開いて、プロファイリング データの取得と TensorBoard の起動を行います。

  2. 2 番目の Cloud Shell で、ctpu up を実行して、新しいシェルに必要な環境変数を設定します。

    $ ctpu up --name=tpu-name --zone=your-zone
    

    ctpu up で Compute Engine VM を適切に検出するには、引数 --zone が必要になることにご注意ください。

    その結果、次のような出力が返されます。

    2018/08/02 12:53:12 VM already running.
    2018/08/02 12:53:12 TPU already running.
    About to ssh (with port forwarding enabled -- see docs for details)...
    

  3. 2 番目の Cloud Shell で、Cloud Storage バケットとモデル ディレクトリの環境変数を作成します。モデル ディレクトリの変数(MODEL_DIR)には、モデル トレーニングの際にチェックポイント、サマリー、TensorBoard の出力が保存される GCP ディレクトリの名前が格納されます。例: MODEL_DIR=${STORAGE_BUCKET}/model

    (vm)$ export STORAGE_BUCKET=gs://your-bucket-name
    (vm)$ export MODEL_DIR=${STORAGE_BUCKET}/model-directory
    

モデルを実行してモニタリング出力をキャプチャし、TensorBoard に表示する

TensorBoard のトレース情報を閲覧する手段には、静的トレース ビューアとストリーミング トレース ビューアの 2 つがあります。静的トレース ビューアは、Cloud TPU ごとに 100 万件のイベントに制限されています。これよりも多くのイベントにアクセスする必要がある場合は、ストリーミング トレース ビューアを使用します。両方の設定を以下に示します。

  1. 最初の Cloud Shell で、TensorFlow モデルのトレーニング アプリケーションを実行します。たとえば、MNIST モデルを使用している場合は、MNIST チュートリアルの説明に従って mnist_tpu.py を実行します。
  2. トレース ビューアの種類として、静的トレース ビューアストリーミング トレース ビューアのいずれかを選択します。
  3. 次のいずれかの手順に従います。
  4. 静的トレース ビューア

    1. 2 番目の Cloud Shell で、次の TensorBoard コマンドを実行します。
    2. (vm)$ tensorboard --logdir=${MODEL_DIR} &
      
    3. Cloud Shell の右上部にあるバーで [ウェブでプレビュー] ボタンをクリックし、ポート 8080 を開いて TensorBoard の出力を表示します。TensorBoard UI がブラウザにタブとして表示されます。
    4. 次のいずれかの操作を行ってプロファイルをキャプチャします。
    • TensorBoard 1.15 以降を実行している場合は、TensorBoard UI の上部にある [PROFILE] のリンクをクリックします。次に TensorBoard ウィンドウの上部にある [CAPTURE PROFILE] ボタンをクリックします。
    • 詳細メニューが表示されます。ここで、TPU 出力をキャプチャする方法として IP アドレスまたは TPU 名のどちらを使用するかを指定できます。

      IP アドレスまたは TPU 名を入力してトレースデータのキャプチャを開始します。データがキャプチャされると、TensorBoard に表示されます。[Profiling Duration] と [Trace dataset ops] の値のデフォルトを変更する方法の詳細については、Cloud TPU ツールのガイドをご覧ください。

    • [CAPTURE PROFILE] ボタンを使用する代わりに、コマンドラインでプロファイルをキャプチャするには、2 番目の Cloud Shell で次のコマンドを実行します。
      (vm)$ capture_tpu_profile --tpu=tpu-name --logdir=${MODEL_DIR}
      

    ストリーミング トレース ビューア

    ストリーミング トレース ビューアの場合は、TensorBoard コマンドを実行する前に、Google Cloud Console から TPU ホストの IP アドレスをコピーします。

    1. Cloud Console のナビゲーション サイドバーで、[Compute Engine] -> [TPU] を選択し、Cloud TPU の内部 IP アドレスをコピーします。この値を、TensorBoard コマンドの --master_tpu_unsecure_channel に指定します。
    2. 次の TensorBoard コマンドを実行します。
    3. (vm)$ tensorboard --logdir=${MODEL_DIR} --master_tpu_unsecure_channel=tpu-ip-address &
      
    4. Cloud Shell の右上部にあるバーで [ウェブでプレビュー] ボタンをクリックし、ポート 8080 を開いて TensorBoard の出力を表示します。TensorBoard UI がブラウザにタブとして表示されます。
    5. ストリーミング トレース ビューアの出力をキャプチャするには、2 番目の Cloud Shell で次の capture_tpu_profile コマンドを実行します。
    6. (vm)$ capture_tpu_profile --tpu=tpu-name --logdir=${MODEL_DIR}
      

      プロファイル データのキャプチャが開始され、TensorBoard に表示されます。

次のステップ