メインコンテンツまでスキップ

実験の追跡と観察可能性

備考

パブリックプレビュー

単一ノードタスク用のAI Runtimeはパブリック プレビュー段階にあります。 マルチ GPU ワークロード用の分散トレーニングAPIベータ版のままです。

このページでは、MLflow の使用方法、ログの表示方法、モデルチェックポイントの管理方法、および AI Runtime 上での GPU リソースの監視方法について説明します。

MLflowとの連携

AI Runtime 、エクスペリメントの追跡、モデルのログ記録、メトリクスの視覚化のためにMLflowとネイティブに統合します。

設定に関する推奨事項:

  • MLflowをバージョン3.7以降にアップグレードし、ディープラーニングのワークフローパターンに従ってください。

  • PyTorch Lightningの自動ログ記録を有効にする:

    Python
    import mlflow
    mlflow.pytorch.autolog()
  • MLflowの実行名をカスタマイズするには、モデルのトレーニングコードをmlflow.start_run() APIスコープ内にカプセル化します。これにより、実行名を制御でき、以前の実行から再開できるようになります。 mlflow.start_run(run_name="your-custom-name")またはMLflowをサポートするサードパーティ ライブラリ ( Hugging Face Transformers など) のrun_name懸念を使用して実行名をカスタマイズできます。 それ以外の場合、デフォルトの実行名はjobTaskRun-xxxxxです。

    Python
    from transformers import TrainingArguments
    args = TrainingArguments(
    report_to="mlflow",
    run_name="llama7b-sft-lr3e5", # <-- MLflow run name
    logging_steps=50,
    )
  • サーバレス GPU API は、デフォルト名 /Users/{WORKSPACE_USER}/{get_notebook_name()} で MLflow エクスペリメントを自動的に起動します。ユーザーは、環境変数 MLFLOW_EXPERIMENT_NAME でこれを上書きできます。MLFLOW_EXPERIMENT_NAME 環境変数には常に絶対パスを使用してください:

    Python
    import os
    os.environ["MLFLOW_EXPERIMENT_NAME"] = "/Users/<username>/my-experiment"
  • 以前の実行結果からMLFLOW_RUN_IDを設定することで、以前のトレーニングを再開します。

    Python
    mlflow.start_run(run_id="<previous-run-id>")
  • MLFlowLoggerstep問題を適切なバッチ数に設定します。 MLflowは 1,000 万メトリクス ステップの制限があります。大規模なトレーニング実行ですべてのバッチをログに記録すると、この制限に達する可能性があります。 リソース制限を参照してください。

閲覧ログ

  • ノートブックの出力 — 標準出力とトレーニング コードからのエラーがノートブックのセル出力に表示されます。
  • MLflowログ — MLflowエクスペリメント UI には、トレーニング メトリクス、欠点、およびアーティファクトが表示されます。

モデルチェックポイント

分散トレーニングの場合、他のUnity Catalogオブジェクトと同じガバナンスを提供するUnity Catalog ボリュームに、モデルチェックポイントを非同期で保存およびロードします。serverless_gpu.dataパッケージのUCVolumeWriterUCVolumeReaderを、Torch Distributed Checkpoint (DCP) APIと組み合わせて使用します。これらのストレージバックエンドは、高速なローカルディレクトリ(/tmp、サーバレスGPUノードではNVMeでバックアップされています)を介してすべてのI/Oをステージングし、Unity Catalogボリュームにアップロードまたはダウンロードします。これは、チェックポイントシャードをFUSEマウントに直接書き込むよりも高速です。メタデータの原子性は保持されます。書き込み側は、データシャードのアップロードが完了した後にのみ、.metadataファイルを公開します。

注記

UCVolumeWriter``UCVolumeReader、およびUCVolumeDatasetにはGPU環境5以上が必要です (サーバレスGPU Python API 0.5.16+)。

中断によって失われる作業を最小限に抑えるために、チェックポイントは十分に頻繁に作成しますが、I/Oオーバーヘッドによってトレーニングが遅くならないようにしてください。チェックポイントは30分から1時間ごとに1つ設定することを目指し、ステップ時間とチェックポイントサイズに基づいて間隔を調整します。

トレーニングを続行しながら、バックグラウンドでチェックポイントをアップロードするには、UCVolumeWriterstorage_writer として dcp.async_save に渡します。非同期保存ではプロセスグループにCPUバックエンドが必要なため、torch.distributed.init_process_group(backend="cpu:gloo,cuda:nccl", ...)で初期化してください:

Python
import torch.distributed.checkpoint as dcp
from serverless_gpu.data import UCVolumeWriter

checkpoint_path = "/Volumes/my_catalog/my_schema/model/checkpoints"
writer = UCVolumeWriter(checkpoint_path)

future = dcp.async_save(state_dict, storage_writer=writer)
# ...continue training...
future.result() # blocks until the upload lands on the UC volume

UCVolumeReaderを使用してチェックポイントを読み込みます。

Python
from serverless_gpu.data import UCVolumeReader

reader = UCVolumeReader(checkpoint_path)
dcp.load(state_dict, storage_reader=reader)

データパイプラインのチェックポイント

モデルのチェックポイントは、モデルとオプティマイザーの状態をキャプチャしますが、データセット内でのデータパイプラインの位置はキャプチャしません。そのため、再開された実行は、停止した正確なサンプルに早送りすることはできません。再開する際には、この点を考慮してください:エポックの境界から再開するか、または、再開時にそれらをスキップできるように、処理済みのサンプルやシャードを独自のトレーニング状態で追跡してください。

GPUリソースの監視

AI Runtimeでコードを実行している間の GPU リソース ペインを使用して、GPU の健全性と使用率を監視します。 このペインは、シングルノードとマルチノードの両方のワークロードをサポートしています。

このペインを開くには、ノートブックをAI Runtimeに接続し、チップのアイコン。右側のペインの GPU リソース

各 GPU の使用率、メモリ、温度メトリクスを示す GPU リソース ペイン。

このペインには、GPU ごとに次のメトリクスが表示されます。

  • GPU使用率
  • GPUメモリ使用量
  • 温度

このペインは10秒ごとにメトリクスをポーリングし、最大2時間分の履歴を保持します。クリック更新アイコン。最新の値をすぐに取得するには、 ページを更新してください 。5 分間何も操作しないと、ペインが停止します。再度開くとモニタリングが再開されます。

複数ユーザーによるコラボレーション

  • すべてのユーザーが共有コード(ヘルパーモジュールや環境YAMLファイルなど)にアクセスできるようにするには、 /Workspace/Users/<your_email>/のようなユーザー固有のフォルダではなく、 /Workspace/Sharedに保存してください。
  • 現在開発中のコードについては、ユーザー固有のフォルダ/Workspace/Users/<your_email>/内の Git フォルダを使用し、リモート Git リポジトリにプッシュしてください。これにより、複数のユーザーがユーザー固有のクローンとブランチを持つことができ、同時にバージョン管理にはリモートのGitリポジトリを使用できます。 DatabricksでGitを使用する際のベストプラクティスを参照してください。
  • 共同作業者はノートブックを共有したり、コメントしたりできます。

Databricksのグローバル制限

リソース制限を参照してください。