Databricks Autologging | Databricks on AWS [2022/1/26時点]の翻訳です。
本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。
Databricks Autologgingは、Databricksにおける機械学習トレーニングセッションに対して、自動のエクスペリメントトラッキングの体験を提供するために、MLflowの自動ロギングを拡張するノーコードのソリューションです。Databricks Autologgingを用いることで、様々な著名ない機械学習ライブラリのモデルをトレーニングする際、モデルのパラメーター、メトリクス、ファイル、リネージュ情報は自動で記録されます。トレーニングのセッションは、MLflowトラッキングのランとして記録されます。モデルのファイルもトラッキングされるので、容易にMLflowのモデルレジストリに登録し、MLflowのモデルサービングを用いてリアルタイムスコアリングを行うためにデプロイすることができます。
以下の動画では、インタラクティブなPythonノートブックにおけるscikit-learnモデルのトレーニングセッションに対するDatabricks Autologgingを示しています。トラッキング情報は自動で記録され、Experiment RunsサイドバーとMLflow UIに表示されます。
要件
- Databricks Autologgingは、Databricks機械学習ランタイム9.0以降、全ての地域でGA(Generally Available)となっています。
- Databricks機械学習ランタイム9.0以降では、特定のプレビューの地域で利用することができます。
動作原理
DatabricksクラスターにインタラクティブPythonノートブックをアタッチした際、Databricks Autologgingは皆様のモデルトレーニングセッションのトラッキングをセットアップするために、自動でmlflow.autolog()を呼び出します。ノートブックでモデルのトレーニングを行う際、モデルトレーニングの情報は自動でMLflowトラッキングによって追跡されます。このモデルトレーニング情報がどのようにセキュアに管理されるのかに関しては、セキュリティ、データ管理を参照ください。
mlflow.autolog()呼び出しに対するデフォルト設定は以下のようになります。
mlflow.autolog(
log_input_examples=False,
log_model_signatures=True,
log_models=True,
disable=False,
exclusive=True,
disable_for_unsupported_versions=True,
silent=True
)
オートロギングの設定のカスタマイズを行うことも可能です。
使用法
DatabricksのAutologgingを使用するには、インタラクティブなDatabricks Pythonノートブックを用いて、サポートされているフレームワークで機械学習モデルのトレーニングを行います。Databricks Autologgingは自動でモデルのリネージュ情報、パラメーター、そしてメトリクスをMLflowトラッキングに記録します。オートロギングの設定のカスタマイズを行うことも可能です。
注意
Databricks Autologgingはmlflow.start_run()
を用いたMLflow fluent APIを用いて作成されたランには適用されません。この場合、MLflowランに自動でロギングされたコンテンツを保存するにはmlflow.autolog()
を呼び出す必要があります。追加コンテンツの追跡をご覧ください。
ロギングの挙動のカスタマイズ
ロギングをカスタマイズするには、mlflow.autolog()を使用します。この関数では、モデルロギング(log_models
)を有効化するための設定パラメーター(log_input_examples
)を提供し、入力サンプルを収集し、警告の設定(silent
)などを行います。
追加コンテンツの追跡
Databricks Autologgingによって作成されるMLflowランの追加のメトリクス、パラメーター、ファイル、メタデータを追跡するには、DatabricksのインタラクティブPythonノートブックで以下のステップを実行します。
-
exclusive=False
を指定してmlflow.autolog()を呼び出します。 -
mlflow.start_run()を用いてMLflowのランをスタートします。この呼び出しを
with mlflow.start_run()
の中にラップすることができます。これを行う際、処理が完了するとランは自動で終了します。 - トレーニング前のコンテンツをトラッキングするために、mlflow.log_param()のようなMLflowトラッキングのメソッドを使用します。
- Databricks Autologgingでサポートされているフレームワークで一つ以上の機械学習モデルをトレーニングします。
- トレーニング後のコンテンツをトラッキングするために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_param("example_metric", 5)
Databricks Autologgingの無効化
DatabricksのインタラクティブPythonノートブックでDatabricks Autologgingを無効化するには、disable=True
を指定してmlflow.autolog()を呼び出します。
import mlflow
mlflow.autolog(disable=True)
管理者は、AdminコンソールのAdvancedタブでワークスペース上の全てのクラスターでDatabricks Autologgingを無効化することができます。この変更を反映するにはクラスターを再起動する必要があります。
サポートされる環境、フレームワーク
Databricks AutologgingはインタラクティブPythonノートブックでサポートされており、以下のMLフレームワークで使用することができます。
- scikit-learn
- Apache Spark MLlib
- TensorFlow
- Keras
- PyTorch Lightning
- XGBoost
- LightGBM
- Gluon
- Fast.ai (バージョン 1.x)
- statsmodels
サポートされるそれぞれのフレームワークの詳細については、MLflow automatic loggingを参照ください。
セキュリティ、データ管理
Databricks Autologgingによって追跡される全てのモデルトレーニング情報はMLflowトラッキングに格納され、MLflowエクスペリメントのアクセス権によってセキュリティ保護されます。MLflowトラッキングのAPIあるいはUIを用いて、モデルトレーニング情報の共有、修正、削除を行うことができます。
管理
管理者は、AdminコンソールのAdvancedタブでワークスペースにおける全てのインタラクティブノートブックのセッションでDatabricks Autologgingを有効化・無効化することができます。この変更を反映するにはクラスターを再起動する必要があります。
制限
- Databricks AutologgingはDatabricks機械学習ランタイム8.4以下、Databricksランタイムではサポートされていません。これらのバージョンのランタイムでオートロギングを使用するには、明示的にmlflow.autolog()を呼び出す必要があります。
- Databricks AutologgingはDatabricksジョブではサポートされていません。ジョブからオートロギングを使用するには、明示的にmlflow.autolog()を呼び出す必要があります。
- Databricks Autologgingはお使いのDatabricksクラスターのドライバーノードでのみ有効化されます。ワーカーノードからオートロギングを使用するには、それぞれのワーカーノードで実行されるコードで明示的にmlflow.autolog()を呼び出す必要があります。
- XGBoostとscikit-learnのインテグレーションはサポートされていません。
Apache Spark MLlib、Hyperoptおよび自動化されたMLflowトラッキング
Databricks Autologgingは、既存のApache Spark MLlib、Hyperoptと自動化MLflowトラッキングインテグレーションの挙動を変更しません。
注意
Databricks機械学習ランタイム10.1では、自動化MLflowトラッキングとApache Spark MLlibのCrossValidator
とTrainValidationSplit
モデルとのインテグレーションの無効化は、全てのApache Spark MLlibモデルに対するDatabricks Autologging機能も無効化します。