このページでは、Cloud Profiler を有効にして、カスタム トレーニング ジョブでモデルのトレーニング パフォーマンスをデバッグする方法について説明します。
モデルのトレーニングは、計算費用が高額になることがあります。Profiler を使用すると、トレーニング オペレーションのリソース消費量を把握し、モデルのトレーニング パフォーマンスをモニタリングして最適化できます。この情報により、パフォーマンスのボトルネックを特定して修正し、モデルをより早く低コストでトレーニングできます。
準備
- TensorFlow 2.4 以降を使用していることを確認します。
cloud_profiler
プラグインを含む Vertex AI SDK をインストールします。ローカルの Docker コンテナから、次のコマンドを実行します。pip install google-cloud-aiplatform[cloud_profiler]
Vertex AI TensorBoard インスタンスを用意する必要があります。手順については、Vertex AI TensorBoard インスタンスを作成するをご覧ください。
roles/storage.admin
ロールとroles/aiplatform.user
ロールを持つサービス アカウントを用意する必要があります。手順については、必要な権限が付与されたサービス アカウントを作成するをご覧ください。Vertex AI TensorBoard のログを保存する Cloud Storage バケットを用意する必要があります。手順については、Vertex AI TensorBoard のログを保存する Cloud Storage バケットを作成するをご覧ください。
プロファイラを有効にする
トレーニング ジョブで Profiler を有効にするには、トレーニング スクリプトに次の内容を追加します。
最上位のインポートに
cloud_profiler
のインポートを追加します。from google.cloud.aiplatform.training_utils import cloud_profiler
次の行を追加して
cloud_profiler
プラグインを初期化します。cloud_profiler.init()
例
トレーニング スクリプトの例を次に示します。
#!/usr/bin/env python
import tensorflow as tf
import argparse
import os
from google.cloud.aiplatform.training_utils import cloud_profiler
import time
"""Train an mnist model and use cloud_profiler for profiling."""
def _create_model():
model = tf.keras.models.Sequential(
[
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(128, activation="relu"),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10),
]
)
return model
def main(args):
strategy = None
if args.distributed:
strategy = tf.distribute.MultiWorkerMirroredStrategy()
mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
if args.distributed:
strategy = tf.distribute.MultiWorkerMirroredStrategy()
with strategy.scope():
model = _create_model()
model.compile(
optimizer="adam",
loss=tf.keras.losses.sparse_categorical_crossentropy,
metrics=["accuracy"],
)
else:
model = _create_model()
model.compile(
optimizer="adam",
loss=tf.keras.losses.sparse_categorical_crossentropy,
metrics=["accuracy"],
)
# Initialize the profiler.
cloud_profiler.init()
# Use AIP_TENSORBOARD_LOG_DIR to update where logs are written to.
tensorboard_callback = tf.keras.callbacks.TensorBoard(
log_dir=os.environ["AIP_TENSORBOARD_LOG_DIR"], histogram_freq=1
)
model.fit(
x_train,
y_train,
epochs=args.epochs,
verbose=0,
callbacks=[tensorboard_callback],
)
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument(
"--epochs", type=int, default=100, help="Number of epochs to run model."
)
parser.add_argument(
"--distributed", action="store_true", help="Use MultiWorkerMirroredStrategy"
)
args = parser.parse_args()
main(args)
Profiler ダッシュボードにアクセスする
Profiler を有効にするようにトレーニング スクリプトを構成したら、Vertex AI TensorBoard インスタンスでトレーニング スクリプトを実行します。
トレーニング スクリプトで、次の構成を確認します。
BASE_OUTPUT_DIR:
を、トレーニング スクリプトによって生成された Vertex AI TensorBoard ログを保存する Cloud Storage バケットに設定します。'serviceAccount':
を、roles/storage.admin
ロールとroles/aiplatform.user
ロールを付与して作成したサービス アカウントに設定します。'tensorboard':
を、このトレーニング ジョブで使用する Vertex AI TensorBoard インスタンスの完全修飾名に設定します。完全修飾名の形式は次のとおりです。projects/PROJECT_NUMBER_OR_ID/locations/REGION/tensorboards/TENSORBOARD_INSTANCE_ID
Google Cloud コンソールから Profiler ダッシュボードにアクセスする方法は 2 つあります。
- [カスタムジョブ] ページから。
- [テスト] ページから。
[カスタムジョブ] ページから Profiler ダッシュボードにアクセスする
トレーニング ジョブが「完了」状態でも、以下の方法で Profiler ダッシュボードにアクセスできます。
Google Cloud コンソールで、[トレーニング] ページの [カスタムジョブ] タブに移動します。
作成したトレーニング ジョブの名前をクリックして、ジョブの詳細ページに移動します。
[TensorBoard を開く] をクリックします。
[プロフィール] タブをクリックします
[テスト] ページから Profiler ダッシュボードにアクセスする
トレーニング ジョブが「実行中」状態の場合にのみ、この方法を使用して Profiler ダッシュボードにアクセスできます。
Google Cloud コンソールで、[Vertex AI Experiments] ページに移動します。
作成したトレーニング ジョブのリージョンを選択します。
トレーニング ジョブの名前の横にある [TensorBoard を開く] をクリックします。
[プロフィール] タブをクリックします
プロファイリング セッションをキャプチャする
プロファイリング セッションをキャプチャするには、トレーニング ジョブが Running の状態である必要があります。Vertex AI TensorBoard インスタンスの [Profile] タブで、次の操作を行います。
- [Capture profile] をクリックします。
[Profile Service URL(s) or TPU name] フィールドに、次のように入力します。
workerpool0-0
[Address type] では [IP address] を選択します。
キャプチャをクリックします。
ノートブック
次のステップ
- Profiler ツールの詳細と、これらのツールを使用してモデルのパフォーマンスを最適化する方法については、Tensorflow Profiler のドキュメントをご覧ください。