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

実験の追跡と観察可能性

備考

プレビュー

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

エクスペリメント tracking and observability are built into AI ランタイム.MLflow is a single place for a ランの パラメーター、 メトリクス、 GPU system メトリクス、 Log、 and アーティファクト.Every ラン lives in an MLflow エクスペリメント that you can share with your team, and a 組み込み GPU リソース pane shows live GPU utilization, memory, and temperature while your code runs.

このページの主要なポイント:

  • MLflow は、AI ランタイムのエクスペリメント(メトリクス、パラメーター、システムメトリクス、Log、アーティファクト)の統合インターフェイスです。
  • Workloads submitted with the Databricks CLI get an MLflow ラン automatically.In ノートブック and scripts, call mlflow.start_run() or mlflow.autolog().
  • 組み込みの GPU リソースペインには、使用率、メモリ、温度が表示されます。

MLflow がディープラーニング向けに提供する機能​

  • メトリクスとパラメーター :トレーニング損失、評価メトリクス、学習率、ハイパーパラメータをLogに記録し、MLflow UI でラン間で比較します。
  • System metrics : GPU、CPU、およびメモリ使用率は、ランの System metrics tabのトレーニング メトリクスとともに記録されます。
  • Logs : ジョブのランからのドライバー出力(ランの Logs tab内)。
  • アーティファクト and models : Store model files, configs, and other outputs with the ラン.アーティファクト can be stored in a Unity Catalog volume.
  • 共有とコラボレーション :エクスペリメントはワークスペース オブジェクトです。チームメイトにエクスペリメントへのアクセス権を付与して、ランを共有し、結果を比較します。MLflow エクスペリメントを使用したトレーニング ランの整理を参照してください。
  • フレームワーク統合 :Hugging Face Transformers、PyTorch Lightning、その他のライブラリからMLflowに直接ログを記録します。

MLflow 3 におけるディープラーニングのパターンについては、MLflow 3 ディープラーニング ワークフローを参照してください。

MLflowコードを追加する必要がありますか?​

ワークロードの送信方法によって異なります。

ラン方法

MLflowランが自動的に作成されましたか?

追加する内容

Databricks CLI (databricks air run)

はい。ワークロード YAML の experiment_name でエクスペリメントを設定すると、システムメトリクスと Logs がコードなしで取得されます。

オプション。カスタム メトリクスを MLFLOW_RUN_ID のランにログに記録します。詳細については、MLflow とジョブのラン ページでのランの追跡を参照してください。

Serverless GPU API(@distributed)

はい。Each .distributed() call creates a ラン.

オプション。関数内からカスタムメトリクスをログに記録します。

ノートブック or script on a single node

No. Autologging isn't enabled automatically on Serverless コンピュート.

Call mlflow.start_run() and log メトリクス, or call mlflow.autolog().

ラン方法

MLflowランが自動的に作成されましたか?

追加する内容

Databricks CLI (databricks air run)

はい。ワークロード YAML の experiment_name でエクスペリメントを設定すると、システムメトリクスと Logs がコードなしで取得されます。

オプション。カスタム メトリクスを MLFLOW_RUN_ID のランにログに記録します。詳細については、MLflow とジョブのラン ページでのランの追跡を参照してください。

Serverless GPU API(@distributed)

はい。Each .distributed() call creates a ラン.

オプション。関数内からカスタムメトリクスをログに記録します。

ノートブック or script on a single node

No. Autologging isn't enabled automatically on Serverless コンピュート.

Call mlflow.start_run() and log メトリクス, or call mlflow.autolog().

使い始める​

MLflow 3.7以降を使用してください。次の例は、ノートブック セルまたはPythonスクリプトにコピーしてすぐに使用できます。

トレーニングループからメトリクスをログに記録する​

Python
import mlflow

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

with mlflow.start_run(run_name="baseline-lr3e-4"):
mlflow.log_params({"learning_rate": 3e-4, "batch_size": 32, "epochs": 3})
for epoch in range(3):
train_loss = train_one_epoch(model, train_loader, optimizer) # your training code
val_loss = evaluate(model, val_loader)
mlflow.log_metrics({"train_loss": train_loss, "val_loss": val_loss}, step=epoch)

