Apache Spark MLlib と自動 MLflow 追跡

注意

MLlib 自動 MLflow 追跡は、Databricks Runtime 10.1 ML 以降を実行するクラスターでは非推奨とされ、Databricks Runtime 10.2 ML 以降を実行しているクラスターでは既定で無効になっています。 代わりに、mlflow.pyspark.ml.autolog() を呼び出して MLflow PySpark ML 自動ログ記録を使用します。これは、Databricks Autologging では既定で有効になっています。

以前の MLlib 自動 MLflow 追跡を Databricks Runtime 10.2 ML 以降で使用するには、Spark 構成 spark.databricks.mlflow.trackMLlib.enabled true および spark.databricks.mlflow.autologging.enabled false を設定して有効にします。

MLflow は、エンド ツー エンドの機械学習ライフサイクルを管理するためのオープンソース プラットフォームです。 MLflow では、Python、R、および Scala での機械学習モデルのチューニングを追跡できます。 Python ノートブックのみに関しては、Databricks Runtime リリース ノートのバージョンと互換性および Databricks Runtime for Machine Learning で、Apache Spark MLlib モデル チューニングの "自動" MLflow 追跡がサポートされています。

MLlib 自動 MLflow 追跡では、CrossValidator または TrainValidationSplit を使用するチューニング コードを実行すると、ハイパーパラメーターと評価メトリックのログが MLflow に自動的に記録されます。 自動 MLflow 追跡を使用しない場合、MLflow にログを記録するには、API 呼び出しを明示的に実行する必要があります。

MLflow の実行を管理する

入れ子になった MLflow を実行すると、CrossValidator または TrainValidationSplit ではチューニング結果が次のように記録されます。

  • メインまたは親の実行: CrossValidator または TrainValidationSplit の情報のログがメイン実行に記録されます。 アクティブな実行が既に存在する場合、情報のログはこのアクティブな実行に記録され、アクティブな実行は停止されません。 アクティブな実行がない場合、MLflow では新しい実行が作成され、それに対してログが記録されて、返される前に実行が終了します。
  • 子の実行: テストされた各ハイパーパラメーターの設定、および対応する評価メトリックのログがメインの実行下の子の実行に記録されます。

Azure Databricks では、fit() の呼び出し時に、アクティブな MLflow 実行を管理することをお勧めします。つまり、fit() の呼び出しを "with mlflow.start_run():" ステートメント内にラップします。 こうすることで、独自の MLflow メイン実行下に情報のログが記録され、その実行に追加のタグ、パラメーター、またはメトリックを簡単に記録できるようになります。

注意

fit() が同じアクティブな MLflow 実行内で複数回呼び出されると、これらの複数の実行が同じメインの実行に記録されます。 MLflow パラメーターとタグの名前の競合を解決するため、競合がある名前には、MLflow によって UUID が追加されます。

次の Python ノートブックは、自動 MLflow 追跡を示しています。

自動 MLflow 追跡のノートブック

ノートブックを入手

ノートブックの最後のセルでアクションを実行すると、MLflow UI が表示されます。

MLlib-MLflow のデモ