コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

Cloud TPU ツールでモデルをプロファイリングする

サポートされているフレームワークのいずれかと TensorBoard を使用する方法については、次のドキュメントをご覧ください。

TensorBoard をインストールする

TensorBoard はデフォルトで、Cloud TPU VM に TensorFlow の一部としてインストールされます。TensorFlow を手動でインストールすることもできます。どちらの場合も、追加の依存関係が必要になる場合があります。次のコマンドを実行してインストールします。

pip3 install -r /usr/share/tpu/models/official/requirements.txt

Cloud TPU TensorBoard プラグインのインストール

TPU VM に SSH 接続します。

   $ gcloud compute tpus tpu-vm ssh your-vm --zone=your-zone
   

次のコマンドを実行します。

  pip3 install --upgrade "cloud-tpu-profiler>=2.3.0"
  pip3 install --user --upgrade -U "tensorboard>=2.3"
  pip3 install --user --upgrade -U "tensorflow>=2.3"

TensorFlow Profiler サーバーを起動する

トレーニング ループを開始する前に、スクリプトに次のコードを追加します。

tf.profiler.experimental.server.start(6000)

これにより、TPU VM で TensorFlow Profiler サーバーが起動します。

トレーニング スクリプトを開始する

トレーニング スクリプトを実行し、モデルがアクティブにトレーニングされていることを示す出力が表示されるまで待ちます。この表示はコードやモデルによって異なります。Epoch 1/100 のような出力を探します。または、GCP Console の Cloud TPU ページに移動して TPU を選択し、CPU 使用率のグラフを表示することもできます。これは TPU の使用率ではありませんが、TPU によってモデルをトレーニングされていることを示す良いサインです。

TensorBoard サーバーを起動する

新しいターミナル ウィンドウを開き、ポート転送を使用して TPU VM に SSH で接続します。これで、ローカル ブラウザが TPU VM 上で実行されている TensorBoard サーバーと通信できるようになります。

 gcloud compute tpus tpu-vm ssh your-vm --zone=us-central1-a --ssh-flag="-4 -L 9001:localhost:9001"
 

開いたターミナル ウィンドウで TensorBoard を実行し、TensorBoard で --logdir フラグを使用してプロファイリング データを書き込むディレクトリを指定します。次に例を示します。

TPU_LOAD_LIBRARY=0 tensorboard --logdir your-model-dir --port 9001

TensorBoard でウェブサーバーが起動され、その URL が表示されます。

Serving TensorBoard on localhost; to expose to the network, use a proxy or pass --bind_all
TensorBoard 2.3.0 at http://localhost:6006/ (Press CTRL+C to quit)

ウェブブラウザを開き、TensorBoard の出力に表示されている URL に移動します。TensorBoard ページの右上にあるプルダウン メニューから [Profile] を選択します。

画像

TPU VM でプロファイルをキャプチャする

  1. [CAPTURE PROFILE] ボタンを選択します。
  2. [TPU 名] ラジオボタンをオンにします。
  3. TPU 名を入力します。
  4. CAPTUREボタンを選択します。

TensorBoard でプロファイル データを表示する

プロファイルをキャプチャすると、TensorBoard に overview_page が表示されます。左側のペインの [ツール] で、[trace_viewer] を選択します。

画像

[ツール] メニューにリストされている他のツールは、現在 TPU VM ではサポートされていません。これらのツールの詳細については、TPU ノードでのモデルのプロファイリングをご覧ください。

トレース ビューア

トレース ビューアは、[Profile] で利用可能な Cloud TPU パフォーマンス分析ツールです。このツールは、Chrome トレース イベント プロファイリング ビューアを使用するため、Chrome ブラウザでのみ機能します。

トレース ビューアには次のタイムラインが表示されます。

  • TensorFlow モデルによって実行された演算の実行期間。
  • 演算を実行したシステムの部分(TPU またはホストマシン)。通常、ホストマシンがトレーニング データを前処理して TPU に転送する infeed 演算を実行し、TPU は実際のモデル トレーニングを行います。

トレース ビューアを使用して、モデル内のパフォーマンスの問題を特定し、この問題を解決する対策を講じることができます。たとえば、大まかには、インフィードとモデル トレーニングのどちらに大部分の時間を費やしているかどうかを識別できます。さらに詳しく見ると、実行に最も時間がかかっている TensorFlow 演算も識別できます。