Use autologging​

PyTorch Lightning の場合は、トレーニングの前に mlflow.pytorch.autolog() を呼び出します。サポートされているその他のライブラリについては、mlflow.autolog() を呼び出してください。

Python
import mlflow

mlflow.pytorch.autolog()

with mlflow.start_run(run_name="lightning-baseline"):
trainer.fit(model, datamodule=datamodule)

Hugging Face TransformersからLogsを記録する​

report_to="mlflow"を設定します。run_name引数でMLflowランの名前を設定します。

Python
from transformers import TrainingArguments

args = TrainingArguments(
output_dir="/Volumes/<catalog>/<schema>/<volume>/checkpoints",
report_to="mlflow",
run_name="llama7b-sft-lr3e5",
logging_steps=50,
)

複数の GPU からの Logs​

分散トレーニングでは、すべてのプロセスがトレーニング コードを実行します。Logs from rank 0 only so each metric is recorded one time: の翻訳を調整: 各メトリクスが 1 回だけ記録されるように、ランク 0 からのみLogsに記録します。

Python
import os

import mlflow

if int(os.environ.get("RANK", "0")) == 0:
mlflow.log_metric("train_loss", loss, step=step)

ベストプラクティス​

  • stepにグローバルバッチやエポックなどの意味のある値を設定し、すべてのバッチではなく一定の間隔(例:50ステップごと)でログに記録します。MLflow は、ランごとのメトリクス ステップの数に上限を設定します。リソース制限を参照してください。
  • /Users/<username>/my-experiment や /Workspace/Shared/<team>/my-experiment などの絶対エクスペリメントパスを使用します。共有するエクスペリメントは共有フォルダに配置してください。
  • 以前のランを再開するには、その ID を渡します:mlflow.start_run(run_id="<previous-run-id>")。

Serverless GPU API​

Serverless GPU API を使用する場合、.distributed() を呼び出すたびに自動的に MLflow ランが作成されます。defaultのエクスペリメントは /Users/{WORKSPACE_USER}/{notebook-name} です。

  • アクティブな MLflow ラン内で .distributed() を呼び出すと、そのランの下にネストされた子ランが作成されます。

    Python
    import mlflow

    with mlflow.start_run() as outer_run:
    run_train.distributed() # creates a nested child run under outer_run
  • 別のエクスペリメントを使用するには、.distributed() の前に mlflow.set_experiment() を呼び出すか、MLFLOW_EXPERIMENT_NAME 環境変数を設定します。常に絶対パスを使用してください。

    Python
    import os

    import mlflow

    mlflow.set_experiment("/Users/<username>/my-experiment")
    # or: os.environ["MLFLOW_EXPERIMENT_NAME"] = "/Users/<username>/my-experiment"
    run_train.distributed()
  • 以前のランを再開するには、.distributed() を呼び出す前に MLFLOW_RUN_ID を設定します。

    Python
    os.environ["MLFLOW_RUN_ID"] = "<previous-run-id>"
    run_train.distributed()

閲覧ログ​

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

Logs を表示できない場合​

MLflow ラン ページの Log tabには、MLflow ランに関連付けられた Databricks ジョブ ランからのログが Streamされるため、アクセスはそのジョブの権限によって制御されます。tabに You don't have access to these Logs と表示される場合は、十分な権限がありません。

Access to the ラン in MLflow doesn't imply access to the ジョブ.You can hold the MLflow エクスペリメント permission and still be denied the Logs.To get access, ask a user with Can Manage permissions or a ワークスペース admin to grant you at least Can View on the ジョブ.See Control access to a ジョブ for how ジョブ permissions are granted.

GPU リソースを監視する​

GPUリソース ペインは、 ノートブックセッション 用の便利な機能です。MLflowのセットアップなしでリアルタイムのGPUのヘルスと使用率を表示するため、ノートブックセッションでMLflowエクスペリメントが作成されない場合に特に便利です。ランに関連付けられたGPU、CPU、およびメモリのメトリクスの永続的なレコードを保持するには、代わりにMLflowの システム メトリクス tabを使用します。ペインは、シングルノードとマルチノードの両方のワークロードをサポートします。

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

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

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

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

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

Databricksのグローバル制限​

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