メガスケール統計ツール

メガスケール統計ツールを使用すると、データセンター ネットワーク(DCN)を介して通信する複数の TPU スライスにまたがるワークロードのスライス間通信パフォーマンスを分析できます。

Megascale 統計ツールに表示されるすべての指標は、TPU ごとに生成されます。

サポートされているプラットフォーム

Megascale 統計ツールは TPU でのみサポートされています。

このツールには、TPU スライス間の通信に関連する指標が表示されます。これには、次のオペレーションが含まれます。

  • send: ホストを中断してダイレクト メモリアクセス(DMA)を開始し、ホストにバッファを提供してデータ転送を開始します。
  • send-done: データ転送が完了したことをホストに通知します。
  • recv: ホストが転送されたデータで埋める空のバッファを提供します。
  • recv-done: データが受信されたことをホストに通知します。

グループsend オペレーションによって開始され、一致する recv-done オペレーションによって完了します。データの実際の送信は、送信オペレーションの完了後に行われます。send-done オペレーションは、データが送信された後に行われます。同様に、recv オペレーションの完了後にデータが受信されます。recv-done オペレーションは、データが受信された後に行われます。

インターフェース コンポーネント

このツールには、次の列を含むテーブルが表示されます。各プロファイルされた集団オペレーションに対して 1 つの行が表示されます。

  • DCN グループ名: XLA によって割り当てられます。
  • Recv op name: TPU recv-done オペレーション名。これにより、対応する集団 TPU オペレーションをトレース ビューアで簡単に検索できます。
  • 送信オペレーション名: TPU send オペレーション名。
  • スラック時間: 集計がデータを送信する必要があるネットワークに依存しない時間として定義されます。これは、sendsend-donerecvrecv-done オペレーションを除き、グループがデータを送受信できる時間の尺度です。スラック時間を増やすと、TPU がまとめて停滞する可能性が低くなります。たとえば、次のタイムラインがあるとします。

スラック時間を示すタイムライン

Slack time is calculated in this example as:

Slack time = t<sub>1</sub> + t<sub>2</sub> + t<sub>3</sub>
  • 観測された期間: 各コレクティブで観測された期間。これは、send オペレーションの開始から対応する recv-done オペレーションの終了までの間隔として計算されます(データの送受信にかかった時間を含む)。たとえば、次のタイムラインがあるとします。

観測時間を示すタイムライン

Observed duration is calculated as:

Observed duration = t<sub>send</sub> + t<sub>1</sub> + t<sub>send-done</sub> + t<sub>2</sub> + t<sub>recv</sub> + t<sub>3</sub> + t<sub>recv-done</sub>
  • 停止時間: 集計が TPU を停止した時間。これは、データ送信に費やされた時間を含まない、sendsend-donerecvrecv-done オペレーションに費やされた合計時間です。たとえば、次のタイムラインがあるとします。

ストール期間を示すタイムライン

Stall duration is calculated in this example as:

Stall duration = t<sub>send</sub> + t<sub>send-done</sub> + t<sub>recv</sub> + t<sub>recv-done</sub>
  • 発生回数: プロファイルの期間中にコレクションが開始および完了した合計回数。この指標に含まれるには、send オペレーションとそれに一致する recv-done オペレーションがプロファイルの期間内に発生している必要があります。
  • 集計されたストールの合計: プロファイル期間中に集計が TPU を停止した合計時間。集計されたストールの合計は次のように計算されます。
    • 集計ストールの合計 = ストール期間 × 発生回数
  • 送信されたデータサイズ: 集計に対してネットワーク経由で送信されたデータの量。XLA オペレーションの形状に基づいて計算されます。
  • 必要な帯域幅: 指定されたスラック内でデータを送信するために必要な帯域幅。この指標を使用すると、プロファイルの期間中にネットワーク帯域幅を競合するコレクションの数を確認できます。必要な帯域幅は次のように計算されます。
    • 必要な帯域幅 = 送信データサイズ ÷ スラック時間

Megascale 統計ツールのデータを分析する

ツールに表示されたデータを分析するには:

  1. テーブルを Aggregated Total Stall の降順で並べ替えます。
  2. Aggregated Total Stall が最も高い DCN グループ名を特定します。他の値と比較して大幅に高い値は、ボトルネックを示している可能性があります。
  3. DCN 集計統計ツールの Required Bandwidth にコア数を掛けます(例: v4 TPU ホストあたり 8 個)。この値が TPU の最大ネットワーク帯域幅を超える場合は、ネットワークの輻輳を示している可能性があります。必要な帯域幅を削減するには、シャーディング メカニズムを変更してみてください。
  4. HLO ダンプを生成して、コンパイラの問題を確認します。send オペレーションと recv-done オペレーションを分散すると、重複する HLO オペレーションのスケジューリングが可能になり、TPU の停止時間を短縮できます。
  5. Trace Viewer で、集計ストールの合計が最大であるグループの recv-done オペレーションの期間を確認します。転送時間が長い場合、通常、recv-done オペレーションはネットワークでブロックされるため、帯域幅のボトルネックが発生する可能性があります。
  6. recv-done オペレーションの時間が Slack 時間に対してそれほど長くない場合は、ハードウェアに問題がある可能性があります。