Cloud TPU ノードのモニタリング
このガイドでは、Google Cloud Monitoring を使用して Cloud TPU ノードをモニタリングする方法について説明します。Google Cloud Monitoring は、Cloud TPU とそのホスト Compute Engine から指標とログを自動的に収集します。これらのデータを使用して、Cloud TPU と Compute Engine の状態をモニタリングできます。
指標を使用すると、CPU 使用率、ネットワーク使用量、MXU 使用率など、時間の経過に伴う数値を追跡できます。ログは特定の時点でのイベントをキャプチャします。ログエントリは、独自のコード、Google Cloud サービス、サードパーティ アプリケーション、Google Cloud インフラストラクチャで作成されます。ログベースの指標を作成して、ログエントリに存在するデータから指標を生成することもできます。指標値またはログエントリに基づいてアラート ポリシーを設定することもできます。
このガイドでは、Google Cloud Monitoring について説明し、次の方法を示します。
- Cloud TPU の指標を表示する
- Cloud TPU 指標アラート ポリシーを設定する
- Cloud TPU ログのクエリを実行する
- ログに基づく指標を作成し、アラートを設定してダッシュボードを可視化する。
前提条件
このドキュメントは、Google Cloud Monitoring に関する基本的な知識があることを前提としています。Google Cloud Monitoring の生成と操作を開始する前に、Compute Engine VM リソースと Cloud TPU リソースを作成する必要があります。 詳細については、Cloud TPU のクイックスタートをご覧ください。
指標
Google Cloud の指標は、Compute Engine VM と Cloud TPU ランタイムによって自動的に生成されます。次の指標は Cloud TPU ノードによって生成されます。
cpu/utilization
memory/usage
network/received_bytes_count
network/sent_bytes_count
tpu/mxu/utilization
tpu/tensorcore/idle_duration
CPU 使用率
cpu/utilization
指標は、Cloud TPU ワーカーの現在の CPU 使用率を追跡し、割合として示します。値は通常、0.0~100.0 ですが、100.0 を超える場合もあります。60 秒ごとにサンプリングされます。値が生成されてから表示されるまでに、最大 180 秒かかることがあります。
メモリ使用量
memory/usage
指標は、Cloud TPU VM で現在使用されているメモリを追跡します(バイト単位)。この指標は 60 秒ごとにサンプリングされます。値が生成されてから表示されるまでに、最大 180 秒かかることがあります。
ネットワーク受信バイト数
network/received_bytes_count
指標は、Cloud TPU VM がネットワーク経由で特定の時点で受信したデータの累積バイト数を追跡します。
値が生成されてから表示されるまでに、最大で 180 秒かかることがあります。
ネットワーク送信バイト数
network/sent_bytes_count
指標は、Cloud TPU VM がネットワーク経由で特定の時点で送信した累積バイト数を追跡します。値が生成されてから表示されるまでに、最大 180 秒かかることがあります。
TensorCore のアイドル期間
tpu/tensorcore/idle_duration
指標は、各 TPU チップの TensorCore がアイドル状態だった秒数を追跡します。この指標は、使用しているすべての TPU の各チップで利用できます。TensorCore が使用されると、アイドル状態の期間の値はゼロにリセットされます。TensorCore が使用されなくなった場合、アイドル状態の期間の値が増え始めます。
次のグラフは、1 つのワーカーを持つ v2-8 Cloud TPU VM の tpu/tensorcore/idle_duration
指標を示しています。各ワーカーには 4 つのチップがあります。この例では、4 つのチップすべてで tpu/tensorcore/idle_duration
に同じ値があるため、グラフが重なり合って表示されます。
MXU 使用率
tpu/mxu/utilization
指標は、TPU ワーカーの現在の MXU 使用率を追跡し、割合として示します。値は通常、0.0~100.0 の数値です。60 秒ごとにサンプリングされます。サンプリング後、データは最長 180 秒間表示されません。
Cloud TPU によって生成される指標の完全なリストについては、Cloud TPU の指標をご覧ください。
指標の表示
指標は、Google Cloud コンソールの Metrics Explorer を使用して表示できます。
Metrics Explorer で [指標を選択] をクリックし、Cloud TPU Worker
を検索します。[アクティブなリソースと指標のみを表示] がオンになっている場合は、現在生成されている指標のみが表示されます。[Cloud TPU ワーカー] をクリックして、使用可能な指標を表示します。
curl HTTP 呼び出しを使用して指標にアクセスすることもできます。
projects.timeSeries.query ドキュメントの [試してみる] ボタンを使用して、指定した期間内の指標の値を取得します。
- 名前を projects/{project-name} の形式で入力します。
- [リクエストの本文] セクションにクエリを追加します。次は、特定のゾーンにおける過去 5 分間
fetch tpu_worker | filter zone = 'us-central2-b' | metric tpu.googleapis.com/tpu/tensorcore/idle_duration | within 5m"
のアイドル時間指標を取得するサンプルクエリです。 - [実行] をクリックして HTTP POST メッセージの結果を取得します。
このクエリをカスタマイズする方法については、Monitoring Query Language リファレンスのドキュメントをご覧ください。
条件が満たされたときにアラートを送信するように Google Cloud Monitoring に指示するアラート ポリシーを作成できます。
アラートの作成
このセクションの手順は、TensorCore のアイドル期間指標のアラート ポリシーを追加する方法の例を示しています。この指標が 24 時間を超えると、Cloud Monitoring は登録されたメールアドレスにメールを送信します。
- Monitoring Console に移動
- ナビゲーション パネルで [アラート] をクリックします。
- [通知チャネルの編集] をクリックします。
- [メール] で [新規追加] をクリックします。
- メールアドレスと表示名を入力し、[保存] をクリックします。
- [CREATE POLICY] をクリックします。
- [指標を選択] をクリックして、[TensorCore のアイドル期間] を選択し、[適用] をクリックします。
- [次へ]、[しきい値] の順にクリックします。
- [アラート トリガー] で [任意の時系列の違反] を選択します。
- [しきい値の位置] で [しきい値を下回っています] を選択します。
- [Tしきい値] に「
86400000
」と入力します。 - [次へ] をクリックします。
- [通知チャンネル] でメール通知チャンネルを選択し、[OK] をクリックします。
- アラート ポリシーの名前を入力します。
- [次へ]、[ポリシーを作成] の順にクリックします。
TensorCore のアイドル状態の期間が 24 時間を超えると、指定したメールアドレスにメールが送信されます。
ロギング
ログエントリは、Google Cloud サービス、サードパーティ サービス、ML フレームワーク、またはコードによって書き込まれます。ログビューアまたは Logs API を使用してログを表示できます。Google Cloud のロギングの詳細については、Google Cloud Logging をご覧ください。
ログ エクスプローラで、次のリソース タイプを選択できます。
- [Cloud TPU ワーカー] -> [ゾーン] -> [ノード ID]
- [監査対象リソース] -> [Cloud TPU] -> [API](
google.cloud.tpu.v1.Tpu.CreateNode
、google.cloud.tpu.v1.Tpu.DeleteNode
、google.cloud.tpu.v1.Tpu.UpdateNode
)
Cloud TPU ワーカーのログには、特定のゾーンの特定の Cloud TPU ワーカーに関する情報(Cloud TPU ワーカーで使用可能なメモリ量(system_available_memory_GiB
)など)が含まれます。
監査対象リソースログには、特定の Cloud TPU API の呼び出し日時と呼び出しを行ったユーザーに関する情報が記録されます。たとえば CreateNode
、UpdateNode
、DeleteNode
などが該当します。
ML フレームワークは stdout
と stderr
にログを生成できます。これらのログは環境変数によって制御され、トレーニング スクリプトによって読み取られます。
Google Cloud Logging にコードでログを書き込むことができます。詳細については、標準ログを書き込むと構造化ログを書き込むをご覧ください。
Cloud TPU ログの表示
- Google Cloud ログビューアに移動する
- [リソース] プルダウンをクリック
- [Cloud TPU ワーカー] をクリック
- ゾーンを選択
- 関心のある Cloud TPU を選択
- [適用] をクリックします。ログはクエリ結果に表示されます
監査対象リソースのログを表示するには:
- Google Cloud ログビューアに移動する
- [リソース] プルダウンをクリック
- [監査対象リソース]、[Cloud TPU] の順にクリック
- 関心のある Cloud TPU API を選択
- [適用] をクリックします。ログはクエリ結果に表示されます
google.cloud.tpu.v1.Tpu
で始まる API を選択します
Google Cloud ログをクエリする
Google Cloud コンソールでログを表示すると、そのページでデフォルトのクエリが実行されます。クエリを表示するには、Show query
切り替えスイッチを選択します。デフォルト クエリを変更することも、新しいクエリを作成することもできます。詳細については、ログ エクスプローラでクエリを作成するをご覧ください。
監査対象リソースログのログ出力について
任意のログエントリをクリックして展開すると、protoPayload
という名のフィールド表示されます。
protoPayload
を展開すると、いくつかのサブフィールドが表示されます。
- logName: ログの名前
- protoPayload -> @type: ログの種類
- resourceName: Cloud TPU の名前。
- methodName: 呼び出されたメソッドの名前(監査ログのみ)
- request -> @type: リクエストのタイプ
- request -> node: Cloud TPU ノードの詳細
- request -> node_id: TPU の名前
- severity: ログの重大度
Cloud TPU ワーカーログのログ出力について
任意のログエントリをクリックして展開すると、jsonPayload
という名のフィールド表示されます。
jsonPayload
を展開すると、いくつかのサブフィールドが表示されます。
- accelerator_type: アクセラレータ タイプ
- consumer_project: Cloud TPU が存在するプロジェクト
- evententry_timestamp: ログが生成された時刻
- system_available_memory_GiB: Cloud TPU ワーカーの使用可能なメモリ(0~350 GiB)。
ログベースの指標を作成する
このセクションでは、モニタリング ダッシュボードとアラートの設定に使用するログベースの指標を作成する方法について説明します。プログラムでログベースの指標を作成する方法については、Cloud Logging REST API を使用してプログラムでログベースの指標を作成するをご覧ください。
次の例では、system_available_memory_GiB サブフィールドを使用して、Cloud TPU ワーカーで利用できるメモリをモニタリングするためのログベースの指標を作成する方法を示します。
- ログ エクスプローラに移動します。
クエリボックスに次のクエリを入力して、プライマリ Cloud TPU ワーカーで system_available_memory_GiB が定義されているすべてのログエントリを抽出します。
resource.type=tpu_worker resource.labels.project_id=your-project resource.labels.zone=your-tpu-zone resource.labels.node_id=your-tpu-name resource.labels.worker_id=0 logName=projects/your-project/logs/tpu.googleapis.com%2Fruntime_monitor jsonPayload.system_available_memory_GiB:*
[指標を作成] をクリックして、指標エディタを表示します。
[指標タイプ] で [ディストリビューション] を選択します。
指標の名前、説明(省略可)、測定単位を入力します。[名前] フィールドと [説明] フィールドにそれぞれ「matrix_unit_utilization_percent」と「MXU 使用率」を入力します。
フィルタには、ログ エクスプローラに入力したスクリプトが事前に入力されています。
[指標を作成] をクリックします。
[指標を調べる] をクリックして、新しい指標を表示します。指標が表示されるまでに数分かかることがあります
Cloud Logging REST API を使用してプログラムでログベースの指標を作成する
Cloud Logging API を使用してログベースの指標を作成することもできます。詳細については、分布指標の作成をご覧ください。
ログベースの指標を使用してダッシュボードとアラートを作成する
ダッシュボードは指標を可視化するのに役立ちます(最大 2 分遅れ)。アラートは、エラーの発生時に通知を送信するのに役立ちます。詳細については、カスタム ダッシュボードを管理すると指標ベースのアラート ポリシーを作成するをご覧ください。
ダッシュボードの作成
Cloud Monitoring で Tensorcore のアイドル期間指標のダッシュボードを作成するには、次の手順を実施します。
- Monitoring Console に移動
- ナビゲーション パネルで [ダッシュボード] をクリックします。
- [ダッシュボードを作成]、[グラフを追加] の順にクリックします。
- 追加するグラフのタイプを選択します。この例では、[折れ線] を選択します。
- ダッシュボードのタイトルを入力します。
- [リソースと指標] の下にあるボタンをクリックします。
- リソース / 指標のリストを下にスクロールし、[Cloud TPU ワーカー] -> [TPU] -> [TensorCore のアイドル期間] を選択します。
- [適用] をクリックします。
- ダッシュボードの内容をフィルタするには、[ダッシュボード フィルタを作成] をクリックします。
- [ラベル] フィールドで、[project_id] をプロジェクトに設定します
- [追加] をクリックして、[ゾーン] を TPU を作成したゾーンに設定します
- node_id に対して別のフィルタを追加して、Cloud TPU 名を指定します