Managed Training を使用すると、Vertex AI TensorBoard を使用してトレーニング ログを準リアルタイムで可視化できます。ワークロードを構成してログを Cloud Storage バケットに保存するだけで、ログは分析用に TensorBoard インターフェースに自動的にストリーミングされます。
前提条件
始める前に、次の準備をしてください。
- 実行中の Managed Training クラスタ。
- TensorBoard ログを保存する Cloud Storage バケット。このバケットは、TensorBoard インスタンスと同じリージョンに存在する必要があります。設定手順については、Cloud Storage バケットを作成するをご覧ください。
- Vertex AI TensorBoard インスタンス。作成手順については、Vertex AI TensorBoard インスタンスを作成するをご覧ください。
- 適切な IAM 権限。Cloud Storage FUSE がストレージ バケットに対して読み取りと書き込みを行えるようにするには、クラスタの VM で使用されるサービス アカウントに Storage オブジェクト ユーザー(
roles/storage.objectUser)ロールが必要です。
TensorBoard のアップロードを有効にする
ジョブの TensorBoard インテグレーションを構成するには、Slurm ジョブの送信で --extra フラグを使用して次の引数を渡します。
tensorboard_base_output_dir: ログのアップロード先の Cloud Storage パスを指定します。例:gs://my-bucket/my-logstensorboard_url: Vertex AI TensorBoard インスタンス、テスト、実行の URL を指定します。インスタンスのみが指定されている場合は、新しいテストと実行が作成されます。省略すると、プロジェクトのデフォルトの TensorBoard インスタンスが使用されます。例:projects/123/locations/us-central1/tensorboards/456
例
# Using specific tensorboard instance
sbatch --extra="tensorboard_base_output_dir=<your-cloud-storage-dir>,tensorboard_url=projects/<project-id>/locations/<location>/tensorboards/<tensorboard-instance-id>" your_script.sbatch
トレーニング ジョブからのログの書き込み
トレーニング スクリプト内で、AIP_TENSORBOARD_LOG_DIR 環境変数にアクセスします。この変数には、スクリプトが TensorBoard ログを書き込む一意の Cloud Storage パスが指定されます。
パスは次の構造になっています。
gs://<your-cloud-storage-path>/<cluster-id>-<cluster-uuid>/tensorboard/job-<job-id>/
次の例は、ジョブを構成する Slurm 送信スクリプトと、環境変数を読み取ってログを書き込む Python トレーニング スクリプトという 2 つの主要コンポーネントを含む完全なワークフローを示しています。
Slurm ジョブ スクリプト(simple_job.sbatch):
#!/bin/bash
#SBATCH --job-name=tensorboard-simple-test
#SBATCH --output=tensorboard-simple-test-%j.out
# Activate your Python virtual environment if needed
# source /path/to/your/venv/bin/activate
python3 simple_logger.py
Python スクリプト(simple_logger.py):
import tensorflow as tf
import os
# Get the log directory from the environment variable
log_dir = os.environ.get("AIP_TENSORBOARD_LOG_DIR")
print(f"Writing TensorBoard logs to: {log_dir}")
writer = tf.summary.create_file_writer(log_dir)
with writer.as_default():
for step in range(10):
# Simulate some metrics
loss = 1.0 - (step * 0.1)
accuracy = 0.6 + (step * 0.04)
# Log the metrics
tf.summary.scalar('loss', loss, step=step)
tf.summary.scalar('accuracy', accuracy, step=step)
writer.flush()
print(f"Step {step}: loss={loss:.4f}, accuracy={accuracy:.4f}")
writer.close()
print(f"--- Finished writing metrics to {log_dir} ---")
リアルタイム ログ同期
実行中のジョブの指標を可視化するには、トレーニング コードでサマリー ライターを定期的に閉じて再作成する必要があります。これは、gcsfuse がログファイルを閉じた後にのみ Cloud Storage に同期するためです。この「フラッシュ」手法により、ジョブが完了する前に中間結果が TensorBoard コンソールに表示されます。
Vertex AI TensorBoard の表示
ジョブを送信したら、 Vertex AI Experiments ページに移動して、進行状況をモニタリングできます。 Cloud de Confiance
次のステップ
Vertex AI TensorBoard でトレーニング指標の分析、モデルグラフの可視化、パフォーマンスのプロファイリングを行い、問題をデバッグしてモデルを最適化し、完全な MLOps ワークフローに統合できるようにモデルを準備します。
- 推論用にモデルをデプロイする: トレーニング済みモデルを Gemini Enterprise Agent Platform エンドポイントにデプロイして、オンライン推論リクエストを処理します。
- モデルのライフサイクルを管理する: Gemini Enterprise Agent Platform Model Registry を使用して、トレーニング済みモデルのバージョン管理、追跡、比較を行います。これにより、モデルのガバナンスと再現性を維持できます。
- モデル モニタリングを設定する: デプロイ後、モデルのパフォーマンスのドリフトとデータの異常をモニタリングして、本番環境でのモデルの有効性を維持します。
- 費用を最適化してクラスタを管理する: クラスタの使用率を定期的に確認し、ライフサイクルを管理(使用していない場合はクラスタを削除するなど)して、予約済みハードウェアの費用を最適化します。