マルチスライス環境のプロファイリング
Cloud TPU マルチスライス環境は、データセンター ネットワーク(DCN)を介して通信する複数の TPU スライスで構成されています。DCN 集計統計ツールを使用すると、マルチスライス環境が DCN ネットワークをどの程度効率的に使用しているかに関する情報を確認できます。具体的には、DCN Collective Stats ツールを使用すると、次のことができます。
- 収集されたデータに基づいてスライス間ネットワークのパフォーマンスを表示、把握する
- パフォーマンスのボトルネックを特定する
- モデルのパフォーマンスを最適化する
DCN 集計統計ツールのすべての指標は、TPU ごとに生成されます。
用語
DCN 集計統計ツールは、マルチスライス環境内の TPU スライス間で発生する通信を説明する指標を表示します。TPU ランタイムがスライス間通信を開始すると、一連のオペレーションが使用されます。
send
- ホストを中断してダイレクト メモリアクセス(DMA)を開始し、ホストにバッファを提供してデータ転送を開始します。
send-done
- データ転送が完了したことをホストに通知します。
recv
- ホストが転送されたデータで埋める空のバッファを提供します。
recv-done
- データが受信されたことをホストに通知します。
send
オペレーションが発生するとグループが開始され、一致する recv-done
オペレーションが発生すると完了します。
スラック時間
グループがデータを送受信できる時間の尺度。これには、send
、send-done
、recv
、recv-done
オペレーションは含まれません。たとえば、次のタイムラインがあるとします。
この例では、スラック時間は次のように計算されます。
スラック時間 = t1 + t2 + t3
スラック時間を増やすと、TPU がまとめて停滞する可能性が低くなります。別のシャーディング方法を選択すると、スラック時間を長くできます。
ストール期間
送信、送信完了、受信、受信完了のオペレーションで集約が費やす平均時間。ただし、データの送信時間は含まれません。たとえば、次のタイムラインがあるとします。
この例では、ストール期間は次のように計算されます。
ストール期間 = tsend + tsend-done + trecv + trecv-done
観測時間
send
オペレーションと recv-done
オペレーションの間の所要時間(データの送受信時間を含む)。たとえば、次のタイムラインがあるとします。
観測時間は次のように計算されます。
観測時間 = tsend + t1 + tsend-done + t2 + trecv + t3 + trecv-done
発生回数
プロファイルの期間中にコレクションが開始および完了した回数。send
オペレーションが発生するとグループが開始され、一致する recv-end
オペレーションが発生すると完了します。この指標に含まれるには、send
オペレーションとそれに一致する recv-done
オペレーションがプロファイルの期間内に発生している必要があります。
集計されたストールの合計
プロファイル期間中に集計が TPU を停止した合計時間。集計されたストールの合計は次のように計算されます。
集計されたストールの合計 = ストール期間 × 発生回数
送信されたデータサイズ
プロファイル期間中に集計に対してネットワーク経由で転送されたデータの量。
必要な帯域幅
指定されたスラック内でデータを送信するために必要な帯域幅。この指標を使用すると、プロファイルの期間中にネットワーク帯域幅を競合するコレクションの数を確認できます。必要な帯域幅は次のように計算されます。
必要な帯域幅 = 送信データサイズ ÷ スラック時間
ツールのステータス
次の表に、DCN 集計統計ツールに表示される各指標に必要な TensorFlow または TPU ランタイム バージョンを示します。
DCN の集計統計情報 | サポートされている TPU ランタイム バージョンの TensorFlow |
---|---|
スラック時間 | TensorFlow 2.15.0、tensorboard 2.15.1、tensorboard-plugin-profile 2.15.0 |
ストール期間 | TensorFlow 2.15.0、tensorboard 2.15.1、tensorboard-plugin-profile 2.15.0 |
観測時間 | TensorFlow 2.15.0、tensorboard 2.15.1、tensorboard-plugin-profile 2.15.0 |
発生回数 | TensorFlow 2.15.0、tensorboard 2.15.1、tensorboard-plugin-profile 2.15.0 |
集計されたストールの合計 | tf-nightly、tb-nightly、tbp-nightly |
送信されたデータサイズ | tf-nightly、tb-nightly、tbp-nightly |
必要な帯域幅 | tf-nightly、tb-nightly、tbp-nightly |
DCN 集計統計ツールを分析する方法
- TensorBoard サーバーを実行し、[プロファイル] タブに移動します。
- DCN 集計統計ツールのテーブルを [集計されたストールの合計] の降順で並べ替えます。
- [集計されたストールの合計] が最も高い DCN グループ名を特定します。このグループの集計されたストール期間が他のグループと比較して大幅に長い場合は、DCN グループにボトルネックがあることを示している可能性があります。
- DCN コレクタに必要な帯域幅にコア数を掛けます。v4 TPU ホストごとに 8 個のコアがあるため、集計に必要な帯域幅は表示される値の 8 倍になります。必要な帯域幅が TPU の最大ネットワーク帯域幅を超える場合は、ネットワークが輻輳している可能性があります。必要な帯域幅を削減するには、使用するシャーディング メカニズムを変更してみてください。シャーディング メカニズムの詳細については、Cloud TPU マルチスライスの概要をご覧ください。
- HLO ダンプを生成し、コンパイラの問題がないか確認します。重複する HLO オペレーションのスケジューリングを可能にするには、
send
オペレーションとrecv-done
オペレーションを分散することをおすすめします。より多くの HLO オペレーションを重複させると、TPU の停止時間が短縮されます。 - トレース ビューアで、集計されたストールの合計が最大である DCN グループの
recv-done
オペレーションの期間を確認します。転送時間が長い場合、通常、recv-done
オペレーションはデータを取得するためにネットワークでブロックされるため、帯域幅のボトルネックが発生する可能性があります。 recv-done
オペレーションの時間がスラック時間に対してそれほど長くない場合は、ハードウェアに問題がある可能性があります。