Databricks の自動ログ記録

このページでは、さまざまな一般的な機械学習ライブラリからモデルをトレーニングするときに、モデル パラメーター、メトリック、ファイル、系列情報を自動的にキャプチャする Databricks の自動ログ記録をカスタマイズする方法について説明します。 トレーニングセッションは、MLflow のトラッキング実行として記録されます。 モデル ファイルも追跡されるため、それらを MLflow モデル レジストリに簡単にログできます。

注

AI ワークロードのトレース ログを有効にするために、MLflow では OpenAI 自動ログがサポートされています。

次の動画は、対話型 Python ノートブックでの scikit-learn モデルのトレーニング セッションにおける Databricks Autologging を示しています。 追跡情報は自動的にキャプチャされ、[Experiment Runs] (実験実行) サイドバーと MLflow UI に表示されます。

Autologging の例

要件

  • Databricks Autologging は、Databricks Runtime 10.4 LTS ML 以降、すべてのリージョンで一般提供されています。
  • Databricks 自動ログは、Databricks Runtime 9.1 LTS ML 以降の一部のプレビュー リージョンで使用できます。

動作のしくみ

対話型の Python ノートブックを Azure Databricks クラスターにアタッチすると、Databricks 自動ログによって mlflow.autolog() が 呼び出され、モデル トレーニング セッションの追跡が設定されます。 ノートブックでモデルをトレーニングすると、モデルのトレーニング情報が MLflow Tracking によって自動的に追跡されます。 このモデルのトレーニング情報がどのようにセキュリティ保護および管理されるかについては、「セキュリティとデータ管理」を参照してください。

注

自動ログは、サーバーレス コンピューティングでは自動的に有効になりません。 サーバーレス コンピューティング クラスターの場合、自動ログ機能を有効にするには、 mlflow.autolog() を明示的に呼び出す必要があります。

mlflow.autolog() 呼び出しの既定の構成は次のとおりです。

mlflow.autolog(
    log_input_examples=False,
    log_model_signatures=True,
    log_models=True,
    disable=False,
    exclusive=False,
    disable_for_unsupported_versions=True,
    silent=False
)

自動ログ記録の構成をカスタマイズできます。

使用法

Databricks Autologging を使用するには、対話型の Azure Databricks Python ノートブックを使用して、サポートされているフレームワークで機械学習モデルをトレーニングします。 Databricks の自動ログ記録では、モデルの系列情報、パラメーター、メトリックが MLflow Tracking に自動的に記録されます。 Databricks Autologging の動作をカスタマイズすることもできます。

注

Databricks Autologging は、MLflow fluent API と mlflow.start_run() を使用して作成された実行には適用されません。 このようなケースでは、自動的にログに記録されたコンテンツを MLflow 実行に保存するには、mlflow.autolog() を呼び出す必要があります。 「追加のコンテンツを追跡する」を参照してください。

ログ記録の動作をカスタマイズする

ログ記録をカスタマイズするには、mlflow.autolog() を使用します。 この関数には、モデル ログ (log_models)、ログ データセット (log_datasets)、入力例の収集 (log_input_examples)、ログ モデル署名 (log_model_signatures)、警告の構成 (silent) などの構成パラメーターが用意されています。

追加のコンテンツを追跡する

Databricks 自動ログによって作成された MLflow 実行で追加のメトリック、パラメーター、ファイル、およびメタデータを追跡するには、Azure Databricks 対話型 Python ノートブックで次の手順に従います。

  1. を指定して exclusive=False を呼び出します。
  2. Mlflow.start_run() を使用して MLflow 実行を開始します。 この呼び出しは with mlflow.start_run() でラップできます。これを行うと、実行は、完了した後に自動的に終了します。
  3. mlflow.log_param() などの MLflow Tracking メソッドを使用して、トレーニング前のコンテンツを追跡します。
  4. Databricks Autologging でサポートされているフレームワークで、1 つまたは複数の機械学習モデルをトレーニングします。
  5. mlflow.log_metric() などの MLflow Tracking メソッドを使用して、トレーニング後のコンテンツを追跡します。
  6. 手順 2 で with mlflow.start_run() を使用しなかった場合は、mlflow.end_run() を使用して MLflow の実行を終了します。

次に例を示します。

import mlflow
mlflow.autolog(exclusive=False)

with mlflow.start_run():
  mlflow.log_param("example_param", "example_value")
  # <your model training code here>
  mlflow.log_metric("example_metric", 5)

Databricks Autologging を無効にする

Azure Databricks の対話型 Python ノートブックで Databricks Autologging を無効にするには、 を指定して disable=True を呼び出します。

import mlflow
mlflow.autolog(disable=True)

管理者は、管理設定ページの [詳細設定] タブから、ワークスペース内のすべてのクラスターに対して Databricks Autologging を無効にすることもできます。 この変更を有効にするには、クラスターを再起動する必要があります。

サポートされている環境とフレームワーク

Databricks Autologging は、対話型の Python ノートブックでサポートされており、次の ML フレームワークで使用できます。

  • scikit-learn(サイキット・ラーン)
  • Apache Spark MLlib
  • TensorFlow
  • Keras
  • PyTorch Lightning
  • XGBoost
  • LightGBM
  • グルーオン
  • Fast.ai
  • statsmodels(スタッツモデルズ)
  • PaddlePaddle
  • OpenAI
  • LangChain

サポートされている各フレームワークの詳細については、MLflow の自動ログ記録に関する記事を参照してください。

MLflow トレースの有効化

MLflow トレースは、それぞれのモデル フレームワーク統合内の autolog 機能を利用して、トレースをサポートする統合のトレース サポートの有効化または無効化を制御します。

たとえば、LlamaIndex モデルを使用する際にトレースを有効にするには、 とともに log_traces=True を使用します。

import mlflow
mlflow.llama_index.autolog(log_traces=True)

注

サーバーレス コンピューティング クラスターの場合、トレースの自動ログ記録は自動的には有効になりません。 トレースする特定のフレームワーク統合 ( mlflow.openai.autolog() や mlflow.langchain.autolog()など) に対して自動ログ記録を明示的に有効にする必要があります。

自動ログ実装内でトレースが有効になっている、サポート対象の統合は次のとおりです。

セキュリティとデータ管理

Databricks Autologging で追跡されるすべてのモデル トレーニング情報は、MLflow Tracking に保存され、MLflow 実験のアクセス許可によって保護されます。 MLflow Tracking API または UI を使用して、モデル トレーニング情報を共有、変更、または削除できます。

管理

管理者は、管理設定ページの [詳細設定] タブで、ワークスペース全体のすべての対話型ノートブック セッションに対して Databricks Autologging を有効または無効にすることができます。 変更は、クラスターが再起動されるまで有効になりません。

制限事項

  • Databricks Autologging は、Azure Databricks クラスターのドライバー ノードでのみ有効になります。 ワーカー ノードから自動ログを使用するには、各ワーカーで実行されているコード内から mlflow.autolog() を明示的に呼び出す必要があります。
  • XGBoost scikit-learn の統合はサポートされていません。

Apache Spark MLlib、Hyperopt、および自動 MLflow 追跡

Databricks Autologging では、Apache Spark MLlib および Hyperopt の既存の自動 MLflow 追跡統合の動作は変更されません。

注

Databricks Runtime 10.1 ML では、Apache Spark MLlib CrossValidator および TrainValidationSplit モデルの自動 MLflow 追跡統合を無効にすると、すべての Apache Spark MLlib モデルの Databricks Autologging 機能も無効になります。