Databricks Autologging
このページでは、Databricks Autologging をカスタマイズする方法について説明します。Databricks Autologging は、さまざまな一般的な機械学習ライブラリからモデルをトレーニングするときに、モデル パラメーター、メトリック、ファイル、リネージ情報を自動的にキャプチャします。 トレーニング セッションは、MLflow 追跡の実行として記録されます。 モデル ファイルも追跡されるため、それらを MLflow モデル レジストリに簡単にログできます。
Note
生成 AI ワークロードのトレース ログを有効にするために、MLflow は OpenAI 自動ログ記録をサポートします。
次のビデオは、対話型の Python ノートブックで scikit-learn モデル トレーニング セッションが使用された Databricks Autologging を示します。 追跡情報は自動的にキャプチャされ、[Experiment Runs] (実験実行) サイドバーと MLflow UI に表示されます。
要件
- Databricks Autologging は、Databricks Runtime 10.4 LTS ML 以降、すべてのリージョンで一般提供されています。
- Databricks Autologging は、Databricks Runtime 9.1 LTS ML 以降の一部のプレビュー リージョンで使用できます。
動作のしくみ
対話型の Python ノートブックを Azure Databricks クラスターにアタッチすると、Databricks Autologging により mlflow.autolog() が呼び出され、モデル トレーニング セッションの追跡が設定されます。 ノートブックでモデルをトレーニングすると、モデルのトレーニング情報が MLflow Tracking によって自動的に追跡されます。 このモデルのトレーニング情報がどのようにセキュリティ保護および管理されるかについては、「セキュリティとデータ管理」を参照してください。
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 Autologging により、モデルの系列情報、パラメーター、およびメトリックが 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 Autologging によって作成された MLflow 実行を使用して追加のメトリック、パラメーター、ファイル、およびメタデータを追跡するには、Azure Databricks の対話型 Python ノートブックでこれらの手順を実行します。
exclusive=False
を指定して mlflow.autolog() を呼び出します。- Mlflow.start_run() を使用して MLflow 実行を開始します。
この呼び出しは
with mlflow.start_run()
でラップできます。これを行うと、実行は、完了した後に自動的に終了します。 - mlflow.log_param() などの MLflow Tracking メソッドを使用して、トレーニング前のコンテンツを追跡します。
- Databricks Autologging でサポートされているフレームワークで、1 つまたは複数の機械学習モデルをトレーニングします。
- mlflow.log_metric() などの MLflow Tracking メソッドを使用して、トレーニング後のコンテンツを追跡します。
- 手順 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
を指定して mlflow.autolog() を呼び出します。
import mlflow
mlflow.autolog(disable=True)
管理者は、管理設定ページの [詳細設定] タブから、ワークスペース内のすべてのクラスターに対して Databricks Autologging を無効にすることもできます。 この変更を有効にするには、クラスターを再起動する必要があります。
サポートされている環境とフレームワーク
Databricks Autologging は、対話型の Python ノートブックでサポートされており、次の ML フレームワークで使用できます。
- scikit-learn
- Apache Spark MLlib
- TensorFlow
- Keras
- PyTorch Lightning
- XGBoost
- LightGBM
- Gluon
- Fast.ai
- statsmodels
- PaddlePaddle
- OpenAI
- LangChain
サポートされている各フレームワークの詳細については、MLflow の自動ログ記録に関する記事を参照してください。
MLflow トレースの有効化
MLflow トレースは、それぞれのモデル フレームワーク統合内の autolog
機能を利用して、トレースをサポートする統合のトレース サポートの有効化または無効化を制御します。
たとえば、LlamaIndex モデルの使用時にトレースを有効にするには、log_traces=True
を含めた mlflow.llama_index.autolog() を使用します。
import mlflow
mlflow.llama_index.autolog(log_traces=True)
自動ログ実装内でトレースが有効になっている、サポート対象の統合は次のとおりです。
セキュリティとデータ管理
Databricks Autologging で追跡されるすべてのモデル トレーニング情報は、MLflow Tracking に保存され、MLflow 実験のアクセス許可によって保護されます。 MLflow Tracking API または UI を使用して、モデル トレーニング情報を共有、変更、または削除できます。
管理
管理者は、管理設定ページの [詳細設定] タブで、ワークスペース全体のすべての対話型ノートブック セッションに対して Databricks Autologging を有効または無効にすることができます。 変更は、クラスターが再起動されるまで有効になりません。
制限事項
- Databricks Autologging は、Azure Databricks ジョブではサポートされていません。 ジョブから自動ログ記録を使用するには、mlflow.autolog() を明示的に呼び出すことができます。
- 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 機能も無効になります。