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