Apache Spark MLlib と自動 MLflow トラッキング

機械学習lib 自動機械学習フロー追跡は、 Databricks Runtime 10.1 機械学習以降を実行するクラスターでは非推奨となり、 Databricks Runtime 10.2 機械学習以降を実行しているクラスターでは Default によって無効になっています。 代わりに、 mlflow.pyspark.ml.autolog()を呼び出して機械学習フロー PySpark 機械学習自動ログ を使用し、 Databricks 自動ログを使用して デフォルト によって有効にします。

Databricks Runtime 10.2 以降で古い MLlib 自動 MLflow 追跡を使用するには、 Spark 構成spark.databricks.mlflow.trackMLlib.enabled truespark.databricks.mlflow.autologging.enabled falseに設定して有効にします。

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

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

MLflow の実行 を管理する

CrossValidator または TrainValidationSplit 入れ子になった MLflow の実行時にチューニング結果をログに記録します。

  • メイン実行または親実行: CrossValidator または TrainValidationSplit の情報がメイン実行に記録されます。 アクティブな実行が既に存在する場合、情報はこのアクティブな実行に記録され、アクティブな実行は停止されません。 アクティブな実行がない場合、MLflow は新しい実行を作成してログに記録し、実行を終了してから戻ります。

  • 子の実行: テストされた各ハイパーパラメーター設定と対応する評価メトリクスは、メインの実行の下の子の実行に記録されます。

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

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

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

自動 MLflow 追跡ノートブック

ノートブックを新しいタブで開く

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

MLlib-MLflow デモ