トレース ビューアは、Cloud TPU ごとに 1M イベントに制限されています。他のイベントを評価する場合は、代わりにストリーミング トレース ビューアを使用してください。

トレース ビューアのインターフェース

トレース ビューアを開くには、TensorBoard に移動して画面上部の [Profile] タブをクリックし、[Tools] プルダウンから [trace_viewer] を選択します。ビューアが開き、最新の実行結果が表示されます。

画像

この画面には、次の主要な要素(上で番号が付けられています)が表示されます。

  1. [Runs] プルダウン。トレース情報をキャプチャしたすべての実行が表示されます。デフォルトのビューは最新の実行ですが、プルダウンを開いて別の実行を選択することもできます。
  2. [Tools] プルダウン。さまざまなプロファイリング ツールを選択します。
  3. [Host] プルダウン。Cloud TPU セットを含むホストを選択します。
  4. [Timeline] ペイン。Cloud TPU とホストマシンで実行された演算が時系列で表示されます。
  5. [Details] ペイン。[Timeline] ペインで選択した演算の詳細情報が表示されます。

では、[Timeline] ペインについて詳しく見てみましょう。

画像

[Timeline] ペインには、次の要素が含まれます。

  1. 上部バー。さまざまな補助コントロールが表示されます。
  2. 時間軸。トレースの開始位置を基準にした時間が表示されます。
  3. セクションとトラックラベル。各セクションには複数のトラックが含まれています。左側にある三角形をクリックすると、セクションの展開や折りたたみを行うことができます。システムで処理中の要素ごとに 1 つのセクションがあります。
  4. ツールセレクタ。トレース ビューアを操作するさまざまなツールが用意されています。
  5. イベント。これらのイベントは、演算が実行されていた時間やトレーニング ステップなどのメタイベントの期間を示します。
  6. 垂直タブバー。Cloud TPU での使用は適しません。このバーは、Chrome が提供する汎用のトレース ビューアツールの一部で、さまざまなパフォーマンス分析タスクに使用されます。

セクションとトラック

トレース ビューアには、次のセクションがあります。

  • TPU ノードごとに 1 つのセクション。ラベルとして TPU チップの数とチップ内の TPU ノードの数が使用されます(例: 「Chip 2: TPU Core 1」)。TPU ノードのセクションには、次のトラックが含まれます。
    • Step。TPU で実行されていたトレーニング ステップの期間が表示されます。
    • TensorFlow Ops。TPU 上で実行される TensorFlow 演算が表示されます。
    • XLA Ops。TPU 上で実行された XLA 演算が表示されます。1 つの演算が 1 つ以上の XLA 演算に変換されます。XLA コンパイラにより、XLA 演算が TPU 上で実行されるコードに変換されます。
  • ホストマシンの CPU 上で実行されるスレッドのセクション。「Host Threads」というラベルが付いています。このセクションには、CPU スレッドごとに 1 つのトラックが含まれます。注: セクション ラベルと一緒に表示される情報は無視してもかまいません。

タイムラインのツールセレクタ

TensorBoard のタイムライン ツールセレクタを使用して、タイムライン ビューを操作できます。タイムライン ツールをクリックするか、次のキーボード ショートカットを使用してツールをアクティブにできます。タイムライン ツールセレクタを移動するには、上部の点線部分をクリックしてセレクタを目的の場所にドラッグします。

タイムライン ツールの使い方は次のとおりです。

選択ツール
イベントをクリックして選択します。複数のイベントを選択するにはドラッグします。選択したイベントに関する詳細情報(名前、開始時間、期間)が、詳細ペインに表示されます。

パンツール
ドラッグしてタイムライン ビューを水平方向または垂直方向にパンします。

ズームツール
水平方向(時間軸)に沿って上にドラッグするとズームインし、下にドラッグするとズームアウトします。マウスカーソルの水平位置により、ズームが行われる中心が決まります。

注: ズームツールには、マウスカーソルがタイムライン ビューの外部にあるときにマウスボタンを放すと、ズームがアクティブのままになるという既知のバグがあります。これが発生した場合は、タイムライン ビューを軽くクリックすると、ズームが解除されます。

タイミング ツール
水平方向にドラッグして、時間間隔をマークできます。間隔の長さは時間軸に表示されます。間隔を調整するには、間隔の両端をドラッグします。間隔をクリアするには、タイムライン ビュー内の任意の場所をクリックします。

他のいずれかのツールを選択しても、間隔はマークされたままになることにご注意ください。