実験の追跡と可観測性

Important

この機能は パブリック プレビュー段階です

AI ランタイムは、実験追跡のために MLflow とネイティブに統合され、使用率、メモリ、温度を監視するための組み込みの GPU リソース ウィンドウが含まれています。 MLflow を使用してメトリックと実行をログに記録し、ノートブックと MLflow UI でトレーニング出力を表示し、モデル チェックポイントを Unity カタログ ボリュームに保存し、コードの実行中に GPU の正常性を追跡します。

MLflow の統合

AI ランタイムは、実験の追跡、モデルのログ記録、メトリックの視覚化のために MLflow とネイティブに統合されます。

セットアップの推奨事項:

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

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

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

    from transformers import TrainingArguments
    args = TrainingArguments(
        report_to="mlflow",
        run_name="llama7b-sft-lr3e5",  # <-- MLflow run name
        logging_steps=50,
    )
    
  • サーバーレス GPU API を使用する場合、 .distributed() を呼び出すたびに、MLflow 実験の実行が自動的に作成されます。 アクティブな MLflow 実行内で呼び出された場合は、その代わりに、アクティブな親実行の下にネストされた子実行が作成されます。

    import mlflow
    
    with mlflow.start_run() as outer_run:
        ...
        run_train.distributed()  # creates a nested child run under outer_run
    
  • .distributed()で使用される実験をカスタマイズするには、mlflow.set_experiment()を呼び出す前に.distributed()を呼び出すか、MLFLOW_EXPERIMENT_NAME環境変数を設定します。 既定の実験名は /Users/{WORKSPACE_USER}/{notebook-name}です。 常に絶対パスを使用します。

    import mlflow
    mlflow.set_experiment("/Users/<username>/my-experiment")
    run_train.distributed()
    

    Alternatively:

    import os
    os.environ["MLFLOW_EXPERIMENT_NAME"] = "/Users/<username>/my-experiment"
    
  • 前の MLflow 実行を再開するには、 mlflow.start_run(run_id="<previous-run-id>")を使用します。

  • .distributed()を使用して以前の MLflow 実行を再開するには、呼び出す前にMLFLOW_RUN_ID設定します。

    os.environ["MLFLOW_RUN_ID"] = "<previous-run-id>"
    run_train.distributed()
    
  • stepMLFlowLogger パラメーターを適切なバッチ番号に設定します。 MLflow には 1,000 万のメトリック ステップの制限があるため、大規模なトレーニング実行ですべてのバッチをログに記録すると、この制限に達する可能性があります。 リソース制限に関するページを参照してください。

ログの表示

  • ノートブックの出力: トレーニング コードからの標準出力とエラーがノートブック のセル出力に表示されます。
  • MLflow ログ: MLflow 実験 UI には、トレーニング メトリック、パラメーター、成果物が表示されます。

モデルのチェックポイント処理

分散トレーニングでは、Torch Distributed Checkpoint(DCP)APIとserverless_gpu.data.UCVolumeWriterおよびserverless_gpu.data.UCVolumeReaderストレージバックエンドを使ってUnityカタログのボリュームにモデルおよび最適化状態を保存します。 非同期で保存して、チェックポイントがアップロードされる間もトレーニングを続け、中断後の失う作業を抑えるために頻繁にチェックポイントを保存しましょう。 モデルのチェックポイントはデータパイプラインの位置を捉えないため、データパイプラインもチェックポイントして、正しいデータに対して再開された実行を継続します。

チェックポイントパターンの詳細については 、「AI ランタイムにおけるトレーニングパフォーマンスとレジリエンスの改善」を参照してください。

GPU リソースの監視

コードが AI ランタイムで実行されている間に GPU の正常性と使用率を監視するには、[ GPU リソース ] ウィンドウを使用します。 このウィンドウでは、単一ノードワークロードとマルチノード ワークロードの両方がサポートされます。

ウィンドウを開くには、ノートブックを AI ランタイムに接続し、[チップ] アイコンをクリックします。右側のウィンドウの GPU リソース

各 GPU の使用率、メモリ、温度のメトリックを示す [GPU リソース] ウィンドウ。

このウィンドウには、GPU ごとに次のメトリックが表示されます。

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

このウィンドウでは、10 秒ごとにメトリックがポーリングされ、最大 2 時間の履歴が保持されます。 [更新] アイコンをクリックします。最新の値をすぐにフェッチするには、更新します。 非アクティブ状態が 5 分続くと、ウィンドウは一時停止します。を再度開いて監視を再開します。

マルチユーザー コラボレーション

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

Azure Databricksのグローバル制限

リソース制限に関するページを参照してください。